De Java 12 a Java 17: Camino al Próximo LTS
Tras el lanzamiento de Java 11 como versión LTS en 2018, Oracle y la comunidad de OpenJDK continuaron con su nuevo ritmo de versiones semestrales. Durante este período, se introdujeron muchas mejoras y características experimentales que maduraron hasta consolidarse en Java 17, la siguiente versión LTS (Long-Term Support) lanzada en septiembre de 2021.
En esta entrada te contamos las novedades más importantes de cada versión entre Java 12 y Java 17.
En esta entrada te contamos las novedades más importantes de cada versión entre Java 12 y Java 17.
Java 12 (marzo 2019)
- 1. Switch Expressions (preview)
- Se introduce una nueva forma de escribir switch, más concisa y expresiva.
String resultado = switch (dia) { case MONDAY, FRIDAY -> "Fin de semana cerca"; case TUESDAY -> "Segundo día"; default -> "Otro día"; };
- 2. Compact Number Formatting
- Formateo de números abreviados (por ejemplo, 1.2K, 3M) con NumberFormat.
Java 13 (septiembre 2019)
- 1. Text Blocks (preview)
- Introducción de bloques de texto multilínea con """.
String json = """ { "nombre": "Juan", "edad": 30 } """;
- 2. Mejoras en el recolector de basura y APIs internas.
Java 14 (marzo 2020)
- 1. Records (preview)
- Nueva sintaxis para declarar clases inmutables con menos código.
public record Persona(String nombre, int edad) {}
- 2. Pattern Matching para instanceof (preview)
if (obj instanceof String s) { System.out.println(s.toUpperCase()); }
- 3. NPE más claros (NullPointerExceptions)
- Stack traces más informativos para depurar errores de null.
Java 15 (septiembre 2020)
- 1. Text Blocks (¡ya estables!)
- Los bloques de texto salen de la fase preview.
- 2. Sealed Classes (preview)
- Permite restringir qué clases pueden extender una clase o implementar una interfaz.
public sealed class Forma permits Circulo, Rectangulo {}
Java 16 (marzo 2021)
- 1. Records (estables)
- Los records se convierten en una característica permanente.
- 2. Pattern Matching para
instanceof
(estables) - 3. Packaging Tool
- Nueva herramienta (jpackage) para empaquetar aplicaciones Java como instaladores nativos (Windows, macOS, Linux).
Java 17 (septiembre 2021) – ¡LTS!
- 1. Sealed Classes (estables)
- 2. Pattern Matching mejora
- Continuación del desarrollo de instanceof y otras estructuras condicionales inteligentes.
- 3. Nuevos GC y rendimiento
- ZGC y G1 mejoran en latencia y eficiencia.
- Eliminación del recolector experimental Shenandoah (luego reintroducido en distribuciones como OpenJ9 y Red Hat).
- 4. API de Cadenas enriquecida
- Métodos como
stripIndent()
,translateEscapes()
, etc.
- Métodos como
- 5. Eliminación de APIs y módulos obsoletos
- Eliminación completa de
Applet
,SecurityManager
(marcado como obsoleto), y otros legados.
- Eliminación completa de
Resumen
El trayecto de Java 12 a Java 17 fue clave para la modernización del lenguaje. Muchas características pasaron por ciclos de prueba antes de convertirse en estables. Java 17 representa una versión LTS madura, con soporte para programación más expresiva, concisa y moderna.
Versión | Estado | Novedades Clave |
---|---|---|
Java 12 | No LTS | Switch expressions (preview), number formatting |
Java 13 | No LTS | Text blocks (preview) |
Java 14 | No LTS | Records (preview), NPE claros |
Java 15 | No LTS | Text blocks (estables), sealed classes (preview) |
Java 16 | No LTS | Records y pattern matching estables, jpackage |
Java 17 | LTS | Sealed classes, mejoras de GC, estabilidad en features modernas |
No hay comentarios:
Publicar un comentario