Java 20 ya está aquí oficialmente, a partir de su lanzamiento de disponibilidad general el 21 de marzo de 2023. Esta es la décima versión de la plataforma con una periodicidad semestral, que ya es la norma. (Deberías esperar ver Java 21 en septiembre).
Hay una enorme cantidad de información en las notas de la versión Java 20, y este artículo tratará algunos de los aspectos más destacados. También puedes consultar el artículo de Mohamed Taman “Java 20 sneak peek”.
Como se describe en el blog oficial de la versión de Java 20, seis de los JEP que se entregan con Java 20 se agrupan en tres categorías correspondientes al Proyecto Amber (mejora de la productividad de los desarrolladores), el Proyecto Loom (reimaginación del roscado) y el Proyecto Panamá (puente entre Java y otras plataformas). También hay otro PEC centrado en las matemáticas vectoriales.
Georges Saab, vicepresidente sénior de desarrollo del Grupo de Plataformas Java de Oracle y presidente del Consejo de Administración de OpenJDK, ha declarado: “Durante más de 25 años, Java ha permitido a los desarrolladores diseñar y crear la próxima generación de aplicaciones robustas, escalables y seguras”.
Saab añadió: “Las nuevas e innovadoras mejoras de Java 20 reflejan la visión y los inestimables esfuerzos que la comunidad mundial de Java ha aportado durante toda la existencia de Java. Con el apoyo proporcionado por el liderazgo continuo de Oracle en tecnología Java y la administración de la comunidad, Java nunca ha sido más relevante como lenguaje contemporáneo y plataforma que ayuda a los desarrolladores a mejorar la productividad”.
A continuación, se muestran los siete JEP incluidos en la versión Java 20.
Proyecto Amber
JEP 432: Registrar patrones (segunda vista previa). Mejora la productividad de los desarrolladores al ampliar la coincidencia de patrones para consultas de datos más sofisticadas y componibles. Esto se hace mejorando el lenguaje de programación Java con patrones de registro para deconstruir los valores de los registros. Los patrones de registro y los patrones de tipo pueden anidarse para permitir una forma potente, declarativa y componible de navegación y procesamiento de datos.
JEP 433: Coincidencia de patrones para el conmutador (cuarta vista previa). Mejora la productividad de los desarrolladores al mejorar la semántica del código de Java. Para ello, se ha mejorado el lenguaje de programación Java con la concordancia de patrones para las expresiones y sentencias de conmutación. La ampliación de la coincidencia de patrones para cambiar permite que una expresión se compruebe en relación con muchos patrones, cada uno con una acción específica, de modo que las consultas complejas orientadas a los datos se puedan expresar de forma concisa y segura.
-Lee más: Tres eBooks gratuitos para desarrollo nativos en la nube

Proyecto Loom
JEP 429: Valores limitados (incubadora). Permite el uso compartido de datos inmutables dentro y entre threads mediante valores limitados. Los valores limitados son preferibles a las variables locales de subproceso, especialmente cuando se utiliza un gran número de subprocesos virtuales, y proporcionan mejoras en muchas áreas, incluyendo la facilidad de uso, la comprensibilidad, la robustez y el rendimiento.
JEP 436: Threads virtuales (segunda vista previa). Proporciona threads virtuales ligeros que reducen drásticamente el esfuerzo de escribir, mantener y observar aplicaciones concurrentes de alto rendimiento. Los threads virtuales se desacoplan en Java del número de threads físicos naturales o núcleos en el procesador.
JEP 437: Simultaneidad estructurada (segunda incubadora). Simplifica la programación multihilo introduciendo una API para la simultaneidad estructurada. Esta API trata varias tareas que se ejecutan en distintos threads como una única unidad de trabajo, lo que agiliza la gestión y cancelación de errores, mejora la fiabilidad y aumenta la observabilidad.
Proyecto Panamá
JEP 434: API de memoria y función externa (segunda vista previa). Introduce una API mediante la cual los programas Java pueden interoperar con código y datos fuera del tiempo de ejecución de Java. Al invocar de forma eficaz funciones ajenas (es decir, código fuera de JVM) y al acceder de forma segura a la memoria ajena (es decir, memoria no gestionada por JVM), la API permite a los programas Java invocar bibliotecas nativas y procesar datos nativos sin la fragilidad y los peligros de la antigua Java Native Interface (JNI)
Un JEP más
JEP 438: API de vector (quinta incubadora). Logra un rendimiento superior a los cálculos escalares equivalentes introduciendo una API para expresar cálculos vectoriales que se compilan de forma fiable en tiempo de ejecución con instrucciones vectoriales óptimas en las arquitecturas de CPU compatibles. Las API vectoriales se incubaron en JDK 16, 17, 18, y 19. JDK 20 incorpora los comentarios de los usuarios sobre esas versiones, así como mejoras de rendimiento e implementación. Utiliza algunas de las características de JEP 434 que ahora están lo suficientemente maduras como para permitir esta dependencia.
Correcciones y actualizaciones
Aunque la mayor parte de la atención se centra naturalmente en los JEP de Java 20 (y en todas las versiones de Java), también hay otras miles de actualizaciones de rendimiento, estabilidad y seguridad. Estos incluyen:
• Grupos con nombre de intercambio de claves de seguridad de capa de transporte de datagramas (DTLS)
• La adición de un nuevo GarbageCollectorMXBean para informar de la ocurrencia y duración de los tiempos de pausa de observación y limpieza para el recolector de basura G1.
• ChaCha20 intrínseca en plataformas x86_64 y aarch64
• Soporte para Unicode 15.0
• Control mejorado de threads de acotación simultáneos de G1
• Compatibilidad con Unicode CLDR versión 42
• Nuevos eventos de JDK Flight Recorder: jdk.InitialSecurityProperty y jdk.SecurityProviderService
• Mejoras en la página API de previsualización en la documentación generada por Javadoc
• Nueva opción de línea de comandos jmod -compress
• Compatibilidad con gráficos en BreakIterator
• Datos de zona horaria actualizados que cumplen con el estándar 2022c
• ID generados automáticamente en cabeceras de Javadoc
Descarga Java 20 y empieza a trabajar
Las implementaciones de referencia de Java SE 20 se pueden adquirir desde https://jdk.java.net/java-se-ri/20. Si buscas las compilaciones OpenJDK, se encuentran en https://jdk.java.net/20/.
