https://twitter.com/adoptopenjdk

« JOSM et Java » sur le forum allemand

Billet invité de Vincent Privat

Cet article a été publié pour la première fois sur https://www.openstreetmap.org/user/don-vip/diary/210953


J’ai lu beaucoup de déclarations incorrectes à propos de la nouvelle licence Java d’Oracle sur le forum OSM allemand mentionné dans la weeklyOSM 458. Voyons en détail de quoi il s’agit.

Tout d’abord, un peu d’histoire et de terminologie. Java a été créé en 1995 par Sun. On appelle “Java” à la fois le langage de programmation et la plateforme qui fait tourner JOSM (JRE = Java Runtime Environment, environnement d’exécution Java). Il existe plusieurs plateformes, d’éditeurs multiples.

Le JDK (Java Development Kit) contient le JRE mais aussi des outils de développement (principalement le compilateur java). En 2006, aux alentours de la sortie de Java 6, Sun a annoncé son intention de rendre Java open-source avec un nouveau projet : OpenJDK.

OpenJDK est mal nommé, comme OpenStreetMap. On ne se contente pas de cartographier les rues…. Idem avec le projet OpenJDK qui ne concerne pas seulement le JDK mais l’ensemble de la plateforme Java (langage, spécifications, outils, APIs, etc.). @speakjava l’explique plutôt bien.

Sun a ouvert beaucoup d’éléments de Java dans le projet OpenJDK, mais pas tout. En particulier, les installateurs et les technologies de déploiement pour Windows/Mac telles que WebStart ne l’ont pas été (on ne sait pas pourquoi).

Cela signifie qu’OpenJDK est seulement un projet de “code source”. Le construire est très compliqué, et personne n’a pris la peine de distribuer des binaires libres pour Windows & Mac. Seul Red Hat l’a fait pour Linux avec le projet IcedTea. Si vous avez un Java 100% libre sur Linux, c’est grâce à eux.

En 2009, Oracle a racheté Sun. Ils n’ont pas changé les choses radicalement jusqu’à récemment. Donc même aujourd’hui, la plupart des utilisateurs Windows et Mac utilisent encore des binaires JRE Oracle propriétaires, qui sont construits à partir du projet libre OpenJDK.

Oracle a fait un très bon boulot en livrant Java 8 en 2014, puis Java 9 en 2017. On a même collaboré avec eux en mutuelle bonne foi. Puis, tout est parti en vrille.

Ils ont changé le cycle de développement des versions Java pour un rythme fixe tous les 6 mois (2 versions par an). On est maintenant à Java 12 (qui est d’ailleurs la version la moins impressionnante de Java: rien de neuf dedans).

Ils ont modifié la licence du JDK Oracle : grosso modo si vous êtes une entreprise et que vous voulez utiliser des binaires Oracle, il faut payer. Ils ont introduit la notion de versions avec support à long terme (LTS). Java 8 est une LTS, Java 11 aussi. Pour plus de détails sur le “release train” et les licences, voir l’excellent billet de blog par @hendrikEbbers.

Et concernant les binaires Java 8 que presque tout le monde utilise sous Windows et Mac, ils ont changé la licence pour une licence gratuite uniquement à des fins d’utilisation de bureau personnelle, et ce au moins jusqu’à fin 2020.

Ces changements sont sortis de nulle part et la communauté Java n’était pas préparée à faire face à la situation. Il a donc fallu un certain temps avant que nous puissions trouver un remplaçant libre aux binaires Oracle sur Windows et Mac, et c’est pourquoi nous n’avons encore conseillé à personne de passer à autre chose.

Mais on y est presque grâce à @adoptopenjdk ! Ce projet communautaire offre des téléchargements libres d’OpenJDK pour toutes les plateformes !

On attend juste la disponibilité de quelques améliorations de l’installateur AdoptOpenJDK avant de conseiller à tout le monde d’y passer.

1) L’inclusion de JavaFX (une autre technologie abandonnée par Oracle, maintenue par @GluonHQ maintenant), qui est utilisée par JOSM pour la lecture de fichiers MP3, et par quelques plugins tels que Microsoft StreetSide.

2) L’inclusion d’IcedTea-Web (l’implémentation libre de Java WebStart qui a aussi été abandonné par Oracle). On peut remercier Red Hat (encore) pour ce projet, mais aussi @karakun et AdoptOpenJDK pour leur travail.

3) Une fonction de mise à jour automatique pour être sûr que tout le monde bénéficie automatiquement des mises à jour de sécurité.

Une fois que tous ces problèmes auront été résolus (bien avant la fin de 2020 j’espère) on demandera à tout le monde de passer à AdoptOpenJDK. Jusqu’à présent, même si je méprise Oracle pour tout ça, je vous conseille de conserver leur JRE, au moins pour les mises à jour automatiques de sécurité.

C’est aussi la raison pour laquelle on cible toujours Java 8 comme version minimale. Une fois que tout le monde pourra exécuter JOSM avec les binaires AdoptOpenJDK, on migrera probablement à Java 11 ! Qui est d’ailleurs aujourd’hui maintenu par Red Hat et non plus par Oracle 🙂