Hace unos meses salió la actualización a Java 11 y viendo la situación como desarrollador, escribí el artículo: “¿El fin de Java se encuentra tras la versión 11?”.
Unos meses más tarde el escenario se puso más optimista y publiqué otro post: “Java 11 vuelve para quedarse”.
No lo dirías pero la situación ha empeorado, y aquí tienes la actualización sobre el tema.
Oracle ha actualizado, de nuevo, su licencia. Ahora en la web, cuando intentas descargar Java, se puede leer “The Oracle JDK License has changed for releases starting April 16, 2019.” Y te dirige a la nueva licencia en https://www.oracle.com/technetwork/java/javase/terms/license/javase-license.html.
Lo lees y te encuentras con la misma jerga legal de siempre, pero no menciona ninguna versión. Ahí está el truco. Porque aplica a todas las versiones desde el 16 de abril de 2019. ¿Y?
Afecta a Java 8. A cualquier versión superior a 1.8u202
Desde el 16 de abril de 2019 ha habido las siguientes actualizaciones:
- Java 8 Update 221 CPU, 16 Julio, 2019
- Java 8 Update 211 CPU, 16 Abril, 2019
- Java 8 Update 212 PSU (OTN), 16 Abril, 2019
- Fuente: https://java.com/es/download/faq/release_dates.xml
¿Qué incluyen esas actualizaciones de Java 8?
Java 8u212 corrige los siguientes bugs:
- JDK-8215364: JavaFX crashes on Ubuntu 18.04 with Wayland while using Swing-FX interop
- JDK-8207070: Webstart app popup on wrong screen in a one-screen setup changing to multi-monitor
- JDK-8189926: [Mac] Pulse timer should pause when idle
- JDK-8210411: JavaFX crashes on Ubuntu 18.04 with Wayland
- JDK-8211280: JavaFX build fails on Linux with gcc8
- JDK-8213952: Relax DNSName restriction as per RFC 1123
No parecen muy importantes, ¿verdad? Salvo el último, el que está clasificado en “security-libs/ java security”. Vamos a investigar a que se refiere:
DNSName only accepts letters as the first character. RFC 1123 has relaxed that restriction:
RFC 1123, Section 2.1:
Original
One aspect of host name syntax is hereby changed: the restriction on the first character is relaxed to allow either a letter or a digit. Host software MUST support this more liberal syntax
No parece especialmente peligroso, hasta que lidias con un nombre DNS que empieza por un número. Pero la mayoría de las empresas pueden vivir con ello.
¿Qué hay de Java 8u221?
¡¡Tiene 55 correcciones de errores!! Listarlos todos sería muy tedioso, pero hagamos un resumen rápido:
- 16 en “client-libs” (1 general, 5 para el subsistema “2d”, 5 para “ava.awt” y 5 para “javax.swing”)
- 10 en “core-libs” (1 para “java.net”, 1 para “java.util.stream” y 8 para “java.util:i18n”)
- 4 en “hotspot” (1 para cada uno de “compiler”, “runtime” y “svc, svc-agent”)
- 2 en “install”
- 13 en “javafx” (2 para “build”, 2 para “graphics”, 3 para “media”, 1 para “other” y para “samples”, 4 para “web”)
- 1 en “xml”
- Y lo que más miedo da: 9 para “security–libs”. Llegados a este punto no daremos una recomendación tajante pero parece que bastantes compañías podrían vivir con ello (JDK-8151225, JDK-8222137, JDK-8223499, JDK-8222136, JDK-8181594, JDK-8203228, JDK-8201317, JDK-8208648, JDK-8204909 y JDK-8193830)
Así que hemos revisado los bugs y podemos vivir con ellos, pero ¿recuerdas la famosa escena de la cuchara en Matrix? ¿Cuál es la realidad que se nos esconde? La verdad es que llegará el día en que haya un bug de seguridad que realmente ponga en peligro a tu empresa. Y hay que estar preparado.
Qué otras JDK tenemos disponibles:
¿Cómo se prepara uno para un bug de seguridad? Puedes elegir pagar a Oracle por soporte y usar su fix o puedes encontrar alguna otra compañía o recurso que te cubra las espaldas. Desde nuestro primer artículo hemos ampliado la información sobre las JDK disponibles:
Proveedor | Distribución Libre | Actualizaciones Extendidas | Soporte Comercial | URL |
AdoptOpenJDK | Si | Si | No | https://adoptopenjdk.net/ |
Alibaba Dragonwell8 JDK | Si | Si | No | https://github.com/alibaba/dragonwell8/ |
Amazon – Corretto | Si | Si | No | https://aws.amazon.com/es/corretto/ |
Azul Zulu | Si | Si | Si | https://www.azul.com/downloads/zulu/ |
BellSoft Liberica | Si | Si | Si | https://bell-sw.com/java.html |
IBM | No | No | Si | https://www.ibm.com/developerworks/java/jdk |
jClarity | No | No | Si | https://www.jclarity.com/adoptopenjdk-support/ |
OpenJDK Upstream | Si | Si | No | https://adoptopenjdk.net/upstream.html |
Oracle JDK | Si | No* | Si | https://www.oracle.com/technetwork/java/javase/downloads |
Oracle OpenJDK | Si | Si | No | https://jdk.java.net |
Ojdkbuild | Si | No | No | https://github.com/ojdkbuild/ojdkbuild |
RedHat | Si | Si | Si | https://developers.redhat.com/products/openjdk/overview |
SapMachine | Si | Si | Si | https://sap.github.io/SapMachine |
* No todas las versiones son LTS, Oracle decide bajo su propio criterio cuales serán LTS.
- Distribución Libre: El software es público y está disponible para descargarlo y usarlo.
- Actualizaciones Extendidas (Conocido como LTS – Long-term support – ): Tendrá actualizaciones públicas tras finalizar el ciclo general de 6 meses de vida.
- Soporte Comercial: Algunos proveedores ofrecen actualizaciones y soporte gratuito y algunos con coste.
Si finalmente crees que Oracle es la solución que te encaja mejor, aquí puedes ver su lista de precios pública.
En conclusión
La foto de Java ha vuelto a cambiar, con Java 8 afectado se vuelve urgente tener una distribución segura, o pagar y continuar con Oracle.
Me encantaría contrastar con la opinión de James Gosling pero desde que se unió a AWS parece que no hace comentarios sobre los movimientos de Oracle.