accueilLogicielsDéveloppement et Qualité LogicielsÉcosystème Java
 

Oracle, Java et les licences

Un article paru en décembre 2016 sur le site The Register explique qu’Oracle est en train de contacter les utilisateurs de Java pour leur faire payer des licences. Nous allons voir ici ce qu’il en est, et quels sont les impacts sur nos habitudes et infrastructures.


Contexte

Le langage Java a été créé par Sun Microsystems vers 1995. Il est décliné en plusieurs éditions : Java ME pour les applications mobiles ou embarquées, Java SE pour les applications classiques telles que des applications Desktop ou des applications tournant sur le serveur, et Java EE pour la version Entreprise qui est en fait un ensemble d’APIs ajoutées à Java SE.

Java a rencontré assez vite un grand succès, et est un des langages les plus utilisés. En 2006, Sun libère le code source de Java SE (la machine virtuelle Java et le compilateur) qui deviendra alors Open JDK.

En 2009, après plusieurs déboires financiers de Sun, ce dernier est racheté par Oracle. Java devient ainsi Oracle Java.

L’article déclencheur

Un article du site The Register a eu beaucoup d’écho. Cet article indique qu’Oracle essaie maintenant de faire payer les utilisateurs de Java, plus exactement de faire payer les utilisateurs des options commerciales fournies par Oracle Java.

En effet, Open JDK est Open Source, mais Oracle fournit également ses binaires de Java (Oracle Java), qui sont ceux que l’on peut télécharger sur la page de téléchargement de Java d’Oracle.

Quand on souhaite installer Java sur une machine Windows, c’est en général Oracle Java qui est installé. Quand on souhaite l’installer sur une machine Linux, cela peut être OpenJDK ou Oracle Java SE.

Quand on récupère et installe Oracle Java SE, on installe également des outils soumis à licence. Or Oracle ne propose pas de paquet de téléchargement avec uniquement les outils OpenSource et non soumis à licence. Ainsi, sur toutes les machines où est installé Oracle Java SE se trouvent également des outils soumis à licence d’utilisation.

Ces outils sont par exemple Java Mission Control, Java Flight Recorder, ou encore MSI Enterprise JRE Installer. Pour certains, il faut déverrouiller la JVM avec un flag tel que -XX:+UnlockCommercialFeature.

Oracle a, selon l’article de The Register, embauché récemment plusieurs dizaines de personnes pour faire la chasse aux utilisations de ces outils sans licence associée, et faire payer leurs utilisateurs.

Analyse des clauses d’Oracle

Sur la page de téléchargement de Java d’Oracle, il est nécessaire de donner son accord (en cochant une case indiquant que l’on accepte les clauses d’un document) avant de pouvoir télécharger. J’ai lu ces documents, et voici l’essentiel de leur contenu sur ce sujet.

Oracle Binary Code License Agreement

Source : http://www.oracle.com/technetwork/j...

Ce document autorise l’utilisation de Java SE sur des machines classiques pour un usage classique. Les termes sont flous, mais le document également (cela est certainement étudié pour). Grossièrement, il est possible d’utiliser Java sur un poste de développeur, sur un serveur, etc. Par contre ce document exlut des usages spécifiques tels que lecteurs Bluray, embarqué, imprimantes, etc...

Il est explicitement écrit dans ce document que le droit d’utilisation ne s’applique par aux fonctionnalités commerciales, et que nous n’avons pas le droit d’utiliser ces fonctionnalités commerciales pour faire tourner nos programmes. Si l’on souhaite utiliser ces fonctionnalités commerciales, il faut alors obtenir une licence séparée auprès d’Oracle.

Pour mettre fin à cet accord décrit par ce document, il suffit de détruire toutes les copies d’Oracle Java SE installées.

A noter que ce document indique que l’on reconnait qu’en cas d’actions juridiques la cour compétente est celle de San Francisco ou Santa Clara. Je ne sais pas si cette clause est valable en France ou dans l’Union Européenne.

Pour connaître les fonctionnalitée commerciales, il faut se référer au document suivant.

Oracle Java SE and Oracle Java Embedded Products

Source : http://www.oracle.com/technetwork/j...

Ce document liste les produits Oracle Java SE et Oracle Java embedded soumis à licence commerciale.

Un tableau liste les produits, je vous invite à le consulter. Les plus notables sont :

  • Java Flight Recorder
  • Java Mission Control
  • Java Advanced Management Console
  • MSI Enterprise JRE Installer

Des outils liés à la JVM JRockit sont également présents. Les deux premiers outils sont une sorte de VisualVM amélioré.

Dans le cas de gestion de parc, l’outil MSI Enterprise JRE Installer permet d’installer Java sur un ensemble de machine.

Tous ces outils sont donc soumis à une licence d’utilisation commerciale, qu’il faut obtenir auprès d’Oracle.

Les noms officiels des suites s’appellent Oracle Java SE Advanced, Oracle Java SE Advanced Desktop et Oracle Java SE Suite. Mais l’ambiguïté est qu’il n’est pas possible de télécharger telle ou telle suite, avec ou sans fonctionnalités commerciales (c’est même écrit noir sur blanc dans ce document). Le téléchargement inclut les produits utilisables gratuitement (JVM, compilateur, ...), mais aussi les fonctionnalités soumises à licence commerciale qu’il ne faut pas utiliser à moins d’avoir acquis cette licence.

Enfin, la notion d’utilisation de ces fonctionnalités commerciale est large. Elle inclut évidemment le lancement des outils, mais aussi des options de configuration, l’utilisation d’APIs, de protocoles, ou même de MBeans JMX spécifiques. Il faut donc faire très attention à l’utilisation et l’outillage autour des JVMs Oracle.

Java SE Offerings

Source : https://blogs.oracle.com/java-platf...

Ce document reprend plus succintement et clairement les différentes distributions de Java SE, qui sont :

  • OpenJDK, sous licence GPLv2
  • Oracle JDK et Oracle JRE pour l’utilisation gratuite de Java
  • Oracle Java SE Advanced, Java SE Advanced Desktop, Java SE Suite pour l’utilisation de fonctionnalités commerciales d’Oracle Java
  • Java SE embedded pour de l’embarqué

Encore une fois, il y a une ambiguïté car lors de l’installation d’Oracle JDK, les outils d’Oracle Java SE Advanced, soumis à licence commerciale, sont également installés.

Specifics About Java Usage Metrics

Source : https://java.com/en/data/details.jsp

Enfin, le quatrième document n’est pas directement lié aux licences d’utilisation de Java, mais plutôt sur des données remontées à Oracle.

En effet, quand Java est installé sur un ordinateur (Windows uniquement), plusieurs informations sont remontées vers Oracle (au format XML chiffré sur une couche de transport SSL d’après le document).

La plupart des informations sont à propos des numéros de versions de Java, de l’architecture de la machine, de son système d’exploitation.

Cependant, il est important de noter que l’adresse IP est également envoyée à Oracle, même si le document indique que cette donnée n’est associée avec aucune autre donnée.

Alternatives

En tant que développeur ou administrateur système, que devons-nous faire si nous n’utilions pas les fonctionnalités commerciales d’Oracle Java, et que nous voulons nous assurer que nous n’en utilisons pas inconsciemment ?

Linux

Sur Linux, c’est assez simple, car les grandes distributions proposent toutes l’installation d’OpenJDK. En général, l’installation d’Oracle Java nécessite soit de récupérer manuellement (ou avec un script) l’archive sur le site d’Oracle, qui implique l’acceptation de la licence, soit d’ajouter un dépôt spécifique dans la distribution.

Donc, pour des systèmes Linux, il faut installer le paquet openjdk-8-jdk sur des distributions Debian et dérivées, et le paquet java-1.8.0-openjdk-devel sur des distributions Fedora et RedHat.

Windows

Sous des environnements Windows, c’est plus compliqué car le chemin classique pour installer Java est de se rendre sur la page de téléchargement d’Oracle, d’accepter la licence, de télécharger l’installateur et d’installer Oracle Java. Le problème en faisant ainsi est que les outils tels que Java Mission Control, soumis à licence commerciale, sont également installés.

Une solution est d’utiliser OpenJDK sous Windows, mais ce dernier ne propose pas de binaire pour Windows. Comme le code source d’OpenJDK est libre, il existe trois possibilités pour Windows :

  • Utiliser le build d’Azul : Zulu (à ne pas confondre avec un autre produit d’Azul : Zing, qui est une alternative à Hotspot permettant d’avoir un mécanisme de garbage collector sans pause)
  • Utiliser le build d’OpenJDK fait par la communauté : ojdkbuild sur Github
  • Utiliser le build de RedHat, qui nécessite de rejoindre le RedHat Developer Program (non payant, qui permet également de télécharger RHEL, JBoss, etc... mais for development use, donc pas sûr que l’on puisse utiliser ce build d’OpenJDK fourni par RedHat via cette souscription gratuite au RedHat Developer Program pour installer sur des environnements de production ...)

Docker

Pour les utilisateurs de Docker, il faut faire attention aux images utilisées, et s’assurer qu’elles utilisent bien OpenJDK et non Oracle Java.

Par exemple, les images installant Java de cette façon :

RUN \
  echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
  add-apt-repository -y ppa:webupd8team/java && \
  apt-get update && \
  apt-get install -y oracle-java8-installer

utilisent Oracle Java.

Si l’on souhaite installer la version OpenJDK, il faut installer le paquet openjdk-8-jdk ou java-1.8.0-openjdk-devel.

Les différentes installations possibles sont décrites sur cette page Github (mais OpenJDK 8 n’y est pas cependant).

Conclusion

A moins d’avoir besoin des outils soumis à licence commerciale tels que Mission Control, ou d’avoir absolument besoin de la version Oracle de Java, je recommande d’utiliser OpenJDK et de supprimer toute installation d’Oracle Java SE. Sur les systèmes à base de Linux, cela se fait simplement avec les gestionnaires de paquets. Pour les systèmes Windows, j’ai testé le build d’OpenJDK fait par la communauté et ai désintallé Oracle Java SE :

C :\Users\sdr>java -version
openjdk version "1.8.0_111-3-ojdkbuild"
OpenJDK Runtime Environment (build 1.8.0_111-3-ojdkbuild-b15)
OpenJDK 64-Bit Server VM (build 25.111-b15, mixed mode)

Les outils tels que Maven, SQL Developer, Apache Directory Studio (basé sur Eclipse) fonctionnent tous parfaitement.

A noter que certains outils (comme SOAP UI, les Intellij IDEA, ...) viennent avec leur propre JVM, ici un JRE Oracle.

 

Stéphane DERACO
Envoyer un courriel

 


ARESU
Direction des Systèmes d'Information du CNRS

358 rue P.-G. de Gennes
31676 LABEGE Cedex

Bâtiment 1,
1 Place Aristide Briand
92195 MEUDON Cedex



 

 

Direction des Systèmes d'Information

Pôle ARESU

Accueil Imprimer Plan du site Credits