JAVA EE 7都有哪些主要的实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA EE 7都有哪些主要的实现相关的知识,希望对你有一定的参考价值。
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方法被<securityconstraint>覆盖的规则。
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中注册的工厂。
参考技术A 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方法被<securityconstraint>覆盖的规则。
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中注册的工厂。
java ee环境搭建
下载安装Java EE SDK
版本:Java Platform,Enterprise Edition 7 SDK (with JDK 7u45)
下载页面:
http://www.oracle.com/technetwork/java/javaee/downloads/java-ee-7-sdk-with-jdk-u45-2066865.html
文件名:java_ee_sdk-7-jdk7-windows.exe
安装路径:D:\glassfish4
环境变量设置
JAVA_HOME=D:\glassfish4\jdk7
JRE_HOME=D:\glassfish4\jdk7\jre
Path +=D:\glassfish4\jdk7\bin
classpath=D:\glassfish4\jdk7\lib\dt.jar;D:\glassfish4\jdk7\lib\tools.jar
下载安装Apache Maven
版本:Apache Maven 3.0.5
下载页面:
http://maven.apache.org/download.cgi
下载链接:
http://mirrors.cnnic.cn/apache/maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.zip
文件名:apache-maven-3.0.5-bin.zip
安装路径:D:\apache-maven-3.0.5
环境变量设置
Path +=D:\apache-maven-3.0.5\bin
下载安装 Eclipse IDE for Java EE Developers
版本:Eclipse Kepler(4.3.1) SR1
下载页面:
http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/keplersr1
下载链接:
文件名:eclipse-jee-kepler-SR1-win32.zip
安装路径:D:\eclipse-jee-kepler-SR1-win32\eclipse
Eclipse工作目录:E:\workspace\eclipse-jee
下载安装Tomcat
版本:Tomcat 8.0.3
下载页面:http://tomcat.apache.org/download-80.cgi
下载链接:http://mirror.esocc.com/apache/tomcat/tomcat-8/v8.0.3/bin/apache-tomcat-8.0.3-windows-x86.zip
安装目录:E:\apache-tomcat-8.0.3
环境变量设置:
CATALINA_HOME=E:\apache-tomcat-8.0.3
例程演示 -The Echo WebSocket Sample Application
D:\glassfish4\samples下是用来演示 Java EE 7各种新特性的示例
将改文件夹复制到工作目录
E:\workspace\eclipse-jee\javaee7\samples
打开命令提示符窗口,进入到websocket echo例程目录
D:\glassfish4\samples\websocket\echo>
执行命令mvn cleancompile编译构建例程
命令成功执行后生成war包:E:\workspace\eclipse-jee\javaee7\samples\websocket\echo\target\websocket-echo.war
部署war包到tomcat:
将war文件websocket-echo.war拷贝到tomcat目录\webapps\ 下,即:E:\apache-tomcat-8.0.3\webapps
启动tomcat
执行BAT脚本:E:\apache-tomcat-8.0.3\bin\startup.bat
在浏览器(支持HTML5)打开前台页面:http://localhost:8080/websocket-echo
如下图所示:
点击 "Press me"按钮
浏览器将会通过WebSocket发送编辑框中的文本到后台Web Socket服务器,服务器收到后将会把文本
发回到浏览器,浏览器在页面下方显示收到的文本。
以上是关于JAVA EE 7都有哪些主要的实现的主要内容,如果未能解决你的问题,请参考以下文章