Java 21 LTS: hilos virtuales, pattern matching en switch y colecciones secuenciadas
JDK 21 salió el 19 de septiembre de 2023 y es LTS. Hilos virtuales, record patterns, pattern matching para switch y Sequenced Collections pasan a definitivos.
JDK 21 alcanzó la disponibilidad general el 19 de septiembre de 2023 y es una versión LTS, la siguiente después de Java 17.
Hilos virtuales (JEP 444)
Hilos ligeros gestionados por la JVM, pensados para aplicaciones que pasan la mayor parte del tiempo esperando entrada/salida. Puedes tener millones sin agotar los hilos del sistema operativo:
try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
pedidos.forEach(p -> executor.submit(() -> procesar(p)));
}Pattern matching para switch (JEP 441) y record patterns (JEP 440)
Un switch puede decidir según el tipo, desestructurar records y tratar null en una rama propia:
record Punto(int x, int y) {}
String describe(Object o) {
return switch (o) {
case Integer i when i > 0 -> "entero positivo " + i;
case Integer i -> "entero " + i;
case Punto(int x, int y) -> "punto en " + x + "," + y;
case null -> "nada";
default -> "otra cosa";
};
}Colecciones secuenciadas (JEP 431)
Las colecciones con orden definido comparten interfaz: getFirst(), getLast(), addFirst(), addLast() y reversed(), tanto en List como en Deque, LinkedHashSet o LinkedHashMap (con sus equivalentes para mapas).
Más
- JEP 439 — ZGC generacional.
- JEP 452 — API de encapsulación de claves (KEM).
- JEP 451 — preparación para prohibir la carga dinámica de agentes.
- En preview: String Templates (retirada más tarde), variables sin nombre, clases sin nombre con
mainde instancia, Scoped Values y Structured Concurrency.
En NextPatch
La ruta Java 17 → 21: el salto entre LTS cubre todo esto, más lo que sigue en preview y no deberías llevarte a producción.