Dans son message, Clark a expliqué que « la spécification principale a légèrement changé par rapport à l'EDR, notamment par une réduction du nombre d'API proposées qui doivent être retirées de la section 10. Nous avons également découvert que deux JEP (252 - utilise les données locales CLDR par défaut ; 280 - indique la concaténation des chaînes de caractères) ont un impact sur l’API SE, donc elles ont été ajoutées à la liste des fonctionnalités des sections 5 et 6 ».
Il a également noté quelques ajouts qui ont été apportés à l’ébauche :
- dans l’annexe 1, il y a un résumé détaillé des spécifications de l'API ;
- dans l’annexe 2, une spécification API annotée montrant les différences exactes relatives à Java SE 8 (JSR 337) ;
- dans l’annexe 3, des versions préliminaires de The Java Language Specification (JLS) et la spécification Java Virtual Machine (JVMS) ;
- dans l’annexe 4, une version annotée de la spécification Java Native Interface Specification (JNI) montrant des différences relatives à Java SE 8.
Selon le résumé du billet qu’il a préparé avec Mark Reinhold, architecte en chef du JDK chez Oracle, les points phares de cette publication sont l’introduction de Java Platform Module System (JSR 376) et l’utilisation de ce système pour modulariser Java SE Platform.
« Le système module répond à deux besoins fondamentaux de toutes les grandes applications Java, à savoir une configuration fiable et une encapsulation solide. L'application du système de module à la plateforme permettra aux implémentations de plateforme d'être personnalisées pour des scénarios allant des petits dispositifs de calcul aux déploiements denses sur le cloud, améliorer la sécurité en encapsulant les API internes d'implémentation et d'améliorer les performances grâce à des techniques d'optimisation des programmes plus efficaces ».
Caractéristiques
Les ingénieurs ont expliqué que le travail sur les fonctionnalités de Java SE 9 Reference Implementation, qui est le kit de développement Java version 9 (JDK 9), est organisé en termes de JEP (JDK Enhancement Proposals).
Bibliothèques de base
Ici ils ont cité par exemple la JEP 269 (qui s’intitule Convenience Factory Methods for Collections) : elle aide à définir les API de la bibliothèque pour qu'il soit pratique de créer des instances de collections et les faire correspondre à un petit nombre d'éléments.
Il est aussi question de JEP 274 (qui s’intitule Enhanced Method Handles) qui vient améliorer les classes MethodHandle, MethodHandles et MethodHandles.Lookup du package java.lang.invoke afin de faciliter les cas d’utilisation courants et de permettre de meilleures optimisations du compilateur.
JEP 270 (intitulée Filter Incoming Serialization Data) vient pour sa part autoriser le filtrage des flux entrants de données de sérialisation d’objet afin d’améliorer à la fois la sécurité et la robustesse.
Sécurité
Ici, la JEP 229 (intitulée Create PKCS12 Keystores by Default) vient profiter de la sécurité offerte par PKCS12, qui propose des algorithmes cryptographiques plus forts que ceux de JKS, et maintenir une compatibilité aussi bien vers l’avant que vers l’arrière.
JEP 219 (intitulée Datagram Transport Layer Security (DTLS)) définit une API pour la version 1.0 et 1.2 de DTLS.
Bibliothèques clients
JEP 289 (intitulée Deprecate the Applet API) vient supprimer l’API de l’applet. OpenJDK estime que cette API perd rapidement sa place étant donné que les fournisseurs de navigateurs web suppriment la prise en charge des plug-ins Java.
JEP 251 (intitulée Multi-Resolution Images) définit une API multirésolution d’images de sorte que les images avec des variantes de résolution puissent être facilement manipulées et affichées.
Le langage
Avec JEP 211 (intitulée Elide Deprecation Warnings on Import Statements), OpenJDK rappelle que depuis Java SE 8, les compilateurs Java sont requis par des interprétations raisonnables de la spécification Java Language Specification pour émettre des avertissements de dépréciation lorsqu'un type déconseillé est importé par nom ou lorsqu'un membre obsolète (méthode, champ, type imbriqué) est importé statiquement. Ces avertissements sont peu informatifs et ne devraient pas être exigés.
La plateforme
Les ingénieurs ont parlé de l’implémentation d’un système de module (Java Platform Module System) tel que spécifié par JSR 376, ainsi que les modifications et améliorations spécifiques liées à JDK comme l’indiquent JSR 376 et JEP 261.
Il est également question d’étendre le format de fichier JAR afin de permettre à plusieurs versions de fichiers de classe spécifiques à la version Java de coexister dans une seule archive comme l’indique JEP 238.
Source : liste de diffusion OpenJDK, PSR Java SE 9
Voir aussi :
Sortie de JDK 9 : Mark Reinhold d'Oracle demande encore un délai supplémentaire de quatre mois, estimant que Jigsaw a besoin de plus de temps