Unterschied zwischen OpenJDK und Adoptium / AdoptOpenJDK

182

Aufgrund der jüngsten Aktualisierung der Oracle Java SE Support Roadmap- Richtlinien (Ende der kostenlosen Release-Updates von Oracle insbesondere nach März 2019) habe ich nach Alternativen zu Oracle Java gesucht. Ich habe festgestellt, dass OpenJDK eine Open-Source-Alternative ist. Und ich habe AdoptOpenJDK gefunden , das jetzt als Adoptium bekannt ist und eine vorgefertigte Binärdatei ist . Es rätselt.

Was ist der Unterschied zwischen OpenJDK und Adoptium / AdoptOpenJDK?

Mikhail Kholodkov
quelle
Update: AdoptOpenJDK hat seinen Namen geändert Adoptium , als Teil seines Umzugs in der Eclipse Foundation .
Basil Bourque

Antworten:

270

Zusamenfassend:

  • OpenJDK hat mehrere Bedeutungen und kann sich beziehen auf:
    • kostenlose und Open Source Implementierung der Java Platform, Standard Edition (Java SE)
    • Open Source Repository - der Java-Quellcode, auch bekannt als OpenJDK-Projekt
    • vorgefertigte OpenJDK-Binärdateien, die von Oracle verwaltet werden
    • vorgefertigte OpenJDK-Binärdateien, die von der OpenJDK-Community verwaltet werden
  • AdoptOpenJDK - vorgefertigte OpenJDK-Binärdateien, die von der Community verwaltet werden ( Open Source-Lizenz )

Erläuterung:

Vorgefertigtes OpenJDK (oder Distribution) - Binärdateien, erstellt aus http://hg.openjdk.java.net/ , bereitgestellt als Archiv oder Installationsprogramm, angeboten für verschiedene Plattformen, mit einem möglichen Supportvertrag.

OpenJDK, das Quell-Repository (auch OpenJDK-Projekt genannt ), ist ein Mercurial- basiertes Open-Source-Repository, das unter http://hg.openjdk.java.net gehostet wird . Der Java-Quellcode. Die überwiegende Mehrheit der Java-Funktionen (von der VM und den Kernbibliotheken bis zum Compiler) basiert ausschließlich auf diesem Quellrepository. Oracle hat eine alternative Gabelung davon.

OpenJDK, die Distribution (siehe Liste der Anbieter unten) - ist kostenlos wie in Bier und irgendwie kostenlos wie in Sprache , aber Sie können Oracle nicht anrufen, wenn Sie Probleme damit haben. Es gibt keinen Supportvertrag. Darüber hinaus wird Oracle nur dann Updates für eine OpenJDK-Version (die Distributionsversion) veröffentlichen, wenn es sich bei dieser Version um die neueste Java-Version handelt, einschließlich LTS-Versionen (Long Term Support). An dem Tag, an dem Oracle OpenJDK (die Distribution) Version 12.0 veröffentlicht, wird Oracle kein Update für 11.0 veröffentlichen, auch wenn es ein Sicherheitsproblem mit OpenJDK (der Distribution) Version 11.0 gibt. Wird ausschließlich von Oracle verwaltet.

Einige OpenJDK-Projekte - wie OpenJDK 8 und OpenJDK 11 - werden von der OpenJDK-Community verwaltet und bieten Releases für einige OpenJDK-Versionen für einige Plattformen. Die Community-Mitglieder haben die Verantwortung für die Veröffentlichung von Fixes für Sicherheitslücken in diesen OpenJDK-Versionen übernommen.

AdoptOpenJDK, die Distribution ist der OpenJDK-Distribution von Oracle sehr ähnlich (da sie kostenlos ist und durch Erstellen der Quellen aus dem OpenJDK-Quellrepository erstellt wird). AdoptOpenJDK als Entität portiert keine Patches zurück, dh es gibt keine AdoptOpenJDK-Gabel / -Version, die sich wesentlich vom Upstream unterscheidet (mit Ausnahme einiger Build-Skript-Patches für Dinge wie Win32-Unterstützung). Das heißt, wenn Mitglieder der Community (Oracle oder andere, aber nicht AdoptOpenJDK als Entität) Sicherheitsupdates für Aktualisierungen von OpenJDK LTS-Versionen zurückportieren, stellt AdoptOpenJDK Builds für diese bereit. Wird von der OpenJDK-Community gepflegt.

OracleJDK - ist eine weitere Distribution. Ab JDK12 gibt es keine kostenlose Version von OracleJDK. Das JDK-Distributionsangebot von Oracle ist für den kommerziellen Support vorgesehen. Sie zahlen dafür, können sich dann aber auf Oracle verlassen, um Unterstützung zu erhalten. Im Gegensatz zum OpenJDK-Angebot von Oracle bietet OracleJDK eine längere Unterstützung für LTS-Versionen. Als Entwickler können Sie nur für dieses bestimmte JDK eine kostenlose Lizenz für den persönlichen Gebrauch / die Entwicklung erhalten, aber das ist meistens ein roter Hering, da "nur die Binärdatei" im Grunde die gleiche ist wie die OpenJDK-Binärdatei. Ich denke, es bedeutet, dass Sie sicherheitspatched Versionen von LTS JDKs von Oracle-Websites herunterladen können, solange Sie versprechen, sie nicht kommerziell zu verwenden.

Hinweis . Es ist möglicherweise am besten, die OpenJDK-Builds von Oracle als "Oracle OpenJDK-Builds" zu bezeichnen.

Donald Smith, Java-Produktmanager bei Oracle, schreibt :

Im Idealfall bezeichnen wir alle Oracle JDK-Builds einfach als "Oracle JDK", je nach Ihrer Situation entweder unter der GPL oder unter der kommerziellen Lizenz. Aus historischen Gründen werden die kleinen verbleibenden Unterschiede zwar separat als OpenJDK-Builds von Oracle und als Oracle JDK bezeichnet.


OpenJDK-Anbieter und Vergleich

-------------------------------------------------- --------------------------------------
| Anbieter | Kostenlose Builds | Free Binary | Erweitert | Kommerziell | Zulässig |
| | aus Quelle | Verteilungen | Updates | Unterstützung | Lizenz |
| --------------------------------------------- ------------------------------------- |
| AdoptOpenJDK | Ja | Ja | Ja | Nein | Ja |
| Amazon - Corretto | Ja | Ja | Ja | Nein | Ja |
| Azul Zulu | Nein | Ja | Ja | Ja | Ja |
| BellSoft Liberica | Nein | Ja | Ja | Ja | Ja |
| IBM | Nein | Nein | Ja | Ja | Ja |
| jClarity | Nein | Nein | Ja | Ja | Ja |
| OpenJDK | Ja | Ja | Ja | Nein | Ja |
| Oracle JDK | Nein | Ja | Nein ** | Ja | Nein |
| Oracle OpenJDK | Ja | Ja | Nein | Nein | Ja |
| ojdkbuild | Ja | Ja | Nein | Nein | Ja |
| RedHat | Ja | Ja | Ja | Ja | Ja |
| SapMachine | Ja | Ja | Ja | Ja | Ja |
-------------------------------------------------- --------------------------------------

Kostenlose Builds aus dem Quellcode - Der Distributionsquellcode ist öffentlich verfügbar und man kann seinen eigenen Build zusammenstellen

Kostenlose Binärdistributionen - Die Distributionsbinärdateien können öffentlich heruntergeladen und verwendet werden

Erweiterte Updates - auch bekannt als LTS (Langzeit-Support) - Öffentliche Updates über den 6-monatigen Release-Lebenszyklus hinaus

Kommerzieller Support - Einige Anbieter bieten zahlenden Kunden erweiterte Updates und Kundensupport an, z. B. Oracle JDK ( Supportdetails ).

Zulässige Lizenz - Die Vertriebslizenz ist nicht schützend, z. B. Apache 2.0


Welche Java-Distribution soll ich verwenden?

In den Tagen von Sun / Oracle war es normalerweise Sun / Oracle, das die proprietären Downstream-JDK-Distributionen auf Basis von OpenJDK-Quellen produzierte. Vor kurzem hatte Oracle beschlossen, eigene proprietäre Builds nur mit der beigefügten kommerziellen Unterstützung zu erstellen. Sie veröffentlichen die OpenJDK-Builds freundlicherweise auch auf ihrer https://jdk.java.net/-Site .

Was mit JDK 11 beginnt, ist die Umstellung von der Oracle-Denkweise eines einzelnen Anbieters auf die Denkweise, bei der Sie einen Anbieter auswählen, der Ihnen eine Distribution für das Produkt unter den von Ihnen gewünschten Bedingungen bietet: Plattformen, für die sie erstellt wurden, Häufigkeit und Schnelligkeit von Releases , wie der Support strukturiert ist usw. Wenn Sie keinem der vorhandenen Anbieter vertrauen, können Sie OpenJDK sogar selbst erstellen.

Jeder Build von OpenJDK wird normalerweise aus demselben ursprünglichen Upstream-Quell-Repository (OpenJDK „das Projekt“) erstellt. Jeder Build ist jedoch ein Unikat - $ kostenlos oder kommerziell, ohne Markenzeichen oder ohne Markenzeichen, rein oder gebündelt (z. B. bietet BellSoft Liberica JDK gebündeltes JavaFX an, das ab JDK 11 aus Oracle-Builds entfernt wurde).

Wenn keine Umgebung (z. B. Linux) und / oder Lizenzanforderungen eine bestimmte Distribution definieren und Sie den Standard- JDK-Build wünschen , ist es wahrscheinlich die beste Option, OpenJDK von Oracle oder AdoptOpenJDK zu verwenden.


Zusätzliche Information

Zeit, über das JDK von Oracle von Stephen Colebourne hinauszuschauen

Java ist immer noch kostenlos von der Java Champions Community (veröffentlicht am 17. September 2018)

Java ist immer noch kostenlos 2.0.0 von der Java Champions Community (veröffentlicht am 3. März 2019)

Aleksey Shipilev über das JDK-Update- Interview von Opsian (veröffentlicht am 27. Juni 2019)

Mikhail Kholodkov
quelle
8
Sie können auch erwähnen, dass andere Anbieter Java-Implementierungen auf OpenJDK-Basis anbieten, z. B. die Zulu- und Zing- Produkte von Azul Systems . Ein weiteres ist das Eclipse OpenJ9- Projekt.
Basil Bourque
2
@DmitriyPopov Es ist zulässig - github.com/AdoptOpenJDK/openjdk-build/blob/master/LICENSE
Mikhail Kholodkov
1
@MikhailKholodkov Falsche Informationen zur Apache-Lizenzierung. Ihr Link zu AdoptOpenJDK mit Apache License 2.0 gilt nur für die Build-Skripte, die sie zur Erstellung ihrer Binärdateien erstellt haben. Die Binärdateien werden aus dem Quellcode erstellt, der aus dem OpenJDK-Projekt unter Verwendung der GPL mit Verknüpfungsausnahmelizenz abgerufen wurde.
Basil Bourque
2
@GarrettWilson AdoptOpenJDK führt nur zwei Dinge aus: (a) Erstellen von Binärdateien und Installationsprogrammen unter Verwendung des von OpenJDK bereitgestellten Quellcodes und (b) Ausführen von Tests für diese Binärdateien. AdoptOpenJDK ist nicht ein Repository des Quellcodes halten die Java - Plattform für die Implementierung. Also: OpenJDK ist nur Quellcode, AdoptOpenJDK ist nur Binärdateien + Installationsprogramme. AdoptOpenJDK-Autoren codieren nur für ihre Bauwerkzeuge und Testsuiten. Neben AdoptOpenJDK bieten mehrere andere Unternehmen Builds an, die auf dem vom OpenJDK-Projekt bereitgestellten Quellcode basieren: Azul Systems, Oracle, BellSoft, Amazon AWS, RedHat / IBM, SAP und mehr.
Basil Bourque
1
@GarretWilson Ich sollte hinzufügen, dass AdoptOpenJDK eine dritte Sache tut: (c) Erstellt und wartet Werkzeuge , um das in meinem vorherigen Kommentar erwähnte Bauen und Testen zu unterstützen.
Basil Bourque
62

Update: AdoptOpenJDK hat seinen Namen geändert Adoptium , als Teil seines Umzugs in der Eclipse Foundation .


OpenJDK (Quellcode
Adoptium / AdoptOpenJDK) wird erstellt

Unterschied zwischen OpenJDK und AdoptOpenJDK

Der erste liefert den Quellcode , der andere liefert Builds dieses Quellcodes.

Mehrere Anbieter von Java & OpenJDK

Adoptium der Eclipse Foundation , früher bekannt als AdoptOpenJDK , ist nur einer von mehreren Anbietern, die Implementierungen der Java-Plattform vertreiben. Diese beinhalten:

  • Eclipse Foundation (Adoptium / AdoptOpenJDK)
  • Azul Systems
  • Orakel
  • Red Hat / IBM
  • BellSoft
  • SAFT
  • Amazon AWS
  • … und mehr

In diesem Flussdiagramm von mir können Sie einen Anbieter für eine Implementierung der Java-Plattform auswählen. Klicken / tippen Sie zum Zoomen.

Flussdiagramm, das Sie bei der Auswahl eines Anbieters für eine Java 11-Implementierung unterstützt

Eine weitere Ressource: Diese Vergleichsmatrix von Azul Systems ist nützlich und erscheint mir wahr und fair.

Hier finden Sie eine Liste von Überlegungen und Motivationen, die bei der Auswahl eines Anbieters und der Implementierung zu berücksichtigen sind.

Motivationen bei der Auswahl eines Anbieters für Java

Einige Anbieter bieten Ihnen eine Auswahl an JIT- Technologien.

Diagramm mit dem Verlauf der Zusammenführung von HotSpot & JRockit und OpenJ9, beide in AdoptOpenJDK verfügbar

Um mehr über dieses Java-Ökosystem zu erfahren, lesen Sie Java Is Still Free

Basil Bourque
quelle
1
Wenn sich 'OpenJDK' auf die Quelle bezieht, was ist dann der Unterschied zwischen hub.docker.com/_/openjdk und hub.docker.com/_/adoptopenjdk ?
Bcoughlan
1
@bcoughlan Sie müssten den Herausgeber dieser beiden Produkte fragen: Docker, Inc. Ihre verlinkten Webseiten behaupten, dass die zweite vom AdoptOpenJDK-Projekt verwaltet wird, während die erste von der "Docker Community" verwaltet wird. Der erste ist irreführend in der Verwendung des Logos und der Benennung, da er möglicherweise den Eindruck erweckt hat, dass das OpenJDK-Projekt ihn erstellt hat, was nicht der Fall ist. Der erste kann sogar gegen Punkt 2 der Markenbekanntmachung von OpenJDK verstoßen , aber ich bin kein Anwalt.
Basil Bourque
1
@SanderVerhagen Können Sie einen Link zu dieser Download-Seite auf der OpenJDK-Site bereitstellen? Ich finde kein solches Angebot. Ich finde einen Link zu den OpenJDK JDK-Binärdateien von Oracle für Windows, macOS und Linux auf einer anderen Website: jdk.java.net . Diese Site und ihre binären Downloads werden der Community von Oracle zur Verfügung gestellt, nicht vom OpenJDK-Projekt. Wie auf der Homepage steht: Java Development Kit wird von Oracle erstellt . Ich zeige dieses Produkt als zweite Blase im blauen Lauf meines Flussdiagramms in der oberen rechten Ecke.
Basil Bourque
1
@SanderVerhagen Ihr Link führt , wie ich vermutet habe, zu einer anderen Website außerhalb von OpenJDK . Die Site jdk.java.net/14 ist weder Teil der OpenJDK-Website noch Teil des OpenJDK-Projekts. Mit anderen Worten, openjdk.java.net ist nicht jdk.java.net . Schauen Sie sich noch einmal die beiden Blasen oben auf dem blauen Fass in meinem Flussdiagramm an. Das Oracle-Produkt oben links ist das kommerzielle Produkt. Das Oracle-Produkt oben rechts ist ein kostenloser GPL-lizenzierter Build - Ihr Link führt zu diesem bestimmten Produkt.
Basil Bourque
1
@SanderVerhagen Ich vermute, Sie werden durch die Produktbezeichnung verwirrt. Das Wort "Java" ist eine Marke von Oracle und kann nur mit deren Erlaubnis verwendet werden. Die meisten Anbieter verwenden diese Marke daher nicht. Stattdessen verwenden die meisten Anbieter den Begriff "OpenJDK" als Teil ihrer Benennung und nicht "Java". Diese Anbieter erstellen ihre Builds aus dem Quellcode des OpenJDK- Projekts. Das OpenJDK- Projekt bietet nur Quellcode , keine Builds, keine Installationsprogramme. Für einen Build / Installer müssen Sie entweder einen eigenen erstellen oder einen von einem Anbieter erhalten. Ich schlage vor, Java Is Still Free zu lesen .
Basil Bourque