Lanzamiento de Java SE 18

Después de seis meses de desarrollo, Oracle ha lanzado la plataforma Java SE 18 (Java Platform, Standard Edition 18), cuya implementación de referencia utiliza el proyecto abierto OpenJDK. A excepción de la eliminación de algunas características obsoletas, Java SE 18 mantiene la compatibilidad hacia atrás con las versiones anteriores de la plataforma Java; la mayoría de los proyectos Java previamente escritos funcionarán sin cambios al ejecutarse en la nueva versión. Las distribuciones listas para instalar de Java SE 18 (JDK, JRE y Server JRE) están preparadas para Linux (x86_64, AArch64), Windows (x86_64) y macOS (x86_64, AArch64). La implementación de referencia de Java 18 desarrollada en el marco del proyecto OpenJDK está completamente abierta bajo la licencia GPLv2 con excepciones de GNU ClassPath, que permiten el enlace dinámico con productos comerciales.

Java SE 18 se clasifica como una versión con un ciclo de soporte regular, y las actualizaciones se lanzarán hasta el próximo lanzamiento. Para una rama de soporte a largo plazo (LTS), se debe utilizar Java SE 17, cuyos actualizaciones se proporcionarán hasta 2029. Cabe recordar que desde el lanzamiento de Java 10, el proyecto ha adoptado un nuevo proceso de desarrollo, que implica un ciclo más corto para la creación de nuevas versiones. Las nuevas funcionalidades ahora se desarrollan en una rama maestra que se actualiza constantemente, incorporando cambios ya listos y de la cual se bifurcan ramas cada seis meses para estabilizar nuevos lanzamientos.

Entre las novedades de Java 18 se destacan:

  • Por defecto, se utiliza la codificación UTF-8. La API de Java que maneja datos textuales considerando la codificación de caracteres ahora utilizará UTF-8 por defecto en todas las plataformas, independientemente de la configuración del sistema y de la localidad establecida. Para volver al comportamiento anterior, en el que la codificación se seleccionaba teniendo en cuenta la localidad del sistema, se puede utilizar el parámetro «-Dfile.encoding=COMPAT».
  • El paquete com.sun.net.httpserver está incluido, que contiene la utilidad jwebserver y la API de biblioteca con la implementación de un servidor http simple para servir contenido estático (no se admiten controladores CGI ni similares a servlets). El servidor http incorporado no está optimizado para 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 para crear prototipos, depurar y probar proyectos.
  • JavaDoc implementa el soporte para la etiqueta «@snippet» que permite incrustar ejemplos funcionales y fragmentos de código en la documentación de la API, a los que se pueden aplicar herramientas para verificar la corrección, resaltar la sintaxis e integrarse con IDEs.
  • Se ha reformulado la implementación de la API java.lang.reflect (Reflexión de Núcleo), que está destinada a obtener información sobre métodos, campos y constructores de clases, así como acceder a la estructura interna de las clases. La API java.lang.reflect se ha mantenido sin cambios, pero ahora se implementa mediante el uso de descriptores de métodos (method handles) proporcionados por el módulo java.lang.invoke, en lugar de utilizar generadores de código de bytes. Este cambio ha permitido unificar las implementaciones de java.lang.reflect y java.lang.invoke, y simplificar su mantenimiento.
  • Se ha propuesto una tercera implementación preliminar de la API Vector, que proporciona funciones para cálculos vectoriales que se realizan utilizando instrucciones vectoriales de los procesadores x86_64 y AArch64, permitiendo aplicar operaciones simultáneamente a varios valores (SIMD). A diferencia de las capacidades de auto-vectorización de operaciones escalares ofrecidas en el compilador JIT HotSpot, la nueva API permite gestionar explícitamente la vectorización para el procesamiento paralelo de datos.
  • Se ha añadido una interfaz SPI (interfaz de proveedor de servicio) para resolver nombres de host y direcciones IP, que permite utilizar en java.net.InetAddress resolvers alternativos que no dependen de los manejadores proporcionados por el sistema operativo.
  • Se ha propuesto una segunda implementación previa de la API Foreign Function & Memory, que permite a las aplicaciones interactuar con código y datos fuera del entorno de ejecución de Java. La nueva API permite invocar eficientemente funciones que no se ejecutan en la JVM y acceder a memoria no gestionada por la JVM. Por ejemplo, se pueden invocar funciones de bibliotecas compartidas externas y acceder a los datos del proceso sin usar JNI.
  • Se ha añadido una segunda implementación experimental de coincidencia de patrones en expresiones «switch», que permite utilizar en las etiquetas «case» no solo valores exactos, sino patrones flexibles que abarcan una serie de valores, para los cuales antes era necesario utilizar largas cadenas de expresiones «if…else». Object o = 123L; String formatted = switch (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); default -> o.toString(); };
  • Se declara obsoleto y se desactivará en una de las próximas versiones el mecanismo de finalización, así como los métodos relacionados, como Object.finalize(), Enum.finalize(), Runtime.runFinalization() y System.runFinalization().
  • Se ha implementado soporte de deduplicación de cadenas en los recolectores de basura ZGC (Z Garbage Collector), SerialGC y ParallelGC.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster