Java 11 – die freie JDK-Wahl

#JAVAPRO #CoreJava #JDK11 #Java

Das neue Oracle JDK 11 wurde am 25. September 2018 als Long-Term-Support-Release (LTS) veröffentlicht. Neben Bug-Fixes und Security-Patches stecken im JDK 11 Feature-Release, Sprach- und JVM-Änderungen, Erweiterungen, zugefügte und entfernte Klassen und Methoden, deprecated-markierte Features und JDK-Tool-Änderungen. Anwender werden sich darüber freuen, dass sie ein JDK oder ein OpenJDK verschiedener Hersteller auswählen können.

JDK-Feature-Release und Critical-Patch-Update. (Abb. 1)

JDK-Feature-Release und Critical-Patch-Update. (Abb. 1)

Mit den neuen Java-Release-Zyklen bringt Oracle zwei JDK-Versionen pro Jahr heraus (Abb. 1). Nach dem JDK 8 LTS-Release in 2014, folgt jetzt das Oracle JDK 11 LTS. Danach soll im Dreijahresrhythmus als nächstes das Oracle JDK 17 LTS-Release das Licht der Welt erblicken.

Die bestehende Oracle-Technology-Network-Lizenzvereinbarung (OTN-Lizenz) besagt, dass man das Oracle JDK 11 nur mit der Oracle Java SE Subscription im Produktivbetrieb einsetzen darf. Die Nutzung vom Oracle JDK 11 ist für Entwicklung, Testing, Prototyping oder zu Demozwecken mit der OTN-Lizenz dabei ausdrücklich erlaubt. Beispielsweise benötigt man im unternehmensweiten Entwicklungsprozess mit Oracle JDK 11 und den Entwicklungsumgebungen Eclipse IDE, IntelliJ IDEA oder NetBeans IDE keine Oracle Java SE Subscription, weil die OTN-Lizenz die Entwicklung explizit erlaubt.
Anders ist es, wenn bespielsweise JIRA im Entwicklungsprozess mit dem Oracle JDK eingesetzt wird. In diesem Fall benötigt man die Oracle Java SE Subscription, weil es sich bei JIRA um eine Produktivumgebung handelt.

Mit Einführung der JDK-Version 11 wurden die technischen Unterschiede bei der Gleichstellung vom Oracle JDK 11 mit dem Oracle OpenJDK entfernt. Bei diesem Technologietransfer sind alle Bestandteile vom Oracle JDK als Open-Source-Implentierungen in das OpenJDK geflossen, sodass das Oracle JDK jederzeit problemlos durch das OpenJDK ausgetauscht werden kann (Abb. 2). Das Oracle JDK besitzt eine OTN-Lizenz und das OpenJDK wird über die GNU General Public License mit Classpath-Exception (GPL v2 & CPE) lizenziert.

Im Gegensatz zum Oracle JDK, mit der OTN-Lizenz, kann das Oracle OpenJDK mit GPL v2 & CPE-Lizenz frei eingesetzt werden. Die Anwender können zwischen verschiedenen Hersteller-JDKs (Oracle, IBM, SAP, o.a.) auswählen oder sich für einen Open-JDK-Anbieter (Oracle, Azul, BellSoft, MicroDoc, Red Hat, SAP, o.a.) entscheiden. Zudem besteht die Möglichkeit, die vorgefertigten OpenJDK-Binärdateien von AdoptOpenJDK einzusetzen.

Oracle JDK und Aracle OpenJDK. (Abb. 2)

Oracle JDK und Aracle OpenJDK. (Abb. 2)


JDK 11 In & Out

Die im JDK 11 enthaltenen Merkmale sind über die einzelnen JDK Enhancement Proposals (JEPs) in (Abb. 3) aufgeführt. Durch die kürzeren Java-Release-Zyklen sind weniger Features im JDK 11 enthalten als das bisher bei früheren Java-Major-Releases der Fall war. Kleinere Technologieportionen sollen bei der Anwendungsentwicklung schneller eingesetzt werden, um einen Innovationsstau zu vermeiden. Vorangegangene JEPs aus den früheren JDK-Versionen 9 und 10 sind mit dem JDK 11 vervollständigt und abgerundet worden. Hier ist zum Beispiel der JEP 323, Local-Variable Syntax for Lambda Parameters und die Standardisierung vom HTTP Client API (JEP 321) zu nennen. Der JDK Flight Recorder ist mit seinen Bestandteilen zum Datensammeln, durch die Module jdk.jfr.jmod und jfr.management.jfr.jmod im JDK 11 enthalten.

Das mit dem JDK Flight Recorder korrespondierende Visualisierungswerkzeug JDK Mission Control, befindet sich außerhalb vom JDK und muss eigenständig installiert werden.

Die JavaScript-Engine Nashorn (JEP 335) ist nicht mehr im JDK 11 enthalten. Eine Open-Source-Wartung von Nashorn kam nicht zustande. Mit GraalVM steht eine polyglotte Umgebung für interpretierte Sprachen (C/C++ LVVM, R, Ruby, JavaScript) und native Sprachunterstützung für Java, Scala und Kotlin bereit. Der experimentell eingestufte Graal JIT-Compiler benutzt das bereits mit dem JDK 9 eingeführte JVM Compiler Interface (JVMCI) über das Java-Kommando -XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler.

Die UI-Technologie JavaFX wurde durch die Java-Modularisierung aus dem JDK 11 entfernt. JavaFX 11 wird seitdem über eigenständige
Module zum JDK 11 hinzugefügt (Abb. 4). Es kann auch über das JavaFX SDK 11 separat installiert werden. Der Download von JavaFX 11 wird von Gluon unter der GPL v2 & CPE-Lizenz bereitgestellt. Der JavaFX-Support wird ebenfalls von Gluon angeboten. JavaFX 11 wird vom OpenJFX 11 abgeleitet und passt zum Oracle OpenJDK 11 oder zum Oracle JDK 11.

 

JDK 11 Feature-Liste mit JDK Enhancement Proposals (JEPs). (Abb. 3)

JDK 11 Feature-Liste mit JDK Enhancement Proposals (JEPs). (Abb. 3)

 

JavaFX 11 Module. (Abb. 4)

JavaFX 11 Module. (Abb. 4)

 

 

Fazit:

Mit einer überschaubaren Anzahl von technischen Änderungen im JDK 11 und der Vervollständigung von bereits in früheren JDK-Versionen angefangenen Arbeiten und Feature-Einführungen, sind keine großen Überraschungen im JDK 11 zu erwarten. Das breite Java-Ökosystem mit seiner Vielfalt ermöglicht Anwendern die freie Entscheidung über den Produktiveinsatz des Oracle JDK 11 mit Oracle Java SE Subscription oder der alternativen Nutzung des Oracle OpenJDK sowie die Auswahl eines anderen Hersteller-JDK oder Hersteller-OpenJDK.

 

Wolfgang Weigend arbeitet als Senior Leitender Systemberater bei der Oracle Deutschland B.V. & Co. KG. Er beschäftigt sich mit Java-Technologie und Architektur für unternehmensweite Anwendungsentwicklung.

Carolyn Molski


Leave a Reply