So viele JDKs ... Welches zu verwenden und was bedroht es?

Von einem Übersetzer: Die Entscheidung, diesen Artikel zu übersetzen, kam nicht von alleine - vielmehr ist es eine notwendige Maßnahme :). Wir als Anbieter des CUBA-Frameworks werden mit diesem Problem mit beneidenswerter Regelmäßigkeit angesprochen. Dies ist natürlich auch ein äußerst wichtiges Thema für uns. Als Reaktion auf die neuesten Änderungen haben wir Testbänke sowohl für Oracle JDK als auch für OpenJDK aufgestellt. Diese Maßnahme schützt unsere Benutzer derzeit vor unvorhergesehenen Lizenzkosten. Dieses Thema ist jedoch noch nicht abgeschlossen, und wir beobachten die Entwicklung der Ereignisse weiterhin genau. Wer weiß, vielleicht müssen wir nächstes Jahr Stände für einige andere JDK-Versammlungen hinzufügen ...


Der Artikel unter der Katze besticht durch die Tatsache, dass er die Probleme und die beliebtesten JDKs mit ihren Funktionen kurz beschreibt.


Oracle hat kürzlich angekündigt, dass sich die Entwicklung von Java dank der Umstellung auf "Release Train" - ein neuer Ansatz für die Einführung von Versionen - dramatisch ändern wird. Diese Änderung brachte auch Änderungen in Bezug auf die Versionsunterstützung mit sich, die nun nicht für alle, sondern nur für LTS-Versionen implementiert werden. Die Java Champions Community hat die eingeführten Innovationen klargestellt. Ein detailliertes Dokument ist online verfügbar .


Trotz dieser Neuigkeiten bleiben Fragen offen: Welche JDK-Builds sind derzeit verfügbar? Werden sie frei oder kommerziell sein? Bevor Sie diese Frage beantworten, ist es wichtig zu verstehen, welche Anforderungen an JDK als Produkt gestellt werden. Tatsächlich gibt es nur einen Kern-JDK-Quellcode. Er ist hier . Jeder kann den Quellcode verwenden, um seine eigene Assembly zu erstellen und sie irgendwo im Netzwerk zu platzieren. Es gibt jedoch ein separates Zertifizierungsverfahren, das abgeschlossen werden muss, damit die JDK-Baugruppe als gültig angesehen wird. Die Zertifizierung erfolgt durch den Java Community Process (JCP), der das Technology Compatibility Kit (TCK) bereitstellt. Wenn eine Organisation eine neue OpenJDK-Assembly erstellt, die dem TCK entspricht, wird sie als "Java SE-kompatibel" betrachtet.


Beachten Sie, dass eine Assembly nur dann als "Java SE" bezeichnet werden kann, wenn das Assembly-Unternehmen eine kommerzielle Lizenz von Oracle erworben hat. Beispielsweise sind die AdoptOpenJDK-Builds, die das TCK bestehen, nicht "Java SE", sondern "Java SE-kompatibel". Es sollte auch berücksichtigt werden, dass die Zertifizierung jetzt „auf Bewährung“ basiert - die Ergebnisse werden nicht zur Überprüfung an JCP / Oracle gesendet und sind Verschlusssachen. Kurz gesagt, jeder Anbieter, der den OpenJDK-Quellcode verwendet und die Version erstellt, erzeugt einen weiteren separaten JDK-Build.


OpenJDKbilds


Wir empfehlen Ihnen daher, sich ohne weiteres mit den folgenden gebrauchsfertigen JDKs vertraut zu machen:


Oracle JDK


Dies ist der Hauptanbieter von Java 11 (die Veröffentlichung hat bereits stattgefunden). Dies ist eine kommerzielle Version mit kostenpflichtiger Unterstützung. Es kann kostenlos heruntergeladen und nur direkt für die Entwicklung verwendet werden. Sie können es nicht in der Produktion verwenden, ohne Oracle zu bezahlen (für viele, die nicht an einer Lizenzierung interessiert sind, ist dies eine Falle). Oracle plant, bis 2026 und darüber hinaus kostenpflichtigen Support bereitzustellen. Im Gegensatz zu früher ist die Oracle JDK-Assembly in keiner Weise „besser“ als OpenJDK (solange sich beide auf derselben Sicherheits-Patch-Ebene befinden).


Oracle OpenJDK Build


Es gibt kostenlose Nicht-Markenversionen von OpenJDK, die unter der GPL mit der Classpath-Erweiterung (für den kommerziellen Gebrauch geeignet) vertrieben werden. Diese Build-Versionen sind erst 6 Monate nach Veröffentlichung verfügbar. Java 11 wird voraussichtlich Java Version 11.0.0 und zwei Sicherheitspatches 11.0.1 und 11.0.2 veröffentlichen. Um die OpenJDK-Version und ihre Patches von Oracle weiterhin verwenden zu können, müssen Sie spätestens einen Monat nach dem Start ein Upgrade auf Java 12 durchführen. Bitte beachten Sie, dass sich das Verfahren zum Bereitstellen von Sicherheitspatches vom Verfahren zum Bereitstellen von Support unterscheidet, einschließlich der Zahlung für die Verarbeitung von Fehlerberichten.


AdoptOpenJDK


Dies sind auch kostenlose OpenJDK-Builds ohne Markenzeichen, die unter der GPL mit der Classpath-Erweiterung vertrieben werden. Im Gegensatz zu den OpenJDK-Builds von Oracle halten diese Build-Versionen für Hauptversionen wie Java 11 länger. Java 11- Versionen werden veröffentlicht für 4 Jahre, ein Jahr nach der nächsten Hauptveröffentlichung. AdoptOpenJDK ist Community-orientiert. Während andere Teams Sicherheitskorrekturen für das ursprüngliche OpenJDK-Repository erstellen und veröffentlichen, werden sie Builds veröffentlichen. Sowohl IBM als auch Red Hat haben angekündigt, solche Patches zu veröffentlichen.


AdoptOpenJDK OpenJ9


Zusätzlich zu den Standard-OpenJDK-Builds bietet AdoptOpenJDK auch Versionen mit OpenJ9 anstelle von HotSpot an. OpenJ9 war ursprünglich eine IBM JVM, aber OpenJ9 ist jetzt Open Source. Übrigens ist diese Option die studienwürdigste.


Red Hat OpenJDK


Red Hat bietet OpenJDK- Build-Versionen unter Red Hat Enterprise Linux (RHEL), einem kommerziellen Produkt mit kostenpflichtiger Unterstützung. Red Hat leistet ziemlich gute Arbeit bei Sicherheitsupdates in OpenJDK. In der Vergangenheit war Red Hat für die Sicherheitsupdates für Java 6 und 7 verantwortlich. Der Red Hat-Build ist stärker in das Betriebssystem integriert, sodass er nicht als typischer OpenJDK-Build bezeichnet werden kann (es gibt kein JDK für Endbenutzer).


Azul zulu


Zulu ist eine Markenversion von OpenJDK mit kostenpflichtiger kommerzieller Unterstützung. Obwohl Azul einige Zulu-Artikel kostenlos über die Zulu-Community zur Verfügung stellt, besteht für sie keine besondere Verpflichtung, diese Baugruppen zur Verfügung zu stellen. Azul hat im Gegensatz zu anderen Anbietern einen ziemlich umfangreichen Zulu-Supportplan, einschließlich Support für Java 9, 13 und 15 .


Amazon Corretto


Dies ist die neueste aller beschriebenen Optionen. Corretto ist eine kostenlose Version des OpenJDK-Builds mit langfristiger Unterstützung durch TCK. Es wird unter Standardlizenzbedingungen für alle Versionen von OpenJDK: GPL + CE vertrieben. Amazon wird seine eigenen Patches erstellen und Corretto auf AWS starten, sodass es recht aktiv verwendet wird (und bereits einigen Produkten hinzugefügt wurde). Die Unterstützung für Java 8 ist mindestens bis Juni 2023 geplant.


Bei der Konvertierung des ursprünglichen OpenJDK in verschiedene Versionen der Baugruppe kann der Hersteller verschiedene Dienstprogramme hinzufügen oder das Produkt mit einer Marke versehen, wenn dies eine Zertifizierung (TCK) nicht ausschließt. Beispielsweise können Sie der API oder neuen Sprachressourcen keine neue öffentliche Methode hinzufügen.


Es gibt andere JDK-Implementierungen wie IBM und SAPMachine. Diese Versionen der Baugruppe werden jedoch nicht so häufig verwendet, sodass sie in diesem Artikel nicht erwähnt werden. Weitere Informationen finden Sie hier und hier .


Fazit


Persönlich sehe ich bei mehreren Versionen des JDK kein besonderes Problem, da alle zertifiziert sein müssen (TCK). Was wirklich besorgniserregend ist, ist die Verwendung eines der proprietären JDKs und der kostenlosen Version der Assembly von Oracle, um künftig Kopfschmerzen zu vermeiden. Wenn Sie nur grundlegende Funktionen verwenden (z. B. ist Ihr Unternehmen nicht besonders von Sicherheitsupdates abhängig), sind OpenJDK-Builds von Oracle (NICHT OracleJDK) für Sie besser geeignet, da Sie werden ständig aktualisiert (innerhalb von 6 Monaten nach Veröffentlichung), und Sie können JDK problemlos in der Produktion verwenden. Wenn Ihr Unternehmen Cloud-Services (oder mit AWS) verwendet, ist AWS Corretto, das bereits unter Amazon Linux und Docker verwendet werden kann , eine gute Wahl.

Source: https://habr.com/ru/post/de434790/


All Articles