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: