如果我使用OpenJDK作为JVM,我是否需要打开我的源代码?[已关闭]

2022-09-01 16:42:22

随着目前关于Oracle的发展宣布打算对JVM的pro(或任何你称之为)版本收费,以及IBM宣布打算支持OpenJDK,对于大量的Java开发人员来说,事情变得相当复杂。我们在Java中有大量的工作,到目前为止,我们在选择许可条款方面没有任何问题。看来我们将不得不切换到OpenJDK,IBM将在那里提供支持。但是OpenJDK是GPL V2,据我所知,任何链接到GPL V2的代码都必须是GPL V2。我们还有一些JNI代码,它将变得更大。鉴于这些事实,这是否意味着如果我们使用OpenJDK来运行我们的软件,我们将不得不切换到GPL进行许可?毋庸置疑,这将打击我们的整个许可和商业模式设置。


答案 1

OpenJDK的许可证不是“GPL v2”,而是“GPL v2与类路径例外”。报价:

作为特殊的例外,此库的版权所有者允许您将此库与独立模块链接以生成可执行文件,而不考虑这些独立模块的许可条款,并根据您选择的条款复制和分发生成的可执行文件,前提是您还满足每个链接的独立模块, 该模块的许可证的条款和条件。独立模块是不是从该库派生或基于此库的模块。


答案 2

如果我使用OpenJDK作为JVM,我是否需要打开我的源代码?

绝对不行。

有许多商业的、闭源的Java应用程序使用基于OpenJDK的JVM。@Chris Lercher提到的“类路径例外”特别使这合法化。

顺便说一句,“Classpath例外”是由FSF的律师发明的,专门用于允许GNU Classpath库(Java SE库的无尘室重新实现)用于运行专有/闭源应用程序。因此,名称...

您需要担心的唯一情况是:

  • 在实现中使用 OpenJDK 代码库的闭源 JVM。
  • 包含 OpenJDK 类的已修改副本的闭源应用程序,但不包含修改的源代码。
  • 链接到某些未标记为类路径例外的 OpenJDK GPLv2 类的闭源应用程序。

在OpenJDK 11中,最后一个类别似乎由大量“测试”类组成,这些类无论如何都不包含在OpenJDK发行版中,以及您不应该(并且可能不能)链接到应用程序中的内部类。这些类很容易识别。在 OpenJDK 源代码树中搜索包含单词“GNU”而不是单词“Classpath”的 Java 源文件

值得注意的是,OpenJDK Java代码库中的很大一部分是具有宽松开源许可证的第三方代码。允许链接到这些类。

将OpenJDK与闭源捆绑在一起不是问题。GPL 允许您将 GPL 软件的二进制文件与闭源软件的二进制文件一起分发。


推荐