Oracle ha anunciado la disponibilidad de Java 22, la última versión del lenguaje de programación y plataforma de desarrollo número uno. Java 22 (Oracle JDK 22) ofrece miles de mejoras de rendimiento, estabilidad y seguridad para ayudar a los desarrolladores a aumentar la productividad, impulsar la innovación y acelerar el crecimiento de sus organizaciones. Entre ellas se incluyen mejoras en el lenguaje Java, sus API y su rendimiento, así como en las herramientas incluidas en el kit de desarrollo Java (JDK).

El último JDK ofrece actualizaciones y mejoras con 12 propuestas de mejora del JDK (JEP). El JDK 22 ofrece mejoras del lenguaje del proyecto OpenJDK Amber (Declaraciones antes de super[?], Variables y patrones sin nombre, Plantillas de cadenas y Clases declaradas implícitamente y métodos principales de instancia); mejoras del proyecto Panamá (API de funciones y memorias externas y API de vectores); funciones relacionadas con el proyecto Loom (Concurrencia estructurada y Valores de ámbito); capacidades de bibliotecas y herramientas básicas (API de archivos de clases, Lanzamiento de programas de código fuente de varios archivos y Recopiladores de flujos); y actualizaciones de rendimiento (Region Pinning para G1). Las actualizaciones significativas incluidas en Java 22 son: Características del proyecto Amber: JEP 447: Sentencias antes de super(?): Da libertad a los desarrolladores para expresar el comportamiento de los constructores.

Al permitir que las declaraciones que no hacen referencia a la instancia que se está creando aparezcan antes de la invocación explícita de un constructor, esta característica permite una colocación más natural de la lógica que necesita ser factorizada en métodos estáticos auxiliares, constructores intermedios auxiliares o argumentos de constructores. También preserva la garantía existente de que los constructores se ejecutan en orden descendente durante la instanciación de la clase, lo que ayuda a garantizar que el código de un constructor de una subclase no pueda interferir con la instanciación de la superclase. Además, esta característica no requiere ningún cambio en la máquina virtual Java (JVM) y se basa únicamente en la capacidad actual de la JVM para verificar y ejecutar el código que aparece antes de las invocaciones explícitas de constructores dentro de los constructores.

JEP 456: Variables sin nombre y patrones: Ayuda a mejorar la productividad de los desarrolladores mejorando el lenguaje Java con variables y patrones sin nombre, que pueden utilizarse cuando se requieren declaraciones de variables o patrones anidados pero nunca se utilizan. Esto reduce las oportunidades de error, mejora la legibilidad de los patrones de registro y aumenta la mantenibilidad de todo el código. JEP 459: Plantillas de cadenas (segunda versión preliminar): Simplifica el desarrollo de programas Java al facilitar la expresión de cadenas que incluyen valores calculados en tiempo de ejecución, al tiempo que mejora la seguridad de los programas que componen cadenas a partir de valores proporcionados por el usuario y los pasan a otros sistemas. Además, se mejora la legibilidad de las expresiones mezcladas con texto, y se pueden crear valores no cadena computados a partir de texto literal y expresiones incrustadas sin tener que pasar por una representación de cadena intermedia.

JEP 463: Clases declaradas implícitamente y métodos principales de instancia (segunda versión preliminar): Ayuda a acelerar el aprendizaje ofreciendo una rampa de acceso suave a la programación Java para que los estudiantes puedan escribir sus primeros programas sin necesidad de comprender las características del lenguaje diseñadas para programas grandes. Con esta función, los educadores pueden introducir los conceptos de forma gradual y los alumnos pueden escribir declaraciones simplificadas para programas de una sola clase y ampliar sin problemas sus programas para utilizar funciones más avanzadas a medida que aumenten sus conocimientos. Características del telar de proyectos: JEP 462: Concurrencia estructurada (Segundo avance): Ayuda a los desarrolladores a agilizar la gestión y cancelación de errores y a mejorar la observabilidad mediante la introducción de una API para la concurrencia estructurada. Esto ayuda a promover un estilo de programación concurrente que puede eliminar los riesgos comunes derivados de la cancelación y el cierre ?

como fugas de hilos y retrasos en la cancelación ? y mejora la observabilidad del código concurrente. JEP 464: Scoped Values (Second Preview): Ayuda a aumentar la facilidad de uso, la comprensibilidad, el rendimiento y la solidez de los proyectos de los desarrolladores al permitir compartir datos inmutables dentro de los hilos y entre ellos.

Características del proyecto Panamá: JEP 454: API de funciones ajenas y memoria: Aumenta la facilidad de uso, la flexibilidad, la seguridad y el rendimiento para los desarrolladores mediante la introducción de una API que permite a los programas Java interoperar con código y datos ajenos al tiempo de ejecución de Java. Mediante la invocación eficaz de funciones ajenas, como el código fuera de la máquina virtual Java, y el acceso seguro a la memoria ajena (es decir, la memoria no gestionada por la JVM), la nueva API permite a los programas Java llamar a bibliotecas nativas y procesar datos nativos sin necesidad de la interfaz nativa Java. JEP 460: API vectorial (Séptima incubadora): Permite a los desarrolladores lograr un rendimiento superior al de los cálculos escalares equivalentes mediante la introducción de una API para expresar cálculos vectoriales que se compilan de forma fiable en tiempo de ejecución a instrucciones vectoriales en las arquitecturas de CPU compatibles.

Características de las bibliotecas y herramientas básicas: JEP 457: API de archivos de clase (vista previa): Ayuda a los desarrolladores a mejorar la productividad proporcionando una API estándar para analizar, generar y transformar archivos de clase Java. JEP 458: Lanzamiento de programas de código fuente de múltiples archivos: Permite a los desarrolladores elegir si y cuándo configurar una herramienta de compilación mediante la mejora del lanzador de aplicaciones Java para que pueda ejecutar un programa suministrado como múltiples archivos de código fuente Java. JEP 461: Stream Gatherers (Vista previa): Ayuda a los desarrolladores a mejorar la productividad mediante la mejora de la API Stream para que admita operaciones intermedias personalizadas, lo que permitirá a las canalizaciones de flujos transformar los datos de formas que no son fácilmente realizables con las operaciones intermedias incorporadas existentes.

Al hacer que las canalizaciones de flujos sean más flexibles y expresivas y permitir que las operaciones intermedias personalizadas manipulen flujos de tamaño infinito, esta función permite a los desarrolladores ser más eficientes en la lectura, escritura y mantenimiento del código Java.