Différence entre OpenJDK et Adoptium / AdoptOpenJDK

183

En raison de la récente mise à jour de la politique de la feuille de route du support Oracle Java SE (fin des mises à jour gratuites d'Oracle après mars 2019 en particulier), j'ai recherché des alternatives à Oracle Java. J'ai trouvé qu'OpenJDK est une alternative open source. Et j'ai trouvé AdoptOpenJDK , maintenant connu sous le nom d'Adoptium, qui est un binaire prédéfini . Cela laisse perplexe.

Quelle est la différence entre OpenJDK et Adoptium / AdoptOpenJDK?

Mikhail Kholodkov
la source
Mise à jour: AdoptOpenJDK a changé son nom en Adoptium , dans le cadre de son passage à la Fondation Eclipse .
Basil Bourque le

Réponses:

272

En bref:

  • OpenJDK a plusieurs significations et peut faire référence à:
    • implémentation gratuite et open source de la plateforme Java, Standard Edition (Java SE)
    • référentiel open source - le code source Java aka projet OpenJDK
    • binaires OpenJDK prédéfinis maintenus par Oracle
    • binaires OpenJDK prédéfinis maintenus par la communauté OpenJDK
  • AdoptOpenJDK - binaires OpenJDK prédéfinis maintenus par la communauté ( licence open source )

Explication:

OpenJDK prédéfini (ou distribution) - binaires, construits à partir de http://hg.openjdk.java.net/ , fournis en tant qu'archives ou installateurs, proposés pour diverses plates-formes, avec un éventuel contrat de support.

OpenJDK, le référentiel source (également appelé projet OpenJDK ) - est un référentiel open source basé sur Mercurial , hébergé sur http://hg.openjdk.java.net . Le code source Java. La grande majorité des fonctionnalités Java (de la VM et des bibliothèques principales au compilateur) sont basées uniquement sur ce référentiel source. Oracle en a une autre.

OpenJDK, la distribution (voir la liste des fournisseurs ci-dessous) - est gratuite comme dans la bière et une sorte de libre comme dans la parole , mais, vous ne pouvez pas appeler Oracle si vous avez des problèmes avec elle. Il n'y a pas de contrat de support. En outre, Oracle ne publiera des mises à jour de toute version d'OpenJDK (la distribution) que si cette version est la version Java la plus récente, y compris les versions LTS (support à long terme). Le jour où Oracle publie OpenJDK (la distribution) version 12.0, même s'il y a un problème de sécurité avec OpenJDK (la distribution) version 11.0, Oracle ne publiera pas de mise à jour pour 11.0. Maintenu uniquement par Oracle.

Certains projets OpenJDK - tels que OpenJDK 8 et OpenJDK 11 - sont maintenus par la communauté OpenJDK et fournissent des versions pour certaines versions d'OpenJDK pour 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 est très similaire à la distribution OpenJDK d'Oracle (en ce sens qu'elle est gratuite et qu'il s'agit d'une construction produite en compilant les sources à partir du référentiel source OpenJDK). AdoptOpenJDK en tant qu'entité ne rétroportera pas les correctifs, c'est-à-dire qu'il n'y aura pas de «fork / version» d'AdoptOpenJDK qui soit matériellement différent de l'amont (sauf pour certains correctifs de script de construction pour des choses comme le support de Win32). Cela signifie que si des membres de la communauté (Oracle ou autres, mais pas AdoptOpenJDK en tant qu'entité) rétroportent les correctifs de sécurité vers les mises à jour des versions d'OpenJDK LTS, alors AdoptOpenJDK fournira des versions pour ceux-ci. Maintenu par la communauté OpenJDK.

OracleJDK - est encore une autre distribution. À partir de JDK12, il n'y aura pas de version gratuite d'OracleJDK. L'offre de distribution JDK d'Oracle est destinée au support commercial. Vous payez pour cela, mais vous pouvez ensuite compter sur Oracle pour le support. Contrairement à l'offre OpenJDK d'Oracle, OracleJDK est livré avec une prise en charge plus longue des versions LTS. En tant que développeur, vous pouvez obtenir une licence gratuite pour une utilisation personnelle / de développement uniquement de ce JDK particulier, mais c'est surtout un hareng rouge, car «juste le binaire» est fondamentalement le même que le binaire OpenJDK. Je suppose que cela signifie que vous pouvez télécharger des versions corrigées de sécurité des JDK LTS à partir des sites Web d'Oracle tant que vous promettez de ne pas les utiliser à des fins commerciales.

Remarque . Il peut être préférable d'appeler les versions d'OpenJDK d'Oracle les «versions d'Oracle OpenJDK».

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

Idéalement, nous ferions simplement référence à toutes les versions d'Oracle JDK sous le nom de "Oracle JDK", soit sous la GPL soit sous la licence commerciale, selon votre situation. Cependant, pour des raisons historiques, bien que les petites différences restantes existent, nous les appellerons séparément les versions d'OpenJDK d'Oracle et le JDK d'Oracle.


Fournisseurs OpenJDK et comparaison

-------------------------------------------------- --------------------------------------
| Fournisseur | Constructions gratuites | Binaire gratuit | Extended | Commercial | Permissive |
| | de la source | Distributions | Mises à jour | Support | Licence |
| ------------------------------------------------- ------------------------------------- |
| AdoptOpenJDK | 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 |
| Oracle JDK | 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 |
-------------------------------------------------- --------------------------------------

Builds gratuits à partir de la source - le code source de la distribution est disponible publiquement et on peut assembler sa propre version

Distributions binaires gratuites - les binaires de distribution sont accessibles au public pour téléchargement et utilisation

Mises à jour étendues - aka LTS (support à long terme) - Mises à jour publiques au-delà du cycle de vie de publication de 6 mois

Support commercial - certains fournisseurs proposent des mises à jour étendues et un support client aux clients payants, par exemple Oracle JDK ( détails du support )

Licence permissive - la licence de distribution n'est pas protectrice, par exemple Apache 2.0


Quelle distribution Java dois-je utiliser?

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

Ce qui se passe à partir du JDK 11 est le passage de l'état d'esprit de fournisseur unique (Oracle) à l'état d'esprit où vous sélectionnez un fournisseur qui vous donne une distribution pour le produit, dans les conditions que vous aimez: plates-formes pour lesquelles ils construisent, fréquence et rapidité 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 version d'OpenJDK est généralement réalisée à partir du même référentiel source d'origine en amont (OpenJDK «le projet»). Cependant, chaque version est assez unique - gratuite ou commerciale, de marque ou sans marque, pure ou groupée (par exemple, BellSoft Liberica JDK propose JavaFX groupé, qui a été supprimé des versions Oracle à partir du JDK 11).

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


Information additionnelle

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

Java Is Still Free par la communauté Java Champions (publié le 17 septembre 2018)

Java is Still Free 2.0.0 par la communauté Java Champions (publié le 3 mars 2019)

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

Mikhail Kholodkov
la source
8
Vous pouvez ajouter une mention indiquant que d'autres fournisseurs fournissent des implémentations Java basées sur OpenJDK telles que les produits Zulu et Zing d' Azul Systems . Un autre est le projet Eclipse OpenJ9 .
Basil Bourque
2
@DmitriyPopov C'est permissif - github.com/AdoptOpenJDK/openjdk-build/blob/master/LICENSE
Mikhail Kholodkov
1
@MikhailKholodkov Incorrect à propos des licences Apache. Votre lien vers AdoptOpenJDK à l'aide de la licence Apache 2.0 s'applique uniquement aux scripts de construction qu'ils ont créés pour aider à produire leurs binaires. Les binaires sont construits à partir du code source obtenu à partir du projet OpenJDK en utilisant la GPL avec une licence d'exception de liaison.
Basil Bourque
2
@GarrettWilson AdoptOpenJDK ne fait que 2 choses: (a) Construire des binaires et des installateurs en utilisant le code source fourni par OpenJDK, et (b) Exécuter des tests sur ces binaires. AdoptOpenJDK ne gère pas de référentiel de code source pour l'implémentation de la plateforme Java. Donc: OpenJDK n'est que du code source, AdoptOpenJDK n'est que des binaires + installateurs. Les auteurs d'AdoptOpenJDK codent uniquement pour leurs outils de construction et leurs suites de tests. Outre AdoptOpenJDK, plusieurs autres sociétés fournissent également des versions basées sur le code source fourni par le projet OpenJDK: Azul Systems, Oracle, BellSoft, Amazon AWS, RedHat / IBM, SAP, etc.
Basil Bourque
1
@GarretWilson Je devrais ajouter qu'AdoptOpenJDK fait une troisième chose: (c) Crée et maintient des outils pour soutenir la construction et les tests mentionnés dans mon commentaire précédent.
Basil Bourque le
64

Mise à jour: AdoptOpenJDK a changé son nom en Adoptium , dans le cadre de son passage à la Fondation Eclipse .


OpenJDK ➙ code source
Adoptium / AdoptOpenJDK ➙ builds

Différence entre OpenJDK et AdoptOpenJDK

Le premier fournit le code source , l'autre fournit des versions de ce code source.

Plusieurs fournisseurs de Java et OpenJDK

L'adoptium de la Fondation Eclipse , anciennement connue sous le nom d' AdoptOpenJDK , n'est que l'un des nombreux fournisseurs distribuant des implémentations de la plate-forme Java. Ceux-ci inclus:

  • Fondation Eclipse (Adoptium / AdoptOpenJDK)
  • Systèmes Azul
  • Oracle
  • Red Hat / IBM
  • BellSoft
  • SÈVE
  • Amazon AWS
  • … et plus

Consultez mon organigramme pour vous guider dans le choix d'un fournisseur pour une implémentation de la plate-forme Java. Cliquez / appuyez pour zoomer.

Organigramme vous guidant dans le choix d'un fournisseur pour une implémentation Java 11

Une autre ressource: cette matrice de comparaison d'Azul Systems est utile et me semble juste et juste.

Voici une liste de considérations et de motivations à prendre en compte lors du choix d'un fournisseur et de sa mise en œuvre.

Motivations à choisir un fournisseur pour Java

Certains fournisseurs vous proposent un choix de technologies JIT .

Diagramme montrant l'historique de la fusion HotSpot et JRockit, et OpenJ9 tous deux disponibles dans AdoptOpenJDK

Pour en savoir plus sur cet écosystème Java, lisez Java est toujours gratuit

Basil Bourque
la source
1
Si «OpenJDK» fait référence à la source, alors quelle est la différence entre hub.docker.com/_/openjdk et hub.docker.com/_/adoptopenjdk ?
bcoughlan le
1
@bcoughlan Vous devriez demander à l'éditeur de ces deux produits: Docker, Inc. Vos pages Web liées prétendent que le second est maintenu par le projet AdoptOpenJDK, tandis que le premier est maintenu par "la communauté Docker". Le premier est trompeur dans son utilisation du logo et de sa dénomination car il peut vous avoir donné l'impression que le projet OpenJDK l'a produit, ce qui n'est pas le cas. Le premier peut même violer l' article n ° 2 de l'avis de marque déposée par OpenJDK , mais je ne suis pas un avocat.
Basil Bourque le
1
@SanderVerhagen Pouvez-vous fournir un lien vers cette page de téléchargement sur le site OpenJDK? Je ne trouve pas une telle offre. Je trouve un lien vers les binaires OpenJDK JDK d'Oracle pour Windows, macOS et Linux sur un autre site Web: jdk.java.net . Ce site et ses téléchargements binaires sont fournis à titre gracieux à la communauté par Oracle, et non par le projet OpenJDK. Comme l'indique la page d'accueil : le kit de développement Java construit, à partir d'Oracle . Je montre ce produit comme la deuxième bulle dans le baril bleu de mon organigramme, dans le coin supérieur droit.
Basil Bourque le
1
@SanderVerhagen Votre lien mène à un site Web différent , comme je le soupçonnais, en dehors d'OpenJDK . Le site jdk.java.net/14 ne fait pas partie du site Web OpenJDK, ni ne fait partie du projet OpenJDK. En d'autres termes, openjdk.java.net n'est pas jdk.java.net . Encore une fois, regardez les deux bulles en haut du baril bleu dans mon organigramme. Le produit Oracle en haut à gauche est leur produit commercial. Le produit Oracle en haut à droite est leur version gratuite sous licence GPL - votre lien mène à ce produit particulier.
Basil Bourque le
1
@SanderVerhagen Je soupçonne que vous êtes confus par la dénomination du produit. Le mot «Java» est une marque déposée d'Oracle et ne peut être utilisé qu'avec leur autorisation. La plupart des vendeurs n'utilisent donc pas cette marque. Au lieu de cela, la plupart des fournisseurs utilisent le terme «OpenJDK» dans le cadre de leur dénomination, plutôt que «Java». Ces fournisseurs créent leurs versions à partir du code source obtenu à partir du projet OpenJDK . Le projet OpenJDK fournit uniquement du code source , pas des builds, pas des installateurs. Pour une version / installateur, vous devez soit créer le vôtre, soit en obtenir un auprès d'un fournisseur. Je suggère de lire Java est toujours gratuit .
Basil Bourque le