A la découverte de Java 15

A la découverte de Java 15

  • Post category:java
  • Reading time:4 mins read

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 15
maitre().chien().puce().piquer();

Exception in thread "main" java.lang.NullPointerException at AntiPuce.main(AntiPuce.java:6)

Après JAVA 15
maitre().chien().puce().piquer();

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "AntiPuce$puce.piquer()" because "AntiPuce$maitre.chien().puce" is null

JEP 358: Helpful NullPointerExceptions

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 15
String json="""
{
"type":"chat",
"name":"roxy"
}""";

JEP 378: Text Blocks

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.

JEP 333: ZGC: A Scalable Low-Latency Garbage Collector

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.

JEP 371: Hidden 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.

JEP 339: Edwards-Curve Digital Signature Algorithm (EdDSA)

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.

JEP 373: Reimplement the Legacy DatagramSocket API

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 15
if (animal instanceof Chien){
Chien naya = (Chien) animal;
return naya.age();
}

Après JAVA 15
if (animal instanceof Chien naya){
return naya.age();
}

JEP 375: Pattern Matching for instanceof

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.

JEP 384: Records

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.

JEP 385: Deprecate RMI Activation for Removal

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.

JEP 381: Remove the Solaris and SPARC Ports – OpenJDK

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.

JEP 372: Remove the Nashorn JavaScript Engine

Laisser un commentaire

4 × quatre =