Ceux qui nous arrivent ?
Maj du ZGC Garbage Collector
Apparu dans JAVA15, le Z Garbage Collector (ZGC) est un garbage collector évolutif à faible latence. L’objectif de cette évolution est reséquencé le traitement des threads simultanés. L’évolution supprime le traitement de pile de threads dans les points de restauration du ZGC, flexibilise le traitement de la pile et fournit un mécanisme par lequel les autres sous-systèmes HotSpot peuvent traiter les piles.
Pattern Matching for instanceof
- Lever la restriction selon laquelle les variables de modèle sont implicitement finales, afin de réduire les asymétries entre les variables locales et les variables de modèle.
- Lever une erreur de compilation pour une expression de paterne instanceof qui comparerait une expression de type S sur un paterne de type T, où S est un sous-type de T. Cette expression réussira toujours et est donc inutile.
API Vector
L’API Vector est une nouvelle API qui sert à exprimer du calcul vectoriel (ex calcul matriciel). L’exécution se fera par les instructions machines. Elle sera donc optimisée en fonction de la plateforme.
Avant JAVA 16
Après JAVA 16
Ajout du support des sockets Unix
Le but de ce JEP est de prendre en charge toutes les fonctionnalités des sockets du domaine Unix qui sont communes aux principales plates-formes Unix et Windows. Les sockets Unix sont utilisés pour la communication inter-processus (IPC) sur le même hôte. Ils sont similaires aux sockets TCP / IP sauf qu’ils sont adressés par nom de fichier plutôt que par adresse IP et numéro de port.
Un petit bout de code pour comprendre
Foreign Linker API
Cette API offre un accès purement Java de type statique au code natif. Cette API, associée à l’API Foreign-Memory (JEP 393), simplifiera considérablement le processus de liaison à une bibliothèque native ainsi qu’à la gestion des erreurs.
En remplaçant le JNI Java Native Interface (JNI) par un modèle purement JAVA, il sera plus facile d’accéder aux bibliothèques non-java. Cette version de l’API supportera le C sur x64 et AARch64. Elle est néanmoins désignée pour être étendu à d’autres langages et d’autres plateformes.
Foreign Memory Access API
L’API Foreign-Memory Access a été introduit dans Java 14 puis mis à jour dans Java 15. Ce JEP incorpore des améliorations basés sur sur les commentaires. Cette actualisation de l’API comprend:
- Une séparation plus claire des rôles entre les interfaces MemorySegment et MemoryAddress;
- Une nouvelle interface MemoryAccess qui fournit des accesseurs de mémoire statique communs afin de minimiser le recours à l’API VarHandle;
- Une prise en charge des segments partagés ;
- La possibilité d’enregistrer des segments avec un Cleaner.
Ces deux API sont les bases du projet PANAMA qui résout les problèmes inhérents à JNI pour l’invocation de code natif. Si le sujet vous intéresse, je vous laisse lire mon article En route pour Panama, le pont entre Java et les APIs externes.
Ceux qui vont nous quitter ?
Activation RMI
L’activation RMI est une partie obsolète de RMI qui est facultative depuis Java 8. Reporté depuis JAVA 15.
Aucune autre partie de RMI ne sera obsolète.
Ceux qui nous quitte ?
Dans cette itération du langage, il n’y a pas de suppression.
Corrections & Mises à jour
Extraire directement la liste d'un Stream
L’API Stream se voit ajouter une méthode qui accumule les éléments dans une liste immuable.
Avant JAVA 16
Avec JAVA 16