web-dev-qa-db-fra.com

Différence entre OpenJDK et AdoptOpenJDK

En raison de la récente feuille de route de support Oracle Java SE (fin des mises à jour gratuites de la version $ Free d'Oracle après mars 2019), j'ai cherché des alternatives à Oracle Java. J'ai trouvé qu'OpenJDK est une alternative open-source. Et j'ai trouvé AdoptOpenJDK, qui est un binaire pré-construit . C'est des énigmes.

Quelle est la différence entre OpenJDK et AdoptOpenJDK?

83
Mikhail Kholodkov

En bref:

  • OpenJDK a plusieurs significations et peut être appelé:
    • implémentation libre et open source de la Java Platform, Standard Edition (Java SE)
    • référentiel open source - le code source Java, également appelé projet OpenJDK
    • binaires OpenJDK prédéfinis maintenus par Oracle
    • binaires OpenJDK prédéfinis maintenus par la communauté OpenJDK
  • AdoptOpenJDK - Binaires pré-construits OpenJDK maintenus par la communauté ( sous licence open source )

Explication:

OpenJDK pré-construit (ou distribution) - binaires, construits à partir de http://hg.openjdk.Java.net/ , fournis en tant qu’archive ou installateur, proposé pour diverses plates-formes, avec un éventuel contrat de support.

OpenJDK, le référentiel source (également appelé projet OpenJDK ) - est un Mercurial - référentiel open source basé sur, hébergé à http://hg.openjdk.Java.net . Le code source Java. La grande majorité des fonctionnalités de Java (du VM aux bibliothèques principales en passant par le compilateur) repose uniquement sur ce référentiel source. Oracle ont une autre fourchette de cela.

OpenJDK, la distribution (voir la liste des fournisseurs ci-dessous) - is gratuit comme dans beer et genre de libre comme dans la parole , mais vous n’appelez pas Oracle si vous rencontrez des problèmes. Il n'y a pas de contrat de support. De plus, Oracle ne publiera des mises à jour de toute version d'OpenJDK (la distribution) que si celle-ci est la version la plus récente de Java, y compris les versions de LTS (support à long terme). Le jour où Oracle publie la version 12.0 d'OpenJDK (la distribution), même en cas de problème de sécurité avec la version 11.0 d'OpenJDK (la distribution), Oracle ne publiera pas de mise à jour pour la version 11.0. Maintenu uniquement par Oracle.

Certains projets OpenJDK, tels que OpenJDK 8 et OpenJDK 11 - sont gérés par la communauté OpenJDK et fournissent des versions pour certaines versions d'OpenJDK sur certaines plates-formes. Les membres de la communauté ont pris la responsabilité de publier des correctifs pour les vulnérabilités de sécurité dans ces versions d'OpenJDK.

AdoptOpenJDK, la distribution - très similaire à la distribution OpenJDK d'Oracle (en ce sens qu'elle est libre et qu'il s'agit d'une version générée en compilant les sources à partir de la source OpenJDK dépôt). AdoptOpenJDK en tant qu’entité ne sera pas un portage des correctifs, c’est-à-dire qu’il n’y aura pas de 'version/version' AdoptOpenJDK sensiblement différente de celle en amont (à l’exception de certains correctifs de script de compilation pour des éléments tels que le support Win32). En d'autres termes, si les membres de la communauté (Oracle ou autres, mais pas AdoptOpenJDK en tant qu'entité) sécurisent les correctifs de sécurité des mises à jour des versions OpenJDK LTS, AdoptOpenJDK leur fournira des versions. Maintenu par la communauté OpenJDK.

Il y a aussi OracleJDK - une autre distribution, à partir de JDK12, il n'y aura pas de version gratuite de celui-ci. L'offre de distribution JDK d'Oracle destinée au support commercial. Vous payez pour cela, mais vous pouvez alors compter sur le support d’Oracle. Contrairement à l'offre OpenJDK d'Oracle, l'offre OracleJDK offre un support plus long pour les versions LTS. En tant que développeur, vous pouvez obtenir une licence gratuite à des fins personnelles/de développement pour ce JDK en particulier, mais il s’agit surtout d’un redoublement, dans la mesure où "juste le binaire" est fondamentalement identique au binaire OpenJDK. Cela signifie que vous pouvez télécharger des versions de JDK LTS avec correctif de sécurité à partir des sites Web d’Oracle, à condition de ne pas les utiliser à des fins commerciales.

Remarque . Il est peut-être préférable d'appeler les versions OpenJDK d'Oracle, les "versions Oracle OpenJDK".

Donald Smith, Java chef de produit chez Oracle écrit :

Idéalement, nous nous référons simplement à toutes les versions de JDK Oracle en tant que "JDK Oracle", que ce soit sous licence GPL ou sous licence commerciale, selon votre situation. Cependant, pour des raisons historiques, malgré les légères différences qui subsistent, nous les désignerons séparément comme étant les versions OpenJDK d’Oracle et le JDK Oracle.


OpenJDK Fournisseurs et Comparaison

 --------------------------------------------- ------------------------------------------- 
 | Fournisseur | Constructions gratuites | Binaire gratuit | Étendu | Commercial | Permissive | 
 | | de la source | Distributions | Mises à jour | Soutien | Licence | 
 | ---------------------------------------------- ----------------------------------------- | AdopOpenJDK | Oui | Oui | Oui | Non | Oui | 
 | Amazon - Corretto | Oui | Oui | Oui | Non | Oui | 
 | Azul Zulu | Non | Oui | Oui | Oui | Oui | 
 | BellSoft Liberica | Non | Oui | Oui | Oui | Oui | 
 | IBM | Non | Non | Oui | Oui | Oui | 
 | jClarity | Non | Non | Oui | Oui | Oui | 
 | OpenJDK | Oui | Oui | Oui | Non | Oui | 
 | JDK Oracle | Non | Oui | Non ** | Oui | Non | 
 | Oracle OpenJDK | Oui | Oui | Non | Non | Oui | 
 | ojdkbuild | Oui | Oui | Non | Non | Oui | 
 | RedHat | Oui | Oui | Oui | Oui | Oui | 
 | SapMachine | Oui | Oui | Oui | Oui | Oui | 
 ------------------------------------------- --------------------------------------------- 

Versions libres à partir de la source - le code source de la distribution est disponible publiquement et on peut assembler sa propre construction

Distributions de binaires libres - les binaires de distribution sont accessibles au public pour le téléchargement et l'utilisation.

Mises à jour étendues - aussi appelé LTS (support à long terme) - Mises à jour publiques au-delà du cycle de vie de la version de 6 mois

Assistance commerciale - certains fournisseurs proposent des mises à jour étendues et une assistance clientèle aux clients payants, par exemple. JDK Oracle (--- (détails du support )

Licence permissive - la licence de distribution est non protectrice, par exemple. Apache 2.0


Quelle Java distribution dois-je utiliser?

À l'époque Sun/Oracle, c'était généralement Sun/Oracle qui produisait les distributions propriétaires JDK en aval basées sur les sources OpenJDK. Récemment, Oracle avait décidé de créer ses propres versions propriétaires uniquement avec le support commercial joint. Ils publient gracieusement les versions OpenJDK sur leur site https://jdk.Java.net/ .

A partir de JDK 11, ce qui se passe à partir de la version 11, c’est le passage d’un état d’esprit mono-fournisseur (Oracle) à l’état où vous choisissez un fournisseur qui vous donne une distribution pour le produit, dans les conditions qui vous conviennent: plates-formes pour lesquelles ils sont construits, fréquence/promptitude des versions. , comment le support est structuré, etc. Si vous ne faites confiance à aucun des fournisseurs existants, vous pouvez même créer OpenJDK vous-même.

Chaque construction d'OpenJDK est généralement réalisée à partir du même référentiel source en amont d'origine (OpenJDK, "le projet"). Cependant, chaque version est assez unique - $ gratuit ou commercial, de marque ou sans marque, pur ou fourni (par exemple, BellSoft Liberica JDK offre une offre groupée JavaFX, qui a été supprimée des versions Oracle à partir de JDK 11).

Si aucun environnement (par exemple, Linux) et/ou exigence de licence ne définit une distribution spécifique et si vous voulez la version JDK standard la plus standard , la meilleure option est probablement d'utiliser OpenJDK par Oracle ou AdopOpenJDK.


Informations complémentaires

Il est temps de regarder au-delà du JDK d'Oracle par Stephen Colebourne

Java is Still Free par Java Communauté de champions (publié le 17 septembre 2018)

Java is Still Free 2.0. par Java Communauté de champions (publié le 3 mars 2019)

Aleksey Shipilev à propos des mises à jour du JDK interview par Opsian (publiée le 27 juin 2019)

132
Mikhail Kholodkov