Java 25
1.Principales Novedades
1.1 Pattern matching
El uso de records inmutables (java 14) y su uso mediante pattern matching nos permitió facilitar mucho el trabajo de deconstrucion y acceso a variable.
Si juntamos esto con sealed interfaces, podemos construir un lenguaje mas robusto y no tolerante a fallos.public sealed interface Country permits Spain, France {
String name();
}
public record Spain(String name) implements Country {
//autogenerated name()
}
public record Spain(String name) implements Country {
//autogenerated name()
}
1.2 Swith directo a las propiedades del record
- Agrupación de alternativas en switch, reduciendo código duplicado.
1.3 Nuevo Main menos verbose
- Main minimalista y programas sin clase obligatoria, más cercanos a otros lenguajes modernos.
1.4 Scoped Values (JEP 487)
El uso de variables a nivel Thread Local fue un gran avance, pero su baja compatibilidad con Virtual Threads ha llevado a la creacion del homonimo Scoped Values que trabajan perfectamente con Virtual Threads.
1.5 Module import (JEP 511)
Antes era necesario declarar explicitamente paquetes y clases de modulos, ahora con indicar el modulo, el compilador es capaz de detectar que imports son necesarios para esa clase y el realizará ese trabajo mas eficiente y automatico por nosotros
1.6 JSpecify @Nullable
Para mitigar el null-safety se introduce la posibilidad de analizar el codigo estaticamente y que los IDE puedan especificamente indicar como debe tratarse una variable que puede ser nullable, no dejando la compilacion si no se maneja correctamente, evitando asi los null pointer en runtime, ya que en compilacion no se dejan pasar.