Oracle JDK必须付费。 现在有什么选择?

关于Java相关性的争论仍在继续。 有人说它已经过时了,而更高级的语言正在取代它。 其他人则不同意,并指出每年都会选择Java作为核心技能的专家人数。 在任何情况下,都不能忽略这样一个事实,即现有的大多数软件都是用Java编写的,内部和外部的客户都在继续使用它。 在这种情况下,不应避免任何有关Java的新实现和全球新闻。 EPAM瑞士办事处的首席开发人员和软件架构师Peter Verhas分享了他对Oracle正在引入的变化以及它将如何影响我们的分析。

图片

Java最近发生了许多变化,看来语言的发展方式已经发生了根本变化。 最好以该语言显示新功能。 但是,这些并不是唯一的变化。 Oracle已对该公司发布的Java版本的支持模型和更新周期进行了重大更改。 所有这些都导致了由更改,错误信息和误解引起的大量混乱。 在本文中,我总结了用户在开始相信Java生态系统世界末日之前需要了解的所有有关创新的知识。

但是,首先需要澄清一些要点。

Oracle拥有Java,但Java不是Oracle。 Java源代码在GPLv2.0许可下发布,但类路径例外。 实际上,这意味着任何人都可以免费使用和更改该语言的源代码。 所有人(包括Oracle)都只能做一件事:更改代码并使用封闭源代码许可证进行发布。 这意味着从法律上讲,只有Oracle付费版本的Java商业用途是不可能的,即使Oracle的市场营销或商业利益需要它也是如此。 但是我仍然是技术专家。 为了解决这一问题,最好100%下载GPLv2许可证的文本并咨询律师。
Oracle不是唯一发布Java程序集并参与支持的公司;还有许多其他供应商。 当然,作为在语言和工具开发上投入最多的主要参与者,Oracle是最有声望的商业公司。

实际上,Oracle不仅拥有Java源代码的专有权。 开发过程,Java,API定义的更改-所有这些都在Java Community Process的手中,任何人都可以参与。 对于个人,这是完全免费的。 该小组的成员包括英特尔,IBM,瑞士信贷,软件公司,RedHat等公司。 他们决定Java的未来,而不是Oracle。 他们有自己的见解,正如我们可以看到,上一次JPMS最终版本的批准不太顺利。

在介绍之后,我们决定Oracle“拥有” Java,但不是Java,让我们看一下Oracle引入的开发支持过程和Java路线图的变化。

Java 9、10、11之后的更改


Oracle宣布从JDK11开始,Oracle JDK将不再免费。 首先,这一说法令人恐惧。 我们习惯于免费使用的东西将不再是这样。 实际上,“我们必须付出”几乎是合乎逻辑的。 但是,“几乎”这个小词站在那儿是有原因的。 如果我们使用了某些服务,而该服务已不再免费,则我们有两种选择:付费以供以后使用,或不再使用。 我们应该继续使用Oracle JDK还是可以切换到其他产品? 这是真正的问题。

要回答这个问题,您需要了解什么是Oracle JDK以及那里有哪些替代方案。 另一个重大变化涉及新版本的发布周期和长期支持(例如-长期支持或LTS)的概念。 首先,我们将讨论发布周期中的更改,然后讨论与Open JDK的混淆,最后讨论LTS结构。

发布周期


Java于1996年出现。 Java的前几个版本或多或少定期出现。

图片

但是,从图中可以看到Java 5.0的版本被延迟了。 Java 6也并不急于使用以前的版本,最大的突破是Java 6和Java 7之间。即使在那之后,新版本也很少发布。 Java 8获得了许多新功能,但要花两年的时间。 情况与Java 9相似,尽管Java 9进行了更大的更改,但被迫等待三年。

这种更新发布周期的问题在于,在不断发展的语言市场中竞争的语言本身不能足够快地呈现新功能。 如果开发模块化系统需要三年的时间,那么没有什么可以加快这一过程的。 但是,Java 9中出现的某些内容可能已经发布了。 但是,由于没有更早的发行版,他们根本无法获得开发人员的支持。 已经可用的功能应该等待该版本中开发最慢的功能出现。 这是经典级联开发模型的问题之一。

Oracle决定采用敏捷性,并每六个月制作一次版本。 从2017年9月开始,新Java版本有望在3月和9月发布。 如果某些功能在这些日期之前尚未准备就绪,它将被转移到下一个版本,但是其余的(准备就绪)将降到最新的版本。

通常,这是正常的。 一方面,Java社区和开发人员对此应该感到高兴。 另一方面,支持问题仍然存在。 谁可以支持这么多Java版本? 这就是引入长期支持(LTS)的原因,我们将在短期内讨论。 但是首先,您仍然需要弄清楚什么是Oracle JDK和OpenJDK。

什么曾经成为Oracle JDK和OpenJDK


在Java 9之前,存在Java Java程序集Oracle(Sun Microsystems)的二进制版本,大多数开发人员和公司都在生产环境中使用了该版本。 该二进制文件基于开放源Java,并进行了一些改进-其他公司工具,例如Java Flight Recorder,Java Mission Control和一些其他功能,例如应用程序类数据共享。

OpenJDK程序集是从开源Java创建的,没有任何改进。 那些想尝试Java属性,更改代码或者只是出于开放源代码坚持者的原因而使用Java程序集的人。 尽管您应该已经下载了源代码并为您自己进行了编译。

从Java 9开始,Oracle开始与Oracle JDK并行提供OpenJDK。 该公司还宣布希望缩小这两个版本的功能,性能和稳定性之间的差距,一旦出现这种情况,就让Oracle JDK付费。 那时,OpenJDK和Oracle JDK都可以从Oracle作为二进制程序集免费获得。 它们是Java 9和Java 10。

Java 11发行后,此操作停止了。 OpenJDK仍可免费使用,但用于生产系统的Oracle JDK已付费。 这两个版本之间不再有任何重大差异。 商业版本具有安装程序,而OpenJDK仅具有ZIP文件。 还有其他区别,但是Java用户不应该注意它们。 Oracle产品管理高级总监Donald Smith在本文中详细描述了差异。

而且,Oracle JDK对于其他甚至商业用户仍然免费。 Oracle JDK可免费用于:

•发展
•测试
•原型制作
•示范

您可以将OpenJDK用于其他目的,也可以向Oracle付费并使用Oracle JDK以获得支持。 支持很好。

长期支持版本


每六个月向新版本发行周期的过渡提出了一个支持问题。 为了自己的利益,没有人可以支持这么多版本。 如果您在2007年为您的应用程序安装了Java 6,那么您将在11年内获得Oracle的支持。 每六个月发布一次新版本意味着同时支持22个不同版本。 对于Oracle或决定支持所有版本的任何其他供应商而言,这将是沉重的负担。

Oracle的策略是每三年确定一个将获得长期支持的版本。 第一个这样的发行版是Java 11,它将一直支持到2026年。 在此期间,Java 17也将于2021年9月发布,它将根据当前计划获得长期的七年支持。 仅在下一个版本发布之前,将支持所有其他所谓的功能发布。

图片

请注意,支持仅适用于Oracle JDK,并且仅适用于为JDK和支持付费的人。 但是,如果您打算使用OpenJDK,不要以为您会受到命运的摆布。 对于我们来说,什么都没有改变。 如果您以前没有支付过支持费用,则无论如何都不会收到。 如果您已付款,则您将继续付款并获得此支持。

这是指向Oracle文章的链接,其中包含不同版本的寿命终止预测。

OpenJDK是否会有新版本? 当然可以 以前,Java开放源代码更新发布了修复的错误,尽管不能保证会发布它们。 发生这种情况仅仅是因为所有参与者都对此感兴趣。 将来,一切将保持不变,Java将收到新版本,新程序集。

我看到三种主要策略来选择最适合安装的Java版本:

  1. 向Oracle支付Oracle JDK和订阅费用,并使用具有长期支持的发行版。 这是使用Java基础结构的大型商业公司应满足的可靠性要求。
  2. 切换到OpenJDK,仅使用具有长期支持的发行版,并安装适用于OpenJDK的错误修复版本。 对于无法或不希望更改Java基础结构成本,过去可能没有商业支持并且相信从长远来看也可以做到的公司来说,这是一个可行的解决方案。
  3. 切换到OpenJDK并在以后的版本每出现六个月安装一次。 对于需要最新技术解决方案的公司来说,这是一个选择。

也可以通过在不同的机器上安装不同版本的Java来组合策略。 无论您选择什么,都可以从以下站点下载预构建的二进制版本:

  • 预先构建的OpenJDK的二进制版本采用openjdk.net
  • Oracle JDK可从java.oracle.com获得 。 在这里,您可以单击Java SE 11转到下载页面并转到下载按钮。 页面上有一个黄色的大警告,您还必须单击带有许可条款的协议,然后才能使用下载链接。 这次,最好是真正阅读条款,而不仅仅是自动同意。

尽管这不是二进制下载,但它与下载Oracle JDK密切相关-您也可以访问www.oracle.com/java/java-se-subscription.html,以在一个软件包中获得Oracle JDK和支持。 有关详细的定价信息,请访问www.oracle.com/us/corporate/pricing/price-lists/java-se-subscription-pricelist-5028356.pdf 。 为了不耐烦,我在此处复制了Oracle官方FAQ的价格信息:

桌面版的成本为每位用户每月2.50美元,如果有多级批量折扣,则价格会更低。 有关更多信息,请参见Oracle Java SE订阅定价表。

总结


你怎么办 使用OpenJDK还是购买Oracle JDK? 这是盈利能力的问题,以及Oracle支持对您的重要性。 如果您的企业无法负担Oracle JDK的支持,因为您是一家初创公司,一个有着出色产品创意的后起之秀,但口袋里有空,那么OpenJDK可以满足您的需求。 您不必为此付费。 此外,如果您是一家初创公司,那么在技术专家解决问题之前,您的服务器将无法正常工作几个小时,这对您来说并不重要。 如果您无法承受停机时间,则很可能您是在一家成熟的公司中工作,因此应使用Oracle JDK并注册以获得支持。 您还可以决定组合不同的模型,并安装在对业务不是很关键的内部应用程序上应可用的24/7全天候产品服务器,Oracle JDK和OpenJDK。

无论如何,您都可以继续使用Java。

关于作者:

Peter Verhas在EPAM瑞士办事处工作。 Peter为客户开发软件,为程序员提供培训并在公司内部提供指导。

您可以在TwitterLinkedInGitHub上关注Peter。 作者还拥有一个博客“ Java深入”: javax0.wordpress.com

Source: https://habr.com/ru/post/zh-CN430084/


All Articles