Java 19 estándar parece estar preparada para incluir una API de funciones y memorias externas, una API de vectores, coincidencia de patrones para extensiones de conmutación, genéricos universales y más.
Con Java 18 como versión en producción dentro de dos semanas, Java 19 está empezando a tomar forma. La próxima versión de Java estándar está preparada para avanzar con una API para interoperar con código fuera del tiempo de ejecución de Java, la primera de muchas propuestas potenciales que podrían cubrir capacidades, que van desde los genéricos universales hasta un puerto RISC-V.
La propuesta de Java 19 que ahora está flotando en la comunidad de OpenJDK es una API de funciones y memoria externas, que permitiría a los programas Java interoperar con código y datos fuera del tiempo de ejecución de Java. La función se adelantará en el kit de desarrollo de Java (JDK) 19, que se espera que llegue este mes de septiembre.
Identificada como JEP (JDK Enhancement Proposal) 424, la API de funciones y memoria externas invocaría código fuera de la JVM accediendo a memoria externa. Esta API apareció en una fase de incubación en el JDK 17 y se reincubará en el JDK 18, cuyo lanzamiento está previsto para el 22 de marzo. Para el JDK 19, la API pasará a una fase de vista previa, incorporando mejoras basadas en los comentarios. El JDK 19 será una versión a corto plazo de Java que sólo tendrá una duración de seis meses.
Otra posibilidad de inclusión en JDK 19 es una API vectorial, que se está incubando por tercera vez en JDK 18. Se ha propuesto una cuarta incubación. Esta API expresaría cálculos vectoriales que se compilarían en tiempo de ejecución en instrucciones vectoriales óptimas. Otra posibilidad es la concordancia de patrones para expresiones y sentencias de conmutación, que está siendo objeto de un segundo avance en el JDK 18.
En general, se prevé que este año Java continúe la evolución de cuatro iniciativas, según Oracle. Éstas incluyen el Proyecto Valhalla, para incubar características avanzadas de la JVM y del lenguaje; el Proyecto Panamá, para interconectar el código nativo y el de la JVM; el Proyecto Loom, para mejorar la concurrencia; y el Proyecto Amber, para explorar e incubar características del lenguaje Java más pequeñas y orientadas a la productividad.
Las siguientes características, que son objeto de JEP o de borradores de JEP no dirigidos ahora a una versión específica de Java, podrían muy bien encontrar su camino en Java 19:
- Un avance de los genéricos universales, de Valhalla. Entregados a través de tres JEP, los genéricos universales unificarían el tratamiento de los tipos de referencia y primitivos en el código genérico, permitiendo que las variables de tipo Java abarquen ambos tipos.
- Un avance de los objetos de valor, también una mejora de Valhalla, que proporciona instancias de clase que sólo tienen campos de instancia finales y carecen de identidad de objeto. Se declararían clases de valor sin identidad.
- Una vista previa de los patrones de registro, para deconstruir los valores de registro. Esto forma parte del proyecto Amber.
- Fijación de regiones para el recolector de basura G1, para reducir la latencia implementando la fijación de regiones a G1, para que la recolección de basura no tenga que ser desactivada durante las regiones críticas de JNI (Java Native Interface).
- Un puerto Linux del JDK para RISC-V, una arquitectura de conjunto de instrucciones de código abierto y libre de derechos.
Algunas de estas características, si no se incluyen en el JDK 19, podrían aparecer en una versión posterior, como el JDK 20, que llegaría en marzo de 2023, según la periodicidad de lanzamiento semestral de Java. Otras podrían pasar a una versión aún más tardía o quizás nunca lleguen a estar en Java.