Licença Java e JVM

17

A licença Java permite que outras empresas criem suas próprias versões da linguagem Java ou apenas a implementem com precisão? A mesma pergunta sobre a JVM.

Ouvi falar da Sun processando a Microsoft por alterar sua versão .NET da implementação Java e Java para Google Android, mas simplesmente não consigo entender todo o conceito como uma totalidade.

Sergey
fonte

Respostas:

25

Você pode escrever um compilador que implementa a especificação da linguagem Java ou uma JVM que implementa a especificação da Java Virtual Machine, mas quando você oficialmente deseja chamá-la de "Java", deve provar que é compatível passando nos testes do TCK ( kit de compatibilidade de tecnologia) e pague por uma licença da Oracle.

A Oracle não facilita para outras partes fazer isso, no entanto. O Apache possui sua própria implementação da JVM ( Apache Harmony ), mas anteriormente a Sun, agora Oracle, não está cooperando na disponibilização do TCK nem permite que o Apache obtenha uma licença, o que levou a um grande ressentimento entre o Apache e o Oracle.

Há muito tempo, a Microsoft tinha sua própria versão do Java (que era realmente chamada de "Java"). Eles tentaram alterá-lo para torná-lo específico do Windows, o que a Sun obviamente não gostou. Houve um processo, a Microsoft perdeu, saiu da própria versão Java e criou o .NET, que é uma coisa completamente diferente que funciona muito parecido com o funcionamento do Java ...

O processo sobre o Android não é baseado nisso; O Google não está dizendo que o Android é Java. Esse processo é sobre patentes; A Oracle possui patentes em várias idéias e conceitos em sua própria implementação da JVM e alega que o Google está usando as mesmas idéias patenteadas no Android sem obter uma licença de patente da Oracle.

Jesper
fonte
2
O Apache queria o TCK e o licenciamento de graça, que foi o que a Sun recusou (como é o direito deles). O Microsoft IMO foi influenciado pela Sun, pois, de acordo com as especificações da linguagem, eles criaram uma biblioteca sobre Java para facilitar a interface com o Windows. Foi apenas um momento ruim que Sun estava empurrando Swing ao mesmo tempo. A Sun aproveitou o sentimento anti-MS na política dos EUA na época e venceu.
Jwenting
o que você quer dizer com 'oficialmente chamado java'? posso modificar o jvm e vendê-lo? posso chamá-lo de 'VM com suporte a java'?
Piotrek
1
@jwenting - o que a MS fez não estava completamente de acordo com as especificações Java. Não era apenas uma "biblioteca em cima de" (o que seria bom), era uma implementação completamente incompatível (não passava nos testes de conformidade da Sun, que era um requisito para usar a marca registrada Java). Independentemente da situação política, a Sun estava definitivamente certa.
Mikera #
@mikera exceto que MS nunca chamou-o Java, por isso mesmo ...
jwenting
1
O problema era que a MS adicionou métodos às classes Java existentes, tornando o código compilado contra elas incompatível com as classes padrão. Obviamente, isso criaria um bloqueio, enquanto a premissa do Java é que ele deveria ser executado inalterado em qualquer plataforma inalterada.
Peter Kriens
3

Bem, pelo que entendi, você pode implementar a especificação como quiser - para poder legitimamente chamá-la de "Java", é necessário licenciar e aprovar o kit de compatibilidade, o que aparentemente não é trivial.

O Android não é "java", embora use a linguagem java. Nem tenta passar no TCK.

Joseph Ottinger
fonte