Licenza Java e JVM

17

La licenza Java consente ad altre società di creare le proprie versioni del linguaggio Java o semplicemente di implementarlo in modo accurato? Stessa domanda su JVM.

Ho sentito parlare di Sun che ha fatto causa a Microsoft per aver modificato la versione .NET dell'implementazione Java e Java per Google Android, ma non riesco a cogliere l'intero concetto come una totalità.

    
posta Sergey 26.04.2011 - 20:40
fonte

2 risposte

25

Puoi scrivere un compilatore che implementa la specifica del linguaggio Java o scrivere una JVM che implementa la specifica Java Virtual Machine, ma quando vuoi chiamarla ufficialmente "Java", devi dimostrare che è compatibile passando i test di il TCK (kit di compatibilità tecnologica) e pagare una licenza da Oracle.

Oracle non rende facile per le altre parti farlo, però. Apache ha la propria implementazione della JVM ( Apache Harmony ) ma in precedenza Sun, ora Oracle, non ha collaborato per rendere disponibile il TCK né consentire Apache ottiene una licenza, che ha portato a molti risentimenti tra Apache e Oracle.

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

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

    
risposta data 26.04.2011 - 23:09
fonte
3

Bene, a quanto ho capito, puoi implementare le specifiche come preferisci: per poterlo legittimamente chiamare "Java" devi avere la licenza e passare il kit di compatibilità, che apparentemente non è banale.

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

    
risposta data 26.04.2011 - 20:43
fonte

Leggi altre domande sui tag