1.4 Java EE 6特性

Java EE 6平台的最主要的目的就是通过提供Java EE平台中的各个不同组件的通用的功能来简化开发。通过更多的标注(Anotation)、更少的XML配置、更多的POJO和简化的打包,使开发人员能够得到更高的生产效率。Java EE 6平台包含了以下的新特性。

1. JAX-RS

RESTful Web服务是按照REST架构风格构建的Web服务,是比基于SOAP消息的Web Service简单的多的一种轻量级Web服务。JAX-RS(RESTful Web Services Java API)为在Java中构建RESTful Web服务提供了标准化API,它包括一组标注,以及相关的类和接口。POJO应用通过使用标注暴露Web资源,这个方法使得在Java中创建RESTful Web服务变得简单。JAX-RS 1.0技术规范定稿于2008年10月,包括了一个参考实现Jersey,Java EE 6包括了这个技术规范的最新版本JAX-RS 1.1,这个版本与Java EE 6中的新特性保持一致。

2. 托管Bean

JSF使用JavaBean来达到程序逻辑与视图分离的目的,称为托管Bean,其作用是在真正的业务逻辑Bean及UI组件之间搭起桥梁,在托管Bean中会调用业务逻辑Bean处理使用者的请求,或者是将业务处理结果放置其中,等待UI组件取出当中的值并显示结果给使用者。

3. 上下文和依赖注入

上下文和依赖注入(CDI)是新的Java EE 6规范,它不仅定义了功能强大、类型安全的依赖注入,而且还引入“上下文”,添加了作用域的概念。CDI是Java EE平台的Web层和企业层之间的一座桥梁,企业层通过如EJB和JPA等技术,对事务性资源提供了强有力的支持。例如,使用EJB和JPA,你可以轻松地构建与数据库交互的应用程序,在数据上提交或回滚事务,以及持久化数据。相比之下,Web层重点是展示。Web技术,如JSF和JSP,提供用户界面,显示它的内容,但Web技术没有集成处理事务资源的工具。通过CDI提供的服务,使Web层也支持事务,这样在Web应用程序中访问事务资源就更容易了。例如,CDI使得构建一个用JPA提供的持久化访问数据库的Java EE Web应用程序变得更容易了。

4. Bean验证规范

验证数据是应用程序生命周期中一个常见的任务,例如,在应用程序的表示层,你可能想验证用户在文本框中输入的字符数最多不超过20个,或者想验证用户在数字字段输入的字符只能是数字。开发人员在应用程序的各层中通常使用相同的验证逻辑,或者将验证逻辑放在数据模型中。Java EE架构中Bean验证(JSR 303)提供了一个标准的验证框架,在框架中相同的验证集可以在应用程序的所有层之间共享,因此使验证变得更简单了,减少了重复、错误和凌乱的现象。

5. JASPIC

Java容器认证服务提供者接口(Java Authentication Service Provider Interface for Containers,JASPIC)规范定义了服务提供者接口(Service Provider Interface,SPI),通过该接口实现消息认证机制的认证提供者可以集成到客户端或服务器端的容器或运行时刻库中。通过该接口集成的认证提供者对调用它们的容器发出的网络消息进行处理,对发出的消息进行变换以保证接收容器能对该消息通过其认证,同时为了保证接收方返回的回执也能被发送方认证,认证服务提供者除了对进入的消息进行认证以外,还要向发出方返回其身份以建立互信。容器认证服务提供者接口是Java EE 6平台新引入的功能,目前的版本为JASPIC 1.0。

6. EJB 3.1

EJB3.0本地客户端视图是基于普通旧式Java接口(POJI)调用本地业务接口的,本地接口定义了暴露给客户端的业务方法,并要求Bean类必须实现此接口。EJB3.1通过让本地业务接口成为可选组件简化了这个方法,没有本地业务接口的Bean暴露的是无接口视图。现在你不用编写独立的业务接口就可以获得相同的企业Bean功能,同时添加了单例会话Bean以及会话Bean的异步调用。

7. Servlet新特性

Servlet 3.0作为Java EE 6规范体系中一员,随着Java EE 6规范一起发布。该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化Web应用的开发和部署。

Servlet 3.0提供了异步处理模式。在接收到请求之后,Servlet线程可以将耗时的操作委派给另一个线程来完成,自己在不生成响应的情况下返回至容器。针对业务处理较耗时的情况,这将大大减少服务器资源的占用,并且提高并发处理速度。

Servlet 3.0新增了若干标注,用于简化Servlet、过滤器(Filter)和监听器(Listener)的声明,这使得web.xml部署描述文件从该版本开始不再是必选的了。另外,开发者可以通过插件的方式很方便地扩充已有Web应用的功能,而不需要修改原有的应用。

8. JavaServer Faces组件新特性

Java EE 6也使用了新的JSF 2.0标准。JavaServer Faces技术提供了一个服务端组件框架,简化了Java EE应用程序用户界面的开发,其中最显著的改进是页面制作,通过使用标准的JavaServer Faces视图声明语言(JavaServer Faces View Declaration Language,俗称Facelets)使得创建一个JSF页面更加容易。