Licencja Java i JVM

17

Czy licencja Java pozwala innym firmom tworzyć własne wersje języka Java, czy po prostu dokładnie go wdrażać? To samo pytanie o JVM.

Słyszałem o tym, że Sun pozwał Microsoft o zmianę ich wersji .NET implementacji Java i Java dla Google Android, ale nie mogę pojąć całej koncepcji jako całości.

Siergiej
źródło

Odpowiedzi:

25

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.

Jesper
źródło
2
Apache chciał TCK i licencjonowania za darmo, czego Sun odmówił (jak ma prawo). Microsoft IMO został przeniesiony przez Sun, ponieważ to, co zrobili, było zgodne ze specyfikacją języka, stworzyli bibliotekę na Javie, aby ułatwić komunikację z Windows. Po prostu słabe wyczucie czasu spowodowało, że Słońce wypychało Swinga w tym samym czasie. Sun wygrał w tamtym czasie z nastrojami anty-MS w polityce USA i wygrał.
jwenting 27.04.11
co rozumiesz przez „oficjalnie nazwać to java”? czy mogę zmodyfikować JVM i sprzedać go? czy mogę nazwać go „VM z obsługą Java”?
piotrek
1
@jwenting - to, co zrobiło MS, było całkowicie niezgodne ze specyfikacją Java. Nie była to tylko „biblioteka na wierzchu” (co byłoby w porządku), była to całkowicie niezgodna implementacja (nie przeszła testów zgodności firmy Sun, które wymagały użycia znaku handlowego Java). Bez względu na sytuację polityczną Sun zdecydowanie miał rację w tej sprawie.
mikera
@mikera, z wyjątkiem tego, że stwardnienie rozsiane nigdy nie nazwałoby tego Java z tego właśnie powodu ...
pobierał
1
Problem polegał na tym, że MS dodało metody do istniejących klas Java, powodując, że skompilowany kod nie był kompatybilny ze standardowymi klasami. To oczywiście tworzy blokadę, podczas gdy Java zakłada, że ​​powinna działać bez zmian na dowolnej platformie bez zmian.
Peter Kriens
3

Cóż, jak rozumiem, możesz wdrożyć specyfikację, którą lubisz - aby móc legalnie nazwać ją „Java”, musisz uzyskać licencję i przekazać zestaw zgodności, co najwyraźniej nie jest trywialne.

Android nie jest „java”, chociaż używa języka Java. Nawet nie próbuje przekazać TCK.

Joseph Ottinger
źródło