Jeudi dernier avait lieu à l'INRIA une soirée sur les performances et évolutions de java, organisée par le JUG http://rivierajug.org/xwiki/bin/view/Blog/Jeudi+13+septembre+2018+%40+Sophia... Ces soirées sont très sympa,de haut niveau technique et cela permet d'avoir la synthèse sur un sujet avec un intervenant qui maitrise toujours son sujet. Ce jeudi donc, on parlait de java qui a fait l'objet il y a quelque mois d'un procès retentissant entre Oracle (propriétaire de java suite au rachat de Sun) et Google. L'intervenant nous a parlé de l'évolution de java et avec Oracle dans la boucle, je craignais un coup fourré et cela n'a pas loupé. Ce jeudi (coïncidence), Java 9 était mort et remplacé par Java 10 et presque tout le monde dans la salle (sondage à main levé) était convaincu qu'on en était encore à java 8. Pour faire bref, un truc diabolique a été mis en place pour le java: une gestion des releases à la ubuntu avec le petit plus qui tue.
Depuis ses début, Java changeait tous les trois ans environ, était compatible avec les anciennes versions et donc, à la sortie de java8, on enlève la jvm7, on met la jvm8 et c'est tout bon, l'ancien code continue à fonctionner. Désormais, on a un triangle safe, stable, security et on ne peut avoir que deux angles du triangle. Free signifie gratuit, stable signifie compatible et security le colmatage des failles de sécurité. N'avoir que deux angles du triangle signifie que pour avoir stable et security, vous n'avez plus free et donc qu'il faut passer à la caisse. Si vous voulez free et security, vous n'êtes plus stable et donc votre ancien code ne tournera plus. Si vous voulez free et stable, vous n'avez plus de patchs de sécurité. L'analogie avec Ubuntu est la suivante: vous avez une LTS (java 8) et cela roule. Hélas rapidement, plus de patch de sécurité et donc vous passez à une version suivante non LTS qui est mise à jour (java 9) et qui casse la compatibilité. 6 mois après, une java 10 qui vient à nouveau casser la compatibilité. Enfin, java 11 une LTS qui donnera un peu de répit comme une LTS Ubuntu. Bien entendu, si vous voulez rester à une vieille version pour ne rien casser mais avoir des patchs de sécurité, Oracle et sans doute d'autres boites comme Red Hat se font un plaisir de signer avec vous un contrat de maintenance. La justification de cette abomination, c'est que comme Ubuntu, vous pouvez avoir assez rapidement les nouveautés sans attendre une bonne grosse release et de fait, une nouvelle version Java LTS devrait tomber tous les 18 mois. La seule bonne nouvelle, c'est que tout le monde est désormais sur OpenJDK, la version qu'on trouve dans les distributions mais quelle version trouvera t'on dans Centos, Ubuntu, etc ? Sans doute, la version avec les patchs de sécurité mais qui casse la compatibilité. Comme disait un de mes voisins, on est passé du langage Scala au langage Java pour ne plus être embêté avec les codes incompatibles et on retombe dans le cauchemar.
Bonne journée,