Licenza Java e JVM


17

La licenza Java consente ad altre aziende di creare le proprie versioni del linguaggio Java o semplicemente implementarlo con precisione? Stessa domanda su JVM.

Ho sentito di Sun citare in giudizio Microsoft per aver modificato la versione .NET dell'implementazione Java e Java per Google Android, ma non riesco proprio a capire l'intero concetto come una totalità.

Risposte:


25

È possibile scrivere un compilatore che implementa la specifica del linguaggio Java o scrivere una JVM che implementa la specifica della macchina virtuale Java, ma quando si desidera chiamarlo ufficialmente "Java", è necessario dimostrare che è compatibile superando i test del TCK ( kit di compatibilità tecnologica) e pagare una licenza da Oracle.

Oracle, tuttavia, non lo rende facile per altre parti. Apache ha la propria implementazione di JVM ( Apache Harmony ) ma in precedenza Sun, ora Oracle, non sta collaborando per rendere disponibile il TCK né ha permesso ad Apache di ottenere una licenza, il che ha portato a molto risentimento tra Apache e Oracle.

Molto tempo fa Microsoft aveva la propria versione di Java (che in effetti si chiamava "Java"). Hanno provato a cambiarlo per renderlo specifico per Windows, che ovviamente a Sun non piaceva. C'è stata una causa legale, Microsoft ha perso, ha abbandonato la propria versione Java e ha creato .NET, che è una cosa completamente diversa che funziona in modo molto simile a come funziona Java ...

La causa su Android non si basa affatto su questo; Google non sta dicendo che Android sia Java. Quella causa riguarda i brevetti; Oracle ha brevetti su una serie di idee e concetti nella propria implementazione JVM e sostiene che Google sta usando le stesse idee brevettate su Android senza ottenere una licenza di brevetto da Oracle.


2
Apache voleva il TCK e le licenze gratis, che è ciò che Sun ha rifiutato (come è loro diritto). Microsoft IMO è stato ottimizzato da Sun in quanto ciò che hanno fatto era in linea con le specifiche del linguaggio, hanno creato una libreria su Java per facilitare l'interfacciamento con Windows. Era solo un pessimo tempismo che Sun stava spingendo fuori Swing allo stesso tempo. All'epoca Sun incassò il sentimento anti-MS nella politica americana e vinse.
jwenting

cosa intendi con 'chiamalo ufficialmente java'? posso modificare il jvm e venderlo? posso chiamarlo "VM con supporto Java"?
piotrek,

1
@jwenting: ciò che MS ha fatto non era completamente in linea con le specifiche Java. Non era solo una "libreria in cima a" (che sarebbe andata bene), era un'implementazione completamente incompatibile (non ha superato i test di conformità di Sun che era un requisito per utilizzare il marchio Java). Indipendentemente dalla situazione politica, Sun aveva decisamente ragione su quella.
Mikera,

@mikera tranne per il fatto che MS non l'ha mai chiamato Java proprio per questo motivo ...
jwenting

1
Il problema era che MS ha aggiunto metodi alle classi Java esistenti, rendendo il codice compilato contro di loro incompatibile con le classi standard. Questo ovviamente creerebbe un blocco mentre la premessa di Java è che avrebbe dovuto funzionare invariato su qualsiasi piattaforma invariata.
Peter Kriens,

3

Bene, a quanto ho capito, puoi implementare la specifica come preferisci - per essere in grado di chiamarla legittimamente "Java" devi ottenere la licenza e passare il kit di compatibilità, che apparentemente non è banale.

Android non è "java" sebbene utilizzi il linguaggio java. Non tenta nemmeno di passare il TCK.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.