Oracle anuncia la disponibilidad de Java 18
Oracle anunció hoy la disponibilidad de Java 18, la última versión del lenguaje de programación y la plataforma de desarrollo número uno del mundo. Java 18 (Oracle JDK 18) ofrece miles de mejoras en cuanto a rendimiento, estabilidad y seguridad, incluyendo nueve propuestas de mejora de la plataforma e impulsando así aún más la productividad de los desarrolladores.
La última versión de Java Development Kit (JDK) proporciona actualizaciones y responde a nueve propuestas de mejora (JEP). Entre ellas, la capacidad de agregar fragmentos de código a la documentación de las API de Java (JEP 413), que simplifica la adición de código fuente de muestra a la documentación de las API, y Simple Web Server (JEP 408) para la creación de prototipos y pruebas.
Los desarrolladores pueden explorar dos módulos en incubación: la API Vector (JEP 417) y la API Foreign Function and Memory (JEP 419), así como una función en vista previa, la correspondencia de patrones para expresiones y sentencias switch (JEP 420).
Georges Saab, vicepresidente de desarrollo del Java Platform Group de Oracle, indica: ‘El lanzamiento de Java 18 demuestra el compromiso continuo de Oracle por proporcionar a las empresas y desarrolladores un acceso más rápido a las mejoras, con un ritmo de introducción de funciones cada seis meses’.
Y agrega: ‘Seguimos realizando inversiones técnicas que mejoran el rendimiento, la estabilidad y la seguridad de las implementaciones de Java SE Platform, así como de Java Development Kit’.
Por su parte, James Governor, analista principal en RedMonk asegura que ‘los desarrolladores de Java quieren innovación continua con funciones de lenguaje de programación modernas, mejoras de la experiencia del desarrollador, servicios gestionados en la nube y estabilidad’.
Además añade, ‘con la consistente cadencia de lanzamientos por semestre de Java, Oracle satisface esas demandas y ayuda a garantizar que Java siga siendo relevante para las aplicaciones y cargas de trabajo modernas’.
Aceleración de la adopción de Java en la nube
Recientemente, Oracle presentó Java Management Service (JMS), un nuevo servicio nativo de Oracle Cloud Infrastructure (OCI) que ayuda a gestionar entornos de ejecución y aplicaciones Java en entornos locales o en cualquier nube.
JMS proporciona la información necesaria para gestionar los despliegues de Java en toda la empresa. Java Management Service se ofrece para cargas de trabajo de OCI y para suscriptores de Java SE.
Java 18 es la última versión que se presenta siguiendo la cadencia de lanzamiento de seis meses, y es el resultado de una amplia colaboración entre ingenieros de Oracle y otros miembros de la comunidad de desarrolladores de Java de todo el mundo a través del proyecto OpenJDK y del Java Community Process (JCP).
Esto garantiza un flujo constante de innovaciones, al tiempo que proporciona mejoras continuas en el rendimiento, la estabilidad y la seguridad. De este modo, se reforzará la presencia de Java en organizaciones y sectores de todos los tamaños.
Entre los cambios más importantes de Java 18 se encuentran:
Actualizaciones y mejoras de las bibliotecas
- JEP 400: UTF-8 por defecto – Define UTF-8 como el juego de caracteres por defecto de las API estándar de Java. Con este cambio, las API que dependen del conjunto de caracteres predeterminado se comportarán de manera consistente en todas las implementaciones, sistemas operativos, configuraciones regionales y ajustes.
- JEP 408: Simple Web Server – Herramienta de línea de comandos y API para iniciar un servidor web mínimo que solo sirva archivos estáticos. Esta herramienta será útil para fines de creación de prototipos, codificación ad hoc y pruebas, especialmente en contextos educativos.
- JEP 416: Volver a implementar la reflexión estándar mediante controladores de métodos – Vuelve a implementar java.lang.reflect.Method, Constructor y Field además los controladores de métodos java.lang.invoke. Al convertir los controladores de métodos en el mecanismo subyacente de la reflexión, se reducen los costes de mantenimiento y desarrollo de las API java.lang.reflect y java.lang.invoke.
- JEP 418: SPI de resolución de direcciones web – Define una interfaz de proveedor de servicios (SPI) para la resolución de nombres de host y direcciones, de modo que java.net.InetAddress pueda utilizar solucionadores que no sean el incorporado a la plataforma.
Herramientas
- JEP 413: Fragmentos de código en la documentación de las API de Java: Introduce la etiqueta @snippet para que el doclet estándar de JavaDoc simplifique la inclusión de código fuente de ejemplo en la documentación de las API.
Vista previa e incubaciones para versiones posteriores de JDK
· JEP 417: API Vector (tercera incubación) – Proporciona una API para que los desarrolladores puedan utilizar de forma fiable arquitecturas de CPU con extensiones de vectores escalables. Esto conducirá a un rendimiento superior en comparación con computación equivalente en procesadores no extendidos.
· JEP 419: API Foreign Function and Memory (segunda incubación) – Permite a los programas Java interoperar con código y datos que no se ejecuten en Java. Al llamar de forma eficaz a funciones externas (por ejemplo, código ajeno a JVM) y acceder de forma segura a memoria exterior (por ejemplo, memoria no gestionada por JVM), la API permite a los programas Java llamar a bibliotecas nativas y procesar datos nativos sin la fragilidad y los inconvenientes de JNI.
- JEP 420: Correspondencia de patrones para expresiones y sentencias switch (segunda vista previa) – Mejora el lenguaje de programación Java con correspondencia de patrones para expresiones y sentencias switch, junto con extensiones del lenguaje de los patrones. La ampliación de la correspondencia de patrones a las expresiones switch permite que una expresión se pruebe con una serie de patrones, cada uno con una acción específica, de modo que las consultas complejas orientadas a datos se puedan expresar de forma concisa y segura.
Blindando los programas Java de cara al futuro
- JEP 421: Declarar obsoleta la finalización para su posterior eliminación – Por ahora, la finalización permanece activada por defecto, pero se puede desactivar para facilitar las pruebas. En futuras versiones, se desactivará de forma predeterminada y, posteriormente, se eliminará. Los encargados de mantener bibliotecas y aplicaciones que utilizan la finalización deben contemplar la migración a otras técnicas de gestión de recursos, como la sentencia try-with-resources y los cleaners.