Java- und JVM-Lizenz

17

Ermöglicht die Java-Lizenz anderen Unternehmen, ihre eigenen Versionen der Java-Sprache zu erstellen oder diese nur korrekt zu implementieren? Gleiche Frage zu JVM.

Ich habe gehört, dass Sun Microsoft angeklagt hat, weil sie ihre .NET-Version der Java-Implementierung und Java für Google Android geändert haben, aber ich kann das gesamte Konzept einfach nicht verstehen.

Sergey
quelle

Antworten:

25

Sie können einen Compiler schreiben, der die Java-Sprachspezifikation implementiert, oder eine JVM, die die Java Virtual Machine-Spezifikation implementiert. Wenn Sie sie jedoch offiziell als "Java" bezeichnen möchten, müssen Sie die Kompatibilität nachweisen, indem Sie die Tests des TCK bestehen ( Technologie-Kompatibilitäts-Kit) und bezahlen Sie eine Lizenz von Oracle.

Oracle macht es jedoch anderen Parteien nicht leicht, dies zu tun. Apache hat eine eigene Implementierung der JVM ( Apache Harmony ), aber zuvor hat Sun, jetzt Oracle, weder an der Bereitstellung des TCK mitgearbeitet, noch Apache eine Lizenz zukommen lassen, was zu viel Ressentiments zwischen Apache und Oracle geführt hat.

Vor langer Zeit hatte Microsoft eine eigene Java-Version (die in der Tat "Java" hieß). Sie versuchten es zu ändern, um es Windows-spezifisch zu machen, was Sun natürlich nicht gefiel. Es gab einen Rechtsstreit, Microsoft verlor, beendete seine eigene Java-Version und schuf .NET, eine völlig andere Sache, die einfach so funktioniert wie Java ...

Die Klage über Android basiert überhaupt nicht darauf; Google sagt nicht, dass Android Java ist. In dieser Klage geht es um Patente; Oracle hat Patente für eine Reihe von Ideen und Konzepten in seiner eigenen JVM-Implementierung und behauptet, dass Google dieselben patentierten Ideen in Android verwendet, ohne eine Patentlizenz von Oracle zu erhalten.

Jesper
quelle
2
Apache wollte das TCK und die Lizenzierung kostenlos, was Sun ablehnte (wie es ihr Recht ist). Microsoft IMO wurde von Sun unterstützt, da das, was sie taten, der Sprachspezifikation entsprach. Sie erstellten eine Bibliothek auf Java, um die Schnittstelle mit Windows zu vereinfachen. Es war nur ein schlechtes Timing, als Sun zur gleichen Zeit Swing rausdrückte. Sun profitierte von der damaligen Anti-MS-Stimmung in der US-Politik und gewann.
Jwenting
Was meinst du mit 'offiziell als Java bezeichnen'? Kann ich den JVM modifizieren und verkaufen? Kann ich es 'VM mit Java-Unterstützung' nennen?
Piotrek
1
@jwenting - was MS tat, entsprach überhaupt nicht der Java-Spezifikation. Es war nicht nur eine "Library on top of" (was in Ordnung gewesen wäre), es war eine vollständig inkompatible Implementierung (es bestand nicht die Compliance-Tests von Sun, die für die Verwendung der Java-Marke erforderlich waren). Unabhängig von der politischen Situation hatte Sun in dieser Frage definitiv recht.
Mikera
@mikera außer, dass MS es aus
genau
1
Das Problem bestand darin, dass MS vorhandenen Java-Klassen Methoden hinzufügte, wodurch Code, der mit diesen kompiliert wurde, mit den Standardklassen inkompatibel wurde. Dies würde natürlich zu einem Lock-In führen, obwohl Java davon ausgeht, dass es auf jeder Plattform unverändert ausgeführt werden sollte.
Peter Kriens
3

Soweit ich weiß, können Sie die Spezifikation so implementieren, wie Sie möchten. Um sie legitim als "Java" bezeichnen zu können, müssen Sie das Kompatibilitätskit lizenzieren und weitergeben, was anscheinend nicht trivial ist.

Android ist nicht "Java", obwohl es die Java-Sprache verwendet. Es wird nicht einmal versucht, die TCK zu bestehen.

Joseph Ottinger
quelle