De Java 12 a Java 17: Camino al Próximo LTS

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.


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.
  • 5. Eliminación de APIs y módulos obsoletos
    • Eliminación completa de Applet, SecurityManager (marcado como obsoleto), y otros legados.


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