O Java é livre / de código aberto ou não?


33

Em 13 de novembro de 2006, a Sun lançou grande parte do Java como software livre e de código aberto (FOSS), sob os termos da GNU General Public License (GPL). Em 8 de maio de 2007, a Sun terminou o processo, disponibilizando todo o código principal do Java sob termos de distribuição de software livre / código aberto , além de uma pequena parte do código para a qual a Sun não detinha os direitos autorais.

O OpenJDK (Kit de Desenvolvimento Java Aberto) é uma implementação gratuita e de código aberto da linguagem de programação Java. É o resultado de um esforço que a Sun Microsystems iniciou em 2006. A implementação é licenciada sob a GNU GPL (GNU General Public License), com uma exceção de vinculação.

  • Por que ainda existem pessoas que dizem que o Java não é de código aberto ou livre como na liberdade de expressão?
  • Estou esquecendo de algo?
  • O Java ainda é proprietário?


Não sei exatamente se apenas a implementação da Sun JVM ou mesmo a tecnologia (bytecode) está protegida, mas todas as principais bibliotecas (java.xy) são gratuitas. Portanto, se alguém criar especificações e VMs de bytecode diferentes, use as bibliotecas existentes gratuitamente. Opa, o Google fez isso com o Dalvik!
ern0

Respostas:


37

O problema é que, para chamar algo de "Java", você precisa certificá-lo como compatível com as especificações Java.

Um dos pré-requisitos para obter essa certificação é executar a JVM por meio de um conjunto de testes - Java Technology Compatibility Kit (TCK) . Este conjunto de testes NÃO é de código aberto.

Portanto, você pode construir uma JVM que se comporte de maneira muito Java e seja completamente de código aberto, mas, se você quiser chamá-lo de "Java JVM", precisará comprar o conjunto de certificação sob uma licença de código não aberto. Para muitos advogados de código aberto, este é um completo não iniciador.


7
Essa é uma das razões pelas quais o Apache Harmony (que era uma implementação independente e bastante completa da JVM) foi interrompido . É realmente uma pena que a Sun / Oracle tenha agido dessa maneira (e ainda agindo dessa maneira). O que o Google fez ("quase copiou" o Java) também é provavelmente um resultado direto disso.
Joachim Sauer

1
Além disso, o conjunto de testes é o Java Platform TCK (também existem outros TCKs para tecnologias relacionadas a Java).
Joachim Sauer

4
Além disso, se você criar uma JVM bem-sucedida, a Oracle poderá processá-lo por violação de direitos autorais e violação de patente . Como eles processaram o Google pelo Android.
MarkJ

2
A lei de nomenclatura é relevante para chamar algo de código-fonte aberto? Não consigo criar meu próprio navegador e chamá-lo de firefox. Penso que, para a pergunta, a primeira coisa é entendê-lo ... o que significa o termo "Java", a especificação da linguagem, a implementação da jvm, ... e quem está chamando de não aberto ...
johannes

@johannes - bem-vindo ao lar de código aberto de pedantes e nitpickers! Para muitos na comunidade de código aberto, essas distinções são importantes. Testemunha Apaches abandonando o projeto Harmony. Para outras pessoas mais práticas, ter um ambiente Java Like que funcione é "suficientemente bom", como a Dalvik VM no coração de todos os dispositivos Android.
James Anderson

15

Você deveria ter lido esta resposta antes de ser removida sobre qual usar. A principal resposta afirmou:

Sobre o Java 7, observe que o JDK7 e o OpenJDK7 terão ( quase ) código base idêntico.

Observe o quase que destaquei.

Do artigo vinculado a essa resposta:

[…] Mas há algum código em que há substituições de código aberto onde ainda usamos o antigo código fonte fechado. Isso ocorre principalmente na rasterização de fontes e gráficos. O antigo código de rasterização de código fechado, apesar de onerado, teve mais de 10 anos de correção de bugs e ajustes finos, etc. boa qualidade como o código fechado existente.

Além disso, nas Perguntas frequentes sobre Java :

O Java Development Kit (JDK) é gratuito para download e uso para programação comercial, mas não para redistribuir .

Portanto, não é de código aberto . Apenas quase.

Além disso, mesmo que fosse completamente de código aberto, o modelo de desenvolvimento e a governança não. Essa não é uma preocupação de licenciamento.


1
"livre para baixar e usar, mas não redistribuir" significa que o software "não é software livre", mas ainda pode ser "código aberto". Código aberto implica simplesmente que você tem acesso ao código fonte. O software livre (conforme definido pela FSF e outros) requer o direito de redistribuir também.
um CVn

6
@ MichaelKjörling A definição OSI certamente requer direitos de redistribuição.
luiscubal

1

Em 1997, a Sun Microsystems procurou a ECMA para formalizar o Java, mas logo se retirou do processo. O padrão Java é realmente controlado pelo Java Community Process .

Embora em 2006, a maior parte do Java tenha sido lançada pela Sun Microsystems sob os termos da GPL, mas a implementação oficial atual é de propriedade da Oracle.

Como o Java não possui nenhuma padronização formal reconhecida pela ECMA, ISO / IEC, ANSI ou outra organização de padrões de terceiros, a implementação do Oracle é o padrão padrão. No entanto, existem implementações alternativas como o GNU Compiler para Java, o GNU Classpath, o IcedTea-Web etc.


7
-1: Desde o Java 7, a implementação de referência oficial é o OpenJDK da GPL.
Michael Borgwardt

2
Fale sobre Java, você receberá -1 :( O OpenJDK é de código aberto, mas a implementação no Java.com é BCL, como mencionado acima e aqui . Primeiro, não há alterações em nossa política versus o Apache Harmony. OCTLA é um programa que permite gratuitamente acesso ao TCK para implementações derivadas do OpenJDK licenciado sob a GPL e destina-se apenas a esse objetivo.Em segundo lugar, a implementação do Oracle (o que você encontra em java.com ou java.oracle.com) permanecerá apenas sob a licença BCL. para ser completamente claro, os restos de código fonte OpenJDK sob GPL.
Sajad Deyargaroo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.