Oracle ha anunciado Java 14 (o más bien JDK 14), la última versión de la tecnología que ha dominado la computación en este siglo y cuyo desarrollo se ha acelerado en los últimos tiempos, lo que se ha transformado en lanzamientos más continuos.
Uno de los aspectos importantes a tener en cuenta de Java 14 es el hecho de que no es un lanzamiento LTS, así que estará soportado solo por seis meses. La última versión con un soporte extendido en el tiempo fue la 11 y la próxima será la 17. Por otro lado, Oracle ha tomado la decisión de extender el soporte de JDK 8 hasta diciembre de 2030.
Java es una tecnología muy veterana que además abarca mucho, así que en JDK 14 vamos a intentar centrarnos en mencionar solamente algunos de los aspectos más relevantes, que abarcan nuevas características, mejoras y correcciones:
- Soporte de formato de moneda contable: Las instancias de formato de moneda con estilo de contabilidad, en las que la cantidad se formatea entre paréntesis en algunas configuraciones regionales, se pueden obtener llamando a “NumberFormat.getCurrencyInstance (Locale)” con la extensión de configuración regional Unicode “u-cf-account”. Por ejemplo, en “Locale.US”, se formateará a “($ 3.27)” en lugar de “– $ 3.27”.
- Registros (en fase previa): En JDK 14, la función en vista previa de Registros agrega una nueva clase: “java.lang.Record”. El paquete “java.lang” se importa implícitamente a pedido, es decir, importa “java.lang. *”. Si el código en un archivo fuente existente importa algún otro paquete a pedido, por ejemplo, “import com.myapp. * ;”, y ese otro paquete declara un tipo llamado Record, entonces el código en el archivo fuente existente que se refiere a ese tipo no se compilará sin cambios. Para compilar el código, hay que importar el tipo de registro del otro paquete utilizando una importación de tipo único, como por ejemplo “import com.myapp.Record;”.
- Asignación de memoria compatible con NUMA para el recolector de basura G1: El recolector de basura G1 ahora intenta asignar y mantener objetos en el mismo nodo NUMA en la generación joven de las recolecciones de basura. Esto es similar al comportamiento del Recolector de Basura NUMA en Paralelo. G1 intenta distribuir uniformemente las regiones Humongous y Old en todos los nodos NUMA disponibles utilizando una intercalación estricta. La colocación de objetos copiados de la generación joven a la vieja es aleatoria.
- El Recolector de Basura Z (ZGC) está disponible como característica experimental en macOS y Windows.
- Se han introducido mejoras en el recolector de basura en paralelo adoptando el mismo mecanismo de gestión de tareas para programar tareas paralelas como en otros recopiladores. Esto podría resultar en mejoras significativas en el rendimiento.
- La suspensión y reanudación de hilos ha sido marcada como característica obsoleta.
Los que quieran conocer todos los detalles de JDK 14 pueden consultarlos a través de las notas de lanzamiento publicadas por Oracle. Puede ser descargado bajo licencia comercial desde el sitio web de la compañía o como software libre a través del proyecto OpenJDK, que en los últimos tiempos ha recibido un gran impulso a través de la iniciativa AdoptOpenJDK.
En otoño de 2018 se generó un gran revuelo por los cambios introducidos en los términos de la licencia comercial de Java 11, sin embargo, es importante tener en cuenta que desde 2011 (Java 7) OpenJDK es la base de la implementación comercial de Java, así que la modificación de la licencia comercial no tendría por qué provocar quebraderos de cabeza a desarrolladores ni empresas si se selecciona la implementación correcta.