Cuál es la Última Versión de Java
Java es el nombre de una tecnología y un lenguaje de Oracle. Esta tecnología permite ejecutar aplicaciones escritas en este idioma. Pero… ¿Sabes cuál es la última versión de Java? Bueno, entre muchas otras cosas, veremos su última versión y en qué consiste su proceso de actualización.
Cuál es la Última Versión de Java
Las empresas tradicionalmente se han mostrado reacias a actualizar a la última versión de Java hasta que se haya probado por completo. Esto se está volviendo cada vez más difícil ya que aparecen nuevas versiones de Java cada seis meses desde el lanzamiento de Java 9 en septiembre de 2017.
Entonces, aunque Java 9 tiene menos de dos años, la última versión ahora es Java 15.0.1., que salió para el 20 de Octubre del 2020.
Esta tasa de cambio puede ser intimidante, y una actualización de Java 8, como la mayoría de las aplicaciones usan en tiempo de ejecución, a Java 15 puede parecer una gran carga de trabajo.
Las Características de Java
Como desarrolladores, estamos más interesados en las nuevas funciones de idioma o API que vienen con cada actualización de idioma. Desde Java 8 hemos tenido muchas características nuevas y también nuevas herramientas que pueden cambiar la forma en que trabajamos.
Elegimos algunas características claves que los desarrolladores me han dicho que les han facilitado la vida al trabajar con la última versión de Java.
La inferencia de tipos para variables locales (var), es un buen ejemplo de mejora sintáctica que ayuda a reducir el código detallado y repetitivo.
No es una solución única para todos los problemas de legibilidad, pero usarla en el momento adecuado puede ayudar al lector de código a centrarse en la lógica empresarial, en lugar de en el código detallado y repetitivo.
Los métodos de fábrica de conveniencia para colecciones, hace que sea mucho más fácil crear colecciones como Listas, Mapas y Conjuntos. Los métodos de fábrica propuestos crean colecciones no modificables, lo que los hace más seguros de usar.
La recopilación en colecciones no modificables recopila los elementos de una secuencia en colecciones no modificables (inmutables) mediante nuevas operaciones de recopilador.
Predicate :: not proporciona una manera fácil de revertir el valor de un Predicate expresado en forma de lambdas o referencias a métodos, lo que nuevamente reduce la complejidad del código.
Los nuevos métodos en Opcional brindan aún más opciones para codificar en estilo funcional cuando se usa un Opcional en lugar de tener que anidar incómodamente ifs.
JShell es el REPL que nos permite ejecutar líneas individuales de código, o incluso scripts, en Java. Es una buena manera de experimentar con nuevas funcionaliades y podemos usarla localmente en nuestras máquinas de desarrollo sin tener que adoptar nuevas versiones de Java en nuestro código de aplicación de producción.
Un cliente HTTP está integrado en el JDK. Casi todo el mundo trabaja con HTTP de una forma u otra, a través de aplicaciones web, servicios REST o lo que sea.
El cliente integrado elimina la necesidad de dependencias externas y admite HTTP 1.1 y 2 con modelos de programación síncronos y asíncronos.
Los archivos Jar de múltiples versiones son una de las herramientas que los desarrolladores de bibliotecas pueden usar para satisfacer las necesidades de quienes usan las últimas versiones de Java, así como de quienes se ven obligados a usar versiones anteriores.
JLink es una herramienta fantástica que es posible gracias al Java Module System, que nos permite empaquetar e implementar solo los elementos del JDK que realmente necesitamos.
Las Actuaciones
En general, cada nueva versión es más eficiente que la anterior. El “mejor rendimiento” puede tomar muchas formas, pero en versiones recientes hemos visto mejoras en el tiempo de arranque y menor uso de memoria.
El uso de instrucciones específicas de la CPU da como resultado un código que usa menos ciclos de CPU, entre otras cosas. Java viene con cambios y mejoras importantes en Garbage Collection, incluido el cambio del recolector de basura predeterminado que usa G1, mejoras en G1 y tres nuevos recolectores de basura experimentales.
Tres de ellos pueden parecer excesivos, pero cada recolector de basura está optimizado para diferentes casos de uso. Así que ahora tiene la opción de recolectores de basura modernos, uno de los cuales puede tener el perfil que mejor se adapte a su aplicación.
Reducción de costo
Las mejoras en las versiones recientes de Java pueden resultar en costos reducidos. En particular, herramientas como JLink que reducen el tamaño del artefacto que implementamos y las mejoras recientes en el uso de la memoria podrían, por ejemplo, reducir nuestros costos de computación en la nube.
Siempre hay otro beneficio potencial a considerar que el uso de versiones modernas de un lenguaje también le permite atraer a una gama más amplia de desarrolladores, ya que a muchos desarrolladores les gusta la oportunidad de aprender cosas nuevas y mejorar sus habilidades.
El uso de una versión moderna de Java afecta la retención y la contratación de desarrolladores, lo que afecta el costo de administrar el equipo.
Actualizaciones
Mucho ha cambiado desde Java 8, y no solo en términos de funcionalidad en el lenguaje. Oracle ha comenzado a lanzar dos versiones diferentes, cada una con una licencia diferente y ha cambiado sus modelos de actualización y soporte.
Esto creó cierta confusión en la comunidad, pero al final nos dio más opciones en comparación con el JDK que usamos. Necesitamos mirar tanto las opciones disponibles para nosotros como lo que esperamos del JDK.
¿Qué versión usar?
Puede parecer que hay una gran variedad de versiones después de Java 8, ya que la última versión es Java 15. De hecho, la elección es un poco más fácil.
Ahora hay versiones cada seis meses, cada nueva versión reemplaza a la anterior. La excepción es que cada tres años hay una versión llamada Long Time Support (LTS).
Esto permite a las empresas elegir una ruta de actualización con la que se sientan cómodos, ya sea una actualización cada seis meses, o una actualización de estilo tradicional cada tres años hasta la próxima versión LTS.
Java 8 era un LTS, aunque Oracle dejó de proporcionar actualizaciones de Java 8 gratuitas en enero de este año. Java 11 es el LTS actual.
Entonces, la elección es actualizar a la última versión de Java 15, y estar listo para actualizar cada seis meses; o actualizar a la última versión LTS 11, para tener tiempo de pensar en su próxima actualización.
Se espera que las grandes organizaciones cambiaran de una versión de LTS a otra, mientras que las empresas emergentes podrían actualizarse cada seis meses. El beneficio de la tasa de publicación más rápida y predecible es que admite ambas opciones.
¿Qué construcción usar?
El hecho de que Oracle no proporcione actualizaciones gratuitas para sus versiones LTS no significa que no sea posible ejecutar un LTS en producción y obtener actualizaciones gratuitas.
Hay muchas otras organizaciones y proveedores que ofrecen versiones de OpenJDK, la implementación de referencia del JDK en la que se basa incluso el Oracle JDK comercial.
Puede parecer más complicado que antes. Hay otros factores a considerar, eso es cierto, pero ese es el efecto de tener más opciones.
La principal preocupación que tienen muchos desarrolladores al pensar en actualizar desde Java 8 son los grandes cambios que se han producido en Java 9 y el temor de que estos cambios puedan romper las aplicaciones.
Uno de los cambios fue la encapsulación de las API internas, lo que significa que algunos métodos que estaban disponibles anteriormente en el JDK ya no son accesibles.
Esto, junto con la eliminación de tools.jar y rt.jar, parecía alarmante en el momento del lanzamiento de Java 9, pero mirando hacia atrás parece haber sido más un problema para los desarrolladores de bibliotecas, frameworks y lenguajes que para desarrolladores de aplicaciones.
Si tu aplicación no está haciendo cosas que no debería estar haciendo (como usar API internas o métodos obsoletos), migrar a Java 9 o posterior no es tan aterrador como podría parecer. Muchos de los problemas que encontró la comunidad se abordaron en realidad en las herramientas de compilación y las bibliotecas que usamos.
Consejos para actualizar
Cada proceso de actualización será específico de la aplicación migrada. Sin embargo, existen algunas buenas prácticas básicas que facilitarán el proceso.
Estos se describen en el orden en que debes abordarlos, y encontrarás que para los primeros pasos ni siquiera necesitas usar un JDK actualizado.
No ignores las advertencias del compilador
Las advertencias están ahí por una razón y, si las lees, a menudo se refieren a funciones que podrían desaparecer en el futuro.
Si estás trabajando con Java 8, en un JDK 8, y ves advertencias de obsolescencia o advertencias de funciones que no deberías usar, corrige estas advertencias antes de intentar actualizar a un JDK más reciente.
Ten en cuenta que la obsolescencia se toma mucho más en serio en las versiones recientes de Java, y que, a partir de Java 10 se han eliminado las API.
Comprobación del uso de API internas
Uno de los cambios introducidos en Java 9 fue que las API internas, principalmente clases en paquetes que comienzan con sun.misc.*, estaban ocultas para su uso.
Hay una herramienta, jdeps, que es parte del JDK que puedes ejecutar con la opción –jdkinternals de verificar si un conjunto de clases está usando algo que no debería.
Esta herramienta no solo identifica las clases que usan API internas, sino que también proporciona una sugerencia sobre qué usar en su lugar.
Actualiza tu herramienta de construcción
Si estás utilizando Maven o Gradle, necesitas actualizar.
Actualiza tus dependencias
Algunos de los problemas de los que puedes haber oído hablar al migrar a Java 9 o posterior son problemas que encuentran, y potencialmente solucionan, las bibliotecas y los marcos.
Por ejemplo, muchos marcos utilizan API internas subyacentes y de reflexión. Para que tu aplicación tenga la mejor oportunidad de seguir funcionando bien, debes asegurarte de que todas sus dependencias estén actualizadas.
Muchas bibliotecas ya se han actualizado para que funcionen con Java 9 y versiones posteriores, y existe un esfuerzo comunitario continuo para garantizar que esto continúe.
Es posible que sea necesario reemplazar algunas dependencias. Varias bibliotecas han migrado a Byte Buddy para la generación de código y proxis, por ejemplo, ya que funciona bien con todas las versiones recientes de Java.
Al considerar una migración a Java actualizado, debes tener una buena comprensión de tus dependencias y si se han actualizado para admitir versiones de Java posteriores a la 8.
Agregar dependencias para funciones que se han eliminado
Se han eliminado las API que no son el núcleo del JDK. Esto incluye los módulos Java EE, Corba y JavaFX. Esto suele ser fácil de solucionar, agregando la biblioteca adecuada a tu administración de dependencias.
Por ejemplo, agrega una dependencia de JAXB para Gradle o Maven. JavaFX es un caso un poco más complejo, pero hay buena documentación en el sitio de OpenJFX.
Ejecuta la aplicación con el nuevo JDK
No es necesario volver a compilar tu aplicación para utilizar la última versión de Java, que es parte de la razón por la que los desarrolladores del lenguaje trabajan tan duro para mantener la compatibilidad con versiones anteriores.
Puedes ejecutar tu aplicación en su entorno de integración continua (por ejemplo) utilizando un nuevo JDK sin modificar el código.
Compilar con el nuevo JDK
Es posible que todavía estemos compilando nuestras aplicaciones con Java 8 para todos estos pasos anteriores. Solo cuando hayas realizado estos otros pasos, deberías considerar compilar en el Java actual.
Recuerda, podemos construir nuestra aplicación con una versión inferior si no queremos usar nuevas funciones, por lo tanto, permanecemos abiertos a volver a la versión anterior.
Empieza a utilizar las nuevas funciones
Solo cuando todo funcione, todas las pruebas se ejecuten y todo se vea bien, y tal vez después de un tiempo en producción, puedas considerar usar las nuevas características del lenguaje.
Además, ten en cuenta que aunque la versión 9 de Java introdujo el sistema de módulos en Java, las aplicaciones no necesitan usarlo en absoluto, incluso si han migrado a una versión que lo admita.
En Resumen
También te puede interesar: Diferencias Entre Java Y JavaScript.
Mucho ha cambiado desde Java 8, recibimos una nueva versión cada 6 meses; las licencias, actualizaciones y soporte han cambiado; el proveedor de nuestro JDK puede haber cambiado.
Pero ahora que Java 11 ha reemplazado a Java 8 como la última versión LTS, y ahora que las principales bibliotecas, marcos y herramientas de compilación han adoptado las últimas versiones de Java, ahora es un buen momento para migrar Tu aplicación a Java 11 LTS o Java 15.
Después de superar esta primera actualización, vale la pena al menos probar la aplicación en la última versión de Java cada 6 meses, por ejemplo, en integración continua (CI).
En un mundo ideal, es posible que incluso puedas subirte a ese tren de lanzamiento de seis meses, usar la próxima versión de Java cada 6 meses y poder usar nuevas funciones a medida que estén disponibles.
Al elegir la actualización, la elección que debes afrontar es si actualizar a la última versión de Java (15) y estar preparado para actualizar cada seis meses; o actualizar a la última versión LTS (11), que se realiza cada tres años.
Deja una respuesta