martes, 17 de septiembre de 2019

Nuevo Java 11


Resultado de imagen para Java 11

Hace justo un año Oracle lanzaba la esperadísima versión 9 de Java. Era la primera gran versión de la plataforma desde Java 8, aparecido más de cuatro años antes, en marzo de 2014. Lo cierto es que traía bastantes novedades, pero a pesar de ello muchas empresas todavía siguen usando Java 8 en sus desarrollos. Y es que el mundo Java tiende a moverse lento porque se utiliza sobre todo para aplicaciones de gestión y de backend en donde se prima la estabilidad por encima de todo.

El año pasado, con Java 9, Oracle se comprometió a lanzar una nueva versión de Java cada 6 meses, y de momento lo está cumpliendo aún a costa de que las nuevas versiones no traigan grandes novedades. En marzo de este año salió Java 10, sin apenas nada reseñable y que pasó sin pena ni gloria. Ahora lanzan Java 11. En esta ocasión, sin embargo, sí que viene con algo muy importante que deberíamos tener en cuenta si vamos a desarrollar: el cambio de licencia y el soporte a largo plazo asegurado para el JDK.

Cambios radicales: Kits de desarrollo de Java, licencias y precios
☕ De cero a Javero en 3 meses con nuestro curso online 👉 Infórmate aquí
Un Kit de desarrollo de software (SDK) de Java es lo que nos permite desarrollar con la plataforma Java. Incluye una implementación concreta del estándar de la plataforma, así como herramientas y compiladores. Oracle ofrece uno oficial llamado JDK. Aparte del de Oracle existen otros, siendo el más conocido el OpenJDK, la versión open source del kit de desarrollo, apoyada principalmente por la propia Oracle.

El JDK 11 inicia una nueva era en la licencia de uso. Hasta ahora podías descargar y programar con el Kit de Desarrollo de Java oficial de Oracle y luego poner tu aplicación en producción o distribuirla sin tener que pagar nada al gigante del software. Sin embargo, a partir de Java 11 y del JDK 11, aunque puedes seguir desarrollando con él, tendrás que pagar una licencia a Oracle si quieres utilizarlo para poner las aplicaciones en producción. El coste es de 2,5 dólares al mes por cada usuario de escritorio, y de 25 dólares por procesador en el caso de aplicaciones de servidor. Aquí tienes la lista de precios oficial.

Esto no afecta a versiones anteriores del JDK, por lo que si usas Java 8, 9 o 10 sigue siendo gratuito.

Además de la nueva licencia y el coste asociado, existe otra novedad: desde Java 9 Oracle se ha comprometido a sacar una nueva versión "mayor" de Java (y del JDK) cada 6 meses, con dos actualizaciones garantizadas entre ellas: una al mes del lanzamiento (la x.0.1) y otra al cabo de tres meses (la x.0.2). Después tendrás que actualizarte a la versión "mayor" siguiente, que sale a los 6 meses. Esto es un problema para muchas organizaciones puesto que un cambio de versión muchas veces supone problemas e inestabilidad. Es por eso que una gran mayoría de empresas sigue todavía con Java 8 a pesar de las nuevas versiones que han aparecido.

Bien, pues Java 11 es la primera versión de Java con un JDK denominado LTS o Long Term Support. Esto significa que Oracle garantiza que te dará soporte y actualizaciones para la versión durante 3 años, en lugar de tan solo 6 meses. Eso sí, a cambio de un "módico" precio (¿sabes cómo se lee "Oracle" del revés? Pues eso...).

Esto es muy interesante para las grandes empresas, porque se aseguran que tienen soporte y actualizaciones del JDK oficial durante bastante tiempo (aunque seguramente menos de lo que les gustaría), y no les importa pagar a Oracle por el privilegio del soporte y de las licencias de uso. Pero es un grave problema para los desarrolladores individuales y las empresas pequeñas.





¿Qué opciones tenemos?
Que no cunda el pánico. No es necesario que te quedes con el JDK 8 o 9 para no tener que pagar licencia, perdiéndote además las novedades que surjan en la plataforma. Además, es importante seguir avanzando...

Hasta hace poco, el OpenJDK era el patito feo de los SDKs de Java. El JDK oficial tenía más cosas, era más estable y además gratuito, por lo que el JDK siempre ha sido la opción por defecto para programar con Java.

Sin embargo, sabiendo los cambios de licencias que estaban preparando, Oracle ha trabajado muy duro para hacer que el OpenJDK se haya equiparado en todos los aspectos al JDK, hasta el punto de que se puede decir que el OpenJDK y el JDK son idénticos desde un punto de vista técnico, desde la versión 11.

Debido a ello, ahora el OpenJDK debería ser tu opción por defecto para programar en Java.

¿Cuál es la pega entonces? Nos pasamos al OpenJDK y punto ¿no?

Dos problemas... y sus soluciones
Fundamentalmente el uso del OpenJDK implica que tienes que lidiar con dos posibles problemas: las actualizaciones y el soporte.

En teoría, el OpenJDK seguirá la cadencia de lanzamientos que describíamos antes: una versión grande cada 6 meses con dos intermedias programadas. Si quieres soporte a más largo plazo, en teoría, no lo obtendrás y tendrás que ir subiendo de versión.

En cuanto al soporte tienes dos opciones:

Tratar de que te ayude, gratis, la comunidad del OpenJDK
Pagarle a alguien para que te dé soporte comercial (aunque Oracle no es la única opción (tienes a IBM o a Redhat que también lo dan), sí es la fuente y la que la mayor parte de las empresas usarán)
Esto puede ser un problema para algunas empresas, sobre todo si buscan estabilidad, y es a lo que juega Oracle con su JDK: ¿quieres soporte y actualizaciones a largo plazo? Pues paga.

Por suerte, siempre suele haber solución para casi todo.

En primer lugar, la comunidad de OpenJDK está hablando de que habrá al menos actualizaciones públicas de cada versión durante 4 años (más incluso que el LTS del JDK). Lo malo es que eso incluye tan solo el código fuente, y si queremos el producto final (clases base, herramientas, compiladores...) tendríamos que compilarlo nosotros mismos, lo cual no siempre es fácil, y mucho menos directo. Por suerte existe una comunidad dentro de OpenJDK llamada AdoptOpenJDK cuyo objetivo es precisamente facilitar el uso de este proporcionando versiones compiladas del OpenJDK para descarga y usos directos. A través de este proyecto podemos descargar cualquier versión del OpenJDK compilado para su uso en múltiples sistemas operativos. ¡Genial!

En cuanto al soporte... eso es harina de otro costal. O pagamos por él o tendremos que confiar en la comunidad. Por suerte es una comunidad grande y fuerte, y con los cambios de licencia de Java 11 aún lo será más, así que no deberíamos tener problema. Por otro lado, Stackoverflow es tu mejor amigo, ya sabes...

En resumen
Con Java 11 se inaugura una nueva era en la plataforma Java. Ahora el JDK ya no es gratuito y deberás pagar una licencia mensual por usuario o por procesador si quieres usarlo en producción. Además, el soporte técnico también es de pago y si lo quieres a largo plazo (3 años). Java 11 de hecho es la primera versión LTS (soporte a largo plazo) oficial de la plataforma Java.

Esto no significa que Java deje de ser gratuito, ni es una gran tragedia para la plataforma tampoco. Para la mayoría de desarrolladores y empresas no habrá una gran diferencia. El desarrollo se trasladará a OpenJDK (que ahora es equiparable al JDK) en lugar de al tradicional JDK de Oracle, y el soporte se obtendrá de la comunidad. Para ciertas grandes empresas y administraciones, el hecho de pagar no les importará y de hecho será una ventaja porque tendrán garantizada la estabilidad y el soporte directo de Oracle durante unos años.

Aún así Java sigue y seguirá siendo el lenguaje más popular del mundo, y el que más puestos de trabajo genera, así que merece la pena aprenderlo bien.

¡Ya estás tardando en actualizar tus herramientas de desarrollo Java y el SDK subyacente para usar OpenJDK!

¡Ah!, y por cierto, si te preguntas qué novedades hay de verdad en la plataforma... quitando la palabra clave var (copiada descaradamente de C#), el nuevo recolector de basura y el "Flight Recorder" el framework para recopilar datos para diagnosticar aplicaciones, poco hay que contar...



Referencias
Java is Still Free por Java Champions (Google Docs)
No free Java LTS Version? por Nicolai Parlog
Time to look beyond Oracle's JDK por Stephen Colebourne
Oracle Java SE Support Roadmap por Oracle
Oracle JDK Releases for Java 11 and Later por Donald Smith (Oracle)
All You Need To Know For Migrating To Java 11 por Nicolai Parlog
A Quick Summary on the new Java SE Subscription por Donald Smith (Oracle)
Oracle Java SE Subscription FAQ

No hay comentarios:

Publicar un comentario