《Java EE 7精粹》—— 1.3 Java EE 7有什么新功能

简介: 对EJB 2.1、EJB QL和基于JAX-RPC的Web服务端点和客户端视图的支持现在是可选的。 使用没有方法的消息监听器接口,增强了消息驱动Bean(MDB)的约束。MDB暴露所有公共方法作为消息监听器方法,这将允许为将来的更多的MDB自定义资源适配器。

本节书摘来异步社区《Java EE 7精粹》一书中的第1章,第1.3节,作者:【美】Arun Gupta,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.3 Java EE 7有什么新功能

为改善平台的功能性和丰富性,增加了一些新的规范。为使平台更简单、更易用,修订了几个现有的组件规范。

1.3.1 新的规范

新规范的主要功能描述如下。

1.Java API for WebSocket

通过声明方式注解一个POJO或者通过编程方式实现接口来定义一个WebSocket的客户端和服务器端点。
提供服务器特定的配置,比如在容器的URI空间中、端点支持的子协议中,以及应用程序所需的扩展中标识WebSocket端点的映射。
提供客户端特定的配置,比如提供自定义配置的算法。
启用在JDK或Web容器上打包和部署。
允许与现有的Java EE技术集成。

2.Java API for JSON Processing

流式API用于提供以流的方式解析和生成JSON。
对象模型API用于创建随机访问和树状结构来表述内存中的JSON数据。

3.Batch Applications for Java Platform

使用XML模式的作业规范语言(Job Specification Language)来描述批处理作业,定义了完整的作业执行顺序。
使用接口、抽象类和字段注释来定义批处理编程模型的功能。
提供了Chunked和Batchlet两种作业处理方式。

4.Concurrency Utilities for Java EE

提供了Java EE应用程序组件的并发能力,而不影响容器的完整性。
定义了托管对象:ManagedExecutorService、ManagedScheduledExecutorService、ContextService和ManagedThreadFactory。

1.3.2 更新的规范

更新后,规范的主要功能描述如下。

1.Java API for RESTful Web Services

提供了一个新的客户端API,用于访问网络资源和提供与JAX-RS的providers整合。
支持在客户端API和服务器API之间的异步处理。
定义了消息过滤器和实体拦截器作为定制客户端和服务器两端的请求/响应处理的扩展点。
引入QS因子作为服务器端新的内容协商。
字段、属性和使用@HeaderParam、@QueryParam等注解注入的参数可以使用声明式验证。资源类可以使用约束注解。

2.Java Message Service

为使JMS API更简单和易用,做出了多处修改。例如,Connection、Session和其他对象的close方法现在实现了java.lang.Autocloseable接口,可以在Java SE 7的try-with-resources语句中使用。增加了无需提供冗余参数创建会话的新方法。增加了getBody的新方法,允许应用程序直接从Message获取消息体,而无需首先将其转换为适当的子类型。
消息生产者现在可以指定一个在指定的时间间隔之后才被传送的消息。
增加了允许应用程序异步发送消息的发送方法。
JMS提供者现在必须设置JMSXDeliveryCount消息属性。

3.Expression Language

表达式语言(EL)是一个独立的规范,它可以使用ELProcessor在Java EE容器之外配置和使用。
表达式语言包含了lambda语法。现在,使用lambda表达式可以支持一套完整的集合操作,如map和过滤器。
除了通常的算术和比较操作符,还加入了新的操作(比如赋值运算符和字符串连接运算符),使表达式语言更具表现力。

4.Enterprise JavaBeans

对EJB 2.1、EJB QL和基于JAX-RPC的Web服务端点和客户端视图的支持现在是可选的。
使用没有方法的消息监听器接口,增强了消息驱动Bean(MDB)的约束。MDB暴露所有公共方法作为消息监听器方法,这将允许为将来的更多的MDB自定义资源适配器。
使用清晰的规则为EJB精简版容器定义了EJB API组来支持其他的API组,有助于定义如何将超越EJB精简版的EJB功能正式地加入到不支持完整功能的Java EE Profile的产品中。
EJB精简版包含了异步会话Bean调用和非持久性的EJB定时器服务。
增加了一个选项来禁用有状态会话Bean的钝化。

5.Servlets

定义了使用HttpUpgradeHandler升级现有的HTTP连接到不同的协议的标准机制。
为异步Servlet提供了非阻塞请求和响应处理。
定义了HTTP方法被覆盖的规则。

6.JavaServer Faces

Faces Flow封装了与应用程序定义的入口点和出口点相关的视图、页面。
资源库约束使开发人员能够以可重用的和可互换的方式,将Facelet模板应用到整个应用程序。
HTML5友好的标记允许几乎完全控制视图中每个元素的用户体验。
无状态视图意味着开发人员不再需要保存UIComponentstate,这允许应用程序使用JavaScript组件来代替JSF管理状态。

7.Java Persistence

可以通过使用javax.persistence.schema-generation.*属性来创建数据库和表。
非同步的持久化上下文意味着一个持久化上下文无需登记在一个事务中,这样的持久化上下文可以显式地加入事务。
Criteria API支持批量更新/删除。
可以使用FUNCTION调用预定义和用户定义的函数。
可以使用StoredProcedureQuery和@NamedStoredProcedureQuery调用存储过程。

8.Interceptors

使用InterceptorBinding关联拦截器是现在这个规范而不是CDI的一部分。
@AroundConstruct指定了一个拦截器方法来接收目标类构造子被调用时的回调。
通过增加构造子级别的拦截器,方法级的拦截器可以扩展到生命周期的回调。
使用拦截器绑定,优先级范围可以专用于拦截器排序。

9.Contexts and Dependency Injection

在Java EE中,为使用作用域注解的Bean和EJB自动启用CDI。
@Priority注解支持全局排序和启用拦截器、装饰器和Alternative。
@Vetoed注解简化了编程式的禁用类。

10.Bean Validation

验证约束可以应用到任意方法和构造子的参数和返回值。
增加和重新设计了CDI集成点。
当验证级联触发时,可以改变目标组。

11.Java Transaction

应用程序可以使用@Transactional,在类级别和方法级别以声明方式控制CDI管理的Bean和Java EE规范的托管Bean的事务边界,方法级别的注解会覆盖类级别定义的注解。
@TransactionScoped是一个新的CDI作用域,将Bean实例生命周期的作用域定义为当前的JTA事务。

12.JavaMail

@MailSessionDefinition和@MailSessionDefintions定义了使用JNDI注册的MailSession。

13.Java EE Connector Architecture

提供@AdministeredObjectDefinition、@AdministeredObjectDefintions、@Connector FactoryDefinition和@ConnectorFactoryDefinitions来定义连接器管理的对象和将在JNDI中注册的工厂。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
7月前
|
Java API
Java基础知识:什么是Java平台,包括Java SE,Java EE和Java ME?
Java基础知识:什么是Java平台,包括Java SE,Java EE和Java ME?
176 2
|
2天前
|
存储 缓存 前端开发
JavaEE初阶——初识EE(Java诞生背景,CPU详解)
带你从零入门JAVAEE初阶,Java的发展历程认识什么是cpu,cpu的工作原理,cpu是如何进行计算的,cpu的架构,指令集,cpu的核心,如何提升cpu的算力,cpu的指令,,cup的缓存,cpu的流水线
|
1月前
|
前端开发 Java 数据库连接
你不可不知道的JAVA EE 框架有哪些?
本文介绍了框架的基本概念及其在编程领域的应用,强调了软件框架作为通用、可复用的软件环境的重要性。文章分析了早期Java EE开发中使用JSP+Servlet技术的弊端,包括可维护性差和代码重用性低等问题,并阐述了使用框架的优势,如提高开发效率、增强代码规范性和可维护性及提升软件性能。最后,文中详细描述了几种主流的Java EE框架,包括Spring、Spring MVC、MyBatis、Hibernate和Struts 2,这些框架通过提供强大的功能和支持,显著提升了Java EE应用的开发效率和稳定性。
84 1
|
1月前
|
Java 数据库连接 API
Spring 框架的介绍(Java EE 学习笔记02)
Spring是一个由Rod Johnson开发的轻量级Java SE/EE一站式开源框架,旨在解决Java EE应用中的多种问题。它采用非侵入式设计,通过IoC和AOP技术简化了Java应用的开发流程,降低了组件间的耦合度,支持事务管理和多种框架的无缝集成,极大提升了开发效率和代码质量。Spring 5引入了响应式编程等新特性,进一步增强了框架的功能性和灵活性。
49 0
|
6月前
|
设计模式 监控 安全
屏幕监控软件的设计模式:深入理解Java EE
在Java EE环境中,屏幕监控软件采用生产者-消费者设计模式,`ScreenCaptureProducer`类捕获屏幕数据并放入队列,`ScreenCaptureConsumer`负责处理和提交。数据每5分钟通过定时任务和RESTful API自动提交至网站,提升管理效率。该方案支持实时监控、数据分析和高效的数据处理。
120 2
|
5月前
|
Java 应用服务中间件 API
如何安装与使用Java EE 8、Servlet 3.0及Apache Maven进行高效开发
【7月更文第1天】搭建高效Java EE 8开发环境,包括安装JDK、选择WildFly或Payara Server作为应用服务器,以及安装Apache Maven。使用Maven创建Servlet 3.0 Web项目,编写 HelloWorldServlet,打包部署到服务器,通过访问特定URL测试应用。这一流程助力开发者实现快速原型和大型项目开发。
125 0
|
7月前
|
存储 Java 对象存储
<Java EE 进阶> 3.Spring简单的读和取
<Java EE 进阶> 3.Spring简单的读和取
61 1
|
6月前
|
Java 数据库连接 Spring
杨校老师课堂之Java EE框架SSM所需jar包下载
杨校老师课堂之Java EE框架SSM所需jar包下载
74 0
|
6月前
|
存储 缓存 安全
【JAVA EE】详解单点登录
【JAVA EE】详解单点登录
67 0
|
7月前
|
存储 Java Linux
【Java EE】 文件IO的使用以及流操作
【Java EE】 文件IO的使用以及流操作