Mark Reinhold, architecte en chef du projet Java 9, vient d’annoncer que le SDK 9 serait retardé de 6 mois et ne serait disponible que le 23 mars 2017, de manière à ce qu’il ait le temps avec son équipe de finaliser la plate-forme, qui éprouve, c’est sous-entendu, des difficultés sérieuses de mise au point.
Il faut dire que selon l’avis même des évangélistes Java (il en reste quelques-uns chez Oracle), il s’agit d’une mise à jour majeure, qui va mettre en œuvre un concept que les développeurs attendent depuis longtemps, celle de la modularisation des bibliothèques.
Cette modularisation est fondée sur le projet Jigsaw dont on parle déjà depuis Java 7 avec lequel elle aurait dû normalement être associée, mais qui dans un premier temps avait été reportée sur Java 8, puis sur Java 9, celui-ci prenant à son tour 6 mois de retard.
Un problème (très) délicat
Il faut dire que le problème à traiter n’est pas simple.
Il s’agit essentiellement avec Jigsaw de compartimenter les bibliothèques Java en modules distincts, de manière à ce que la JVM puisse fonctionner sans la présence d’un certain nombre de ces bibliothèques de base. On pourrait penser qu’il s’agit là d’un simple problème d’inventaire de « cuisine », mais il n’en est rien, car les bibliothèques en question sont elles-mêmes souvent dépendantes d’autres bibliothèques, qui provoqueraient un « désastre » si elles n’étaient pas présentes au moment du « run time ».
C’est ainsi qu’est souvent relevé le cas du package java.beans qui dépend de java.applet, lui-même dépendant de java.awt. Parfois, comme avec java.awt des dépendances avec de très vieilles bibliothèques, qu’il faut donc maintenir.
Imaginez un peu les difficultés.
Il faut non seulement découper les bibliothèques en modules cohérents et indépendants, mais il faudra aussi restructurer le tout, pour faire disparaître les dépendances parasites, avant de produire une nouvelle organisation, qui à son tour sera implémentée dans les JVM par les intégrateurs et les éditeurs d’IDE.
La vraie raison de tout ce remue-ménage est que la JVM et ses classes de bases est trop lourde et inadaptée aux usages modernes de la mobilité et ceux des IoT à venir. Trop monolithique, comme le sont d’ailleurs les grands pavés des bibliothèques externes Java SE, Java ME et surtout Java EE. D’où par exemple, la notion de profil implémentée sur Java EE.
Et on voit bien dans les objectifs présentés par Mark Reinhold tous les enjeux de cette petite révolution :
- faire en sorte que JSE 9 et le JDK 9 (langage et classes de base), soient plus extensibles et adaptables aux nouveaux contextes
- améliorer au passage la sécurité, qui va être au cœur des batailles à venir
- améliorer aussi les performances des applications « hébergées » dans la JVM
- faciliter le travail des développeurs pour leurs propres applications et packages
Il est certain que les équipes qui travaillent sur la JSR 376, celle qui concerne Jigsaw, vont mettre les bouchées doubles dans les mois à venir. Qui vont pouvoir capitaliser sur les très nombreuses remontées en provenance des partenaires d’Oracle, ceux-ci ayant stigmatisé le fait qu’il valait mieux surseoir et lancer une vraie version modulaire des bibliothèques, qu’une version rafistolée sur laquelle il aurait été nécessaire de revenir par la suite.
Aux dernières nouvelle donc, il nous faudra attendre la fin mars 2017. Ce qui donnera aux équipes de Mark Reinhold, près de 18 mois pour finaliser le nouveau JDK. Espérons que ce sera le dernier retard, parce que pendant ce temps, les Microsoft et surtout Google ne perdent pas de temps, qui sont déjà très présents dans les mobiles et IoT, là où l’affrontement sera le plus « sanglant » dans les années à venir.
Commentaires récents