Java EE 6 Platform 草案包含了 Web Profile

  • Dio Synodinos
  • 宋玮

2009 年 2 月 3 日

话题:Java语言 & 开发架构

Java EE 6 Platform 规范的公共草案已经发布了,其将对公众评估和反馈保持开放,直到 2009 年 2 月 23 日为止。 或许这一 迟到的草案最引人注目的地方就是 Web Profile,这是 Java EE 平台历史上第一个 profile。

规范的领导者 Roberto Chinnici对这一 Web Profile 做了概述

经过深思熟虑,平台专家组选择中等版本的 Web Profile,接近我先前博文中所提到的选项 B。

所需的技术包括:

Servlet 3.0

JSP 2.2

EL 1.2

对其他语言的调试支持 (JSR-45) 1.0

JSTL 1.2

JSF 2.0

JSR-250 1.1

EJB 3.1 Lite

JTA 1.1

JPA 2.0

你可能注意到有些版本号与最新发布的 API(比如 EL 1.2)并不匹配。这是因为我们计划经由一个维护评估来改动相应技术的小版本号。当它们可用时我会提供更多细节。

Web Profile 的基本情况在草案中做了解释:

Web Profile 定位于现代 Web 应用的开发者。

至于“现代”这个词,我们主要是想强调这样一个事实:自从第一个 Servlet 规范问世以来,Web 应用世界已经有了长足的发展。不可避免的,许多用于创建即便是简单 Web 应用的技术也得到了跳跃式发展。实际上,今天很少有 Web 应用是直接用 servlet API 编写的:大多数应用都依赖于标准的或第三方框架和类库(通常是开源的),它们间接用到了 servlet 容器的服务。

除了管理 HTTP 交互,大多数 Web 应用在事务管理、安全和持久化领域有相当大的需求。有时,这种需求完全可以用 Java EE 平台的部分技术来解决,比如 Enterprise JavaBeans (EJB) 3.x 和 Java Persistence API,但是它们很少能由“普通(plain)” servlet 容器支持。通过合并这些 API,Web Profile 的目标是改善使用 Java 平台开发 Web 应用应该被考虑的基本技术栈。

定位为“现代”Web 应用就暗示着要提供相当完整的技术栈,包括标准 API、成品即可满足大级别 Web 应用需求的能力。更进一步,这一技术栈应该易于成长,以解决其余开发者的需求。

与走向完整性相反,另一方希望就限制 Web 容器内存占用的愿望做出平衡,这既包括物理方面也包括概念方面。从开发者学习 Web Profile 的观点来看,与一个功能更强大但是过于复杂累赘的 profile 相比,拥有一个小型的、功能集中的 profile 更有价值,而且技术之间重叠要尽量少。

在定义 Web Profile 过程中,我们努力在这两种需求之间寻找平衡。

在完整性方面,Web Profile 提供了一个完整的技术栈,其所具有的技术能够处理展现和状态管理(JavaServer Faces、JavaServer Pages)、核心 Web 容器功能(Servlet)、业务逻辑(Enterprise JavaBeans Lite)、事务(Java Transaction API)、持久化(Java Persistence API)以及更多。

至于简单性,它省去了很多企业后台 API,它们都是 Java EE 平台的一部分。它还依赖于 Servlet 规范中新的可插接特性(参见文档的第 8.2 节)以允许应用以最小的配置使用扩展了 servlet 容器的类库。例如,Java API for Restful Web Services(JAX-RS)是完整 Java EE 平台的一个标准的技术,但却不是 Web Profile 的一部分,它可以不用对应用的 Web.xml 描述符做出任何改变就被“插接”到 Web 容器中。

最终,值得提醒的是,Web Profile 产品发行可以不限于必须的技术,还可以发行更多的技术。因此在安装时可能要在不同配置之间做出选择,除了必须的核心,可以安装一些更丰富的扩展,或者完全自定义安装(“手动选择”安装)。

Roberto 还解释了为什么 JAX-RS 不是 Web Profile 一个必须的组件,因为专家组感到把它包含进来还为时过早。

缺少的其它东西还有 Web Beans,它在 Web Profile 和完整平台中都没有被列为必须组件:

Web Beans 在 Web Profile 和完整平台中都没有被列为必须组件。另一方面,在 EE.6.29 节提到了正在考虑列入的组件。就这一主题专家组恳请来自社区的反馈。

敏感读者还会注意到 Web Beans规范(目前是公共草案)就在昨天进行大量更新。Gavin King 的 博文记录了这些改变的详细内容,它们大多是由来自 JSR-316 专家组的反馈触发的。最大的变化之一是,“Web Beans”术语本身已经从规范中消失了。尽管这对有些人来说是一个打击,但是它确实有利于开发,因为这意味着 Web Beans 提供的功能与已确立的 Java EE“容器”和“组件”概念相合并。我认为最终的结果是一个更便于使用的、更好集成的、更易于学习的“Web Beans”、为整个 Java EE 平台提供的上下文支持和依赖注入。

Bean Validation 也没有被列为 Java EE 6 组件 JSR:

敏感的读者还会注意到JSR-303曾在公共评估版中出现,但却也未列入 Java EE 6 组件 JSR。这只是时间问题;平台专家组刚刚开始讨论是否将 JSR-303 包含进来,因此在平台规范的公共草案发布之时还未做出这一决定。我要指出的是,由 Emmanuel Bernard 领导的 EJSR-303 专家组在解决 JPA 和 JSF 的校验领域需求方面已经做了大量工作,因此我确信 JSR-303 终将被社区所接受。

草案可供下载并包含了 Java EE 6 规范和 Web Profile 规范。

关于社区对于该新规范的想法,在 java.net 上有一个关于此的投票。尽管投票的人为数不多,但结果显示该版本草案并没有激发起大家的兴趣

我喜欢它   12.1%

我认为主体规范缺少了重要 JSR   3%

我认为 web profile 规范缺少了重要 JSR   6%

由于一些其它原因我不喜欢它   6%

我还没有看过,但是打算看一下   9%

我还没有看过,而且不打算看   63.6%

从 InfoQ 的Enterprise Java主题下可以找到更多信息。

查看英文原文:Java EE 6 Platform Draft Published featuring the Web Profile

Java语言 & 开发架构