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.
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.
la source