Oracle不再偏爱Java?

发表时间: 2019-04-23 17:01

在 Python、JavaScript 等一众编程语言崛起风靡之际,一代霸主 Java 风采虽不及当年,但仍横扫了各大编程语言排行榜,也依旧是各大企业级应用开发语言中的 NO.1。

TIOBE 2019 年 4 月编程语言 Top 5

不过,有不少网友发现,即使如此,Java 之于其母公司 Oracle,地位似乎日趋愈下。而这也并非空穴来风,种种现实表明,Oracle 正在从其内部逐步削弱 Java 品牌的存在。

红帽接管 OpenJDK 8 和 OpenJDK 11

追溯到 2014 年 3 月和 2018 年 9 月,Oracle 分别推出了 Java 的两个长期支持版本 JDK 8 和 JDK 11。

经历了多年的发展之后,Java 8 已成为开发者最常使用的 Java 版本。不过作为 Java 的掌控者 Oracle 也在此不久后,改变了使用 Java 的“游戏规则”:

  • JDK 8:自 2019 年 1 月起,Java SE 8 公开更新将不向没有商用许可证的业务、商用或生产用途提供;
  • JDK 11:新版 Oracle JDK 不可以用在数据处理、商业、产品、或者内部商业用途(需要购买 License),仅可免费用于开发、测试、原型、演示。

简而言之,开发者或企业想要使用 Java 8/11 中的 OracleJDK,要么付费,要么另选它法。在此情况之下,不少人被迫选择了开源且免费的 OpenJDK 版本,同时如阿里的 Dragonwell、亚马逊的 Corretto 等 OpenJDK 发行版也纷涌而至。

不过,使用 OpenJDK 也有一定的缺点,如它的源码并不完整、开发者需要经常升级等等,此外,Oracle 对 OpenJDK 的服务支持时长也有一定的期限,即维护时长到期后,Oracle 会直接放弃老版 OpenJDK 的 Bug 修复和安全更新。

近日,对于使用 OpenJDK 8 和 OpenJDK 11 的开发者和企业来说,有一件值得庆贺的事情。日前,全球知名的开源解决方案提供商红帽(Red Hat)于官网正式宣布,“在 Oracle 转型后,Red Hat 将成为 OpenJDK 8 和 OpenJDK 11 两个项目的管理者。随着这种角色转变,Red Hat 也将遵循曾领导 OpenJDK 6 和 OpenJDK 7 项目的道路,继续对 Java 社区进行支持。”

事实上,于 2014 年发布的 OpenJDK 8,Oracle 为其提供的五年支持已于今年初终止。红帽在此时能将 OpenJDK 8 和 OpenJDK 11 的项目接手过来,这意味着开发者可以继续免费使用该 OpenJDK 的支持服务直到 2023 年 6 月和 2024 年 10 月。此外,红帽也解释道,之所以不会维护 OpenJDK 9 或 OpenJDK 10,是因为这两个是短期支撑版本,只有半年的支持时间。

Oracle 要放弃 Java?

那么,Oracle 将 OpenJDK 的管理权转让,到底为哪般?

或许 Oracle 不仅是想放手 OpenJDK,更想放弃的应该是 Java。其实,早在 2015 年,就有媒体报道,Oracle 内部似乎正在针对 Java 实施“计划中的报废”战略:

一位负责 Java 的 Oracle 前高管发给 InfoWorld 的邮件中声称了解 Oracle 公司内部信息。其表示,Oracle 正在成为一家与 Salesforce 竞争的云公司。其不再对 Java 感兴趣,且 Oracle 不想给竞争对手更多资源,不想分享创新成果。Oracle 正在缩减对 Java EE (企业版)的投入,同时它也不希望别的公司接手 Java 或 Java EE,而且它正逐步将 JCP (Java Community Process) 打入冷宫。“WebLogic 的专利申请将会逐步完成,同时,也会推出一个专利的微服务平台。”WebLogic 是 Oracle 在2008年收购 BEA Systems 时得到的 Java 应用服务器。

虽然彼时的报道,听起来非常不可思议,但是两年后 Oracle 的举措进一步证实了这篇“计划中的报废”言论。

2017 年 9 月,Oracle 突然宣布将 Java EE 的支持和维护移交给 Eclipse Foundation,其中包括参考实现、技术兼容性工具包和“相关的项目说明文档”等等。随后,Eclipse 基金会更是为 Java EE 改名为 Jakarta EE。最终,这一事件的落地也标志着 Oracle 已决心减少对 Java 的控制。

再到如今主流的 OpenJDK 8 和 OpenJDK 11 的管理权已正式被交到了红帽手上,为此,来自 Ovum 基础设施解决方案的杰出分析师 Michael Azoff 也表示道:

当前领导和控制管理 Java 的是 Java SE 的所有者 Oracle。显然,Oracle 希望改变,虽然它拥有 Java SE ,但它已将 Java EE 交给 Eclipse Foundation,后者已将其重命名为 Jakarta EE。

Red Hat 是 OpenJDK 的重要贡献者,已经加强了 OpenJDK 8 和 OpenJDK 11 的管理,它将于 Oracle JDK 融合。我猜测的是,我们可以期待在未来几年内有关 Java 管理权移交的更多新闻,我相信 Red Hat 拥有一双安全的手来承担这一角色,它也更适合 Java 作为开源软件,Red Hat 是开源软件社区的领导者。

这样看来,如果说 Oracle 对 Java EE 管理权的移交是放弃 Java 的第一步,那么这次对 OpenJDK 8 和 OpenJDK 11 的放手,也仅会是 Oracle 从内部削弱 Java 品牌的第二步。

至于 Oracle 为何要这么做?

其实,站在 Oracle 的商业立场,也不难理解其做法。毕竟如今是 AI + 云的互联网时代,想要在新的环境中走的更快更远,必须减负前行。

此前,在今年 3 月,Oracle 也再次开启了全球范围内的新一轮的裁员,彼时 Oracle 执行副总裁 Don Johnson 也向全员发送了一封标题为“组织重组”的电子邮件。该邮件告知工作人员:将来公司的一切工作都将围绕 Oracle 云基础设施(Oracle Cloud Infrastructure,简称OCI)运营展开。

而且不仅 Oracle,如微软也将曾经中流砥柱的业务 Windows 进行了拆解与平衡、Apple 也为 iPhone、iPad 等硬件设备推出了系列软件服务、Google 也正在秘密研发支持全新计算平台的 Fuchsia 操作系统......

在新浪潮来临之际,所有的科技公司均是「同一个世界同一个梦想」。

OpenJDK 8 和 OpenJDK 11 的接任管理者,为什么是红帽?

不过作为开发者,当看到 Oracle 对 JavaEE 以及 OpenJDK 停止服务以及放手时,或多或少会对自己基于此平台及技术所开发的项目产生一定的担忧。

但从另一个角度上来看,红帽此时可以接管 OpenJDK,整体来说利大于弊。对此,Red Hat 中间件副总裁兼总经理 Mike Piech 也在发布的声明中直言,“Java 处于文艺复兴时期。它不断发展,成为新兴架构的关键组成部分。开发者渴望将 Java 带入下一代开发,而 Red Hat 通过参与 OpenJDK 项目,正在帮助引领 JDK 用户在现有环境中获得支持和创新的努力。Red Hat 仍然致力于 Java,并很高兴有机会帮助管理 OpenJDK 社区。”

其实,红帽和 OpenJDK 也早有渊源。自 2007 年起,红帽就一直活跃在 OpenJDK 社区中;2013 年,红帽担任 OpenJDK 6 社区的领导者;2015 年,红帽再次获得 OpenJDK 7 的管理权。

除此之外,红帽此次获得 OpenJDK 8 和 OpenJDK 11 的管理权也算实现了 Java 之父 James Gosling 的一点愿望了。

9 年前,Oracle 收购了大名鼎鼎的 Sun 公司,由此编程界的一哥 Java 也成为 Oracle 诸多重要业务中的一层。不过,彼时令人惊讶的是,Java 创始人 James Gosling 在 Sun 公司被 Oracle 收购之后不久便离职了,而其中缘由,James Gosling 曾在接受《eWeek》专访时道了不少,包括了薪酬不平等、Sun 高管职权被架空、权力结构问题等等,其中还有一点是,最初时候,他本人其实比较倾向于 IBM 将 Sun 公司收购而不是极具独裁性的 Oracle。如今 OpenJDK 8/11 被 IBM 以 340 亿美元收购的红帽接管 ,想必 James Gosling 也是乐意看到的。

红帽掌管了 OpenJDK,对开发者而言意味着什么?

事实上,对于 Red Hat 接管 OpenJDK 8 和 OpenJDK 11 项目,从新技术角度来看,并不能为 Java 社区带来根本性的改变。毕竟对于 Oracle 而言,想要添加新的或实验性的功能应该仅会针对 Java 的最新版本来,而不是回过头在旧版本上动刀。

基于此,Red Hat Java 平台团队的首席工程师 Andrew Haley 也曾表示过,在没有 Oracle 工程师支持的情况下,保持 Java 的更新对 Java 社区来说将是一个挑战,但同时这也是一个机遇。一个真正开放和透明的 OpenJDK 更新项目,将吸引更多开发者参与进来,让所有 Java 用户受益。

那么 Red Hat 在接管 OpenJDK 8 和 OpenJDK 11 项目维护之后,对开发者意味着什么?

根据官方报道,这意味开发者可以继续使用两个旧版本继续开发应用。

且去年 12 月份,红帽宣布为微软 Windows 环境提供 OpenJDK 的长期商用支持服务。此外,红帽对于 Java 的计划还包括在未来几周内在 Microsoft 安装程序中启动 OpenJDK 并分发 IcedTea-Web,这是 Java Web Start 工具的免费软件实现,用于从 Web 运行 Java 应用程序。IcedTea Web 将成为 Windows OpenJDK 发行版的一部分。与此同时,红帽还领导着 Shenandoah 的开发。作为一个高性能垃圾收集器,Shenandoah 现在已经是 OpenJDK 12 的一部分。

如今针对这一事件,Reddit 上的开发者也展开了激烈的讨论:

@rifeid:

这并不奇怪,Red Hat 已经是 OpenJDK 6(自 2013 年起)和 OpenJDK 7(自 2015 年起)的维护者。

然而,更有趣的是,有些人认为 Java 在一个大型企业的手中要比在那些并没有足够的资源去维护 OpenJDK 的中小型企业手中要好得多,此外,也有不少网友对此猜测,更多的 Java 版本维护将被移出 Oracle,可能转移到 Red Hat 或其他组织下。

@existentialwalri:与其说接管 OpenJDK 8 和 OpenJDK 11 项目的是 Red Hat,倒不如直接挑明说是 IBM。

@shevy-ruby:希望当前主流的编程语言不要掌握在几个大型私有企业的手中,但目前除了少数几种语言之外,趋势有很大的不同。

对此,你怎么看?

参考:

https://www.redhat.com/en/about/press-releases/leadership-openjdk-8-and-openjdk-11-transitions-red-hat

https://www.infoworld.com/article/2987529/insider-oracle-lost-interest-in-java.html

https://www.reddit.com/r/programming/comments/bebzy3/leadership_of_openjdk_8_and_openjdk_11/