Oracle 的 Java EE 7 计划增加对云和 HTML5 的支持

  • Charles Humble
  • 张龙

2011 年 3 月 22 日

话题:JavaWeb框架云计算DevOps语言 & 开发架构

近日,Oracle 完成了Java Specification Request(JSR)342——Java EE 7 的 JSR。该 JSR 着重强调了新近涌现的 Web 技术、云计算,并继续简化用户的使用,包括彻底重写了 JMS API。此外,JPA 也引起了人们的关注,Oracle 计划重新振兴长久以来处于停滞状态的 JCACHE JSR。

为了使 Java EE 更加适合于云的要求,首先应该考虑的是多租(相同的程序可以运行在各种不同的环境下,从本地应用服务器到私有云和公共云)、应用版本化以及支持非关系(NRDBMS)的数据存储。

Jerome Dochez 在 2011 London QCon 的演讲(这是pdf)中提到,对于资源与状态的管理、应用间更好的隔离性以及常用的管理与监控接口还拥有更为迫切的需求。他进一步指出,包的改进可以让应用多个版本之间的共存成为可能。

然而,迁移到云上需要一整套完整的模块化解决方案,但在 Java SE 7 环境下这却是行不通的。由于 Java EE 7 与 Java SE 7 之间的耦合性,看起来要等到 Java EE 8 时才能实现完整的云版本的 Java EE,而 Java EE 8 大概要到 2013 年 10 月才会发布。该 JSR 会:

提供充分的模块化与版本化功能以涵盖常见的开发者使用场景,比如使用平台中已经包含的 API 的新版本。这项工作需要与即将发布的 Java SE JSR 通力协作才可以,这样就能跨越 SE 与 EE 平台提供一致性。

于 HTML5 和涌现的其他 Web 技术,JSR 表示:

我们希望 Java EE 7 平台能够为最近 Web 领域的发展提供最棒的支持,包括 HTML5 和 Web Sockets。

Dochez 还提到,我们应该有一个标准的 JSON API 和基于 NIO.2 的 Web 容器。

JAX-RS 2.0 JSR 草案(339)提到了一个客户端 API、MVC 支持、异步支持(受到Atmosphere的启发)、超媒体支持以及与 @Inject/CDI 更好的集成。

JSR 341 会将新版本(3.0)的表达式语言(EL)引入到 Java EE 中。考虑到用户所要求的一些新特性,该JSR试图在 Java EE 容器外简化 EL 的使用。另一个 JSR(344)包含了一个提案:将 JavaServer Faces 升级到 2.2 版。该 JSR 计划对 HTML5 表单、新的 Heading 与 Sectioning 内容模型和 Metadata 内容模型提供支持,这又一次强调了 HTML5 的重要性。JSF 2.2 很有可能独立于 Java EE 7 发布,该 JSR 的目标平台是 Java EE 6。最后在 Web 领域中,Servlet 规范会有一些小的改进,这是由JSR 340管理的。

从易用性的角度考虑,JMS API 被彻底改写了(其 JSR 是343)。同时还计划对 CDI 进行一些小改进(比如说增加一个 API 来配置 injector),对受管的 Bean 模型进行一些改善,去除了 Managed Beans、EJB、Servlets、JSF、CDI 和 JAX-RS 之间的不一致性。Pete Muir 撰写了一篇博文,谈到了关于 CDI 的计划,感兴趣的读者还可以下载其 JSR 提案(PDF 文档)。

此外,对 JPA 2.1 的增强之处也是非常多的,从对“fetch groups”和“fetch plans”的支持到对持久环境同步的更多控制。Java Persistence Query Language 与 criteria API 也有不少改进,包括对存储过程、ON 条件下的外连接、向下类型转换以及 JPQL 与 criteria 查询之间的映射支持。

最后,Emmanuel Bernard 考虑到了 Bean Validation 1.1,他撰写了一篇博文,提出了一些改进的建议与反馈。提案包括与其他规范(JAX-RS、JAXB、JPA 与 CDI)更好的集成以及方法级别的验证。

该 JSR 通过了本月 14 日最初的审阅投票阶段(这是结果)。虽然计划于明年底发布,但 Dochez 在其演讲中还是认为“很不错了”。

查看英文原文:Oracle's Java EE 7 Plans Include Adding Cloud and HTML5 Support to the Platform

JavaWeb框架云计算DevOps语言 & 开发架构