Oracle ha confirmado, en el marco del Oracle DevLive Level Up, la disponibilidad de Java 20, la versión más reciente de la plataforma de desarrollo. Ofrece numerosas mejoras en rendimiento, estabilidad y seguridad. Además, se ha perfeccionado la plataforma de cara a una mejora en la productividad. Java 20 incorpora varias actualizaciones, centradas sobre todo en funciones de seguimiento que mejoran funciones ya presentes en versiones anteriores. También da respuesta a siete propuestas de mejora.
El kit de desarrollo de Oracle Java (JDK) 20 ofrece mejoras de lenguaje del proyecto Amber OpenJDK en patrones de registro y correspondencia de patrones para expresiones y declaraciones switch. También tiene mejoras en el proyecto Panamá OpenJDK para la interconexión de la Máquina virtual de Java (JVM) y el código nativo. En este aspecto, las mejoras se centran en la API de memoria y función extranjera, y en la API vectorial.
Por último, entre las nuevas funciones de Java 20 relacionadas con el Proyecto Loom se encuentran mejoras en valores de ámbito, threads virtuales y simultaneidad estructurada. Estas harán más sencillo el proceso de escritura, mantenimiento y observación de aplicaciones concurrentes de alto rendimiento.
Las actualizaciones y mejoras de Java 20 más significativas de esta nueva versión son la segunda vista previa de los patrones de registro (JEP 432) y la cuarta vista previa de la correspondencia de patrones a las expresiones «switch» (JEP 433). La primera permite que los usuarios aniden patrones de registro y de tipo de generar un método potente, declarativo y compatible para navegación y proceso de datos. Así, los desarrolladores amplían la coincidencia de patrones para poder realizar consultas de datos compuestas y más complejas.
En cuanto a la segunda de estas mejoras mencionadas, permite una ampliación de la correspondencia de patrones a las expresiones switch. Esto hace que una expresión se pruebe con varios patrones, cada uno con una acción concreta. Así, las consultas complejas que están orientadas a datos se pueden expresar de forma concisa y con seguridad.
Java 20 tiene varias mejoras del proyecto Loom en fase de vista previa o de incubación. Son los valores de ámbito y la concurrencia estructurada, ambos en incubación; y los hilos (threads) virtuales, en segunda vista previa. La primera activa el uso compartido de datos inmutables en hilos individuales y entre distintos hilos. Estos son preferibles a las variables locales de hilos, y aumentan la facilidad de uso, la solidez y el rendimiento.
Por su parte, los hilos virtuales permiten la optimización del proceso de escritura, mantenimiento y observación de aplicaciones concurrentes de alto rendimiento. Esto se consigue gracias a la introducción de hijos virtuales ligeros en la plataforma Java.
En cuanto a la concurrencia estructurada, da la oportunidad de simplificar la programación multihilo al trata varias tareas ejecutadas en distintos hilos como una única unidad de trabajo. Así se puede optimizar la gestión y cancelación de errores, además de mejorar en fiabilidad y aumentar la observabilidad.
Las funciones de vista previa del proyecto Panama nuevas en Java 20 son la API de memoria y funciones externas, en segunda vista previa (JEP 434). Con ella, los programas Java pueden interoperar con código y datos fuera del tiempo de ejecución de Java.
Además, al invocar de manera eficaz funciones externas, es decir código ajeno a la Máquina virtual de Java, y mediante acceso seguro a memora externa, la API permite a los programas de Java llamar a bibliotecas nativas y procesar datos nativos. Esto sin necesidad de tener que utilizar la interfaz nativa de Java. La API de vector (JEP 438), ya en su quinta incubación, expresa cálculos de vector que recopilan en tiempo de ejecución instrucciones de vector en arquitecturas de CPU soportadas.
A estas novedades de Java 20 se suman su compatibilidad con Java Management Service, un servicio nativo de OCI (Oracle Cloud Infrastructure), que ofrece un solo panel para la gestión de tiempos de ejecución y aplicaciones Java en entornos locales o cloud.
Comments