Ist Java kostenlos / Open Source oder nicht?

33

Am 13. November 2006 veröffentlichte Sun einen Großteil von Java als freie und Open Source-Software (FOSS) unter den Bedingungen der GNU General Public License (GPL). Am 8. Mai 2007 beendete Sun den Vorgang und stellte den gesamten Java-Kerncode unter den Bedingungen für freie Software / Open-Source-Distribution zur Verfügung , abgesehen von einem kleinen Teil des Codes, für den Sun nicht das Urheberrecht besaß.

OpenJDK (Open Java Development Kit) ist eine kostenlose und Open-Source-Implementierung der Programmiersprache Java. Dies ist das Ergebnis einer Anstrengung, mit der Sun Microsystems im Jahr 2006 begann. Die Implementierung unterliegt der GNU General Public License (GNU GPL) mit einer Linking-Ausnahme.

  • Warum gibt es immer noch Leute, die behaupten, Java sei nicht Open Source oder frei wie bei der Redefreiheit?
  • Vermisse ich etwas?
  • Ist Java noch proprietär?
Tulains Córdova
quelle
Ich weiß nicht genau, ob nur die Sun JVM-Implementierung oder sogar die Technologie (Bytecode) geschützt ist, aber alle Kernbibliotheken (java.xy) sind kostenlos. Wenn also jemand eine andere Bytecode-Spezifikation und eine andere VM erstellt, sollte er die vorhandenen Bibliotheken kostenlos verwenden. Hoppla, Google hat das bei Dalvik getan!
ern0

Antworten:

37

Das Problem ist, dass Sie, um etwas "Java" zu nennen, es als kompatibel mit der Java-Spezifikation zertifizieren lassen müssen.

Eine der Voraussetzungen, um diese Zertifizierung zu erhalten, besteht darin, dass Sie JVM über eine Testsuite - das Java Technology Compatibility Kit (TCK) - ausführen . Diese Testsuite ist NICHT Open Source.

Sie können also eine JVM erstellen, die sich sehr Java-ähnlich verhält und vollständig Open Source ist. Wenn Sie sie jedoch als "Java-JVM" bezeichnen möchten, müssen Sie die Zertifizierungssuite unter einer Nicht-Open-Source-Lizenz erwerben. Für viele Open-Source-Befürworter ist dies ein absoluter Non-Starter.

James Anderson
quelle
7
Dies ist einer der Gründe, warum Apache Harmony (eine ziemlich vollständige, unabhängige JVM-Implementierung) eingestellt wurde . Es ist wirklich eine Schande, dass Sun / Oracle so gehandelt hat (und immer noch so gehandelt hat). Was Google getan hat (Java "fast kopiert"), ist wahrscheinlich auch eine direkte Folge davon.
Joachim Sauer
1
Die Testsuite ist auch das Java Platform TCK (es gibt auch andere TCKs für Java-bezogene Technologien).
Joachim Sauer
4
Wenn Sie eine erfolgreiche JVM erstellen, wird Oracle Sie möglicherweise wegen Urheberrechtsverletzung und Patentverletzung verklagen . Als hätten sie Google über Android verklagt.
MarkJ
2
Ist das Namensgesetz relevant für den Aufruf von OpenSource? Ich kann meinen eigenen Browser nicht erstellen und ihn auch nicht als Firefox bezeichnen. Ich denke, für die Frage ist das erste, was man unter dem Begriff "Java" versteht: die Sprachspezifikation, die JVM-Implementierung, und wer nennt sie nicht offen ...
Johannes,
@johannes - Willkommen im Open Source-Heim von Pedanten und Nitpickern! Für viele in der Open Source Community sind diese Unterscheidungen wichtig. Erleben Sie, wie Apachen das Harmony-Projekt aufgeben. Für andere, die praktischer sind, ist eine funktionierende Java-ähnliche Umgebung "gut genug" wie die Dalvik VM, die das Herzstück aller Android-Geräte bildet.
James Anderson
15

Sie sollten diese Antwort gelesen haben, bevor sie entfernt wurde, um welche es sich handelt. Die Hauptantwort lautete:

Beachten Sie bei Java 7, dass JDK7 und OpenJDK7 eine ( fast ) identische Codebasis haben.

Beachten Sie das, was ich fast hervorgehoben habe.

Aus dem Artikel, der mit dieser Antwort verknüpft ist:

[…] Aber es gibt einen Code, in dem Open Source ersetzt wird und in dem wir immer noch den alten geschlossenen Quellcode verwenden. Dies ist in erster Linie bei der Rasterisierung von Schriftarten und Grafiken der Fall. Der alte Closed-Source-Rasterisierungscode war über 10 Jahre lang mit Fehlerkorrekturen, Feineinstellungen usw. belastet. Damit Open-Source-Ersatzprogramme diesen Code in produktiven JDK-Builds ersetzen können, müssten sie nachweislich genauso schnell und stabil sein gute qualität wie der vorhandene geschlossene code.

Auch aus der Java-FAQ :

Das Java Development Kit (JDK) kann kostenlos heruntergeladen und für kommerzielle Programme verwendet, aber nicht weitergegeben werden .

Also nicht Open Source . Einfach fast.

Auch wenn es vollständig Open Source wäre, würden das Entwicklungsmodell und die Governance dies nicht tun . Dies ist jedoch kein Lizenzproblem.

Gallaecio
quelle
1
"kostenlos herunterzuladen und zu verwenden, aber nicht weiterzugeben" bedeutet, dass die Software "keine freie Software" ist, aber dennoch "Open Source" sein kann. Open Source setzt lediglich voraus, dass Sie Zugriff auf den Quellcode haben. Freie Software (wie von der FSF und anderen definiert) erfordert das Recht zur Weiterverteilung.
ein Lebenslauf
6
@ MichaelKjörling Die OSI-Definition erfordert sicherlich Umverteilungsrechte.
Luiscubal
1

1997 wandte sich Sun Microsystems an die ECMA, um Java zu formalisieren, zog sich jedoch bald aus dem Prozess zurück. Der Java-Standard wird tatsächlich über den Java Community Process gesteuert .

Obwohl im Jahr 2006 der größte Teil von Java von Sun Microsystems unter den Bedingungen der GPL veröffentlicht wurde, befindet sich die derzeitige offizielle Implementierung im Besitz von Oracle.

Da in Java keine von ECMA, ISO / IEC, ANSI oder anderen Drittanbieter-Standardorganisationen anerkannte formale Standardisierung vorliegt, ist die Oracle-Implementierung der defacto-Standard. Es gibt jedoch alternative Implementierungen wie GNU Compiler für Java, GNU Classpath, IcedTea-Web usw.

Sajad Deyargaroo
quelle
7
-1: Seit Java 7 ist die offizielle Referenzimplementierung das OpenJDK der GPL.
Michael Borgwardt
2
Wenn Sie über Java sprechen, erhalten Sie -1 :( OpenJDK ist Open Source, aber die Implementierung auf Java.com ist BCL, wie oben und hier erwähnt . Erstens gibt es keine Änderung an unseren Richtlinien gegenüber Apache Harmony. OCTLA ist ein Programm, das kostenlos erlaubt Der Zugriff auf das TCK für OpenJDK-abgeleitete Implementierungen, die unter der GPL lizenziert sind und nur für diesen Zweck vorgesehen sind. Zweitens bleibt die Oracle-Implementierung (die Sie auf java.com oder java.oracle.com finden) nur unter der BCL-Lizenz.
Um