Chapitre 8 : Java 16
Records, Pattern matching instanceof, Sealed Classes, Relaxed strong encapsulation
Ce qu'il faut retenir
Sortie de preview des Records
Sortie de preview du Pattern matching instanceof
Sortie de preview du Pattern matching instanceof
Preview feature : Sealed Classes (seconde version)
Preview feature (seconde version) : Sealed Classes
Relaxed strong encapsulation désactivée par défaut
La relaxed strong encapsulation introduite lors de l'arrivée de Java 9 et Jigsaw est désormais désactivée par défaut. Tout accès à des éléments non publics ou protégés au sein des classes internes au JDK à l'exécution déclenche désormais une exception. Auparavant, un message d'avertissement était affiché en console notifiant d'un "accès illégal".
Pour aller plus loin
Évolutions supplémentaires sur ZGC
Évolutions supplémentaires sur ZGC permettant la mise en concurrence de la majorité des phases de garbage collection, permettant sur des heaps de n'importe quelle taille des pauses inférieures à la milliseconde
Apparition de l'Elastic Metaspace
Apparition de l'Elastic Metaspace, auparavant de taille fixe. Cela permet désormais de rendre une partie de la mémoire non utilisée au système d'exploitation
Apparition de la Foreign Linker API
Apparition de la Foreign Linker API (en incubation) au sein du projet Panama, aux côtés de la Foreign Memory Access API. Cette nouvelle API est destinée à terme à remplacer Java Native Access en permettant de lier Java à des librairies natives sans avoir à créer du code C supplémentaire, nécessaire auparavant.
Apparition de l'API Vector
Apparition de l'API Vector (en incubation) au sein du projet Panama afin de faciliter l'utilisation au sein de Java du calcul vectoriel sur les processeurs supportant les instructions SIMD (Simple Instruction Multiple Data). Ces instructions sont souvent très utilisées dans l'informatique à haute performance, ou l'intelligence artificielle.
Apparition de messages d'avertissement pour value-based classes
Apparition de messages d'avertissement dès lors qu'on essaye d'instancier soi-même, ou d'utiliser pour la synchronisation des value-based class (types "wrapper", Optionals, quelques classes de l'API Date…)
Support des sockets Unix
Support des sockets Unix pour la communication inter-processus