从Oracle JDK到OpenJDK

时间:2019-02-17 11:34:56

标签: java java-8 java-11

因此,我目前正在Oracle JDK 8中构建我的所有应用程序。Oracle授权策略更新会影响JDK 8的使用还是仅对JDK 11 LTS的使用。假设如果我想在不久的将来迁移到JDK 11,是否可以选择GPL下的OpenJDK投入生产? BCL下的Oracle JDK和GPL下的OpenJDK的源代码是否有变化?我可以互换使用吗?

1 个答案:

答案 0 :(得分:7)

OpenJDK是一个含义很深的词。

所有这些都从源代码库OpenJDK开始。它已获得GPL许可(其本身就是一罐蠕虫,已经写了很多有关此书,完整的许可可以在on the OpenJDK licenses page中找到。

但这是来源。这里有“打包”资源的概念。这本身就是产品。也许,如果您年纪大了,您会记得人们会出售,将它们收缩包装在盒子中,一堆带有Linux发行版的CD或DVD,一本手册以及有权在一定时期内获得支持的权利。那是开源产品的包装。我可以在商店的包装盒中购买SuSE发行版,但这并不能使linux成为有偿产品。 OpenJDK(源存储库)没有什么不同。

OpenJDK(源代码回购)的包装可能包括,尽管所有这些都是可选组件:

  • 一些平台的二进制文件,例如“ for Windows”,“ for ARM Linux”等。
  • 用于安装此二进制文件的安装程序。
  • 与您交流更新的渠道,例如有关安全问题的更新;它可以像邮件新闻简报一样简单,也可以像不断运行的微型应用程序一样复杂,该应用程序检查更新并在更新出现时自动安装它们,以承诺维护apt-get回购。
  • 通过电话,邮件等方式提供的支持。此支持可能是针对VM本身(“如果给我超过4GB的内存,则我的VM崩溃”),以便对Java进行编程以尝试优化部署(“哪个垃圾收集器”效率更高?”)–仅拥有一个没有担保的论坛。

OpenJDK(源回购)有很多包装。与您最相关的:

  • Oracle OpenJDK,产品。它是免费和开源的(FOSS),不提供任何支持(像大多数FOSS一样),确实具有适用于许多平台的安装程序和二进制文件,由oracle生产,并且特别提供了 ONLY 支持渠道下一个主要的Java版本已发布。现在您可以下载Oracle OpenJDK11,并且将在数周内得到支持。因为OpenJDK12即将来临。您可能听说过“长期支持”版本。不适用于Oracle OpenJDK。在此产品中,“长期支持”根本不是问题。

  • Oracle OracleJDK。这是一种商业产品(尽管它确实具有预览/开发人员的版本,但是您不应过多地使用它,最好忽略它的存在),尤其是它为此提供了来自oracle的支持,并且它确实坚持长期支持。在几周内,当Oracle OracleJDK12发布时,仍然支持OracleJDK11。例如,如果出现安全问题,他们会对其进行补丁并发布更新,并确保所有自动更新程序都将其选中,并会向您发送有关邮件,等等。

    < / li>
  • 采用OpenJDK的JDK。 acceptopenJDK项目是一个开源志愿者活动。这些是免费的,它们确实致力于保持JDK的更新,特别是oracleJDK认为是“长期支持”的(因此,8和11),尽管值得注意的是,它们并未致力于 writing 补丁。如果那里有开放源代码安全性或错误修正补丁,他们将应用它并发布新版本,但是如果没有这样的补丁,那就不会有更新。

  • Amazon的coretto产品。这些是免费的;有一个8版本,就在本周发布了11。亚马逊致力于保持这些数据的最新性,并特别检查了这些数据是否可以在Amazon AWS实例上平稳运行。

我的建议是在各处都使用acceptopenjdk JDK,除非您在AWS东西上运行Java,否则您可能想选择coretto。如果您的老板想要安全的支持和SLA,请购买oracle的。

仅将Oracle的OpenJDK软件包用于早期访问版本;如果要在开发计算机上测试JDK12,则需要使用oracle openJDK。

从法律上讲,所有这些产品都有其自己的许可证。 AdoptOpenJDK,Coretto和Oracle OpenJDK几乎都是GPL + classpath异常,仅此而已,但是,我不是律师。