Java devient payant ??

De Jérôme Meillant dans Technique

19 Fév 2019

Lors de la sortie de Java 11 en septembre 2018, Oracle a modifié son mode de licence.
La politique de licence de l’éditeur Américain étant connu pour son opacité, voyons ce qu’il en est vraiment.
 

Avant Java 11

Avant la version 11 Java SE (Standard Edition) est sous licence Oracle BCL (Binary Code License Agreement for the Java SE Platform Products).
Cette licence permet d’utiliser certaines fonctionnalités gratuitement et d’autres en payant (pour un usage commercial, tout est gratuit pour un usage interne).

Ces fonctionnalités sont regroupées dans 3 éditions différentes :

  1. Java SE (gratuit)
    Contient les fonctionnalités suivantes :
    – Java Development Kit (JDK) : JRE + JavaFX SDK + outils permettant aux développeurs de compiler et de débuguer.
    – Java Runtime Environment (JRE) : JVM (Java Virtual Machine) + bibliothèques de classes standard + composants permettant l’exécution d’applications Java.
    – Java FX Runtime
    – JRockit JDK : JDK basé sur une JVM haute performance (présent jusqu’à Java 6)
  2. Java SE Advanced et Java SE Advanced Desktop (payant)
    Identique à Java SE (gratuit) mais avec des outils de diagnostic et de profilage de la JVM en plus :
    – Java Mission Control
    – Flight Recorder
  3. Java SE Suite (payant)
    Identique à Java SE Advanced mais avec des fonctionnalités supplémentaires destinées aux applications temps réel :
    – JRockit Real Time

Pour utiliser les 2 éditions payantes il fallait acquérir une licence perpétuelle Java SE Advanced ou Java SE Suite (coût initial + frais annuels supplémentaires de support et de maintenance).
Lors de la sortie de Java 11 un système d’abonnements mensuels a été mis en place pour remplacer, entre autre (nous y reviendrons plus loin dans l’article), l’acquisition de cette licence perpétuelle.
 

A partir de Java 11

Depuis la version 11 la licence Oracle n’est plus la même. Oracle propose deux versions, une sous licence open source (appellée version OpenJDK d’Oracle), l’autre sous licence commerciale (appelée version JDK d’Oracle).

La version open source est sous licence GPLv2+CPE (GNU General Public License v2 with Classpath Exception).
Elle permet de distribuer une application (gratuitement ou non) et oblige de rendre accessible le code source de l’application (l’application peut être copiée, modifiée et distribuée).
Les versions open source existent en fait depuis la version 9 de Java et sont disponibles ici : https://jdk.java.net/

La version commerciale est maintenant sous licence OTN (Oracle Technology Network License Agreement for Oracle Java SE).
Elle permet de commercialiser une application sans quelle soit sous licence open source.

Au fur et à mesure les fonctionnalités payantes du JDK d’Oracle sont intégrées aux versions OpenJDK d’Oracle (Java Flight Recorder, Java Mission Control, Application Class-Data Sharing, ZGC).
On se retrouve donc avec une version 11 du JDK et d’OpenJDK identique fonctionnellement parlant, le but est que les versions JDK et OpenJDK soient facilement interchangeables.
Il reste quelques petites différences, voici celles concernant Java 11 :
      – Lors de l’utilisation de -XX:+UnlockCommercialFeatures option il y a un warning qui est généré dans la version JDK et une erreur dans la version OpenJDK (ce qui est normal car OpenJDK n’est pas destiné à utiliser des fonctionnalités commerciales, l’option est juste conservée pour facilité la migration d’une version antérieur à la version 11).
      – Le JDK peut être configuré pour créer des logs utilisables par l’outil « Advanced Management Console » qui est un produit commercial d’Oracle distinct.
      – La commande « javac –release » se comporte différemment lorsque l’on cible Java 9 ou 10 car les JDK de ces versions contenaient des modules supplémentaires par rapport à OpenJDK (ce n’est plus le cas avec Java 11).
      – Les commandes « java –version » et « java -fullversion » affiche des informations distinctes pour identifier qu’il s’agit du JDK ou d’OpenJDK.
      – Le JDK impose qu’un fournisseur tiers soit signé par un certificat reconnu alors qu’Open JDK, étant Open Source, permet l’utilisation d’un certificat d’un fournisseur de chiffrement tiers inconnu.
      – Le JDK contient un programme d’installation alors que l’OpenJDK est pour l’instant disponible que sous la forme d’un zip ou d’un tar.gz.
 

Abonnement

Comme évoqué précédemment Oracle a mis en place un système d’abonnements : Java SE Subscription (serveur ou déploiement cloud) et Java SE Desktop Subscription (poste de travail).

L’abonnement permet l’utilisation des fonctionnalités commerciales de Java SE, mais pas seulement.
Il donne également accès au support « My Oracle Support » et accès à certaines mises à jour.

Coût de l’abonnement

Pour un poste de travail : 2,50$/mois par utilisateur.
Pour un serveur ou un déploiement dans le cloud : 25$/mois par processeur.
Des remises sont accordées en fonction du volume.

Publication des mises à jour

En parallèle du changement de licence, Oracle modifie également sa politique de publication des mises à jour de Java SE.
Depuis la version 9 de Java, une version majeure est dorénavant publiée tous les 6 mois, en mars et en septembre, et des mises à jour de sécurité sont publiées tous les trimestres.
Tous les 3 ans il y aura une version majeure LTS (Long Term Support) qui sera maintenue par Oracle pendant 8 ans ; la première version LTS est Java 11.
A la sortie d’une version majeure la version majeure précédente ne sera plus maintenue par Oracle (sauf si la version précédente est une version LTS) ; Oracle fourni un process à la communauté OpenJDK pour qu’elle poursuive les mises à jour des versions OpenJDK.
Pour bénéficier de cette maintenance et pouvoir mettre à jour une version LTS il faudra être abonné.

Voici la roadmap de Java SE : https://www.oracle.com/technetwork/java/java-se-support-roadmap.html

Remarque

La fin des mises à jour publiques d’Oracle de Java 8 a été prolongée jusqu’à la fin du mois de janvier 2019 le temps de s’habituer au nouveau modèle de publication des versions.
 

En synthèse

Voici les éléments concernant l’ensemble des versions publiées par Oracle :

Versions Java Oracle majeures

Date de sortie

Licence

Fin des MAJ sans abonnement

Fin des MAJ avec abonnement

JDK/JRE 6

12/2006

BCL

04/2013
(dernière version : 6u45)

12/2015
(ou 12/2018 avec le support étendu)

JDK/JRE 7

07/2011

BCL

04/2015
(dernière version : 7u80)

07/2019
(ou 07/2022 avec le support étendu)

JDK/JRE 8

03/2014

BCL

01/2019
(dernière version : 8u202)

03/2022
(ou 03/2025 avec le support étendu)

JDK/JRE 9

09/2017

BCL

03/2018
(dernière version : 9.0.4)

03/2018

OpenJDK 9

09/2017

GPL

03/2018
(dernière version : 9.0.4)

JDK/JRE 10

03/2018

BCL

09/2018
(dernière version : 10.0.2)

09/2018

OpenJDK 10

03/2018

GPL

09/2018
(dernière version : 10.0.2)

JDK 11 (LTS)

09/2018

OTN

A priori 03/2019
non communiqué par Oracle
(version actuelle : 11.0.2)

09/2023
(ou 09/2026 avec le support étendu)

OpenJDK 11

09/2018

GPL

03/2019
(version actuelle : 11.0.2)

JDK 12

03/2019

OTN

09/2019

09/2019

OpenJDK 12

03/2019

GPL

09/2019

 

Versions

A partir de Java 11 il n’y a plus de JRE, uniquement le JDK (contient les éléments de la JRE).
Les versions listées dans le tableau sont celles fournies par Oracle, la communauté Open Source peut mettre à disposition d’autres versions d’OpenJDK (par exemple il existe des versions 7, 8 …).
Il existe de nombreuses distributions d’OpenJDK, par exemple AdoptOpenJDK qui a pour objectif de publier les patchs de sécurité des versions LTS (~8, 11, 17 …) même après la fin des publications publiques d’Oracle.

Licences

BCL : On peut utiliser Java commercialement en production, certaines fonctionnalités gratuitement d’autres via l’achat d’une licence (abonnement).
OTN : On doit s’abonner pour utiliser Java commercialement en production.
BCL/OTN : On peut utiliser Java gratuitement en phase de développement et pour la présentation d’un démonstrateur.
GPL : On peut utiliser Java commercialement en production gratuitement.
 

J’espère que tout est maintenant plus clair pour vous ! 🙂

iMDEO recrute !

A la recherche de nouveaux talents (développeurs web et mobile, chefs de projet,...)

REJOIGNEZ-NOUS

A la recherche de nouveaux talents (développeurs web et mobile, chefs de projet,...)

Voir les annonces