• les dernières technologies innovantes en cours de développement ou en phase de lancement sur le marché.
  • les critiques de produits technologiques populaires, tels que les téléphones intelligents, les ordinateurs portables, les tablettes, les écouteurs, les caméras, etc.
  • des conseils sur la façon de rester en sécurité en ligne, notamment en ce qui concerne la protection de la vie privée, la sécurité des données et la prévention des escroqueries en ligne.
  • les dernières nouvelles et mises à jour dans le monde de la technologie, y compris les fusions et acquisitions, les partenariats, les changements de direction, etc.
Affichage des articles dont le libellé est java 21. Afficher tous les articles
Affichage des articles dont le libellé est java 21. Afficher tous les articles

jeudi 16 mai 2024

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ères
  • HttpClient implémente AutoCloseable 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.