Les Nouveautés de Java 21
Java 21 est enfin disponible ! En plus d'être une version LTS (Long Term Support), elle regorge d'innovations. Vous êtes un peu perdu ? Explorons ces nouveautés ensemble.
Nouveautés de l'API
Ces fonctionnalités sont immédiatement utilisables dans Java 21.
Collections Séquencées (JEP 431)
Un rafraîchissement bienvenu de l'API Collection ! La gestion des collections ordonnées est enfin là. Trois nouvelles interfaces sont ajoutées :
- SequencedCollection
- SequencedSet
- SequencedMap
Ces interfaces fournissent des méthodes cohérentes pour manipuler ou ajouter des éléments en début ou en fin de collection.
Illustration des Collections Séquencées
Notez que ArrayList, qui implémentait déjà List, est maintenant aussi une SequencedCollection.
Pattern pour les Records (JEP 440)
Initialement en preview, cette fonctionnalité est maintenant officielle, permettant de déconstruire un record pour accéder directement à ses composants. Par exemple :
record Point(int x, int y) {}
if (o instanceof Point(int a, int b)) {
int sum = a + b;
}
Cela fonctionne aussi dans les instructions switch :
int sum = switch (o) {
case Point(int a, int b) -> a + b;
default -> 0;
};
Threads Virtuels (JEP 444)
Très attendue, cette fonctionnalité est enfin stable ! Pour plus de détails, vous pouvez consulter mon article précédent.
Autres ajouts
Quelques autres nouveautés intéressantes :
- Gestion des emojis avec
Character.isEmoji()
StringBuilder.repeat()
pour répéter une chaîne de caractèresHttpClient
implémenteAutoCloseable
et peut être utilisé dans un bloc try-with-resources
Nouveautés en Preview
Ces fonctionnalités ne sont pas activées par défaut. Pour les utiliser, ajoutez les options de compilation :
--release 21 --enable-preview
et pour l'exécution :
--enable-preview
Modèles de Chaînes (JEP 430)
Permet d'intégrer des expressions dans les chaînes de caractères avec interpolation. Par exemple :
String str = "World";
String result = STR."Hello \{str}";
Utilisez la notation \{expression}
et un Processor comme STR pour traiter l'interpolation. Le JDK inclut trois Processors par défaut :
- RAW : Pas d'interpolation
- STR : Concatène les chaînes
- FMT : Formatte les chaînes en utilisant un formateur
Vous pouvez également créer votre propre Processor en implémentant l'interface StringTemplate.Processor
.
Variables et Patterns Anonymes (JEP 443)
Parfois, il est nécessaire de déclarer une variable sans l'utiliser. Cette fonctionnalité permet d'utiliser le caractère '_' (underscore) pour ces cas. Par exemple :
for (Element _ : elements) {
// Bloc qui n'utilise pas les éléments
}
var _ = mySet.remove(myObject);
try {
int i = Integer.parseInt(str);
} catch (NumberFormatException _) {
logger.warn("Not a number");
}
Map> employees = new HashMap<>();
employees.computeIfAbsent(id, _ -> new ArrayList<>());
Cela fonctionne aussi avec le pattern matching :
if (object instanceof Point(int _, int y)) {
// ...
}
int result = switch (obj) {
case Point(int x, int _) -> x;
};
Classes et Méthodes Main Sans Nom (JEP 445)
Pour simplifier l'apprentissage de Java, cette fonctionnalité permet de créer des classes sans nom avec une méthode main simplifiée. Par exemple, au lieu de :
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
On peut écrire :
class HelloWorld {
void main() {
System.out.println("Hello World!");
}
}
Ou même :
void main() {
System.out.println("Hello World!");
}
Les classes sans nom simplifient l'écriture de la méthode main, facilitant l'apprentissage de Java.
Conclusion
Java 21 apporte une série d'améliorations et de nouvelles fonctionnalités visant à rendre le langage plus moderne, performant et facile à utiliser. Avec le pattern matching, les records améliorés, la nouvelle API FFM, les threads virtuels et les valeurs à portée, cette version offre des outils puissants pour les développeurs cherchant à écrire du code plus propre, plus efficace et plus sûr. Les améliorations continues de la sécurité et des performances font de Java 21 une mise à jour incontournable pour les développeurs et les entreprises utilisant cette plate-forme pour leurs applications critiques.