Hier, une traduction de l'article «Ne tombez pas dans le piège en utilisant Oracle JDK 11» a été publiée sur Habré, suivie d'une discussion sur «Java payé», mais tout n'est pas aussi effrayant qu'il n'y paraît à première vue - ci-dessous est une traduction de la publication du blog Oracle avec la position officielle pour l'octroi de licences et la distribution Versions JDK 11+.Résumé
À partir de Java 11, Oracle publiera le JDK sous la
licence GNU General Public License v2, avec l'exception Classpath (GPLv2 + CPE) et sous une licence commerciale pour ceux qui utilisent le JDK Oracle dans le cadre de produits ou services Oracle, ou qui ne veulent pas utiliser l'open source logiciel. Cette combinaison de licence OS et commerciale remplace l'ancienne
BCL (Oracle Binary Code License), qui comprend des conditions d'utilisation commerciales et gratuites.
Des assemblys distincts seront fournis pour chaque licence, mais ces assemblys seront
fonctionnellement identiques , à l'exception de quelques différences esthétiques et différences dans la façon dont les binaires sont empaquetés, décrits en détail ci-dessous.
De BCL à GPL
La licence BCL pour Oracle Java SE est utilisée depuis plus de 10 ans pour la licence des technologies Oracle Java SE. Sous certaines conditions, BCL autorise une utilisation sans redevances. Pour simplifier les travaux, à partir de Java 9, Oracle a commencé à fournir des assemblys OpenJDK sous la licence OS utilisée par la plate-forme Linux
(le noyau Linux est distribué sous la licence GNU GPLv2) . Si vous avez l'habitude d'utiliser gratuitement les binaires Oracle Java SE, vous pouvez simplement continuer à le faire avec les binaires OpenJDK disponibles sur jdk.java.net. Si vous êtes habitué à utiliser les binaires Oracle Java SE dans le cadre des produits ou services commerciaux d'Oracle, vous pouvez continuer à recevoir les versions d'Oracle JDK via
My Oracle Support (MOS) ou ailleurs.
Identiquement fonctionnel et interchangeable ...
Le JDK Oracle sous licence BCL contenait historiquement des «fonctionnalités commerciales» qui n'étaient pas disponibles dans les versions OpenJDK. Comme promis, au cours de la dernière année, Oracle a ajouté ces fonctionnalités à OpenJDK, notamment:
Par conséquent, à partir de Java 11 et versions ultérieures, les assemblys Oracle JDK et OpenJDK seront essentiellement identiques.
... mais avec quelques différences cosmétiques et d'emballage
Il reste un petit nombre de différences, certaines intentionnelles et cosmétiques, et certaines nécessitent juste plus de temps pour discuter avec les contributeurs d'OpenJDK.
- Oracle JDK 11 affiche un avertissement lors de l'utilisation de l'
-XX:+UnlockCommercialFeatures
, alors que dans OpenJDK, cette option entraînera une erreur. Cette option n'a jamais fait partie d'OpenJDK, donc cela n'a aucun sens de l'ajouter, car il n'y a pas de fonctionnalités commerciales dans OpenJDK. Cette différence demeure pour faciliter la mise à niveau vers Oracle JDK 11 ou version ultérieure pour les utilisateurs d'Oralce JDK 10 ou version antérieure. - Oracle JDK 11 peut être configuré pour fournir des données de journal à Advanced Management Console , un produit Oracle commercial distinct. Nous travaillerons avec d'autres contributeurs OpenJDK sur la nécessité de fournir ces données et leurs avantages dans OpenJDK dans les futures versions. Cette différence demeure principalement pour préserver l'expérience acquise par les clients Oracle.
- La
javac --release
se comporte différemment pour Java 9 et Java 10, car dans ces versions d'Oracle JDK contient des composants supplémentaires qui ne faisaient pas partie des versions correspondantes d'OpenJDK:
- javafx.base
- javafx.controls
- javafx.fxml
- javafx.graphics
- javafx.media
- javafx.web
- java.jnlp
- jdk.jfr
- jdk.management.cmm
- jdk.management.jfr
- jdk.management.resource
- jdk.packager.services
- jdk.snmp
Cette distinction demeure pour maintenir la compatibilité dans certains cas hérités. Ces modules sont désormais soit disponibles séparément dans le cadre d'OpenJFX, soit présents dans OpenJDK et Oracle JDK, car ce sont des fonctionnalités commerciales qu'Oracle a ajoutées à OpenJDK, ou ont été supprimées d'Oracle JDK 11 (par exemple JNLP). - La sortie des commandes
java --version
et java -fullversion
diffère entre les assemblys Oracle JDK et OpenJDK afin que les équipes de support puissent diagnostiquer les problèmes qui surviennent. En particulier, l'exécution de java --version
avec une version Oracle JDK 11 produira:
java 11 2018-09-25
Environnement d'exécution Java (TM) SE 18.9 (build 11 + 28)
Java HotSpot (TM) 64-Bit Server VM 18.9 (build 11 + 28, mode mixte)
Et avec OpenJDK 11:
version openjdk "11" 2018-09-25
Environnement d'exécution OpenJDK 18.9 (build 11 + 28)
Serveur OpenJDK 64 bits VM 18.9 (build 11 + 28, mode mixte)
- Oracle JDK a toujours exigé des fournisseurs de chiffrement tiers qu'ils signent avec un certificat bien connu. La cryptographie dans OpenJDK a une interface ouverte, ce qui signifie qu'il n'y a aucune restriction sur le fournisseur de cryptographie utilisé. Oracle JDK 11 continuera d'exiger une signature valide et les assemblys OpenJDK continueront à autoriser l'utilisation d'un fournisseur de chiffrement tiers, à la fois avec une signature valide et sans signature.
- Oracle JDK 11 continuera à inclure les programmes d'installation, l'image de marque et les JRE pour la compatibilité avec les applications de bureau héritées. Les assemblys OpenJDK sont désormais disponibles sous forme de fichiers zip et tar.gz, tandis que d'autres formats de distribution sont à l'étude.
Comment les appelons-nous?
Idéalement, nous pourrions désigner tous les assemblys Oracle JDK sous le nom d '«Oracle JDK», sous GPL ou sous licence commerciale, selon votre situation. Cependant, pour des raisons historiques, bien qu'il existe de légères différences, nous y ferons référence séparément: OpenJDK et Oracle JDK.