本节书摘来异步社区《java ee 7精粹》一书中的第1章,第1.2节,作者:【美】arun gupta,更多章节内容可以访问云栖社区“异步社区”公众号查看。
java ee 7平台是遵从jcp 2.9作为jsr 342而开发的。jcp过程对每一个jsr定义了以下三个主要可交付成果。
描述了被提议的组件及其功能的一份正式的文件。
对被提议的规范的二进制实现。参考实现有助于确保被提议的规范能以一个二进制形式实现,并为规范过程提供不断的反馈。
java ee的参考实现建立在glassfish社区中。
用于验证参考实现是否符合被提议的规范的一组测试。技术兼容包使多家厂商可以提供与被提议的规范兼容的实现。
java ee 7包还定义了跨平台需求的平台规范,还包含以下组件的规范。
jsr 45:支持其他语言调试1.0。
jsr 52:jsp标准标签库(jstl)1.2。
jsr 245:jsp2.3。
jsr 340:servlet3.1。
jsr 341:表达式语言3.1。
jsr 344:jsf2.2。
jsr 353:处理json的java api(json -p)1.0。
jsr 356:websocket的java api 1.0。
jsr 236:java ee并发工具包1.0。
jsr 250:java平台通用注解1.2。
jsr 316:托管bean1.0。
jsr 318:拦截器1.2。
jsr 322:jca1.7。
jsr 330:java依赖注入(di)1.0。
jsr 338:jpa2.1。
jsr 343:java消息服务(jms)2.0。
jsr 345:ejb(ejb)3.2。
jsr 346:java ee的上下文和依赖注入(cdi)。
1.2.6 平台1.1
jsr 349:bean验证1.1。
jsr 352:java平台批处理应用1.0。
jsr 907:jta1.2。
jsr 919:javamail1.5。
jsr 93:用于xml注册的java api(jaxr)1.0(可选的java ee 7)。
jsr 101:基于xml rpc的java api(jax-rpc)1.1(可选的java ee 7)。
jsr 109:实现企业web服务1.4。
jsr 181:java平台的web服务元数据包2.1。
jsr 222:jaxb 2.2。
jsr 224:jax-ws 2.2。
jsr 339:jax-rs 2.0。
jsr 77:j2ee管理api1.1。
jsr 88:java ee平台应用部署api1.2(java ee 7可选)。
jsr 115:jacc1.5。
jsr 196:jaspi 1.1。
不同的组件工作在一起提供了一个集成的技术栈,如图1-1所示。

不同的组件逻辑上可以分为后端层、中间层和web层三层。这仅仅是一种逻辑上的表述,可以根据应用程序的要求,将组件限定到一个不同的分层中。
jpa和jms用于提供基础服务,比如数据库访问和消息传送。jca用于连接遗留系统。batch用于执行非交互式的,面向批量的任务。
托管beans和ejb提供了一个简化的编程模型,该模型使用pojo来使用基础服务。
cdi、拦截器(interceptors),以及通用注解(common annotations)提供的概念适用于各种各样的组件,比如类型安全的依赖注入、使用拦截器和一组通用的注解访问横切面关注点。并发工具包(concurrency utilities)用于在管理线程中运行任务。jta启用的事务拦截器可用于任意的pojo。
cdi extensions允许以标准方式扩展平台,使其超越现有的能力。
web服务使用jax-rs和jax-ws、jsf、jsp和el表达式为web应用程序定义编程模型。web fragments天然地支持第三方web框架的自动注册。json提供了在web层解析和生成json数据结构的方法。websocket允许建立一条双向的、全双工通信的tcp连接通道。
bean验证(bean validation)提供了跨技术的约束声明和验证的标准方式。
java ee 7中删节了jax-rpc(jsr101)、jaxr(jsr93)、ejb实体bean(jsr153的一部分)和java ee application deployment(jsr88)。
java ee的参考实现建立在glassfish社区中,glassfish服务器开源版4.0提供了完全兼容java ee 7的、自由和开源的应用服务器。
在java ee 7之前,glassfish服务器开源版3.1.2.2提供了完全兼容java ee 6的应用服务器。它还提供具备了高可用性和带命令行界面(cli)的集中管理平台的集群、基于web的管理控制台和rest管理/监控api。
tck对所有java ee许可证的持有者有效,用于测试他们各自的实现。