Java 18 estandariza el uso de UTF-8 e incluye un servidor de HTTP
Oracle ha anunciado la publicación como estable de Java 18, JDK 18 siendo más técnicos (la compañía usa ambas formas). Desde la adopción de la cadencia de lanzamiento de seis meses, las nuevas versiones mayores del JDK no suelen incluir tantas novedades rompedoras, pero a cambio tenemos una evolución más constante y rápida de la tecnología.
La primera novedad destacada de Java 18 es el uso de UTF-8 como conjunto de caracteres predeterminado. El propósito de este cambio es hacer que las API que dependen del conjunto de caracteres predeterminado tengan un comportamiento más uniforme a través de las distintas implementaciones, sistemas operativos, configuraciones, etc. Con esto se logra que los programas sean más predecibles y portables y se estandariza el uso de UTF-8 a través de todas las API estándares de Java con excepción de la entrada-salida de la consola.
En segundo lugar se ha incluido un servidor web (HTTP) mínimo que puede ser puesto en funcionamiento a través de la línea de comandos. Este herramienta no tiene disponible, al menos por ahora, CGI ni funcionalidades de servlet, pero puede ser útil para prototipos y realización de pruebas sobre todo en contextos educativos, ya que no tiene la intención de cubrir propósitos comerciales o de producción.
Java 18 ha incluido la etiqueta ‘@snipet’ en el Doclet estándar de JavaDoc (la utilidad para la generación de documentación de las API en formato HTML) para simplificar la inclusión de ejemplos de código en la documentación de la API. Esto facilitará la validación de los fragmentos de código a través de permitir su acceso a las API y habilita cosas como el resaltado de la sintaxis y la vinculación automática de nombres a declaraciones, además de dotar a los IDE de un mejor soporte para la creación y edición de fragmentos de código.
Las clases java.lang.reflect.Method
, java.lang.reflect.Constructor
y java.lang.reflect.Field
han sido reimplementadas sobre java.lang.invoke
con el fin de reducir el coste del mantenimiento y el desarrollo de las API java.lang.reflect
y java.lang.invoke
.
Con la definición de la Interfaz de Proveedor de Servicios (SPI) para el nombre del host y la resolución de nombres, la API java.net.InetAddress
, que se encarga de resolver los nombres de host hacia las direcciones IP y viceversa, puede hacer uso de resolutores diferentes al integrado en la propia plataforma. La API emplea actualmente por defecto el resolutor nativo del sistema operativo, el cual normalmente es configurado para usar una combinación de un archivo de hosts local y el DNS.
En tercera fase de incubación nos encontramos con la API de vectores, cuyo destino es ser usada para expresar cálculos vectoriales que se compilan de manera confiable en tiempo de ejecución a través de instrucciones vectoriales óptimas y lograr así un rendimiento superior al de los cálculos escalares equivalentes.
En segunda fase de incubación está la API de funciones foráneas, la cual permite a los programas hechos en Java interoperar con código y datos que se encuentran fuera del entorno de ejecución de Java. A través de la invocación eficiente de funciones foráneas y un acceso seguro a la memoria externa, la API habilita a los programas de Java para llamar a bibliotecas nativas y procesar datos nativos sin la fragilidad y el peligro de la Interfaz Nativa de Java (JNI).
En segunda versión previa está la coincidencia de patrones para las expresiones y sentencias switch
. Extender la coincidencia de patrones a switch
permite probar una expresión con varios patrones, haciendo que cada uno realice una acción específica y de modo que las consultas complejas orientadas a datos puedan expresarse de manera concisa y segura.
Todos los detalles sobre Java 18 pueden ser consultados a partir de la correspondiente página en la web de OpenJDK. La versión software libre del JDK puede ser obtenida desde el sitio web de Java (alternativamente y extraoficialmente desde AdoptOpenJDK, sobre todo para los usuarios de Windows y macOS) y la comercial desde la web de Oracle. Recomendamos recurrir a OpenJDK en caso de tener dudas sobre las restricciones de la versión comercial, ya que Oracle asustó a muchos al cambiar la licencia en 2018, a pesar de ser un movimiento con un impacto real reducido.