Java 22 mejora la eficiencia de los programas y la gestión de los datos externos
Oracle ha publicado JDK 22, que dependiendo del prisma por el que se mire puede ser entendido como OpenJDK 22 o Java 22. Una vez más, recordamos que OpenJDK es la base de la implementación comercial de Java desde la versión 7, así que las dos grandes vertientes de la tecnología están sincronizadas desde hace muchos años.
Java sigue una cadencia de lanzamientos de seis meses desde hace bastante tiempo. Esto ha permitido a la tecnología evolucionar a mayor velocidad, pero con el coste de introducir una menor cantidad de novedades y cambios en cada versión. Por otro lado están las modificaciones introducidas en la licencia de la versión comercial, que en su momento generaron bastante controversia, pero en el fondo no son algo tan dramático si uno migra a OpenJDK, cuya publicación bajo la licencia GPLv2 minimiza las probabilidades de que Oracle imponga restricciones muy severas.
JDK 22 ha llegado con un total de doce mejoras respaldadas a través de sus propias Propuestas de Mejora del JDK (JEP), entre las que hay siete características en fase previa y una que se encuentra en la incubadora. Dichas mejoras abarcan distintas áreas de la tecnología y vamos a mencionar a continuación las más destacadas.
En primer lugar nos encontramos con las variables y los patrones sin nombre, que mejoran la legibilidad cuando se requieren declaraciones de variables o patrones anidados que no son utilizados. Para ambos casos se emplea el carácter de guion bajo para indicarlos y su propósito es reducir las posibilidades de error por parte del desarrollador, mejorar el mantenimiento del código al identificar las variables que deben declararse sin ser utilizadas, permitir que múltiples patrones aparezcan en una sola etiqueta si ninguno de ellos declara una variable de patrón y mejorar la legibilidad de los patrones de registros al eliminar los patrones de tipos anidados innecesarios.
En segunda fase previa están las plantillas de cadenas de caracteres, que complementan las cadenas literales y los bloques de texto ya presentes en Java acoplando texto literal con expresiones integradas y procesadores de plantillas para producir resultados especializados. Estas plantillas permiten simplificar la escritura de los programas, además de mejorar la legibilidad de las expresiones que mezclan texto y expresiones y la seguridad de los programas que componen cadenas a partir de valores proporcionados por el usuario y que pasa por otros sistemas.
También han llegado en segunda fase previa las clases y métodos principales de instancia implícitamente declarados, que permiten a los estudiantes escribir sus primeros programas en Java sin necesidad de entender las características orientadas a programas grandes. Sí, esto está más orientada al aprendizaje que a la producción, y no es la primera vez que Java implementa algo por el estilo.
En cuanto a bibliotecas, la API de función foránea (foreign) y memoria permite que los programas de Java sean capaces de interoperar con código y datos que están fuera del entorno de ejecución (runtime). Al invocar de manera eficiente funciones externas y acceder de forma segura a la memoria externa que no es administrada por la máquina virtual de Java (JVM), la API hace que sea posible que un programa de Java pueda llamar a bibliotecas nativas y procesar datos nativos sin la fragilidad ni el peligro que conlleva la interfaz nativa de Java (JNI).
En fase previa ha sido incorporada la API Class-File (fichero de clase), que proporciona una API estándar para analizar, generar y transformar ficheros de clase de Java, además de los recolectores de streams para mejorar la API Stream a la hora de soportar operaciones intermediarias personalizadas. En segunda fase previa están la concurrencia estructurada para simplificar la programación concurrente y los valores de alcance (scoped values) para permitir una compartición eficiente de los datos inmutables dentro de y entre hilos.
La API de vectores, que es un clásico de los lanzamientos del JDK y que está orientada a expresar cálculos vectoriales que se compilan de manera confiable en el entorno de ejecución con instrucciones vectoriales óptimas para las arquitecturas de CPU soportadas, está en su séptima fase de incubación y ha incorporado mejoras de rendimiento y correcciones.
En cuanto las características relacionadas con el rendimiento, se ha implementado fijación regional en el recolector de basura G1 para reducir las latencias, por lo que ya no es necesario inhaibilitarlo en las regiones críticas de la JNI, y la posibilidad de que los usuarios puedan ejecutar un programa suministrado a través de varios ficheros de código fuente sin tener que compilarlo primero.
Todos los detalles sobre Java 22 pueden ser consultados a través de las notas de lanzamiento disponibles en la web de OpenJDK y en la entrada publicada en el blog oficial de Java. La versión software libre del JDK puede ser obtenida desde el sitio web de Java (alternativamente y extraoficialmente desde Adoptium) y la comercial desde la web de Oracle.
La entrada Java 22 mejora la eficiencia de los programas y la gestión de los datos externos es original de MuyLinux