Después de seis meses de desarrollo, Oracle dio a conocer la liberación de la nueva versión de Java SE 18 (Standard Edition), que utiliza el proyecto de código abierto OpenJDK como implementación de referencia.
En esta nueva versión de Java SE 18 llega con la excepción de la eliminación de algunas funciones obsoletas, mantiene la compatibilidad con versiones anteriores de la plataforma Java y la mayoría de los proyectos Java escritos anteriormente seguirán funcionando sin cambios cuando se ejecuten con la nueva versión.
Principales novedades de Java SE 18
En esta nueva versión que se presenta de Java SE 18 la codificación predeterminada es UTF-8. Las API de Java que procesan datos de texto codificados con caracteres ahora usarán UTF-8 de forma predeterminada en todas las plataformas, independientemente de la configuración del sistema y la configuración regional. Para devolver el comportamiento anterior, en el que la codificación se elige teniendo en cuenta la configuración regional del sistema, puede utilizar el parámetro «-Dfile.encoding=COMPAT».
Otro de los cambios que se destaca es él rediseñó la implementación de la API java.lang.reflect (Core Reflection), diseñada para obtener información sobre métodos, campos y constructores de clases, así como acceso a la estructura interna de las clases. La API java.lang.reflect en sí no ha cambiado, pero ahora se implementa utilizando los identificadores de métodos proporcionados por el módulo java.lang.invoke, en lugar de utilizar generadores de bytecode. El cambio permitió unificar y facilitar el mantenimiento de las implementaciones de java.lang.reflect y java.lang.invoke.
Ademas de ello, tambien se menciona que se propone la tercera implementación preliminar de Vector API, que proporciona funciones para cálculos vectoriales que se realizan utilizando las instrucciones vectoriales de los procesadores x86_64 y AArch64 y permiten aplicar operaciones simultáneamente a varios valores (SIMD). A diferencia de las capacidades provistas en el compilador HotSpot JIT para la vectorización automática de operaciones escalares, la nueva API permite controlar explícitamente la vectorización para el procesamiento de datos en paralelo.
Tambien se destaca que se agregó una interfaz SPI (interfaz de proveedor de servicios) para resolver nombres de host y direcciones IP, lo que permite usar resolutores alternativos en java.net.InetAddress que no están vinculados a los controladores ofrecidos por el sistema operativo.
Por otra parte, se ha propuesto una segunda implementación preliminar de Foreign Function & Memory API, con la que las aplicaciones pueden interactuar con código y datos fuera del tiempo de ejecución de Java. La nueva API permite llamar de manera eficiente a funciones que no son de JVM y acceder a la memoria que no está administrada por JVM. Por ejemplo, puede llamar a funciones desde bibliotecas compartidas externas y acceder a datos de procesos sin usar JNI.
Se ha añadido una segunda implementación experimental de coincidencia de patrones en expresiones «switch», que permite utilizar plantillas flexibles en lugar de valores exactos en etiquetas «case», cubriendo una serie de valores a la vez, para lo que antes había que utilizar engorrosas cadenas de expresiones «if…else».
Se incluye el paquete com.sun.net.httpserver, que incluye la utilidad jwebserver y la API de la biblioteca con la implementación de un servidor http simple para entregar contenido estático (no se admiten los controladores CGI y similares a servlets). El servidor http integrado no está optimizado para las cargas de trabajo y no admite el control de acceso ni la autenticación, ya que está diseñado principalmente para su uso en el proceso de desarrollo de proyectos de creación de prototipos, depuración y prueba.
De los demás cambios que se destacan:
- JavaDoc admite la etiqueta «@snippet» para incrustar ejemplos de trabajo y fragmentos de código en la documentación de la API, a la que se puede acceder con herramientas de validación, resaltado de sintaxis e integración de IDE.
- En desuso y se eliminará en una versión futura, el mecanismo de finalización, así como los métodos relacionados, como Object.finalize(), Enum.finalize(), Runtime.runFinalization() y System.runFinalization().
- Los recolectores de basura ZGC (Z Garbage Collector), SerialGC y ParallelGC admiten la deduplicación de cadenas.
Java SE 18 se clasifica como una versión de soporte regular, con actualizaciones que se publicarán antes de la próxima versión. La rama de soporte a largo plazo (LTS) debe ser Java SE 17, que recibirá actualizaciones hasta 2029.
Es importante recordar que a partir del lanzamiento de Java 10, el proyecto cambió a un nuevo proceso de desarrollo, lo que implica un ciclo más corto para la formación de nuevos lanzamientos. La nueva funcionalidad ahora se está desarrollando en una rama maestra constantemente actualizada, que incluye cambios ya completados y desde la cual las ramas se ramifican cada seis meses para estabilizar las nuevas versiones.
Obtener Java SE 18
Para los interesados en poder probar esta nueva versión, deben saber que las compilaciones están listas para Linux (x86_64, AArch64), Windows (x86_64) y macOS (x86_64, AArch64) y se pueden obtener desde el siguiente enlace.
from Desde Linux https://ift.tt/HIcptaV
via IFTTT
No hay comentarios.:
Publicar un comentario