Java EE 8 终于给出即将完成的迹象

阅读数:3810 2017 年 4 月 18 日

话题:JavaOracleDevOps语言 & 开发架构

Java EE 8 终于给出即将完成的迹象。Oracle 在近期的博客帖子中,更新了 Java 社区中 Java EE 8 的相关活动情况,其中给出了最新的发表时间表:

  • 公开评审(Public Review):2017 年 4 月或 5 月间;
  • 提议最终草案(Proposed Final Draft):2017 年六月;
  • 最终发布(Final Release):2017 年七月。

2017 年 2 月 21 日,Java EE 规范牵头人(spec lead)Linda DeMichielJSR 366(即 Java EE 8)的各位专家发了一封电子邮件,信中介绍了为最终完成 Java EE 8 的发布,作为规范牵头人是如何严格遵照时间表去完成 JSR 的。要点包括:

由于 Oracle 最近转让了实现“MVC 1.0”规范JSR 371)的牵头责任,因此在 Java EE 8 中将不包括该 JSR。

IBM 的 Java EE 架构师Kevin Sutter在给 DeMichiel 的一封电子邮件中,询问了 Servlet 4.0 需要ALPN这一问题将如何解决。ALPN(应用层协议协商,Application-Layer Protocol Negotiation)是一个 TLS 扩展,其中包括了“问候”消息交换中的协议协商,计划在 Java SE 9 中加入。DeMichiel 是这样回答的:

我知道有人曾提出将该支持(或至少是所需的 API)向后移植到 Java SE 8 中,只是我尚未看到任何书面内容。但是我们还是必须要去推动它,虽然当前的规范自提出后就被破坏了。

完成 Java EE 8 绝非易事。在过去的一年中,对于 Oracle 完成 Java EE 8 的承诺得到了广泛的关注。在 2013 年发布 Java EE 7 之后的一段时间内,Oracle 对 Java EE 8 规划的表现出了十足的热情。当年的 JavaOne 大会主题就定为“给 Java 一个未来”。Oracle 在 2013 年 11 月的博客帖子中是这样说的:

在发布 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 GlassFish Server 的商业支持做出了关键更改:

对于 Oracle GlassFish Server,Oracle 将不再进一步发布提供商业支持的主版本,即不再发布 Java EE 7 支持的 Oracle GlassFish Server 4.x。

Oracle 建议现有的 Oracle GlassFish Server 客户启动向 Oracle WebLogic Server 迁移的规划,这是一个技术和新许可的自然前向迁移路径。

Oracle 将继续提供对 GlassFish Server Open Source版的支持。

新的 Java EE 8 规范(JSR 366)于 2014 年 9 月构建,其中提出了最初的发布计划:

  • 组成专家组(Expert Group):2014 年第三季度;
  • 早期草案(Early Draft):2015 年第一季度;
  • 公开评审:2015 年第三季度;
  • 提议最终草案:2015 年第四季度;
  • 最终发布:2016 年第三季度。

但是从那时起,Oracle 的热情看上去有所减退。2015 年 6 月,Oracle 通过博客帖子更新了 Java 社区状态:

我们为自己的设置的目标是在 JavaOne 2016 旧金山大会前完成该项工作。虽然以 JavaOne 大会为平台发布重大事宜是我们所喜闻乐见的,但是在组建专家组中的各种延迟以及对我们规范牵头人在时间上的其它要求,已经导致发布日期稍向后延。我们会严格遵守对于 Java EE 平台工作透明度所做出的承诺。这里我们公开宣称,现在更改工作完成的目标时间期限为 2017 年上半年。

这一推迟直接导致前 Oracle 布道者Reza Rahman组建了一个称为“Java EE 守护者”社区组织,目标是让一切恢复正轨。正如 InfoQ 在 2016 年 6 月所报道的:

随着去年 Oracle 对 Java 布道者进行裁员,以及更早前宣布将暂时停止继续为 GlassFish Server 发布大型版本更新并对相关支持进行限制,一群 Java 标准的支持者开始以“Java EE 守护者”的身份自居,并通过一个章程宣告他们将努力拯救 Java EE。

Java EE 守护者是名副其实的 Java 权威人士,其成员包括“Java 之父”James Gosling、前任技术传教士 Reza Rahman,以及其他很多知名的 Java 技术人员。

几乎与此同时,另一个称为“MicroProfile”的新组织也成立了,其中集合了Red HatIBMTomitribePayara等企业,组织的章程是“借助 Java EE 技术创建独立于软件企业的微服务框架”,目标是在 2016 年 12 月发布一个最初的版本。

看上去,Java EE 守护者和 MicroProfile 社区的各项工作已引起了 Oracle 的关注。正如 2016 年 7 月 InfoWorld 所报道的:

退一步说,Oracle 意在使未来的 Java 提供云端支持。

有谣言称 Java EE 计划已被 Oracle 置于次要的位置,这引发了一场对 Oracle 管理组织 Java EE 不满的风暴,已有两个独立的组织考虑规划脱离 Oracle 推进 Java EE。Oracle 的高层对近期的批评声音给出了反馈,声称 Oracle 并非是想让 Java 萎缩,而是在考虑如何重启该平台以更好地适合企业的发展方向,尤其是在云端,

InfoQ 在 2016 年 8 月曾做出报道

在最近的一次采访中,Oracle 产品开发总裁 Thomas Kurian 宣布了Java EE 8 的一系列改进。此举被认为是为了平息近期的批评(比如那些来自Java EE 守护者的批评)和工作分歧(如MicroProfile)。目前的信息还很少,更多细节会在 JavaOne 2016 大会上公布。

Java 开发社区越来越担心 Java EE 的未来发展。此前,在今年 5 月,JCP 执行委员会曾考虑向 Oracle 发出正式申请,要求他们针对其 Java EE 承诺和计划作出公开答复。虽然在会议时记录了下来,但该申请未获批准。实际上,它变成了一份非正式的申请。之后大约一个月,Java EE 守护者们提交了一份change.org 请愿书,希望以此激励 Oracle,让他们不要把 Java EE 搞砸了。截至目前,签名者已达 3300 人。

在 2016 年 9 月,Oracle 给出了对JCP 执行委员会(Executive Committee)的工作策略。InfoQ 对此做出了报道

Anil Gaur 是 Oracle 集团负责 Java EE 和 WebLogic Server 的副总裁。他受邀在上一次的 JCP 执行委员会会议上发表了演讲,透露了有关 Java EE 未来发展的一些信息。他所传达的信息和Oracle 之前的说法一致:企业编程正在发生变化,Oracle 希望适应这种变化。然而,执行委员会成员后续的提问突出了 Oracle 计划里的缺陷。

大约六个周之前,在 Oracle 产品开发总裁 Thomas Kurian 就有关 Java EE 的话题接受了采访之后,我们很明显可以知道,Oracle 正在制定一个可以将 Java EE 带回正轨的方案。就是在这种背景下,8 月 9 日,Gaur 在最近的 JCP EC 会议上口头介绍了 Oracle 的 Java EE 策略。Gaur 在演讲中表示,Oracle 知道企业编程正在发生什么变化,采用分布式架构的应用程序越来越多。为此,Gaur 重点介绍了若干有望添加到 Java EE 8 的技术,以便为开发人员带来实实在在的好处。他提供了一个技术列表,听上去和 Kurian 在采访中所给出的列表非常相似:HTTP/2、配置、状态管理、最终一致性、多租户、O-Auth 和 OpenID 连接。不过,在提问环节,IBM 运行时技术项目负责人 Steve Wallin 对于在短时间内实现这样一项革命性的变革提出了质疑。同时,他申明,IBM 已经通过自己的努力在当前的 Java EE 平台上实现了快速云部署(可能是指Bluemix)。

不过,或许他没提供的信息才是最有趣的。在口头介绍结束后,执行委员会成员进行了提问,以期更好地了解 Oracle 的计划,其中有一个问题是,新版本什么时候可用。Gaur 承认,Java EE 8 的交付日期会“变化”,但没有提供更多的细节。不过,有迹象表明,部分新功能可能会基于 Java SE 9,那意味着需要延期很长的时间。

JavaOne 2016 大会披露出为添加对微服务和云端应用的支持,Java EE 8 的发布将进一步推迟到 2017 年底。计划中还包括将于一年后发布 Java EE 9。

也是在 JavaOne 2016 大会期间,据《Register》报道

为适合开发和部署中的盛行做法,目前有 10 个 Java EE 8 的项目正经历“主要改进”。这一修订工作将会影响到 Bean Validation、CDI、JAX-RS、JSF、JSON-P 和 Servlet。

Oracle 并未给出 Java EE 8 最近一次推迟的原因,但是很多人揪住了 Oracle 在今年的开发过程中擅离职守这一把柄。工程师和规范牵头人并未提供与 Java 社区其他成员的交流,他们的代码提交数也显著的下降。Oracle 被迫站出来发布一个声明,坚称它依然会负起 Java 的责任。

Java EE 8 将支持以下特性:分布式数据流、HTTP/2、键值对,使用 OAuth 和 OpenID Connect 系统管理密钥的一种标准方法、支持 Docker 在任一单个容器中打包一个以上物件(Artifact)、统一的事件模型、服务中事务和多租用管理的一致性。

为简化编码,将在 Java EE 9 中引入 Java SE 8 的 Lambda。在 Java EE 8 中没有实现的特性也将会滚动到 Java EE 9 中。

Oracle 正就社区成员想要在 Java EE 9 中看到的特性征求意见。

Oracle 继续鼓励开发人员对 JSR 工作做出贡献,为此他们发布了第二次“采纳 JSR”(Adopt-a-JSR)网络广播

Gartner

Gartner在 2016 年 11 月发布的一份报告中,预测了 Java EE 将会消亡。在报告的摘要中指出:

数字信息业务要求应用平台提供新的特性和能力。由于 Java EE 以及类似于 ASP.NET 这样的三层框架却没有赶上这趟车,应用负责人必须构建策略迁移到支持云端原生应用的候选平台。

该报告引发了一场争议,一些著名的 Java 技术领袖也参与其中,包括Reza RahmanKito MannJosh JuneauRyan Cuprak等人。

Java EE 软件企业

一些在企业自身的开发中使用了核心 Java EE 规范的软件厂商,例如Red HatPivotal等,被迫对 Java EE 8 的延期寻求变通方案。正如 InfoQ 在 2016 年 7 月所报道,在 Servlet 4.0 API 中将不会包括发布 Spring 5。当 Pivotal 的 Spring Data 项目负责人 Oliver Gierke接受 JAXenter 采访时,他是这样解释的:

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

Red Hat 的 JBoss EAP 平台架构师Jason Greene在 2016 年 10 月接受了 InfoQ 的采访。当被问及 Java EE 8 和 Java 9 的推迟是否会应用影响到WildFlyWildFly SwarmJBoss EAP的进一步开发时,他解释说:

WildFly 和 JBoss EAP 已经远远超越了 EE 标准,并在进行继续完善。当某一规范的开发出现延误后,我们会将精力专注于其他感兴趣的领域。话虽如此,我们依然希望整个标准能够跟上业界发展步伐,因此我们很乐意与 MicroProfile 开发领域的其他重量级选手进行合作。

相关资源

查看英文原文: Light at the End of the Long Tunnel for Java EE 8