Top 6 nuevas características de Java 14

0
688

Índice de contenidos

 

Introducción

Java 14 (Java SE 14) y su código abierto Java Development Kit 14 (JDK 14) se lanzó el 17 de marzo de 2020. Esta versión nos trae algunas nuevas características de lenguaje interesantes (algunas de ellas en versión preliminar) junto con múltiples actualizaciones de la API de Java y mejoras generales de JVM. En este tutorial, veremos mi top 6 de características y mejoras junto con algunos ejemplos de código. ¡Vamos al grano!
 

NPE fatigue

¿Estás cansado de rastrear excepciones de null pointer y depurar para ver qué está sucediendo exactamente? ¡Pues ya no más! Java 14 ha introducido «Helpful null pointer exceptions». Dado que los NPE pueden ocurrir casi en cualquier parte de un programa, no es práctico intentar controlar este tipo de errores con un try catch y posteriormente seguir con el flujo del programa ya que se tratan de excepciones de tipo no verificadas (unchecked en inglés). Como resultado, los desarrolladores confían en la JVM para identificar la fuente de un NPE cuando realmente ocurre. Por ejemplo, supongamos que ocurre un NPE en este código:

En versiones previas a Java 14, el mensaje de error que aparecía en consola era el nombre de la clase y la línea donde se produjo el null pointer:
Exception in thread "main" java.lang.NullPointerException
at NullPointersExample.produceNullPointer(NullPointersExample.java:7)
at Main.main(Main.java:5)

El uso de Java 14 nos permitirá recibir el siguiente resultado que nos ayudará a saber por segundo exactamente de donde viene el null pointer;
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.toLowerCase()" because "a" is null
at NullPointersExample.produceNullPointer(NullPointersExample.java:7)
at Main.main(Main.java:5)

Para habilitar los mensajes informativos de excepción, debe agregar la opción VM:
-XX:+ShowCodeDetailsInExceptionMessages

Aviso: Sin embargo, debemos tener en cuenta que existen algunos riesgos. El mensaje de detalles nulos puede contener nombres de variables del código fuente. Exponer este tipo de información podría considerarse un riesgo de seguridad.

 

Records (preview)

Los registros son similares a las clases de datos en Kotlin. Básicamente son versiones restringidas y mejoradas de las clases POJO normales en Java. Si desea escribir una clase POJO en Java, necesita implementar constructores, equalsHashCode, toString, getters, setters, etc. Normalmente, como muchos de nosotros, usamos Lombok para ayudarnos con la tarea y evitar el código duplicado.
Pero ahora hay una forma nativa de hacerlo sin necesidad de añadir dependencias externas -> Implementación de un Java Record. Todo lo que necesitamos hacer es declarar el tipo como registro y declarar los campos como argumentos.

La diferencia ahora es cómo se accede al campo. Ahora, en vez de usar getters simplemente lo hacemos usando el nombre del campo. Ejemplo:

 

Enchanced Switch Expressions (standard)

Java 14 tiene una declaración de cambio extendida, que puede usarse como una expresión con la ayuda de la función lambda (->), y ahora puede generar / devolver el valor. Esta fue una función de idioma de vista previa en JDK 13.

Antes de Java 14 necesitábamos implementar expresiones de cambio como esta:

Ahora java 14 nos permite la siguiente solución:

Tal como vemos, el uso de expresiones de conmutación se simplifica e incluso podemos ejecutar más líneas de código en diferentes casos. Si queremos realizar más acciones en una expresión, es obligatorio utilizar la palabra clave yield para devolver el valor del caso.
 

Pattern Matching for instanceof (preview)

Normalmente, cuando tratamos con el tipo Object del paquete java.Lang, muchas veces necesitamos convertirlo al tipo requerido al verificar primero su tipo. Antes de Java 14, se hacía así

Usando java 14 podemos hacerlo sin emitir explícitamente el objeto, solo tenemos que proporcionar el nombre de la variable correspondiente y listo.

 

Packaging Tool (Incubator)

Es una herramienta de empaquetado, diseñada para facilitar el proceso de instalación, que depende de varias dependencias. A veces no es suficiente proporcionar un solo archivo JAR. Se debe proporcionar un kit instalable apropiado para el local / nativo. Una herramienta de empaque también puede ayudar a llenar los vacíos que dejan otras tecnologías.

La herramienta jpackage agrupa una aplicación Java en un paquete específico de plataforma que contiene todas las dependencias requeridas. Como un conjunto de archivos JAR ordinarios o como una colección de módulos. Los formatos de paquete específicos de plataforma compatibles son:

    • Linux: deb y rpm
    • macOS: pkg y dmg
    • Windows: msi y exe

 

Second Preview Of Text Blocks

Todos sabemos que introducir cadenas HTML, JS o SQL en Java, a veces puede ser difícil de lograr, difícil de leer y mantener. Es por eso que podemos hacer un buen uso de los bloques de texto. Con Text Blocks, podemos declarar cadenas de líneas múltiples en Java sin la necesidad de concatenar cada línea de la cadena.
La característica se introdujo originalmente en Java 13 como primera vista previa. Teniendo en cuenta que dado que Java 13 no es un LTS release (no hay muchas personas migradas a él) mostraré la diferencia de Java sin Text Blocks (versiónes < 13) de texto y Java 14 (segunda vista previa de text blocks).

Antes de Java 14:

Después Java 14:

Con los bloques de texto, podemos simplemente poner nuestro texto entre comillas triples y la interpretación de la cadena será preservada por Java. Tenga en cuenta que en la segunda vista previa ahora podemos agregar una barra diagonal al final de cualquier línea dentro de la cadena de varias líneas, para ignorar el próximo salto de línea

Imprimir el valor de la String java14 producirá el siguiente resultado

text-blocks-java-14
 

Conclusión

Así que esas fueron mis 6 características principales en el nuevo Java 14.
Teniendo en cuenta que estas características no afectarán al trabajo diario de cada desarrollador, podemos decir que no se van a usar tanto. Quizás los más utilizados serían los Helpful Null Pointer Exceptions durante el estado de desarrollo, la Pattern matching for instanceof, y la Records.
Sin embargo, la Pattern matching for instanceof y los Records solo son unas features de vista previa y aún no deben utilizarse en un entorno de producción. Se espera el lanzamiento completo de esta función en java 15.

Dejar respuesta

Please enter your comment!
Please enter your name here