Empacotar o OpenJDK com um aplicativo proprietário permitido pela GPL?


16

Atualmente, estou criando um videogame em Java que provavelmente será distribuído pelo Steam. Obviamente, muitos usuários do Steam não terão o Java já instalado neste caso. Se isso acontecer, eu posso ter um pequeno iniciador nativo que mostra um diálogo informativo informando ao usuário que eles precisam instalar o Java ou simplesmente agrupar meu próprio ambiente de tempo de execução Java (especificamente o OpenJDK 8) com o meu jogo. Meu jogo será de código fechado, no entanto, é baseado em um mecanismo de jogo de código aberto (licenciado pela BSD).

Eu olhei pela licença do OpenJDK. É um projeto da GPL, o que significa que qualquer item vinculado a ela também precisa ser da GPL. No entanto, eles também têm a exceção do caminho de classe. Não tenho certeza se a parte de vinculação se aplica porque meu código não está vinculando a ele mais do que seria com ou sem agrupá-lo. Até onde eu sei, a exceção do caminho de classe não cobre esse caso de uso.

Há uma pergunta semelhante no Stack Overflow , no entanto, que se refere à situação em que um aplicativo é desenvolvido com o OpenJDK, refiro-me à distribuição com o OpenJDK.


4
Você leu a licença do OpenJDK ou procurou perguntas semelhantes ? Esta pergunta é sobre tópicos porque se trata de licenciar seu próprio software: no entanto, compartilhar sua pesquisa atrairá melhores respostas.

Sim, eu tenho. Eu editei a pergunta para refletir isso.
— 10135 john01dav


Eu li essa pergunta e suas respostas. Não tenho certeza de como ele realmente se relaciona com essa questão, além de estar em um tópico semelhante.
— 101315 john01dav

Tem que ser OpenJDK? Alguns outros tempos de execução Java podem permitir a distribuição de seus tempos de execução binários sem adicionar termos GPL à sua distribuição. Veja, por exemplo, java.com/en/download/faq/distribution.xml
— Brandin

Respostas:


5

Essa é uma pergunta importante, especialmente quando você considera o fato de que a Oracle alterou seus contratos de licenciamento e distribuição começando com Java 9, 10 e 11.

JDK -> Java Development Kit.

Os JDKs não são uma distribuição de 'tempo de execução' - um JDK é uma distribuição de desenvolvedor que contém um tempo de execução como parte do pacote configurável. Os JDKs não são 'distribuídos livremente' pelo desenvolvedor, eles são licenciados para o desenvolvedor. Se você ler o EULA do seu JDK, verá que ele vem com restrições à redistribuição.

JRE -> Java Runtime Engine.

O tempo de execução é (quase sempre) gratuito para download e distribuição, desde que você adira ao EULA para o JRE.

JDK e JRE são licenciados e distribuídos separadamente e independentemente um do outro.

Finalmente, você precisa saber que geralmente também não é permitido distribuir 'partes' ou componentes de um JDK - isso significa que você não deve extrair o JRE do JDK instalado e distribuí-lo ou agrupá-lo separadamente.

A melhor prática é separar o desenvolvimento da implantação.

  • Você desenvolve em um JDK e implementa o projeto
  • A implementação depende de um JRE

-1

Pelo que li na licença, você pode livremente redistribuir o programa, até cobrar para distribuí-lo.

Mas, como tenho experiência pessoal em liberar um jogo Java (embora não seja pago), acho melhor dizer ao usuário que o Java Runtime Environment é necessário na fonte de distribuição (forneça um link para o download do Java) ou tenha o aplicativo dê ao usuário um erro.


2
Você pode dar algumas razões sobre por que deixar o download do usuário pode ser melhor?
— Ziggystar

3
Bem, eu já tenho (vários) JREs instalados; ter cada aplicativo agrupado em mais de 150 MB "apenas por precaução" me parece um pouco inútil. Além disso, ter um JRE específico do aplicativo leva a problemas como este: "meu JRE tem esses ajustes, por que não funciona no SEU aplicativo?" stackoverflow.com/a/21417887/19746
— Piskvor
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.