Laut dem Oracle-Blog wird Oracle JDK für Java 11 und höher veröffentlicht
Ab Java 11 wird Oracle JDK-Versionen unter der Open Source GNU General Public License v2, mit der Classpath Exception (GPLv2 + CPE) und unter einer kommerziellen Lizenz für diejenigen bereitstellen, die das Oracle JDK als Teil eines Oracle-Produkts oder -Dienstes verwenden. oder die keine Open-Source-Software verwenden möchten. Diese Kombination aus der Verwendung einer Open Source-Lizenz und einer kommerziellen Lizenz ersetzt die historische „ BCL “ -Lizenz, die eine Kombination aus kostenlosen und kostenpflichtigen kommerziellen Bedingungen enthielt.
Für jede Lizenz werden unterschiedliche Builds bereitgestellt. Diese Builds sind jedoch funktional identisch, abgesehen von einigen kosmetischen und Verpackungsunterschieden, die im Folgenden ausführlich beschrieben werden.
Von der BCL zur GPL
Die Binärcodelizenz für Oracle Java SE-Technologien („BCL“) ist seit mehr als einem Jahrzehnt die Hauptlizenz für Oracle Java SE-Technologien. Die BCL erlaubt unter bestimmten Bedingungen die Nutzung ohne Lizenzgebühren. Um die Zukunft zu vereinfachen, hat Oracle ab Java 9 Open Source-lizenzierte OpenJDK-Builds bereitgestellt , die dasselbe Lizenzmodell wie die Linux-Plattform verwenden. Wenn Sie es gewohnt sind, Oracle Java SE-Binärdateien kostenlos zu erhalten, können Sie dies einfach mit den OpenJDK-Builds von Oracle fortsetzen, die unter jdk.java.net verfügbar sind . Wenn Sie es gewohnt sind, Oracle Java SE-Binärdateien als Teil eines kommerziellen Produkts oder Dienstes von Oracle abzurufen, können Sie Oracle JDK-Versionen weiterhin über My Oracle Support (MOS) und andere Standorte abrufen.
Funktionsgleich und austauschbar ...
Das BCL-lizenzierte JDK von Oracle enthielt in der Vergangenheit „kommerzielle Funktionen“, die in OpenJDK-Builds nicht verfügbar waren. Wie versprochen hat Oracle im vergangenen Jahr diese Funktionen zur OpenJDK-Community beigetragen, darunter:
Ab Java 11 sind daher Oracle JDK-Builds und OpenJDK-Builds im Wesentlichen identisch.
... doch mit einigen kosmetischen und Verpackungsunterschieden
Es gibt noch eine kleine Anzahl von Unterschieden, einige absichtliche und kosmetische, und einige einfach, weil mehr Zeit für Diskussionen mit OpenJDK-Mitarbeitern erforderlich ist.
- Oracle JDK 11 gibt eine Warnung aus, wenn die Option -XX: + UnlockCommercialFeatures verwendet wird, während diese Option in OpenJDK-Builds zu einem Fehler führt. Diese Option war nie Teil von OpenJDK und es wäre nicht sinnvoll, sie jetzt hinzuzufügen, da OpenJDK keine kommerziellen Funktionen enthält. Dieser Unterschied bleibt bestehen, um Benutzern von Oracle JDK 10 und früheren Versionen die Migration auf Oracle JDK 11 und höher zu erleichtern.
- Oracle JDK 11 kann so konfiguriert werden, dass Verwendungsprotokolldaten für das Tool „ Advanced Management Console “ bereitgestellt werden, bei dem es sich um ein separates kommerzielles Oracle-Produkt handelt. Wir werden mit anderen OpenJDK-Mitwirkenden zusammenarbeiten, um zu diskutieren, wie solche Nutzungsdaten in OpenJDK in zukünftigen Versionen nützlich sein können, wenn überhaupt. Dieser Unterschied besteht hauptsächlich darin, Oracle-Kunden eine konsistente Erfahrung zu bieten, bis solche Entscheidungen getroffen werden.
- Der Befehl javac --release verhält sich für die Java 9- und Java 10-Ziele unterschiedlich, da das Oracle JDK in diesen Versionen einige zusätzliche Module enthielt, die nicht Teil der entsprechenden OpenJDK-Versionen waren:
- 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
Dieser Unterschied bleibt bestehen, um eine konsistente Erfahrung für bestimmte Arten der Legacy-Nutzung bereitzustellen. Diese Module sind entweder jetzt separat als Teil von OpenJFX verfügbar , befinden sich jetzt sowohl in OpenJDK als auch im Oracle JDK, da es sich um kommerzielle Funktionen handelt, die Oracle zu OpenJDK beigetragen hat (z. B. Flight Recorder), oder wurden aus Oracle JDK 11 (z. B. JNLP) entfernt. .
- Die Ausgabe der Befehle java --version und java -fullversion unterscheidet Oracle JDK-Builds von OpenJDK-Builds, sodass Supportteams eventuell vorhandene Probleme diagnostizieren können. Insbesondere führt das Ausführen von Java --version mit einem Oracle JDK 11-Build zu folgenden Ergebnissen:
Java 11 2018-09-25
Java (TM) SE-Laufzeitumgebung 18.9 (Build 11 + 28)
Java HotSpot (TM) 64-Bit-Server-VM 18.9 (Build 11 + 28, gemischter Modus)
Und für einen OpenJDK 11 Build:
openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (Build 11 + 28)
OpenJDK 64-Bit Server VM 18.9 (Build 11 + 28, gemischter Modus)
- Das Oracle JDK hat immer verlangt, dass kryptografische Anbieter von Drittanbietern mit einem bekannten Zertifikat signiert sind. Das Kryptografie-Framework in OpenJDK verfügt über eine offene kryptografische Schnittstelle, was nicht einschränkt, welche Anbieter verwendet werden können. Oracle JDK 11 erfordert weiterhin eine gültige Signatur, und Oracle OpenJDK-Builds ermöglichen weiterhin die Verwendung einer gültigen Signatur oder eines nicht signierten Kryptoanbieters eines Drittanbieters.
- Oracle JDK 11 wird weiterhin Installationsprogramme, Branding und JRE-Pakete enthalten, um eine Erfahrung zu erzielen, die mit älteren Desktop-Anwendungen vereinbar ist. Oracle OpenJDK-Builds sind derzeit als zip- und tar.gz-Dateien verfügbar, während alternative Verteilungsformate in Betracht gezogen werden.