Oracle anunció la disponibilidad de Java 22, la última versión de la plataforma de desarrollo y el lenguaje de programación número uno del mundo. Java 21 (Oracle JDK 21) ofrece miles de 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 21 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.
La comunidad global de Java adopta Java 22
"Dentro del ecosistema dinámico de la Comunidad Java de Turquía (TJC), el soporte duradero de Oracle alimenta nuestro impulso", señala Evren Tan, líder de la comunidad de TJC. "Al tiempo que se desarrolla Java 22, estamos adoptando una serie de funcionalidades contemporáneas que mejoran aún más la eficiencia de los desarrolladores, reforzando nuestro compromiso con el avance de la tecnología Java en Turquía. También damos la bienvenida a los desarrolladores de Java de todo el mundo para que se unan a nosotros en las actividades de TJC, con el espíritu acogedor de la comunidad que mantiene vibrante a Java".
"La popularidad de Java como lenguaje de programación, plataforma y comunidad de desarrolladores sigue creciendo en Marruecos y en la región africana", comenta Badr El Hourari, fundador y CIO de xHub. "Con Java 22, es alentador ver al equipo de Java de Oracle centrarse en unas innovaciones que ayudará a los nuevos desarrolladores a adoptar Java con mayor rapidez, como con JEP 463. Al simplificar el lenguaje, se allana el acceso a Java para una nueva generación de programadores. Además, aquí en Marruecos, seguimos destacando la importancia de Java en la conferencia anual de Devoxx Marruecos, e invitamos a todos los desarrolladores al evento de este año para escuchar a algunas de las voces globales más influyentes en la comunidad de Java".
"Me entusiasman las características que Java 22 reúne para todos, desde estudiantes hasta desarrolladores sénior, y desde entusiastas aventureros de Java hasta organizaciones que buscan un rendimiento estable", comenta Mala Gupta, Java Developer Advocate, JetBrains. "Java está adoptando un enfoque minimalista, ya que trata de reducir todos los formalismos relacionados con la escritura de pasos iniciales de código, a través del método principal de la instancia y las clases implícitas, lo que facilita a las personas comenzar a aprender Java. Con el cambio de imagen del constructor (Statements before Super[…]), Java ha demostrado una vez más que impulsa la innovación responsable, y es muy reconfortante que reduzca las restricciones de lenguaje que existían en la versión 1.0 de Java sin romper ningún código. IntelliJ IDEA 2024.1 está listo para admitir las funcionalidades de Java 22 con la vista puesta en facilitar su uso por parte de los desarrolladores de Java".
"El equipo de Helidon reconoció el valor de los threads virtuales en cuanto los anunciaron. Con Helidon 4, el equipo reescribió el servidor web de Helidon para utilizar de forma nativa threads virtuales, lo que redundó en un notable incremento del rendimiento mucho mejor y de la productividad de los desarrolladores", señala Will Lyons, vicepresidente de gestión de productos, Oracle. "Ahora con Java 22 estamos percibiendo otro nuevo aumento del rendimiento de los threads virtuales, y estas importantes mejoras beneficiarán a todos los usuarios de Helidon".