El debate sobre la relevancia de Java continúa. Algunos dicen que se está volviendo obsoleto y los idiomas más avanzados lo están reemplazando. Otros no están de acuerdo, citando el número de especialistas que eligen Java de año en año como su habilidad principal. En cualquier caso, uno no puede ignorar el hecho de que la mayoría del software existente está escrito en Java, y los clientes, tanto internos como externos, continúan usándolo. En esta situación, no se deben evitar implementaciones nuevas y noticias globales sobre Java.
Peter Verhas , desarrollador principal y arquitecto de software en la oficina suiza de EPAM, compartió su análisis de los cambios que Oracle está introduciendo y cómo nos afectará.
Ha habido muchos cambios en Java últimamente, y parece que la forma en que evolucionará el lenguaje ha cambiado fundamentalmente. Es bueno que aparezcan nuevas funciones en el idioma. Pero estos no son los únicos cambios. Oracle ha realizado cambios significativos en el modelo de soporte y el ciclo de actualización de la versión Java que lanza esta compañía. Todo esto condujo a una gran confusión causada por el cambio, la información errónea y la incomprensión. En este artículo, resumo todo lo que los usuarios necesitan saber sobre las innovaciones antes de comenzar a creer en el fin apocalíptico del ecosistema de Java.
Sin embargo, algunos puntos deben aclararse primero.
Oracle posee Java, pero Java no es Oracle. El código fuente de Java se publica bajo la licencia GPLv2.0 con la excepción de classpath. De hecho, esto significa que cualquiera puede usar y realizar cambios en el código fuente del idioma de forma gratuita. Solo hay una cosa que todos, incluido Oracle, tienen prohibido hacer: hacer cambios en el código y publicarlo con una licencia de código cerrado. Esto significa que el uso comercial de Java, solo la versión paga, es legalmente imposible, incluso si los intereses comerciales o de marketing de Oracle lo requieren. Pero sigo siendo un especialista técnico. Para tratar este punto, es 100% mejor descargar el texto de la licencia GPLv2 y consultar con un abogado.
Oracle no es la única compañía que lanza ensamblados de Java y se dedica al soporte; hay muchos otros proveedores. Por supuesto, Oracle, como el jugador principal que más invierte en el desarrollo del lenguaje y las herramientas, es la empresa comercial más prestigiosa que lo respalda.
De hecho, Oracle no tiene derechos exclusivos no solo para el código fuente de Java. El proceso de desarrollo, los cambios en la definición de Java, API: todo esto está en manos del Proceso de la Comunidad Java, cualquiera puede participar en él. Para las personas, esto es completamente gratis. Los miembros de este grupo son empresas como Intel, IBM, Credit Suisse, Software AG, RedHat. Determinan el futuro de Java, no de Oracle. Y tienen su propia opinión, como pudimos ver la última vez cuando la aprobación de la versión final de JPMS no fue tan fácil.
Después de esta introducción, en la que decidimos que Oracle "posee" Java, pero no es Java, veamos los cambios en el procedimiento de soporte de desarrollo y la hoja de ruta de Java que introdujo Oracle.
Cambios después de Java 9, 10, 11
Oracle anunció que a partir de JDK11, Oracle JDK ya no será gratuito. Y al principio esta declaración da miedo. Lo que estamos acostumbrados a usar gratis ya no será así. En la práctica, lo que "debemos pagar" es casi lógico. Pero la pequeña palabra "casi" se queda ahí por una razón. Si hay algún servicio que usamos y ha dejado de ser gratuito, tenemos dos opciones: pagar para usarlo más tarde o no usarlo más. ¿Deberíamos continuar usando Oracle JDK o podemos cambiar a otra cosa? Esa es la verdadera pregunta.
Para responderlo, debe comprender qué es Oracle JDK y qué alternativas hay. Otro cambio significativo se refiere a los ciclos de lanzamiento de las nuevas versiones y al concepto de soporte a largo plazo (Ing. - Soporte a largo plazo o LTS). Primero, discutiremos los cambios en el ciclo de lanzamiento, luego la confusión con Open JDK, y finalmente, la estructura LTS.
Ciclo de lanzamiento
Java apareció en 1996. Las primeras versiones de Java salieron más o menos regularmente.

Sin embargo, mirando el diagrama, vemos que la versión de Java 5.0 se retrasó. Java 6 tampoco tenía prisa por la versión anterior, y la mayor ruptura fue entre Java 6 y Java 7. Incluso después de eso, las nuevas versiones no se lanzaron con mucha frecuencia. Java 8 recibió muchas características nuevas, pero a costa de dos años de espera. Las cosas fueron similares con Java 9, que, aunque había sufrido cambios aún mayores, se vio obligado a esperar tres años completos.
El problema con tales ciclos de lanzamiento de actualizaciones es que un lenguaje que compite en el mercado de idiomas en constante evolución no puede presentar nuevas características lo suficientemente rápido. Si lleva tres años desarrollar un sistema modular, entonces nada puede acelerar el proceso. Sin embargo, algunas cosas que aparecieron en Java 9 pueden haberse lanzado anteriormente. Pero simplemente no pudieron llegar a los desarrolladores, ya que no había versiones anteriores. Las funciones que ya estaban disponibles deberían haber esperado la aparición de la función desarrollada más lentamente en esta versión. Este es uno de los problemas del modelo clásico de desarrollo en cascada.
Oracle decidió ir ágil y hacer versiones cada seis meses. A partir de septiembre de 2017, se pueden esperar nuevas versiones de Java en marzo y septiembre. Si alguna función no está lista para estas fechas, se transferirá a la próxima versión, pero el resto, como están listas, caerá en la más reciente.
En general, esto es normal. Por un lado, la comunidad Java y los desarrolladores deberían estar contentos con esto. Por otro lado, la cuestión del apoyo permanece. ¿Quién puede soportar tantas versiones de Java? Es por eso que se introdujo el soporte a largo plazo (LTS), del que hablaremos en breve. Pero primero, aún necesita aclarar qué son Oracle JDK y OpenJDK.
Qué fueron y se convirtieron en Oracle JDK y OpenJDK
Hasta Java 9, hubo un lanzamiento binario del ensamblaje Java Java Oracle (Sun Microsystems), que fue utilizado en el entorno de producción por la mayoría de los desarrolladores y empresas. Este binario se basó en Java de código abierto y contenía algunas mejoras: herramientas corporativas adicionales como Java Flight Recorder, Java Mission Control y algunas otras características como Application Class-Data Sharing.
El ensamblado OpenJDK se creó a partir de Java de código abierto, en el que no hubo mejoras. Este ensamblado de Java fue utilizado por aquellos que querían experimentar con las propiedades de Java, cambiar el código o simplemente por cualquier razón eran adherentes del código fuente abierto. Aunque deberías haber descargado el código fuente y compilado por ti mismo.
Comenzando con Java 9, Oracle comenzó a proporcionar OpenJDK en paralelo con Oracle JDK. La compañía también anunció que quiere reducir la brecha entre las características, el rendimiento y la estabilidad de las dos versiones, y una vez que eso suceda, haga que Oracle JDK pague. En ese momento, tanto OpenJDK como Oracle JDK estaban disponibles de forma gratuita como ensamblajes binarios de Oracle. Estos fueron Java 9 y Java 10.
Después del lanzamiento de Java 11, esto se detuvo. OpenJDK todavía está disponible de forma gratuita, pero Oracle JDK para sistemas de producción se ha pagado. Ya no hay ninguna diferencia significativa entre las dos versiones. La versión comercial tiene un instalador, mientras que OpenJDK solo tiene un archivo ZIP. Existen otras diferencias, pero los usuarios de Java no deberían prestarles atención. Donald Smith, director senior de gestión de productos de Oracle, describe una lista técnicamente detallada de las diferencias en
este artículo .
Además, Oracle JDK sigue siendo gratuito para otros usuarios, incluso comerciales. Oracle JDK se puede usar libremente para:
• desarrollo
• pruebas
• creación de prototipos
• demostraciones
Puede usar OpenJDK para otros fines o pagar a Oracle y usar Oracle JDK y obtener soporte. El apoyo es bueno.
Lanzamientos de soporte a largo plazo
La transición a un nuevo ciclo de lanzamiento de versiones cada seis meses planteó una cuestión de soporte. Nadie puede soportar tantas versiones para su propio beneficio. Si instaló Java 6 para su aplicación en 2007, puede obtener soporte de Oracle en 11 años. El lanzamiento de nuevas versiones cada seis meses implica el soporte de 22 versiones diferentes simultáneamente. Esto sería una carga pesada para Oracle o cualquier otro proveedor que decida admitir todas las versiones.
La estrategia de Oracle es identificar una versión cada tres años que recibirá soporte a largo plazo. La primera versión de este tipo fue Java 11, y será compatible hasta 2026. Durante este tiempo, Java 17 también se lanzará en septiembre de 2021, que recibirá soporte a largo plazo por siete años, en línea con los planes actuales. El resto de las llamadas versiones funcionales solo serán compatibles hasta el lanzamiento de la próxima versión.

Tenga en cuenta que el soporte se aplica solo a Oracle JDK y solo a aquellos que han pagado por JDK y soporte. Pero no piense que quedó a merced del destino si planea usar OpenJDK. Para nosotros, nada ha cambiado. Si no pagó el soporte antes, no lo recibió de todos modos. Si pagó, continuará pagando y obtendrá este soporte.
Aquí hay un enlace a un artículo de Oracle con pronósticos de fin de vida para diferentes versiones.
¿Habrá nuevas versiones para OpenJDK? Por supuesto Anteriormente, se lanzaron actualizaciones de código abierto de Java que corrigieron errores, aunque no había garantía de que se lanzarían. Esto sucedió simplemente porque todos los participantes estaban interesados en esto. En el futuro, todo permanecerá como antes, Java recibirá nuevas versiones, nuevos ensamblajes.
Veo tres estrategias principales para elegir qué versión de Java es la mejor para instalar:
- Pague a Oracle por Oracle JDK y suscripción, y use lanzamientos con soporte a largo plazo. Esto es lo que las grandes empresas comerciales que usan la infraestructura de Java deberían hacer para cumplir con los requisitos de confiabilidad.
- Cambie a OpenJDK, use solo versiones con soporte a largo plazo e instale versiones de corrección de errores disponibles para OpenJDK. Esta es una solución viable para las empresas que no pueden o no quieren cambiar el costo de la infraestructura de Java, podrían prescindir del soporte comercial en el pasado y creen que también pueden hacerlo a largo plazo.
- Cambie a OpenJDK e instale versiones posteriores cada seis meses tan pronto como aparezcan. Esta es una opción para las empresas que necesitan las últimas soluciones tecnológicas.
Las estrategias también se pueden combinar instalando diferentes versiones de Java en diferentes máquinas. No importa lo que elija, puede descargar versiones binarias de la compilación previa desde los siguientes sitios:
- Versiones binarias de OpenJDK pre-build adoptopenjdk.net
- Oracle JDK está disponible en java.oracle.com . Aquí puede hacer clic en Java SE 11 para ir a la página de descarga y acceder al botón de descarga. Hay una gran advertencia amarilla en la página, también deberá hacer clic en el acuerdo con los términos de la licencia antes de que el enlace de descarga esté disponible. Y esta vez, es mejor leer realmente los términos, y no solo estar de acuerdo automáticamente.
Aunque esta no es una descarga binaria, está estrechamente relacionada con la descarga de Oracle JDK; también puede visitar
www.oracle.com/java/java-se-subscription.html para obtener Oracle JDK y soporte en un solo paquete. La información detallada sobre precios está disponible en
www.oracle.com/us/corporate/pricing/price-lists/java-se-subscription-pricelist-5028356.pdf . Para los impacientes, copié aquí la información de precios de las preguntas frecuentes oficiales de Oracle:
“El costo de la versión de escritorio es de $ 2.50 por usuario por mes, o menor si hay descuentos por volumen de niveles múltiples. Consulte la Tabla de precios de suscripción de Oracle Java SE para obtener más información ".Resumen
Que haces ¿Usa OpenJDK o paga por Oracle JDK? Es una cuestión de rentabilidad y cuán importante es el soporte de Oracle para usted. Si su empresa no puede permitirse el soporte de Oracle JDK, porque usted es una startup, una estrella en ascenso con una brillante idea de producto, pero un agujero en su bolsillo, entonces OpenJDK satisface sus necesidades. No tiene que pagar por ello. Y además, si es una startup, no es tan importante para usted que sus servidores no funcionen durante varias horas hasta que los expertos técnicos resuelvan el problema. Si no puede permitirse el tiempo de inactividad, lo más probable es que esté trabajando en una empresa madura y, por lo tanto, debe usar Oracle JDK y registrarse para obtener soporte. También puede decidir combinar diferentes modelos e instalarlos en algunos servidores de productos que deberían estar disponibles 24/7, Oracle JDK y OpenJDK en aplicaciones internas que no son tan críticas para los negocios.
En cualquier caso, puede seguir utilizando Java más.
Sobre el autorPeter Verhas trabaja en la oficina suiza de EPAM. Peter desarrolla software para clientes, brinda capacitación para programadores y tutoría dentro de la empresa.
Puedes seguir a Peter en
Twitter ,
LinkedIn y
GitHub . El autor también tiene un blog, "Java profundo":
javax0.wordpress.com