Les développeurs attendent d’importants bénéfices de Java 9 Standard Edition, lorsqu’il arrivera enfin, ce qui est maintenant prévu pour le 21 septembre. La mise à jour de ce langage de développement très utilisé dans les entreprises a notamment été retardée par les désaccords autour du système de modules (Projet Jigsaw). Cette version doit par ailleurs apporter un mode de compilation anticipée (ahead-of-time compilation), ainsi que l'interface REPL (read, evaluate, print and loop) qui permet d’interagir avec le langage de programmation et facilite son apprentissage.

Avec la publication de la build release candidate, Oracle a proposé qu’à partir de maintenant, seuls des bugs extraordinaires seraient corrigés pour la version de production. Cette proposition faite la semaine dernière constitue un resserrement supplémentaire sur les objectifs de correction de bugs pour la RDP (Rampdown Phase) 2 de la mise à jour Java. Il est prévu de se concentrer sur ceux de priorité 1 (P1) pour assurer le succès du JDK 9. Parallèlement, les développeurs travaillant sur la build devraient repousser la prise en charge des bugs qui ne sont pas nouveaux dans le JDK 9 et qui ne sont pas critiques à sa livraison (ou qui ne peuvent pas, pour une raison particulière, être corrigés dans cette mise à jour). La correction des bugs P2 à P5 sera laissée à de prochaines versions, que ce soit dans le code du produit, les tests ou la documentation. Cette modification ne devrait pas être aussi importante qu’elle apparaît de prime abord si l’on se réfère à la liste de ces bugs.

L'évolution vers un système modulaire en question

La mise à jour de Java 9, déjà plusieurs fois reportée – elle était à un moment donnée fixée à septembre 2016 – devrait donc se faire dans un peu moins de trois mois. Elle s’est embourbée dans les désaccords intervenus entre Oracle – qui coordonne les développements – et plusieurs contributeurs majeurs de Java, dont Red Hat et IBM, sur la direction que prenait le projet Jigsaw qui devait conduire vers un système modulaire. Cette évolution est supposée doper les capacités d’évolutivité de Java, de même que la sécurité. Mais des alertes ont mis en garde sur la nécessité d’envisager deux voies, l’une vers un système modulaire, l’autre non. Le remodelage que cela implique est tellement compliqué que cette évolution avait déjà été repoussée à Java 9 après avoir été abandonnée sur Java 8 en mars 2014.

Avec un système modulaire, des parties du JDK peuvent être compilées lors du runtime de différentes façons. Mais pour l’écriture de code, cela pourrait en fait ne pas changer grand-chose. « Je ne pense pas que cela va beaucoup changer les pratiques de coding ou la productivité », estime par exemple Gil Tene, CTO d’Azul Systems, fournisseur spécialisé dans les technologies Java. A l’inverse, Mark Reinhold, architecte en chef de la plateforme Java chez Oracle, décrit depuis presque deux ans Jigsaw comme un « profond changement ». Qu’au final les développeurs l'estiment utile ou pas, on ne sait pas s'il arrivera ou non avec Java 9. Oracle exprime son optimisme de se rabibocher avec le reste de la communauté Java sur ces questions pour, enfin, livrer ce système modulaire dans cette version.

Compilation anticipée, REPL, connexion JVM unifiée

Concernant les autres évolutions, la compilation anticipée, quoique encore au stade expérimental, tout au moins pour le moment, devrait aider sur les temps de démarrage des applications. Quant à REPL, il fournit via jShell un outil en ligne de commande pour évaluer les déclarations de variables, de même qu’une API pour que les autres applications puissent utiliser cette capacité. L’API cliente http/2 pour Java 9 devrait aider à la mise en œuvre vers http et WebSocket et pourrait remplacer HttpURLConnection. L’API actuelle présente beaucoup d’inconvénients, en particulier celui d’être difficile à utiliser et à maintenir.

Une connexion JVM unifiée apportera un système commun pour les composants de JVM, avec des options en ligne de commande pour se connecter et trouver les raisons des plantages ou ce qui cause des problèmes sur les performances.

Si Oracle parvient à livrer à la date désormais prévue, il se sera écoulé 3 ans et demi entre Java 8 et Java 9. A l’avenir, le fournisseur prévoit une cadence plus rapide, avec des mises à jour tous les ans, ou même plus fréquemment, pour que les développeurs n’aient pas à patienter aussi longtemps pour bénéficier de nouvelles fonctionnalités. Les utilisateurs peuvent toutefois se demander s’ils pourront suivre une telle cadence.