@Rays
2017-04-17T09:29:29.000000Z
字数 6188
阅读 1969
Java
摘要: Java EE 8终于给出了即将完成的迹象。Oracle在近期的博客帖子中,更新了Java社区中Java EE 8的相关活动情况,其中给出了最新的发布时间表和更新的JSR活动。历经近四年的开发,Java EE 8的实现之路充满坎坷。
作者: Michael Redlich
正文:
Java EE 8终于给出即将完成的迹象。Oracle在近期的博客帖子中,更新了Java社区中Java EE 8的相关活动情况,其中给出了最新的发表时间表:
2017年2月21日,Java EE规范牵头人(spec lead)Linda DeMichiel给JSR 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月构建,其中提出了最初的发布计划:
但是从那时起,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 Hat、IBM、Tomitribe和Payara等企业,组织的章程是“借助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在2016年11月发布的一份报告中,预测了Java EE将会消亡。在报告的摘要中指出:
数字信息业务要求应用平台提供新的特性和能力。由于Java EE以及类似于ASP.NET这样的三层框架却没有赶上这趟车,应用负责人必须构建策略迁移到支持云端原生应用的候选平台。
该报告引发了一场争议,一些著名的Java技术领袖也参与其中,包括Reza Rahman、Kito Mann、Josh Juneau和Ryan Cuprak等人。
一些在企业自身的开发中使用了核心Java EE规范的软件厂商,例如Red Hat和Pivotal等,被迫对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的推迟是否会应用影响到WildFly、WildFly Swarm和JBoss EAP的进一步开发时,他解释说:
WildFly和JBoss EAP已经远远超越了EE标准,并在进行继续完善。当某一规范的开发出现延误后,我们会将精力专注于其他感兴趣的领域。话虽如此,我们依然希望整个标准能够跟上业界发展步伐,因此我们很乐意与MicroProfile开发领域的其他重量级选手进行合作。