De Java 9 a Java 11: Lo más destacado en cada versión

De Java 9 a Java 11: Lo más destacado en cada versión

Java 9 (septiembre 2017)


No es LTS, pero fue una versión muy importante por los siguientes cambios:
  • 1. Sistema de Módulos (Project Jigsaw)
    • Introducción del sistema de módulos (module-info.java).
    • Mejora la encapsulación, permite dividir el JDK en módulos.
    • Permite a las aplicaciones definir qué partes del código exponen o requieren.

    module com.ejemplo.miapp {
        requires java.base;
    }
    

  • 2. JShell (REPL)
    • Nueva herramienta interactiva de línea de comandos.
    • Permite probar fragmentos de código Java sin necesidad de compilar clases.
  • 3. API Stream mejorada
    • Nuevos métodos: takeWhile(), dropWhile(), ofNullable(), etc.
  • 4. Interface privada en métodos
    • Métodos privados en interfaces, útil para compartir lógica entre métodos default o static.


Java 10 (marzo 2018)


También no LTS, pero con una novedad destacada:
  • 1. var – Inferencia de tipo local
    • Permite declarar variables con inferencia de tipo a nivel local.
    var lista = new ArrayList<String>();
    
    • Mejora la legibilidad
    • Solo se puede usar en variables locales, no en parámetros o atributos

  • 2. Recolección de basura experimental (G1 mejoras)
    • Mejoras en el recolector G1 GC (mejor administración de memoria).

  • 3. API de colecciones inmutables mejorada
    • Posibilidad de copiar fácilmente colecciones usando métodos copyOf() en List, Set, y Map.


Java 11 (septiembre 2018) – LTS


Versión LTS (Long-Term Support) — sucesora oficial de Java 8 para muchos entornos de producción.
  • 1. Nuevas funciones del lenguaje
    • var en parámetros de lambda:
    lista.forEach((var item) -> System.out.println(item));
    

  • 2. API HTTP Client (estable)
    • El nuevo HttpClient (experimental en Java 9) ahora es estable.
    HttpClient client = HttpClient.newHttpClient();
    HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://api.ejemplo.com"))
        .build();
    
    HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
    

  • 3. Métodos útiles en String
    • isBlank(), lines(), repeat(n), strip(), stripLeading(), stripTrailing()
    "Hola ".repeat(3); // Hola Hola Hola
    

  • 4. Eliminación de APIs obsoletas
    • Se eliminaron herramientas y módulos antiguos: Java EE y CORBA (como javax.xml.bind, javax.activation, etc.)

  • 5. Nuevo recolector de basura: ZGC (experimental)
    • ZGC (Z Garbage Collector), un recolector de baja latencia, escalable.



Resumen

Versión Estado Novedades Clave
Java 9 No LTS Sistema de módulos, JShell, mejoras en Stream
Java 10 No LTS var para variables locales, mejoras en GC
Java 11 LTS HttpClient, mejoras en String, var en lambdas, eliminación de Java EE

No hay comentarios:

Publicar un comentario