最近大家围绕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 372 和 JSR 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提供太多支持,而是转由社区合作提供...将其“专有化”,通过“廉价汽车旅馆”的模式推行不规范的标准,“客户只需要办理入住手续,从不需要退房”。
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的支持。
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这样做的结果大家都知道的。因此我觉得在不可行的情况下建议大家采取措施,这一点显得有些奇怪。
在年初从Oracle 离职 后,Rahman成立了 Java EE守护者联盟 ,意在推动Java EE继续发展,尤其是:
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?