Después de seis meses de desarrollo, Oracle dio a conocer el lanzamiento de la nueva versión de la plataforma Java SE 20 (Java Platform, Standard Edition 20), que utiliza el proyecto de código abierto OpenJDK como implementación de referencia.
En esta nueva versión que se presenta de Java SE 20, con la excepción de la eliminación de algunas funciones obsoletas, Java SE 20 mantiene la compatibilidad con versiones anteriores de la plataforma Java: la mayoría de los proyectos Java escritos anteriormente seguirán funcionando sin cambios cuando se ejecuten con la nueva versión.
Principales novedades de Java SE 20
Java SE 20 se clasifica como una versión de soporte regular, con actualizaciones que se publicarán antes de la próxima versión. La rama de soporte a largo plazo (LTS) debe ser Java SE 17, que recibirá actualizaciones hasta 2029.
Recuerde que a partir del lanzamiento de Java 10, el proyecto cambió a un nuevo proceso de desarrollo, lo que implica un ciclo más corto para la formación de nuevos lanzamientos. Ahora se está desarrollando una nueva funcionalidad en una rama maestra constantemente actualizada, que incorpora los cambios ya realizados y se bifurca cada seis meses para estabilizar las nuevas versiones.
De las innovaciones de Java 20 se destaca que se ha propuesto soporte preliminar para Scoped Values, que permite compartir datos inmutables en hilos e intercambiar datos de manera eficiente entre hilos secundarios (los valores se heredan).
Scoped Values se está desarrollando para reemplazar el mecanismo de variables locales de subprocesos y son más eficientes cuando se utiliza una gran cantidad de subprocesos virtuales (miles y millones de subprocesos). La principal diferencia entre Scoped Values y las variables locales de subprocesos es que los primeros se escriben una vez, no se pueden cambiar más adelante y permanecen disponibles solo durante la ejecución del subproceso.
Otro de los cambios que se presenta en esta nueva versión de Java SE 20, es que se ha agregado una segunda implementación provisional de patrones de registro, que amplía la capacidad de coincidencia de patrones de Java 16 para analizar valores de clases de tipo registro. Por ejemplo:
Ademas de ello, tambien se destaca que se ha agregado una cuarta implementación preliminar de coincidencia de patrones en expresiones de «switch», lo que permite que las etiquetas de «case» usen no valores exactos, sino plantillas flexibles que cubran una serie de valores a la vez, para lo cual anteriormente se tenía que usar engorrosas cadenas de expresiones como «if…else» .
Tambien, podremos encontrar en esta nueva versión, que se ha agregado una segunda implementación preliminar de la API FFM (Foreign Function & Memory) , que le permite organizar la interacción de programas Java con código y datos externos llamando a funciones desde bibliotecas externas y accediendo a la memoria fuera de la JVM.
Por otra parte, se destaca que se ha agregado una segunda implementación preliminar de subprocesos virtuales, que son subprocesos livianos que simplifican enormemente la escritura y el mantenimiento de aplicaciones multiproceso de alto rendimiento.
Se ha agregado una segunda variante de la API de paralelismo estructurado experimental para simplificar el desarrollo de aplicaciones de subprocesos múltiples al tratar varias tareas que se ejecutan en diferentes subprocesos como una sola unidad.
Se ha agregado una quinta implementación preliminar de Vector API que brinda funciones para cálculos vectoriales que se ejecutan utilizando las instrucciones vectoriales de los procesadores x86_64 y AArch64 y le permiten aplicar operaciones simultáneamente a varios valores (SIMD).
A diferencia de las capacidades provistas en el compilador HotSpot JIT para la vectorización automática de operaciones escalares, la nueva API permite controlar explícitamente la vectorización para el procesamiento de datos en paralelo.
Finalmente para los interesados en esta nueva versión, deben saber que las compilaciones instalables de Java SE 20 (JDK, JRE y Server JRE) están preparadas para Linux (x86_64, AArch64), Windows (x86_64) y macOS (x86_64, AArch64).
La implementación de referencia de Java 20 desarrollada por el proyecto OpenJDKcódigo completamente abierto bajo la licencia GPLv2 con excepciones GNU ClassPath que permiten enlaces dinámicos a productos comerciales.