Salut à toutes et à tous,
Aujourd’hui, je vous propose un petit tour d’horizon de la version 15 de JAVA. Le JDK 15 est l’implémentation de référence open source de la version 15 de la plateforme Java SE. Elle est définie par la JSR 390.
Le JDK 15 est disponible depuis le 15 septembre 2020. Les binaires « prêts à la production sous GPL » sont disponibles auprès d’Oracle; les binaires d’autres fournisseurs vont bientôt être releasé.
Ceux qui nous arrivent ?
Amélioration de la NullPointerException
La NPE s’enrichit d’un message généré qui décrit précisément la variable qui est nulle.
Avant JAVA 15maitre().chien().puce().piquer();
Exception in thread "main" java.lang.NullPointerException at AntiPuce.main(AntiPuce.java:6)
Après JAVA 15maitre().chien().puce().piquer();
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "AntiPuce$puce.piquer()" because "AntiPuce$maitre.chien().puce" is null
Text Blocks
Un bloc de texte est un littéral de chaîne multiligne qui évite le recours à la plupart des séquences d’échappement, met automatiquement en forme la chaîne de manière prévisible et donne au développeur le contrôle du format lorsqu’il le souhaite.
Avant JAVA 15
String json = new StringBuilder("{\n")
.append("\"type\":\"chat\"")
.append("\"name\":\"roxy\"")
.append("}")
.toString();
Après JAVA 15String json="""
{
"type":"chat",
"name":"roxy"
}""";
ZGC Garbage Collector
Le Z Garbage Collector (ZGC) est un garbage collector évolutif à faible latence. ZGC effectue tous les travaux coûteux simultanément, sans interrompre l’exécution des threads d’application pendant plus de 10 ms, ce qui le rend adapté aux applications qui nécessitent une faible latence et / ou utilisent un très grand heap.
Hidden Classes
Les hidden classes ne peuvent pas être utilisées directement par le bytecode d’autres classes. Les classes cachées sont destinées à être utilisées par les frameworks qui génèrent des classes au moment de l’exécution et les utilisent indirectement, via la réflexion. Une classe cachée peut être déchargée indépendamment des autres classes.
EdDSA
EdDSA est un schéma de signature de courbe elliptique moderne qui présente plusieurs avantages par rapport aux schémas de signature existants dans le JDK.
DatagramSocket API
Les implémentations des API java.net.DatagramSocket
et java.net.MulticastSocket
sont remplacées par du code plus simple, plus moderne, faciles à entretenir et à déboguer. Les nouvelles implémentations sont adaptées pour travailler avec les threads virtuels.
Ceux qui vont tenter de rester ?
Pattern Matching
La correspondance de modèle consiste à tester si un objet a une structure particulière, puis à extraire les données de cet objet s’il y a une correspondance. Vous pouvez déjà le faire avec Java. Cependant, la correspondance de modèles introduit de nouvelles améliorations du langage qui vous servent à extraire conditionnellement des données d’objets avec un code plus concis et plus robuste.
Avant JAVA 15if (animal instanceof Chien){
Chien naya = (Chien) animal;
return naya.age();
}
Après JAVA 15if (animal instanceof Chien naya){
return naya.age();
}
Records
Introduites en tant que fonctionnalité de prévisualisation dans Java 14, les classes d’enregistrement aident à modéliser des agrégats de données simples. Java 15 étend la fonctionnalité de prévisualisation avec des fonctionnalités supplémentaires telles que les classes d’enregistrement.
Une classe d’enregistrement déclare une séquence de champs, puis les accesseurs, constructeurs, equals, hashCode et méthodes toString appropriés sont créés automatiquement. Les champs sont définitifs car la classe est destinée à servir de simple « support de données ». Les enregistrements sont donc immuables.
Ceux qui vont nous quitter ?
Activation RMI
L’activation RMI est une partie obsolète de RMI qui est facultative depuis Java 8.
Aucune autre partie de RMI ne sera obsolète.
Ceux qui nous quitte ?
Portage sur Solaris and SPARC
Le code source et la prise en charge de build pour les OS Solaris/SPARC, Solaris/x64 et Linux/SPARC ont été supprimés.
Ces OS avaient été déclarés obsolètes dans le JDK 14.
Moteur Javascript Nashorn
Le moteur de script et les API JavaScript Nashorn, ainsi que l’outil jjs ont été supprimés.
Le moteur, les API et l’outil avaient été déclarés obsolètes dans le JDK 11.