Erfolgreich Java programmieren – Auszug

1.1.6 Java und Open Source

Java gehört einerseits Sun respektive Oracle, ist aber andererseits mittlerweile auch Open Source. Nur zwischen Java respektive Sun/Oracle und der Open Source-Community bestand bzw. besteht ein nicht ganz einfaches Verhältnis. Doch klären wir erst einmal den Begriff Open Source.

1 Was ist Open Source?

Open-Source-Software (kurz OSS) wird landläufig gerne als kostenlose Software (miss-)verstanden. Tatsächlich bezeichnet man damit jedoch Software, deren Quellcode offen liegt und (beliebig) benutzt und verändert werden darf. Es handelt sich also nicht um kostenlose, sondern freie, offene Software. Was das im Detail allerdings bedeutet, wie „beliebig“ man diese Quellcodes benutzen und ändern darf, ob der veränderte bzw. weiterentwickelte Quellcode wieder frei weitergegeben werden muss und wer der „Eigentümer“ der Orginalquellcodes als auch er geänderten Quellcodes ist, wird jedoch in einer ganzen Palette von Lizenzen festgelegt, die sich in vielen Details unterscheiden.

Die Fragen, unter welche Lizenz Java und das JDK gestellt sind, beeinflusst nicht die von Ihnen entwickelten Java-Programme, sondern nur die Java-Plattform selbst.

2 Sun und Open Source

Bis zum Jahr 2006 hatte Sun gegenüber der Freigabe vom Java-Quellcode eine ablehnende Haltung eingenommen, was durchaus verständlich ist. Allerdings war Java schon von Anfang an mehr oder minder „offen“. Zumindest offen im Sinne von offenen Standards und einer Mitsprache der Java-Community sowie vor allen Dingen der kostenlosen Weitergabe der Entwicklungswerkzeuge und der Java-Laufzeitumgebung, um die Verbreitung der Java-Plattform zu fördern. Die Community forderte mit der Zeit auch die Freigabe des Java-Quellcodes.

Mit dem Argument einen einzigen Java-Standard und einheitliche Java-Plattformen sicherstellen9 zu wollen widersetzte sich Sun der Freigabe. Dies verärgerte viele Mitglieder der Community, auf deren Wohlwollen viele Softwarefirmen mittlerweile allerdings angewiesen sind. Und deshalb entwickelten sich diverse unabhängige Vereinigungen mit dem Ziel eine vollständig unter einer freien Open-Source-Lizenz gestelltes Java bereitzustellen. Bekannte Projekte sind Apache Harmony10, Kaffe oder GNU-Classpath. Insbesondere erzwingen viele Linux-Distributionen seit einigen Jahren offene Lizensen, wenn Software in ihnen enthalten sein soll. Und gerade der Erfolg von Linux hat auch Sun deutlich gemacht, dass Open Source die einzig erfolgversprechende Lizenzierungsstrategie ist, wenn eine Plattform weite Verbreitung finden soll – insbesondere bei einer technikaffinen Gruppe, wie es natürlich auch freie Java-Entwickler sind.

Dem konnte Sun auf Dauer nicht widerstehen. Zuerst öffnete Sun Java mit einer eigenen Lizenz mit Namen Common Development and Distribution License (CDDL), die Sun im Dezember 2004 vorstellte. Allerdings ist diese Lizenz nicht mit der populären und auf breiter Front akzeptierten GNU General Public License (GPL) kompatibel. Die CDDL enthält vor allen Dingen eine restriktive Klausel, nach der die Lizenz für einen bestimmten Lizenznehmer ungültig wird, wenn dieser Lizenznehmer bestimmte rechtliche Schritte gegen den Lizenzgeber unternimmt. Insgesamt ist dies CDDL von der Open Source-Community nicht sonderlich gut aufgenommen worden und hat Sun den Weg in die Linux-Distributionen verbaut, denn diese erfordern meist explizit die GPL oder eine kompatible Lizenz. Das JDK und die JRE von Sun blieben damit explizit außen vor und mussten in den Linux-Distributionen – falls überhaupt Java vorhanden sein sollten – durch eine der freien Java-Implementierungen ersetzt werden.

Sun hat deshalb 2006 zugesichert, das JDK unter die GNU General Public License zu stellen11 und den Compiler des JDK samt der Hotspot Virtual Machine als entsprechend lizensierte Open Source veröffentlicht. Zudem wurde mit OpenJDK eine Community-Seite zur Koordinierung der Entwicklung eröffnet. 2007 wurden dann auch große Teile des Quellcodes der Java Standard Edition als Open Source unter der GPL erklärt. Ausnahme blieb der Code, für den Sun nicht die nötigen Rechte hatte. Solcher Code wird nur in kompilierter Form ausgeliefert und der Quelltext darf nicht beliebig modifiziert werden. Die Reaktionen auf den Schritt von Sun in der Open Source-Community waren überwiegend positiv.

Dennoch war die Verwendung der GPL keinesfalls das Ende der kommerziellen Verwendung von Java durch Sun. Das wäre für ein Unternehmen auch unsinnig. Es gibt parallel kommerzielle Versionen des JDK und des JRE, wobei mit Support Geld verdient wird. Die kommerziellen JDK-Versionen basieren zu großen Teilen auf OpenJDK (worüber Sun/Oracle wieder von der Freigabe profitieren), beinhalteten in den Versionen bis vor Java 7 aber noch einige zusätzliche Komponenten. Bei Java SE 7 ist OpenJDK nun offiziell die Referenzimplemtierung. Die Referenzimplementierung sei nach Aussage von Oracle eine Art „Gold-Standard für alle Java-Implementierungen“. Dabei diente bislang immer Suns JDK als Referenzimplementierung.