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.
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.
quelle