Java 21: tutte le novità della nuova release LTS
Con il rilascio di Java 21 (settembre 2023), il linguaggio continua a evolversi in direzione di maggiore modernità, efficienza e produttività. Essendo una versione LTS (Long-Term Support), Java 21 sarà supportato per molti anni, diventando un punto di riferimento per progetti enterprise e ambienti di produzione.
1. Record Pattern (JEP 440)
I record pattern permettono di destrutturare direttamente i record durante il controllo dei tipi. Questo rende il codice più conciso e leggibile, eliminando la necessità di cast espliciti o accessi verbosi ai campi.
if (obj instanceof Point(int x, int y)) {
System.out.println("Coordinate: " + x + ", " + y);
}
L’integrazione con altri pattern rende più semplice scrivere codice elegante e mantenibile.
2. Pattern Matching per switch
(JEP 441)
Il pattern matching su switch
è ora stabile. Si possono scrivere espressioni
switch
potenti e flessibili, con supporto a tipi diversi e condizioni logiche.
static String formatter(Object o) {
return switch (o) {
case Integer i -> "Intero: " + i;
case String s -> "Stringa: " + s.toUpperCase();
default -> "Altro";
};
}
Questo migliora la leggibilità e riduce i rami condizionali ridondanti.
3. String Template (JEP 430 – Preview)
Finalmente arriva l’interpolazione di stringhe! Con i nuovi string template, è possibile costruire stringhe dinamiche in modo più leggibile e sicuro.
String name = "Alice";
String message = STR."Ciao, \{name}!";
È solo l’inizio: questa funzionalità apre le porte a DSL, HTML embedding e formattazioni complesse direttamente nel linguaggio.
4. Sequenced Collections (JEP 431)
Introdotte nuove interfacce come SequencedCollection
,
SequencedSet
e SequencedMap
, che definiscono un contratto
esplicito per l’ordine degli elementi.
SequencedSet<String> set = ...;
String first = set.getFirst();
String last = set.getLast();
Questo permette una gestione più intuitiva delle collezioni, soprattutto per stack, queue e casi simili.
5. Virtual Threads (JEP 444)
La vera rivoluzione: i virtual thread permettono di creare milioni di thread leggeri, con overhead minimo, aprendo la strada a una nuova era della concorrenza in Java.
Thread.startVirtualThread(() -> {
// codice concorrente, leggerissimo
});
Supportano il modello “one thread per task” senza penalizzare le performance, riducendo la complessità di executor e pool.
6. Scoped Values (JEP 446 – Preview)
Alternativa moderna a ThreadLocal
, gli Scoped Value permettono
di passare dati in modo sicuro e immutabile all’interno di un contesto concorrente.
Più efficienti, thread-safe e compatibili con i virtual thread. Ideali per logging, configurazioni contestuali e tracing.
7. Miglioramenti minori e deprecazioni
Java 21 continua il processo di pulizia dell’ecosistema: deprecazione di API obsolete, rimozione di funzionalità legacy e miglioramenti sotto il cofano. L’obiettivo è mantenere il linguaggio snello e coerente.
Conclusione
Java 21 è una release corposa, innovativa e soprattutto stabile. Un aggiornamento che vale la pena adottare, specialmente in ambienti enterprise, grazie alla combinazione tra novità sintattiche, miglioramenti di performance e maggiore espressività.
Hai già iniziato a usare Java 21? Quali funzionalità ti stanno cambiando il modo di programmare?