Skip to content

Java 21

1.Principales Novedades

1.1. Mejoras Patter matching (JEP 441)

Ya desde java 17 se hizo mucho incapie en el uso de records para poder utilizar la potencia de patter matching, sobre todo en bloques switch.

En java 21 se refuerza y trabaja en el mismo sentido permitiendo bloques switch-case que permiten inferir el tipo automaticamente (ya sea el parametro de entrada del case un record o implementacion de una interface o extension de una clase). Se incluye un nuevo case null

public String AnimalName(Animal animal) {
    String name = 0;
    switch (animal) {
        case null -> throw new RuntimeException("instance is not valid");
        case Dog sa -> result = sa.name();
        case Cat ta -> result = ta.name();
        case Horse ca -> result = ca.name();
        default -> "Not matching instance name";
    };
    return result;
}

Tambien se incluyen nuevas clauses al switch (when) muy utiles para comprobaciones comunes

public String AnimalName(Animal animal) {
    String name = 0;
    switch (animal) {
        case null -> throw new RuntimeException("instance is not valid");
        case Dog sa when sa.name().equalsIgnoreCase("Terrier") -> result = "Danguerous "+sa.name();
        case Dog sa -> result = sa.name();
        case Cat ta -> result = ta.name();
        case Horse ca -> result = ca.name();
        default -> "Not matching instance name";
    };
    return result;
}

1.2 String templates

Para manejo de cadenas de texto antes soliamos usar String.format(“mytext %s %s”, “a”, “b”), StringBuilders y demas…

Ahora para mejorar el codigo verbose se han creado String templates:

Evalua el bloque de codigo y las variables disponibles en memoria haciendo el matching.

import static java.template.Template.*; //static STR 

public String greeting(String name){
    return STR."Welcome \{name}";
}

1.3 Virtual Threads

Tienes un tutorial completo aqui: Virtual Threads

1.4 Sequenced Collections

Si bien existian implementaciones ordenadas para List, no existian el equivalente en la interface Collections.

Se introducen 2 nuevos tipos “SequencedCollection”, “SequencedSet” y “SequencedMap”

1.5 Key Encapsulation Mechanism API (JEP 452)

Se aƱaden nuevos metodos para trabajar con criptografia que refuerzan la seguridad al trabajar y generar Keys.