Java Development Kit (JDK) 21, la próxima versión de soporte a largo plazo de la implementación Java estándar de Oracle, cuyo lanzamiento está previsto para septiembre, está tomando forma. Por ahora, esta versión debería incluir colecciones secuenciadas, subprocesos virtuales, una vista previa de modelos de cadenas y una tercera vista previa de una API de función y memoria externa. Aunque aún no se ha incluido oficialmente en la página de lanzamiento de JDK 21 en openjdk.org, estos días se ha agregado la vista previa de la función externa y la API de memoria.
Función externa y API de memoria, hilo virtual
En detalle, aquí están los elementos de JDK 21. En primer lugar, la función externa y la API de memoria. Permite que los programas Java interoperen con código y datos fuera del tiempo de ejecución de Java. Al invocar eficientemente funciones externas y acceder de forma segura a la memoria externa, esta API, siempre en modo de vista previa, permite a los programas Java llamar a bibliotecas nativas y procesar datos nativos sin la fragilidad y el peligro de la interfaz nativa de Java JNI (interfaz nativa de Java). La API ya estaba presente en la vista previa en JDK 20 lanzado el mes pasado y en JDK 19 entregado en septiembre de 2022. Esta última vista previa se beneficia de varias mejoras: las rutas de presentación tienen un nuevo elemento para eliminar la referencia a las direcciones de las presentaciones; se ha centralizado la gestión de la vida útil de los segmentos nativos en la interfaz Arena; tiene un enlazador nativo alternativo y se ha eliminado VaList. La propuesta aborda varios objetivos, incluidos la facilidad de uso, el rendimiento, la generalidad y la seguridad, pero no pretende volver a implementar el JNI sobre esta API ni modificar el JNI de ninguna manera.
Otra área de trabajo son los hilos virtuales. Estos subprocesos livianos prometen reducir “drásticamente” el esfuerzo de escribir, mantener y observar aplicaciones simultáneas de alto rendimiento. El objetivo es permitir que las aplicaciones de servidor escritas en un estilo simple de subproceso por solicitud se escale hasta un uso de hardware casi óptimo, para permitir que el código existente que utiliza la API lang.Thread adopte subprocesos virtuales con cambios mínimos y realice depuración y creación de perfiles. Los hilos virtuales son más fáciles con las herramientas JDK actuales. Disponibles en modo de vista previa en JDK 20 y JDK 19, los subprocesos virtuales se finalizarán en JDK 21. Tenga en cuenta también que en JDK 21, los subprocesos virtuales seguirán admitiendo variables locales y harán imposible crear subprocesos virtuales sin estas variables. Este soporte, que garantiza variables locales de subprocesos, garantiza que se puedan utilizar más bibliotecas existentes sin modificaciones con subprocesos virtuales y facilitará la migración de código orientado a tareas al uso de subprocesos virtuales.
Colecciones secuenciadas y modelos de tanga.
Aún en las funcionalidades, encontramos las colecciones secuenciadas. Introducen interfaces para representar colecciones con un orden de encuentro definido. Cada colección tiene un primer y un segundo elemento bien definidos, y así sucesivamente hasta el último elemento. Se proporcionan API uniformes para aceptar el primer y último elemento y procesar elementos en orden inverso. La propuesta aborda una situación en la que el marco de colecciones de Java no tiene un tipo de colección para representar una secuencia de elementos con un orden de encuentro definido. También falta un conjunto uniforme de operaciones aplicables a estas colecciones. Estas deficiencias son problemáticas y motivo de quejas. La propuesta planea definir interfaces de secuenciación para colecciones, conjuntos y mapas, e integrarlas en la jerarquía existente de tipos de colecciones. Todos estos nuevos métodos tienen implementaciones predeterminadas.
Finalmente, los modelos de cadenas, vista previa en JDK 21, complementan los literales de cadena y bloques de texto existentes de Java al acoplar texto literal con expresiones y procesadores integrados para producir resultados especializados. Esta característica de lenguaje y API tiene como objetivo simplificar la escritura de programas Java facilitando la expresión de cadenas de caracteres que incluyen valores calculados en tiempo de ejecución. Promete mejorar la legibilidad de las expresiones, la seguridad del programa, la flexibilidad y simplificar el uso de API que aceptan cadenas de caracteres escritas en lenguajes distintos de Java. El objetivo también es facilitar el desarrollo de expresiones que no sean cadenas derivadas de la combinación de texto literal y expresiones incrustadas.
Disponibilidad general prevista para el 19 de septiembre
El calendario de lanzamiento propuesto para JDK 21 incluye fases de desarrollo que tendrán lugar el 8 de junio y el 20 de julio. El conjunto de funciones está congelado durante las fases de desarrollo iniciales, mientras continúan las correcciones de errores. Las versiones candidatas inicial y final se entregarán el 10 y 24 de agosto, con posibilidad de corrección de errores, con disponibilidad general prevista para el 19 de septiembre.
Como versión de soporte a largo plazo (LTS), JDK 21 recibirá cinco años de soporte Premier y soporte extendido hasta septiembre de 2031. La versión LTS actual es JDK 17, lanzada en septiembre de 2021. Versiones que no son LTS, como la versión JDK 20 que llegó el 21 de marzo y la versión anterior de JDK 19, solo recibe seis meses de soporte Premier y no soporte extendido. Cada seis meses se lanzan nuevas versiones de la implementación Java estándar de Oracle. Otras características posibles de JDK 21 incluyen todas las características de incubación y vista previa de JDK 20, como valores de alcance, patrones de registro y coincidencia de patrones para expresiones de cambio. También se podrían incluir genéricos universales, recolección de basura generacional Z Garbage Collector (ZGC) y API de seguimiento de pila de VM asíncrona.
Otras noticias que te pueden interesar