Java EE 8 停步不前:Java 社区能否扭转乾坤?

阅读数:3246 2016 年 7 月 12 日

话题:JavaOracle语言 & 开发架构

最近大家围绕 Oracle 对 Java EE 的承诺有很多顾虑。InfoQ 上个月通过一篇Java EE 守护者联盟的报道介绍了相关新闻。Pivotal公司 Spring Data 项目主管兼 JPA 2.1 专家组成员 Oliver Gierke 最近向 Jaxenter 提到Oracle 明显已经对 Java EE 8 失去兴趣,此外还介绍了这些情况可能对 Java 社区产生的影响。

Java EE 7 发布几个月后,Oracle 于 2013 年 11 月发布博客文章公布了有关 Java EE 8 的路线图:

在发布 Java EE 7 和 GlassFish Server Open Source Edition 4 之后,我们开始规划 Java EE 8 路线图,并通过 JavaOne Strategy 主题演讲进行了介绍。总结来说,我们的兴趣主要集中在改进对 HTML5 的支持、云计算,以及调查对 NoSQL 的支持等方面。对于大家想在 Java EE 8 中看到的改进,社区和客户为我们提供了一些很棒的反馈。

简单来说,Oracle 对 Java EE 的未来做出了承诺。Java EE 7 已正式发布,有关 Java EE 8 的规划工作也已开始。

在那之后,Oracle 在博客文章中所表现出的热情似乎彻底停摆了。Oracle 在 2015 年 6 月发布的博客文章向 Java 社区通告了有关 Java EE 8 路线图的最新近况:

我们为自己设立的目标是在 JavaOne San Francisco 2016 开始前完成相关工作。虽然我们都喜欢在 JavaOne 做出(并听到)一些大事情,但在启动专家组过程中遇到的各种延迟以及我们的规范管理者在时间方面遇到的其他要求导致发布日期需要略微延后。我们依然会在 Java EE 平台的开发过程中遵循有关透明度的承诺。因此公开宣布要将完成这一工作的目标时间正式推后至 2017 年上半年。

Java EE 7 发布两年后,Oracle 告诉 Java 社区他们还要再等等。在被问到有关 Java EE 8 的具体情况时,Gierke 说:

从全球视角来看,Java EE 8 基本上还在继续延续着 Java EE 7 那老生常谈的故事:继续执着于其他参与者已经逐渐不感兴趣的领域。在我看来,这是因为所有主要对手都已经开始将目光转向自家的云计算产品(Oracle 有 Oracle Cloud,Red Hat 有 OpenShift,IBM 有 Bluemix,当然 Pivotal 也有 Cloud Foundry)。

JSR 372JSR 378专家组成员Josh Juneau于 2016 年 4 月发布的博客文章中谈到了自己的看法。经过调查,Juneau 发现由非 Oracle 规范管理者所控制的 JSR 比 Oracle 的规范管理者所控制的 JSR 更活跃。JSR 372 的提交数量也有显著下降(见下图)。Juneau 认为 2015 年 10 月之后的大部分工作都是由 Java 社区,主要是Arjan Tijms完成的,此人是Bauke Scholtz的共同创始人兼开发主管,同时也是ZEEF的共同创始人兼 Web 应用程序专家。

InfoWorld特约编辑Paul Krill最近撰写的一篇文章中提到,James Gosling 发现 Oracle 的行事方式让人“非常不安”:

Oracle 恐怕不会继续为 EE 提供太多支持,而是转由社区合作提供... 将其“专有化”,通过“廉价汽车旅馆”的模式推行不规范的标准,“客户只需要办理入住手续,从不需要退房”。

Spring 5 和 Java EE

Krill 于 JavaOne 2010 期间发布的一篇关于 Java EE 座谈会的文章中介绍了有关 Spring 和 Java EE 的争论:

“我绝不会将 Spring 与 Java EE 6 混为一谈,因为重叠的地方太多了,”身为顾问、作者,以及演讲者的 Adam Bien 这样说。另外他还提到同时使用Spring和 Java EE 的注解会导致复杂的问题。

他说:“对于大部分项目,我的个人意见是将它们区分对待,使用 Spring 或 Java EE 6 都行。”然而开发者也可以在 EE 6 的基础上使用 Spring 工具,Bien 这样说到。

但是 Caucho Technology 的首席工程师 Reza Rahman 更担心这两种技术之间的竞争。“Java EE 需要 Spring,正如 Spring 也需要 Java EE,”Rahman 说。

大概六年后,原 Oracle Java EE 布道师,现任 CapTech Ventures 顾问的 Gierke 给出了与Rahman类似的看法:

据称 Spring 和 Java EE 之间的关系以竞争为最主要特点。然而如果仔细研究很快你就会发现,这两者之间曾经(并且目前依然)存在协同增效的作用,它们之间的关系不是非黑即白的,中间有很多灰色地带。

一方面,某些情况下 Spring 是以 Java EE 规范为基础构建而来的,因此如果没有 Servlet API,很难想象 Spring MVC 能发展成为目前这种形式。另一方面,框架始终都为最重要的规范提供了支持。

另外要注意,虽然 Spring 依赖 Servlet API,但最初发布的 Spring 5 并不包含新的 Servlet 4.0 API。对此 Gierke 解释说:

对我们来说,Java EE 8 中最重要的部分在于 Servlet 4.0 API 及其对 HTTP 2.0 的支持。某种程度上这是可以预见的,但在我们最终正式发布 Spring 5 之前一切都尚无定论,我们目前正在与最重要的 Servlet 容器实现者(Tomcat、Jetty、Undertow)密切合作,以确保能在第一时间使用他们提供的原生 API 实现对 HTTP 2.0 的支持。

Java 社区能扭转乾坤吗?

Oracle 于 2015 年 6 月发布的博客文章鼓励 Java 社区提供帮助:

鉴于目前的这些变化,你将有更多时间和机会参与其中。

我们会继续鼓励开发者追踪 JSR 并通过各种 JSR 邮件列表和维基,下载并尝试 Java EE 8 参考实现的早期版本等方式提供反馈。我们已经看到很多人不仅对 Java EE 8 的功能感兴趣,而且已经参与了进来。

然而 Krill 于 2015 年 9 月发布的文章称,InfoWorld 收到了来自 Oracle 前任高级雇员的邮件,邮件部分内容摘录如下:

Oracle 根本没兴趣为竞争对手做嫁衣,也不想共享自己的创新成果。

该公司正在逐渐抛弃 Java EE(Enterprise Edition),但并不希望别人继续完善 Java 或 Java EE,同时还在逐渐冷落 JCP(Java Community Process)。“他们抱有一种赢家通吃的心态,对合作根本没兴趣。”

这封邮件建议 JCP 成员向 Oracle 客户发送公开信,警告他们 Java 目前遭受的待遇。Oracle 绝对不会与任何“Java 基金会”进行合作,也不准备公开自己的知识产权。

在最近的一篇文章中,Juneau 解释了 Oracle 有必要推进 Jave EE 继续发展而不应放弃的重要原因:

很明显,为确保安全性并保证能继续使用目前的 API,这些技术需要继续发展和完善。如果有人只是简单地想要 Java EE 停步不前,这意味着所有部分或全部运用 Java EE 的应用程序和服务(可能是我们所熟知的互联网上的很多东西)都将受到影响,无法继续发展以符合当今技术和安全方面的要求。

Gierke 很高兴看到社区围绕 Java EE 8 做出的诸多举措,然而他也警告说:

我认为有一方面还没有引起大家足够重视,这个问题其实还挺危险:这个问题与我们到底能围绕 Java EE 聚集多少社区成员完全无关,但是由于许可方面的原因,对于 Oracle 所控制的 JSR 我们几乎束手无策。

除非愿意对 Oracle 采取一些法律行动,否则这个问题完全无解。我不确定是否有人愿意这样做,以前有人对 Google 这样做的结果大家都知道的。因此我觉得在不可行的情况下建议大家采取措施,这一点显得有些奇怪。

Java EE 守护者

在年初从 Oracle离职后,Rahman 成立了Java EE 守护者联盟,意在推动 Java EE 继续发展,尤其是:

  • 宣传 Java EE 8。
  • 为 Java EE 8 JSR 提供支持。
  • 游说 Oracle 履行有关 Java EE 8 的承诺。
  • 设法将停滞的 Oracle JSR 转手给其他供应商。

Java EE 守护者联盟提供的证据证明 Oracle 在 Java EE 8 的发展方面全无进展,并鼓励 Java 社区签署请愿书,该请愿书将递交给 Larry Ellison。InfoQ 之前发布的文章也针对这一话题展开了漫长的讨论。

作为对 Oracle 失去有关 Java EE 8 兴趣所做的总结,Gierke 表达了自己的想法:

如果这事的影响力不是那么深远或严重,大家可能会觉得目前的情况有些讽刺:Spring 堆栈以前被视作专有的,因为该技术的开发只得到一家公司的支持。在某些人乐观的想法看来,Java EE 堆栈始终都是完全开放,并且由社区驱动的。现在就因为一家公司失去了对 Java 的兴趣,整个 Java 世界天翻地覆了。

查看英文原文:Stagnation with Java EE 8: Can the Java Community Make a Difference?