Oracle ändert Lizenzmodell

Kostenexplosion bei Java?

17.12.2018 von Bernhard  Steppan  
Oracle hat angekündigt, ab Java 11 den Release-Zyklus sowie das Support- und Lizenzmodell zu ändern. Die Frage, ob und welche Kosten damit auf Java-Anwender zukommen, wird unter den Nutzern kontrovers diskutiert.

Oracle hat vor kurzem unter dem Titel Oracle Java SE Support Roadmap tiefgreifende Änderungen am Java-Lizenzmodell, dem Release-Zyklus und der Support-Roadmap von Java angekündigt. Der Veröffentlichung ist zu entnehmen, dass Oracle künftig beginnend mit Java 11 weder kostenlose JDK-Versionen (siehe Glossar) noch kostenfreie Patches für OpenJDK-Fehler liefern wird.

Außerdem ändern sich die Release-Zyklen und die Support-Roadmap für Java. Um Oracles Ankündigung verstehen und die Folgen für den eigenen Java-Einsatz besser abschätzen zu können, muss man wissen, wie das neue Java-Lizenzmodell mit dem Release-Zyklus und der Support-Roadmap zusammenhängt.

Für die Anwender gilt es zunächst herauszufinden, wo überall im Unternehmen Java läuft. Das kann eine aufwändige Suche werden.
Foto: Casimiro PT - shutterstock.com

Neues Lizenzmodell

Oracle hat seine Java-Versionen bisher unter der Oracle Binary Code License (BCL) veröffentlicht. Diese Lizenz erlaubte, die Java-Technologie unter bestimmten Bedingungen kostenfrei zu nutzen – auch für kommerzielle Produkte. Seit der Veröffentlichung von Java 11 bietet Oracle Java-Anwendern an, JDKs mit einer der folgenden Lizenzen zu verwenden: entweder unter der bekannten GNU GPL-Lizenz v2 mit einer sogenannten Classpath-Exception (GPLv2+CPE) für das OpenJDK oder unter einer kommerziellen Lizenz für das Oracle JDK. Für welche der beiden Lizenzen man sich entscheidet, sollte in erster Linie vom Einsatzzweck und von der Notwendigkeit für professionellen Support abhängen. Einen funktionalen Unterschied gibt es ab Java 11 laut einer Veröffentlichung des Oracle-Produktmanagements nicht.

Zu den Lizenzen: Verwendet man eine Software, die der GPL unterliegt, ist man normalerweise gezwungen, seine Software ebenfalls quelloffen zu vertreiben, was sich bei kommerzieller Software ausschliesst. Um dieses starke Copyleft zu vermeiden, gibt es die GPLv2 mit der sogenannten Classpath Exception. Die Classpath Exception bedeutet im Zusammenhang mit Oracles Veröffentlichung, dass kommerzielle Java-Softwareprodukte nicht notwendigerweise wieder mit einer GPL veröffentlicht werden müssen.

Es ist also gestattet, eine Java-Anwendung mit einer kommerziellen Lizenz zu vertreiben, obwohl die zugrunde liegende Java-Version unter GPLv2+CPE vertrieben wird. Wählt man, Java mit GPLv2+CPE zu lizensieren, hat man jedoch keinen Anspruch auf Oracle-Support, der zum Beispiel kostenfreie JDK-Patches umfasst.

Alternative JDK-Bezugsquellen

Tabelle 1. Alternative JDK-Bezugsquellen (Quelle: Steppan)

Firma

Link

AdoptOpenJDK

https://adoptopenjdk.net

Azul

https://www.azul.com/downloads/zulu/

Eclipse

https://www.eclipse.org/openj9/

IBM

https://developer.ibm.com/javasdk/downloads/

Red Hat

https://developers.redhat.com/products/openjdk/download/

SAP

https://sap.github.io/SapMachine/

Wer auf kommerziellen Support Wert legt, zum Beispiel um Security-Patches zu erhalten, sollte entweder die kommerzielle Oracle-Lizenz auswählen oder Java von einer anderen Quelle lizensieren, von der ebenfalls Support erhalten werden kann (siehe Tabelle oben "Alternative JDK-Bezugsquellen").

Neuer Release-Zyklus und Support-Roadmap

Neben dem Lizenzmodell ändern sich auch der Release-Zyklus und die Support-Roadmap von Java. Beginnend mit Java 11 führt Oracle einen sechsmonatigen Release-Zyklus ein. Alle sechs Monate, zum März und September jeden Jahres, wird Oracle ein neues sogenanntes Feature-Release (Major-Release) veröffentlichen (siehe Tabelle unten "Oracle Java SE Support-Roadmap"). Darüber hinaus wird ein sogenannter Long Term Support (LTS) eingeführt, für das ein Release alle drei Jahre vorgesehen ist. Wie eingangs erwähnt, stellt Oracle ab Januar 2019 für Java SE 8 keine öffentlichen Updates für kommerzielle Zwecke mehr zur Verfügung. Für Privatanwender dauert die Frist bei JSE 8 etwas länger und endet im Dezember 2020.

Oracle Java SE Support-Roadmap

Tabelle 2. Oracle Java SE Support-Roadmap (Quelle: Oracle)

Release

Veröffentlicht

Premier Support

Extended Support

Sustaining Support

Java 6

12.2006

bis 12.2015

bis 12.2018

Unbegrenzt

Java 7

07.2011

bis 07.2019

bis 07.2022

Unbegrenzt

Java 8

03.2014

bis 03.2022

bis 03.2025

Unbegrenzt

Java 9 (kein LTS)

09.2017

bis 03.2018

Nicht verfügbar

Unbegrenzt

Java 10 (kein LTS)

03.2018

bis 09.2018

Nicht verfügbar

Unbegrenzt

Java 11 (LTS)

09.2018

bis 09.2023

bis 09.2026

Unbegrenzt

Java 12 (kein LTS)

03.2019

bis 09.2019

Nicht verfügbar

Unbegrenzt

Java 13

09.2019

bis 03.2020

noch nicht bekannt

noch nicht bekannt

Die Kosten für kommerziellen Support sind dem Dokument Java Subscription FAQs zu entnehmen. Eine detaillierte Preisliste ist ebenfalls verfügbar. Die Preise schwanken zwischen 12,50 Dollar und 25 Dollar pro Prozessor je nach Prozessoranzahl und 1,25 Dollar und 2,50 Dollar pro Anwender je nach Anwenderanzahl. Cloud-Deployments werden laut Oracle unterstützt, wogegen die Preisliste eine Erklärung schuldig bleibt, wie Oracle die Lizenzgebühren in solchen elastischen Umgebungen berechnet.

Tabelle 3. OpenJDK und Oracle JDK Releases im Vergleich (Quelle: Oracle)

JDK\Datum

10/2017

01/2018

04/2018

07/2018

10/2018

01/2019

04/2019

07/2019

OpenJDK

9.0.1

9.0.4

10.0.1

10.0.2

11.0.1

11.0.2

12.0.1

12.0.2

Oracle
JDK 8

8u151
8u152

8u161
8u162

8u171
8u172

8u181
8u182

8u191
8u192

8u201
8u202

8u211
8u212

8u221
8u222

Oracle JDK
9/10/11

9.0.1

9.0.4

10.0.1

10.0.2

11.0.1
(LTS)

11.0.2
(LTS)

11.0.3
(LTS)

11.0.4
(LTS)

Der neue Release-Zyklus, die neue Support-Roadmap und die Preise sehen zunächst nicht nach dramatischen Umwälzungen aus. Sie bringen jedoch viele Firmen, die bisher ohne kostenpflichtigen Support ausgekommen sind, in eine Zwickmühle. Da Oracle einerseits manche Technologien in neuen Java-Releases nicht mehr zur Verfügung stellt (Applets nur bis JSE 8) beziehungsweise ausgliedert (Java-Webstart und JavaFX ab Java 11) und andererseits alte Versionen sogar mit "Premier Support" rasch abkündigt, kommen Firmen in Zugzwang. Sie müssen, dem ersten Eindruck nach, schnell entscheiden, ob sie weiterhin Java kostenfrei einsetzen und dem schnellen Release-Zyklus folgen oder kommerziellen Support in Anspruch nehmen und dafür mehr Zeit für eine Migration einplanen können.

Java-Champions

Ein Gruppe von zertifizierten Java-Entwicklern, den sogenannten Java-Champions, hat auf die Ankündigung von Java mit der Veröffentlichung Java Is Still Free reagiert. In diesem Dossier wird klargestellt, dass sowohl das Oracle JDK als auch das OpenJDK in Zukunft durch Drittanbieter weiterhin kostenlos zur Verfügung stehen wird. Hinter den genannten Firmen stehen natürlich auch Eigeninteressen. Eclipse beispielsweise baut nahezu alle seine Open-Source-Projekte auf Java-Basis auf. Eine Verunsicherung aufgrund der Oracle-Ankündigungen dürfte also nicht im Interesse der Eclipse-Community sein, weswegen sie die Verbreitung der Java-Technologie unterstützt.

Fazit

Oracle hat mit seiner Ankündigung in ein Wespennest gestochen. Java ist nicht nur die weltweit am meisten eingesetzte Programmiersprache. Die Java-Technologie wird zudem für extrem unternehmenskritische Anwendungen eingesetzt. Mit Oracles neuer Lizenz- und Supportpolitik entsteht der Eindruck, dass der Konzern seine Vormachtstellung hinsichtlich Java ausnutzt und versucht, bei den Anwender abzukassieren. Doch die Rechnung geht nicht auf: Java wird weiterhin kostenfrei bleiben, da es neben Oracle noch andere Bezugsquellen für die Java-JDKs gibt. Es bleibt die Hoffnung, dass sich diese Bezugsquellen auch als verlässliche Lieferanten für zeitkritische Patches erweisen.

Empfehlungen zur Java-Strategie

Glossar

Long Termin Support (LTS): Kommerzieller Langzeit-Support seitens Oracle.
Java Standard Edition (Java SE oder kurz JSE): identisch mit Java Development Kit (JDK).
Java Development Kit (JDK): Enthält neben der Java-Laufzeitumgebung (siehe unten) weitere Bestandteile wie den Java-Compiler, der bei manchen Entwicklungsumgebungen erforderlich ist.
Java-Laufzeitumgebung (JRE): Wird benötigt, um Java-Programme auszuführen.