Selon le blog Oracle , les versions d'Oracle JDK pour Java 11 et versions ultérieures
À partir de Java 11, Oracle fournira des versions JDK sous la licence open source GNU General Public License v2, avec l'exception Classpath (GPLv2 + CPE) , et sous une licence commerciale pour ceux qui utilisent Oracle JDK dans le cadre d'un produit ou service Oracle, ou qui ne souhaitent pas utiliser de logiciel open source. Cette combinaison de l'utilisation d'une licence open source et d'une licence commerciale remplace la licence historique « BCL », qui comportait une combinaison de conditions commerciales gratuites et payantes.
Différentes versions seront fournies pour chaque licence, mais ces versions sont fonctionnellement identiques à part quelques différences cosmétiques et de conditionnement, décrites en détail ci-dessous.
De la BCL à la GPL
La licence de code binaire pour les technologies Oracle Java SE («BCL») est la licence principale des technologies Oracle Java SE depuis plus d'une décennie. La BCL permet une utilisation sans frais de licence sous certaines conditions. Pour simplifier les choses, Oracle a commencé à fournir des versions OpenJDK sous licence open source à partir de Java 9, en utilisant le même modèle de licence que la plate-forme Linux. Si vous avez l'habitude d'obtenir gratuitement des binaires Oracle Java SE, vous pouvez simplement continuer à le faire avec les versions OpenJDK d'Oracle disponibles sur jdk.java.net . Si vous avez l'habitude d'obtenir des binaires Oracle Java SE dans le cadre d'un produit ou service commercial d'Oracle, vous pouvez continuer à obtenir les versions d'Oracle JDK via My Oracle Support (MOS) et d'autres emplacements.
Fonctionnellement identiques et interchangeables ...
Le JDK sous licence BCL d'Oracle contenait historiquement des «fonctionnalités commerciales» qui n'étaient pas disponibles dans les versions OpenJDK. Comme promis , cependant, au cours de la dernière année, Oracle a apporté ces fonctionnalités à la communauté OpenJDK, notamment:
Par conséquent, à partir de Java 11, les versions 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 esthétiques, d'autres simplement parce que plus de temps pour discuter avec les contributeurs d'OpenJDK est justifié.
- Oracle JDK 11 émet un avertissement lors de l'utilisation de l'option -XX: + UnlockCommercialFeatures, tandis que dans OpenJDK, cette option génère une erreur. Cette option n'a jamais fait partie d'OpenJDK et il ne serait pas logique de l'ajouter maintenant, car il n'y a pas de fonctionnalités commerciales dans OpenJDK. Cette différence persiste afin de faciliter la migration des utilisateurs d'Oracle JDK 10 et versions antérieures vers Oracle JDK 11 et versions ultérieures.
- Oracle JDK 11 peut être configuré pour fournir des données de journal d'utilisation à l' outil « Advanced Management Console », qui est un produit Oracle commercial distinct. Nous travaillerons avec d'autres contributeurs OpenJDK pour discuter de la façon dont ces données d'utilisation pourraient être utiles dans OpenJDK dans les futures versions, le cas échéant. Cette différence demeure principalement pour fournir une expérience cohérente aux clients Oracle jusqu'à ce que de telles décisions soient prises.
- La commande javac --release se comporte différemment pour les cibles Java 9 et Java 10, car dans ces versions, le JDK Oracle contenait des modules supplémentaires qui ne faisaient pas partie des versions OpenJDK correspondantes:
- 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 différence demeure afin de fournir une expérience cohérente pour des types spécifiques d'utilisation héritée. Ces modules sont désormais disponibles séparément dans le cadre d' OpenJFX , sont maintenant à la fois dans OpenJDK et Oracle JDK car ce sont des fonctionnalités commerciales qu'Oracle a contribué à OpenJDK (par exemple, Flight Recorder), ou ont été supprimés d'Oracle JDK 11 (par exemple, JNLP) .
- La sortie des commandes java --version et java -fullversion distinguera les builds JDK Oracle des builds OpenJDK, afin que les équipes de support puissent diagnostiquer tout problème qui pourrait exister. Plus précisément, l'exécution de java --version avec une génération Oracle JDK 11 se traduit par:
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 pour une version 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é que les fournisseurs de chiffrement tiers soient signés par un certificat connu. Le cadre de cryptographie d'OpenJDK a une interface cryptographique ouverte, ce qui signifie qu'il ne restreint pas les fournisseurs qui peuvent être utilisés. Oracle JDK 11 continuera d' exiger une signature valide et les versions Oracle OpenJDK continueront à autoriser l'utilisation d'une signature valide ou d'un fournisseur de cryptographie tiers non signé.
- Oracle JDK 11 continuera à inclure des installateurs, une image de marque et un package JRE pour une expérience cohérente avec les anciennes utilisations de bureau. Les versions Oracle OpenJDK sont actuellement disponibles sous forme de fichiers zip et tar.gz, tandis que d'autres formats de distribution sont à l'étude.