Mi-décembre, le Java Development Kit JDK 10 est entré en phase dite Rampdown 1, une étape de gel des fonctionnalités, consacrée en particulier à la correction des bogues de priorité P1 à P3. Selon le calendrier, la sortie de la version de production du JDK 10, une implémentation de Java Standard Edition 10, est programmée pour le 20 mars 2018. Les principales améliorations incluent une inférence du type des variables locales et l’arrivée d’une interface « propre » de Garbage Collector (GC ou ramasse-miettes). De façon générale, à partir du JDK 10, Java profitera de l’apport de technologies de plusieurs projets.

La cadence des publications des versions Java a été fixée à six mois par Oracle. Il était question, un temps, de nommer la prochaine mise à jour et les suivantes en fonction de l'année et du mois de publication - la première version s’appellera Java 18.3 - mais le projet a été abandonné après plusieurs objections. Pour télécharger les versions bêta du JDK 10, les développeurs doivent s’inscrire au programme JDK 10 Early-Access d’Oracle.

Nouvelles fonctionnalités et améliorations du JDK 10

Inférence du type des variables locales : elle vise à améliorer le langage Java pour étendre l'inférence de type aux déclarations de variables locales. L’idée est de simplifier le « cérémonial » associé au codage sans négliger la sécurité du type statique.

Interface « propre » de Garbage Collector : elle vise à améliorer l'isolation du code source des différents garbage collectors. L’un des objectifs est d’optimiser la modularité du code interne de la collecte au niveau de la machine virtuelle Java HotSpot et de faciliter l'ajout d'un nouveau garbage collector à HotSpot.

Récupération de mémoire pour le garbage collector G1 afin d’améliorer les pires cas de latence en implémentant le parallélisme.

Allocation possible par HotSpot du tas d'objets sur d'autres dispositifs de mémoire, par exemple un module de mémoire NVDIMM, spécifié par l'utilisateur. Cette fonctionnalité laisse entendre que les futurs systèmes pourront avoir des architectures de mémoire hétérogènes.

Utilisation expérimentale du compilateur JIT Graal Java sur la plate-forme Linux/x64.

Consolidation des référentiels JDK Forest dans un référentiel unique, afin de rationaliser le développement. Jusqu'à présent, la base de code était répartie sur plusieurs référentiels, ce qui pouvait entraîner des problèmes de gestion du code source.

Mise en œuvre du Class-Data Sharing (CDS), afin de réduire l'empreinte en partageant des métadonnées de classe communes entre les différents processus Java. Le temps de démarrage est également amélioré.

Ajout de Thread-Local Handshakes pour exécuter un rappel sur les threads sans effectuer de point de contrôle VM global. Il est possible de stopper des threads individuels, et non plus tous ou aucuns.

Fourniture dans le JDK d’un ensemble par défaut de certificats racines d'autorité de certification (CA). L'objectif est de créer des certificats racines open source dans le programme Java SE Root CA d'Oracle SE pour rendre les versions d'OpenJDK plus attrayantes pour les développeurs.

Les prochaines étapes du calendrier de développement du JDK 10

La page de téléchargement Java SE d'Oracle n’offre pas d’accès au JDK 10. Mais le JDK 10 doit encore franchir plusieurs étapes avant la version finale.

11 janvier 2018 : Fin de tous les tests planifiés, au moins une fois, sur toutes les plateformes supportées.
18 janvier 2018 : Rampdown Phase 2. Cette phase concerne uniquement la correction des bogues bloquants.
22 février 2018 : sortie de la release candidate.

Après la sortie, le 21 septembre, du très attendu JDK 9, Oracle a planifié les nouvelles mises à jour pour Java, y compris pour la version Java 18.3 prévue en mars 2018. Celle-ci inaugurera le nouveau rythme de sortie à six mois de Java Standard Edition (Java SE).

La feuille de route de Java

Projet Amber : Il sert d’incubateur pour des fonctions moins importantes, axées sur la productivité du langage Java. Notamment, l'inférence du type des variables locales qui réduit le « cérémonial » lié à l'écriture de code Java ; les énumérations améliorées : il s’agit d’améliorer l'expressivité de la construction d’enum en autorisant des variables de type dans les énumérations et en effectuant une vérification de type plus pointue sur les constantes enum ; les restes de lambda, pour augmenter la facilité d'utilisation des références de lambda et de méthode.

Projet Panama : Il sert à interconnecter les bibliothèques natives à la JVM. Permet des appels de fonctions natives depuis la JVM et un accès aux données natives à partir de la JVM.

Projet Valhalla : Ce projet d'incubateur pour les VM Java avancées apporte de nouvelles fonctionnalités à Java comme les types de valeur et la spécialisation générique.

Projet Loom : Facilite l'écriture d'applications concurrentes. Le calendrier prévoit l'ajout d'implémentations alternatives de threads en mode utilisateur, de continuations délimitées et d'autres constructions Java impliquant une manipulation de la pile d’exécution. L'objectif principal de cette proposition est de permettre une implémentation alternative des threads gérée par des ordonnanceurs Java. Le modèle de programmation Java des threads Java courants serait préservé tandis que les performances seraient améliorées et l'empreinte réduite.

Avec le nouveau calendrier de livraison à six mois, il est possible de retarder de six mois l’ajout de fonctionnalités, mais pas au-delà. Oracle n’a pas dit à quel moment les fonctionnalités décrites dans ces projets seront disponibles dans Java.