Możesz napisać kompilator, który implementuje specyfikację języka Java lub napisać maszynę JVM, która implementuje specyfikację wirtualnej maszyny Java, ale jeśli oficjalnie chcesz nazwać ją „Java”, musisz udowodnić, że jest kompatybilna, przechodząc testy TCK ( zestaw kompatybilności technologii) i zapłać za licencję Oracle.
Oracle nie ułatwia tego jednak innym stronom. Apache ma własną implementację JVM ( Apache Harmony ), ale wcześniej Sun, teraz Oracle, nie współpracuje w udostępnianiu TCK ani nie pozwala Apache uzyskać licencji, co doprowadziło do dużej niechęci między Apache a Oracle.
Dawno temu Microsoft miał własną wersję Javy (która faktycznie nazywała się „Java”). Próbowali go zmienić, aby był specyficzny dla systemu Windows, czego Sun oczywiście nie lubił. Był proces, Microsoft przegrał, zrezygnował z własnej wersji Java i stworzył .NET, co jest zupełnie inną rzeczą, która po prostu działa tak, jak działa Java ...
Proces w sprawie Androida wcale nie jest na tym oparty; Google nie twierdzi, że Android to Java. Ten proces dotyczy patentów; Oracle ma patenty na wiele pomysłów i koncepcji we własnej implementacji JVM i twierdzi, że Google używa tych samych opatentowanych pomysłów na Androida bez uzyskiwania licencji patentowej od Oracle.