Oracle anunció la disponibilidad de Java 22, la última versión de la plataforma de desarrollo y el lenguaje de programación. Java 22 (Oracle JDK 22) ofrece mejoras de rendimiento, estabilidad y seguridad que ayudarán a los desarrolladores a incrementar la productividad e impulsar la innovación y el crecimiento en sus organizaciones. Estas incluyen mejoras en el lenguaje Java, sus API y rendimiento, y las herramientas incluidas en el JDK.
“Las nuevas mejoras de Java 22 permiten a más desarrolladores crear y entregar de forma rápida y sencilla aplicaciones ricas en funciones, escalables y seguras para contribuir a que organizaciones de todo el mundo impulsen el crecimiento de sus negocios”, señala Georges Saab, vicepresidente sénior de Oracle Java Platform y presidente del consejo de administración de OpenJDK. “Al ofrecer mejoras que optimizan el desarrollo de aplicaciones y amplían el alcance de Java para que sea accesible para desarrolladores de todos los niveles de competencia, Java 22 ayudará a impulsar la creación de una amplia gama de nuevas aplicaciones y servicios para organizaciones y desarrolladores por igual”.
La última versión de Java Development Kit (JDK) proporciona actualizaciones y mejoras en respuesta a 12 propuestas de mejora (JEP). JDK 22 incorpora mejoras de lenguaje de OpenJDK Project Amber (Statements before super, Unnamed Variables” Patterns, String Templates, and Implicitly Declared Classes and Instance Main Methods); mejoras de Project Panama (Foreign Function” Memory API and Vector API); características relacionadas con Project Loom (Structured Concurrency and Scoped Values); bibliotecas principales y capacidades de herramientas (Class-File API, Launch Multi-File Source-Code Programs, Stream Gatherers); y actualizaciones de rendimiento (Region Pinning for G1).
“Después de casi tres décadas, la capacidad de Java para admitir tareas de desarrollo complejas que incluyen una amplia gama de casos de uso hace que la plataforma sea tan relevante como siempre”, comenta Arnal Dayaratna, vicepresidente de investigación de desarrollo de software de IDC. “La versatilidad y el conjunto de herramientas de Java permiten que facilite el desarrollo de aplicaciones esenciales de producción a escala, lo que la posiciona como una tecnología de activación clave para casos de uso innovadores como la IA generativa”.
Principales actualizaciones que incorpora Java 22:
Características de Project Amber
- JEP 447: Statements before super(…): otorga a los desarrolladores la libertad de expresar el comportamiento de los constructores. Al permitir que las sentencias que no estén referenciadas a la instancia que se está creando aparezcan antes de una invocación explícita al constructor, esta función permite una colocación más natural de la lógica que se debe tener en cuenta en los métodos estáticos auxiliares, los constructores intermedios auxiliares o los argumentos del constructor. También sigue garantizando que los constructores se ejecuten en orden descendente durante la instanciación de clases, lo que garantiza que el código de un constructor de subclases no pueda interferir con la instanciación de superclases. Además, esta función no exige la realización de cambios en Java Virtual Machine y solo se basa en la capacidad actual de JVM de verificar y ejecutar el código que aparece antes de las invocaciones explícitas al constructor dentro de los constructores.
- JEP 456 Unnamed Variables & Patterns: contribuye a mejorar la productividad del desarrollador a través de la mejora del lenguaje Java con variables y patrones sin nombre, que se pueden utilizar cuando se necesitan declaraciones de variables o patrones anidados, pero nunca se utilizan. De esta manera, se reduce la probabilidad de cometer errores, mejora la legibilidad de los patrones de registro y aumenta la capacidad de mantenimiento de todo el código.
- JEP 459: String Templates (Second Preview) simplifica el desarrollo de programas Java al facilitar la expresión de cadenas que incluyen valores calculados en tiempo de ejecución y mejora la seguridad de los programas que componen cadenas a partir de valores proporcionados por el usuario y las transfieren a otros sistemas. Además, se mejora la legibilidad de las expresiones que mezclan texto y expresiones, y se pueden crear valores no de cadena calculados a partir de texto literal y expresiones embebidas sin tener que pasar por una representación de cadena intermedia.
- JEP 463: Implicitly Declared Classes and Instance Main Methods (Second Preview): ayuda a acelerar el aprendizaje ya que ofrece un acercamiento sencillo a la programación de Java para que los estudiantes puedan escribir sus primeros programas sin necesidad de comprender las funciones de lenguaje diseñadas para programas grandes. Con esta función, los educadores pueden introducir conceptos de manera progresiva y los estudiantes pueden escribir declaraciones simplificadas para programas de clase única y expandir sin problemas sus programas para usar características más avanzadas a medida que desarrollan sus competencias.
Características de Project Loom
- JEP 462: Structured Concurrency (Second Preview): permite que los desarrolladores optimicen la gestión y la resolución de errores y mejoren la observabilidad mediante la introducción de una API para la concurrencia estructurada. Ayuda a promover un estilo de programación concurrente que pueda eliminar riesgos comunes derivados de la cancelación y el cierre, como las fugas de threads y los retrasos de cancelación, y mejore la observabilidad del código concurrente.
- JEP 464: Scoped Values (Second Preview): contribuye a aumentar la facilidad de uso, la comprensibilidad, el rendimiento y la solidez de los proyectos de los desarrolladores, ya que facilita el uso compartido de datos inmutables dentro de los threads y entre ellos.
Características de Project Panama
- JEP 454: Foreign Function & Memory API: aumenta la facilidad de uso, la flexibilidad, la seguridad y el rendimiento de los desarrolladores mediante la introducción de una API que permite que los programas Java interoperen con código y datos fuera del tiempo de ejecución de Java. Al invocar de forma eficaz funciones externas como código ajeno a Java Virtual Machine (JVM) y mediante el acceso seguro a memoria externa (es decir, no gestionada por JVM), la nueva API permite a los programas Java llamar a bibliotecas nativas y procesar datos nativos sin necesidad de utilizar Java Native Interface.
- JEP 460: Vector API (Seventh Incubator): permite a los desarrolladores lograr un rendimiento superior a los cálculos escalares equivalentes mediante la introducción de una API para expresar cálculos vectoriales que compilen de forma fiable en tiempo de ejecución instrucciones de vector en arquitecturas de CPU soportadas.
Características de Core Libraries & Tools
- JEP 457: Class-File API (Preview): ayuda a los desarrolladores a mejorar la productividad proporcionando una API estándar para analizar, generar y transformar archivos de clase Java.
- JEP 458: Launch Multi-File Source-Code Programs: brinda a los desarrolladores la capacidad de elegir si configuran o no, y cuándo, una herramienta de creación, ya que mejora el iniciador de aplicaciones Java para ejecutar un programa proporcionado como varios archivos de código fuente Java.
- JEP 461: Stream Gatherers (Preview): ayuda a los desarrolladores a mejorar la productividad mediante la mejora de la API de flujo para soportar operaciones intermedias personalizadas, lo que permitirá a los pipelines de flujo transformar datos de formas que no se pueden lograr fácilmente con las operaciones intermedias prediseñadas existentes. Al incrementar la flexibilidad y la expresividad de los pipelines de flujo 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 de código Java.
Actualizaciones del rendimiento
- JEP 423: Region Pinning for G1: contribuye a reducir la latencia ya que permite que se produzca alguna recopilación de basura de programación durante algunas llamadas de biblioteca nativa que, de lo contrario, habrían precisado interrumpir el recopilador. Esto se logra realizando el seguimiento de los objetos que se deben bloquear durante estas llamadas de biblioteca nativa y el “anclaje” solo de las regiones que contienen estos objetos. Esto permite que la recolección de basura de programación continúe con normalidad en regiones sin anclaje, incluso durante lo que de otro modo habría sido una llamada de bloque a una biblioteca nativa
Java 22 es el resultado de la continua colaboración entre ingenieros de Oracle y otros miembros de la comunidad mundial de desarrolladores Java a través de OpenJDK y Java Community Process (JCP). Además de estas nuevas mejoras y características, Java 22 incluye Java Management Service (JMS), un servicio nativo de Oracle Cloud Infrastructure (OCI) que proporciona un único panel para ayudar a las organizaciones a gestionar los tiempos de ejecución y aplicaciones Java en entornos locales y en cualquier nube.
Soporte del ecosistema global de Java con innovación en la nube
Java impulsa el rendimiento, la eficiencia, la innovación y el ahorro de costes cuando se implementa en la nube en Oracle Cloud Infrastructure, que es una de las primeras nubes hiperescaladoras en admitir Java 22. Al ofrecer Oracle Java SE, Oracle GraalVM y Java SE Subscription Enterprise Performance Pack de forma gratuita con Oracle Cloud Infrastructure, Java 22 permite a los desarrolladores crear y desplegar aplicaciones que se ejecutan más rápido, mejor y con una rentabilidad optimizada.
Oracle Java Universal SE Subscription es una oferta de pago por consumo que proporciona a los clientes el mejor soporte de su categoría. Incluye soporte de clasificación para toda la cartera de Java, derecho de acceso a GraalVM Enterprise, Java SE Subscription Enterprise Performance Pack, acceso a las funciones avanzadas de Java Management Service y flexibilidad para realizar actualizaciones al ritmo de su negocio. Esto ayuda a las organizaciones de TI a hacer frente a la complejidad, limitar sus costes y mitigar los riesgos de seguridad.