2013年9月6日星期五

JavaEE_020:JavaEE7 十大新特性

Java EE 7 于2013年6月12日正式发布,各个JSR如下所示(橘红色是新增的JSR,其它的是升级的JSR)。



以下介绍最引人注目的十大新特性:

1. WebSocket 1.0
WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。
WebSocket通信协议于2011年被IETF定为标准 RFC 6455,WebSocketAPI被W3C定为标准。
在WebSocket API中,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道,可以直接进行双向数据传送。
有了WebSocket以后,浏览器和服务器完全可以实现实时通信,大大提升了用户体验。
WebSocket API提供了@ServerEndpoint和@ClientEndpoint批注,只要在POJO类上加上@ServerEndpoint或@ClientEndpoint批注就表明这是WebSocket Server端或Client端。
除了@ServerEndpoint和@ClientEndpoint批注,还可以通过编程控制WebSocket的通信。
无论使用哪一种方式,都可以管理WebSocket的生命周期:比如连接什么时候Open,Close,消息什么时候收到,发生错误了怎么办,等等。

2. JSON 1.0
JSON(JavaScript Object Notation)是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读。
JSON经常用在REST WebService中,作为请求和响应的数据格式,因为它比XML要更“轻”一些。
Java EE 7 推出JSON 1.0后,那些原来使用第三方的JSON Processing API的开发人员现在可以不必再使用了。
JSON 1.0提供了两种使用方式:
(1)以“流”的方式“生产/消费”JSON,类似于StAX API for XML。
(2)以Java对象的方式“生产/消费”JSON,类似于DOM API for XML。

3. Batch 1.0
并行处理批量任务的API,原理图如下:


(1)一个Job是一个批处理任务,一个Job可能包括很多Steps。
(2)一个Step是由一系列独立的、有前后顺序的不同阶段(ItemReader、ItemProcessor、ItemWriter)构成的。
(3)JobOperator负责管理Job,比如启动/重启/停止一个Job,并且可以访问Job的所有相关信息,这些信息是保存在JobRepository中的。
(4)JobRepository保存所有Job/Step的信息,包括正在运行的和已经运行完成的。
(5)ItemReader代表一个Step中获取输入信息的抽象层,一次读取一个Item;ItemWriter代表一个Step中的输出信息的抽象层,一次可以批量处理多个Item;ItemProcessor代表处理一个Item的抽象层。

4. Concurrency 1.0
原来运行在Java SE中的Concurrency Utilities现在也可以运行在Java EE 中了,并且还增加了异步处理。

5. JMS 2.0
JMS2.0比1.0使用起来大大简化了,其中用到了CDI, Autocloseable等语言特性。
(1)新增了JMSContext interface。
(2)自动关闭(AutoCloseable)JMSContext,Connection,Session。
(3)运行时异常,而不是Checked异常。
(4)Method chaining on JMSProducer。
(5)简化发送消息。

6. @Transactional 和 @TransactionScoped
以前只能在EJB才有的事务特性,现在可以添加到任意一个POJO类上。

7. JAX-RS Client API
JAX-RS 2.0新增的特性如下:
(1)增加了Client API,可以和JAX-RS Providers很方便的集成。
如果没有Client API,开发人员要使用更低级的对象HttpUrlConnection去访问REST endpoint。
(2)支持异步调用,这样Client端和Server端的扩展能力都增强了。
(3)新增消息过滤器(Message Filters)和实体拦截器(Entity Interceptors)。
(4)为参数和返回值增加了验证规则,防止了无效的调用,降低服务端的压力。

8. Default Resources
为了能够开箱即用,添加了默认的Default JDBC DataSource, JMS ConnectionFactory资源。

9. 为POJO增加了更多的批注
比如,@JMSDestinationDefinition批注可以自动创建一个JMS Destination。

10. JSF 2.2: Faces Flow
JSF增加了Faces Flow,可以创建可重用的页面流模块。
很显然,这个特性是借鉴了其它开发框架,比如ADF TaskFlow,Spring Web Flow,Apache MyFaces CODI。
新增了@FlowScoped和@FlowDefinition批注。
Faces Flow可以打包成一个jar文件,供其它应用使用。

参考文献:
1.http://ued.sina.com.cn/?p=900
2.http://www.nodebeginner.org/index-zh-cn.html

没有评论: