Oracle a proposé de reporter la sortie de Java 9 Standard Edition (SE) au mois de septembre, afin de permettre à la communauté open source qui travaille sur la finalisation de Java 9 de résoudre les désaccords qui persistent sur la modularité. « La nouvelle approche, approuvée dans un premier temps, est aujourd’hui contestée », a déclaré Georges Saab, vice-président du développement logiciel, Java Platform Group d’Oracle et président du conseil d'administration de l’OpenJDK.

Soumis au vote début mai, le Java Platform Module System, une capacité clé du Java Development Kit 9 (JDK 9) et la Java Specification Request (JSR) 376, n’ont pas été approuvés par le comité exécutif. IBM, Red Hat et Twitter, entre autres, ont voté contre le projet, car ils estiment qu'il serait trop déstabilisant pour les développeurs et ils craignent aussi une fragmentation de la communauté Java. La mesure a été renvoyée au groupe d'experts à l’origine de la proposition pour être rediscutée. « Depuis, le groupe est parvenu à un consensus sur les problèmes de modularité », a affirmé Georges Saab. Mais, compte tenu du travail qu’il reste à accomplir sur Java 9, la date de sortie initiale du 27 juillet ne pourra pas être respectée.

Du code plus ancien pouvant fonctionner avec Java 9

Quand le comité soumettra la JSR 376 modifiée au comité exécutif pour approbation, celui-ci disposera de deux semaines pour se prononcer lors d’un nouveau vote. Cette proposition contient la technologie connue sous le nom de Project Jigsaw au cœur du système de modules censé rendre Java plus évolutif. Si la version révisée du JSR 376 est approuvée, comme prévu, le travail d’implémentation de la nouvelle technologie dans la version officielle de Java 9 SE pourra reprendre. « Cependant, ce retard dans la mise à jour de Java 9 sera temporaire, et Oracle adoptera un calendrier de mise à jour plus rapide pour les futures versions de Java SE », a précisé Georges Saab. « Cela signifie que jusque-là, les développeurs craignaient souvent d’attendre plusieurs années avant qu’une caractéristique particulière ne soit intégrée dans une future version. Des mises à jour plus fréquentes, sur une base annuelle, voire même plus régulière, multiplieront les possibilités d’ajout de fonctionnalités par les développeurs et réduiront les temps d'attente », a encore déclaré le vice-président.

Pour faciliter la migration vers ce Java 9 modulaire, Mark Reinhold, l'architecte en chef d’Oracle, a proposé d’autoriser temporairement un accès réflectif illégal de code à la variable classpath par défaut de façon à permettre à un code plus ancien de fonctionner dans Java 9. Même si la proposition de Mark Reinhold ne résout pas toutes les questions posées par la migration, elle permet d’étaler le passage au Java modulaire sur plusieurs versions. Le groupe d'experts JSR 376 a également abordé plusieurs autres problèmes en rapport avec la modularité. C’est le cas par exemple de #VersionSyntax, qui permet de réviser la syntaxe des chaînes de version du module afin de pouvoir gérer davantage de chaines de version. En l’occurrence, le groupe a décidé de conserver l'API existante. Un problème toujours non résolu concerne #ModuleIdentifiers, qui permet de gérer plusieurs versions de modules portant le même nom. Cette question sera discutée à une date ultérieure.