将OpenJDK与GPL允许的专有应用程序捆绑在一起?


16

我目前正在用Java制作视频游戏,很可能会通过Steam发行。当然,在这种情况下,许多Steam用户不会安装Java。如果发生这种情况,我可以使用一个小的本机启动器来显示提示性对话框,告诉用户他们需要安装Java,也可以将我自己的Java运行时环境(特别是OpenJDK 8)捆绑到我的游戏中。我的游戏将是封闭源代码,但是它基于开放源代码(BSD许可)游戏引擎。

我确实看过OpenJDK的许可证。这是一个GPL项目,这意味着链接到它的任何内容也必须是GPL。但是,它们也有classpath异常。我不确定链接部分是否适用,因为我的代码所链接的部分与捆绑或不捆绑的情况相同。据我所知,classpath异常不涵盖此用例。

在Stack Overflow上也有类似的问题,但是这是指使用OpenJDK开发应用程序的情况,我指的是使用OpenJDK进行分发。


4
您是否阅读过OpenJDK许可证或正在寻找类似的问题?这个问题很热门,因为它与您自己的软件的许可有关:但是,共享您的研究将吸引更好的答案。

是的,我有。我已经编辑了问题以反映这一点。
john01dav 2015年


我读了这个问题,它就是答案。除了处于类似的话题之外,我不确定它与这个问题的关系如何。
john01dav 2015年

它一定是OpenJDK吗?其他一些Java运行时可能允许分发其二进制运行时,而无需在您的分发中添加GPL术语。参见例如java.com/en/download/faq/distribution.xml
布兰登2015年

Answers:


5

这是一个重要的问题,尤其是考虑到Oracle已从Java 9、10和11开始更改了其许可和发行协议这一事实时。

JDK- > Java 开发工具包。

JDK不是“运行时”发行版-JDK是开发人员的发行版,恰好包含运行时作为捆绑包的一部分。JDK不是由开发人员“免费分发”的,它们已授权给开发人员。如果您阅读JDK的EULA,将会发现它带有重新分发的限制。

JRE- > Java 运行时引擎。

只要您遵守JRE的EULA,即可(几乎始终)免费下载和分发运行时程序。

JDK和JRE分别获得许可和分发,并且彼此独立。

最后,您需要知道通常也不允许您分发JDK的“部分”或组件–这意味着您不应从已安装的JDK中提取JRE并单独分发或捆绑。

最佳实践是将开发与部署分开。

  • 您在JDK上进行开发并部署项目
  • 部署依赖于JRE

-1

根据我在许可证中看到的内容,您可以自由地重新分发该程序,甚至可以付费分发该程序。

但是,由于我有发布Java游戏的个人经验(虽然未付费),所以我发现最好告诉用户发行源上需要Java Runtime Environment(为他们提供Java下载链接)或拥有该应用程序给用户一个错误。


2
您能否给出为什么让用户下载更好的一些原因?
ziggystar

3
好吧,我已经安装了(多个)JRE。对我来说,让每个应用程序捆绑150+ MB以防万一是没有意义的。另外,拥有特定于应用程序的JRE会导致以下问题:“我的JRE有这些调整,为什么它不能在您的应用程序中工作?” stackoverflow.com/a/21417887/19746
Piskvor于
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.