Licence Java et JVM

17

La licence Java permet-elle à d'autres sociétés de créer leurs propres versions du langage Java ou de simplement l'implémenter avec précision? Même question sur JVM.

J'ai entendu parler de Sun poursuivant Microsoft pour avoir changé leur version .NET de l'implémentation Java et Java pour Google Android, mais je ne peux tout simplement pas saisir le concept dans son ensemble.

Sergey
la source

Réponses:

25

Vous pouvez écrire un compilateur qui implémente la spécification du langage Java ou écrire une machine virtuelle Java qui implémente la spécification de la machine virtuelle Java, mais lorsque vous voulez officiellement l'appeler "Java", vous devez prouver qu'il est compatible en passant les tests du TCK ( kit de compatibilité technologique) et payer une licence d'Oracle.

Cependant, Oracle ne facilite pas la tâche des autres parties. Apache a sa propre implémentation de la JVM ( Apache Harmony ) mais auparavant Sun, maintenant Oracle, ne coopère pas pour rendre le TCK disponible ni laisser Apache obtenir une licence, ce qui a suscité beaucoup de ressentiment entre Apache et Oracle.

Il y a longtemps, Microsoft avait sa propre version de Java (qui s'appelait en effet "Java"). Ils ont essayé de le changer pour le rendre spécifique à Windows, ce que Sun n'a bien sûr pas aimé. Il y a eu un procès, Microsoft a perdu, a quitté sa propre version Java et a créé .NET, ce qui est complètement différent et qui fonctionne un peu comme le fonctionnement de Java ...

Le procès concernant Android n'est pas du tout basé sur cela; Google ne dit pas qu'Android est Java. Ce procès concerne les brevets; Oracle détient des brevets sur un certain nombre d'idées et de concepts dans sa propre implémentation JVM et prétend que Google utilise les mêmes idées brevetées dans Android sans obtenir une licence de brevet d'Oracle.

Jesper
la source
2
Apache voulait le TCK et les licences gratuitement, ce que Sun a refusé (comme c'est leur droit). Microsoft IMO a été traité par Sun car ce qu'ils faisaient était conforme aux spécifications linguistiques, ils ont créé une bibliothèque au-dessus de Java pour faciliter l'interfaçage avec Windows. C'était juste un mauvais timing que Sun poussait Swing en même temps. Sun a profité du sentiment anti-MS dans la politique américaine à l'époque et a gagné.
jwenting
qu'entendez-vous par «l'appeler officiellement java»? puis-je modifier le jvm et le vendre? puis-je l'appeler «VM avec support java»?
piotrek
1
@jwenting - ce que MS a fait n'était absolument pas conforme à la spécification Java. Ce n'était pas seulement une "bibliothèque par dessus" (ce qui aurait été bien), c'était une implémentation totalement incompatible (elle ne passait pas les tests de conformité de Sun, ce qui était obligatoire pour utiliser la marque Java). Quelle que soit la situation politique, Sun avait définitivement raison sur ce point.
mikera
@mikera sauf que MS ne l'a jamais appelé Java pour cette même raison ...
jwenting
1
Le problème était que MS a ajouté des méthodes aux classes Java existantes, rendant le code compilé contre elles incompatible avec les classes standard. Cela créerait bien sûr un verrouillage alors que la prémisse de Java est qu'il était censé fonctionner sans changement sur n'importe quelle plate-forme.
Peter Kriens
3

Eh bien, si je comprends bien, vous pouvez implémenter la spécification comme vous le souhaitez - pour pouvoir l'appeler légitimement "Java", vous devez obtenir une licence et passer le kit de compatibilité, ce qui n'est apparemment pas trivial.

Android n'est pas "java" bien qu'il utilise la langue java. Il n'essaie même pas de passer le TCK.

Joseph Ottinger
la source