2.14 J2EE 1.3 中的变更
J2EE 1.3 规范通过新增企业级集成能力对 J2EE 平台进行了扩展。连接器 API(Connector API)支持与外部企业信息系统集成;规范现在强制要求提供 JMS 提供者;JAXP API 为 XML 文档处理提供支持;JAAS API 为连接器 API 提供安全支撑。EJB 规范新增要求支持基于 IIOP 协议的互操作性。
EJB 规范发生了重大变更:引入了全新的容器管理持久化模型,新增对消息驱动 Bean 的支持,以及对本地企业 Bean 的支持。
其他既有 J2EE API 也已同步更新,详情参见各 API 独立规范。最后,J2EE 1.3 要求支持 J2SE 1.3。
2.15 J2EE 1.4 中的变更
J2EE 1.4 的核心聚焦于对 Web 服务的支持。JAX-RPC 与 SAAJ API 提供了基础的 Web 服务互操作能力;J2EE Web 服务规范定义了提供和使用 Web 服务的 J2EE 应用的打包与部署要求;EJB 规范也得到扩展,支持通过无状态会话 Bean 实现 Web 服务;JAXR API 支持对注册中心与资源库的访问。
J2EE 1.4 还新增了多项 API:J2EE 管理 API 与 J2EE 部署 API 为 J2EE 产品提供了更完善的工具支持;JMX API 为 J2EE 管理 API 提供支撑;面向容器的 J2EE 授权契约为安全提供者提供了服务提供者接口(SPI)。
大量既有 J2EE API 在 J2EE 1.4 中得到增强。该版本基于 J2SE 1.4 构建;JSP 规范得到优化,简化了 Web 应用开发;连接器 API 新增对异步消息系统的集成支持,包括接入 JMS 提供者的能力。
本 J2EE 平台规范的变更还包括:支持独立于应用部署类库,以及将部署描述符的 DTD 转换为 XML Schema。
其他 J2EE API 同样有所增强,更多细节参见各引用规范。
2.16 Java EE 5 中的变更
从该版本起,平台启用新名称——Java Platform, Enterprise Edition,简称 Java EE。新名称去掉了易混淆的“2”,同时在简称中明确体现其 Java 平台属性。此前版本仍沿用旧名称“J2EE”。
Java EE 5 的核心目标是简化开发。为降低初学者及中小型应用开发者的开发门槛,该版本大量使用 J2SE 5.0 引入的 Java 注解。在多数场景下,注解可减少甚至免除对 Java EE 部署描述符的配置,大型应用同样能受益于注解带来的简化开发体验。
注解的核心用途之一是指定资源及其他依赖项向 Java EE 组件的注入。注入机制补充了原有的 JNDI 查找能力,为应用访问运行环境所需资源提供了更简洁的新模式;注入还可与部署描述符配合使用,允许部署人员自定义或覆盖应用源码中指定的资源配置。
更合理的默认行为与默认配置进一步提升了注解的使用效率,多数应用在多数场景下无需注解或部署描述符即可获得预期行为;若默认配置不满足需求,仅需通过简单注解即可指定所需行为或配置。
注解与优化默认配置的结合,大幅简化了基于企业级 JavaBean(EJB)技术的应用开发,以及 Web 服务的定义与开发。企业 Bean 的开发难度显著降低,借助 Web 服务元数据规范定义的注解,Web 服务开发也更为便捷。
Web 服务领域发展迅速,为提供最新支持,JAX-RPC 技术演进为 JAX-WS 技术,该技术大量使用 JAXB 实现 Java 对象与 XML 数据的绑定。JAX-WS 与 JAXB 均为本版本平台新增技术。
Java EE 5 的主要新增能力包括:简化 Web 应用开发的 JSTL 与 JSF 技术,以及由 EJB 3.0 专家组制定的 Java 持久化 API(JPA),该 API 极大简化了 Java 对象到数据库的映射。
次要新增能力包括用于 XML 解析的 StAX API。此前版本的多数 API 均完成了中小幅度的优化更新。
2.17 Java EE 6 中的变更
Java EE 6 延续了 Java EE 5“简化开发”的核心设计理念。
该版本的重大改进之一是引入上下文与依赖注入(CDI)技术,为“受管 Bean”提供统一的依赖注入与生命周期管理框架。
Java EE 6 受管 Bean 规范定义了 Java EE 各类受管对象的通用特性,覆盖从基础受管 Bean 到 EJB 组件的全范围。
本版本新增的 Bean 校验规范提供了受管对象校验能力,并与 Java 持久化 API 集成,可自动校验 JPA 实体。
Java EE 6 将 JAX-RS API 纳入平台必选技术,该 API 用于开发遵循表述性状态转移(REST)架构风格的 Web 服务。
Java EE 6 还推出了 Java EE Web 概要文件,这是 Java EE 平台首个全新的概要文件。
2.18 Java EE 7 中的变更
自诞生以来,Java EE 平台便通过基于容器的模型与资源访问抽象,帮助开发者摆脱通用基础设施开发工作。在近几个版本中,平台在大幅简化容器服务访问 API 的同时,拓展了服务覆盖范围。本版本继续深化简化方向,并将 Java EE 平台能力延伸至 Web 领域的新兴技术。
Java EE 7 平台原生支持 Web 领域最新标准,包括 WebSocket 与 JSON,为 Java EE 实现 HTML 5 支撑奠定基础;同时新增 JAX-RS 2.0 定义的现代化 HTTP 客户端 API。
Java EE 7 还新增批处理 API(Batch API)与并发工具 API:批处理 API 为批处理应用提供编程模型,以及任务调度与执行的运行时;并发工具 API 通过受管执行器服务、受管调度执行器服务、受管线程工厂与上下文服务提供异步处理能力。
Java EE 6 引入的 CDI 依赖注入机制在本版本得到增强,并被更多平台技术广泛使用;受管 Bean 模型进一步统一,消除了各类 Java EE 组件类在 CDI 注入与拦截器支持上的不一致性。EJB 引入的声明式事务能力通过 CDI 拦截器实现通用化,可供其他受管 Bean 使用;Bean 校验机制扩展至方法调用自动校验,同样通过 CDI 拦截器提供支持。
Java EE 7 延续了 Java EE 5、6 简化开发的理念,最具代表性的是全新改版并大幅简化的 JMS 2.0 API。简化开发同时包含简化配置:平台扩展了 Java EE 6 引入的资源定义能力,覆盖更多标准平台资源类型,并提供默认数据库与 JMS 连接工厂资源;同时优化了应用安全配置,新增安全权限描述符。此外,Java EE 7 将 Java EE 6 中标记为待移除的技术设为可选,包括 EJB 实体 Bean、JAX-RPC 1.1、JAXR 1.0 与 JSR-88 1.2,进一步精简平台。
最后,Java EE 7 为未来版本适配云环境奠定基础,相关特性包括资源定义元数据、优化的安全配置,以及通过 Java 持久化 API 支持数据库 schema 生成。
2.19 Java EE 8 中的变更
Java EE 8 延续 Java EE 7 对现代化 Web 应用的聚焦,并拓宽应用场景。该版本在 Java EE 7 引入的 JSON 处理 API(JSON-P)基础上,新增 JSON 绑定 API(JSON-B),实现 JSON 文本与 Java 对象的相互映射;JSON 处理 API 自身也完成更新,适配更多 JSON 标准。Servlet 迎来重大增强,新增对 HTTP/2 协议的支持;JAX-RS 新增对服务器推送事件(SSE)的支持,并基于 Java SE 8 新增的并发能力提供响应式客户端 API。全新的 Java EE 安全 API 为 Web 模块提供更强的认证与授权支持,同时新增身份存储访问 API。Bean 校验机制同步适配 Java SE 8 增强特性,并扩展校验对象范围。本版本中 CDI 虽通过引入引导 API 将适用范围拓展至 Java EE 之外,但也新增了事件处理增强与 Java SE 8 特性适配。
2.20 Jakarta EE 8 中的变更
Jakarta EE 8 是 Java EE 8 从 JCP 迁移至 Eclipse 基金会的版本,更多信息参见“规范对比”与“修订历史”附录。
2.21 Jakarta EE 9 中的变更
Jakarta EE 9 版本的目标是提供一套功能与 Jakarta EE 8 相近、但采用全新 jakarta.* 命名空间的规范体系。
此外,该版本移除了 Jakarta EE 8 中少量老旧、可选或已废弃的规范,以缩减 API 范围,降低新厂商接入生态的门槛,同时减轻这些旧 API 的实现、迁移与维护负担。
Jakarta EE 9 本质上是一个工具适配版本:
- 为工具厂商提供平台基础,用于开发和更新工具以适配新的
jakarta.*命名空间; - 为开发团队提供稳定目标,用于测试应用向新命名空间的迁移;
- 为运行时厂商提供测试依据,用于实现迁移兼容与 Jakarta EE 8 向后兼容的能力;
- 为 Jakarta EE 规范项目奠定创新基础,用于驱动 Jakarta EE 10 及后续版本的新特性研发。
2.22 Jakarta EE 9.1 中的变更
Jakarta EE 9.1 版本的目标是提供与 Jakarta EE 9 功能等效的规范集,并新增对 Java SE 11 运行时的支持。
该版本是基础版 Jakarta EE 9 的扩展,不涉及 API 更新,仅平台规范、Web 概要文件规范,以及对应的测试兼容套件(TCK)与兼容实现会受影响。
2.23 Jakarta EE 10 中的变更
Jakarta EE 10 移除对 Java SE 8 的支持,兼容 Java SE 11 及更高版本运行时;其测试兼容套件要求同时支持 Java SE 11 与 Java SE 17。
Jakarta EE 10 是 Jakarta EE 系列中首个包含大量组件规范重大与小幅更新的版本,不再局限于 javax 到 jakarta 包命名空间变更。
该版本还新增核心概要文件(Core Profile),适配微服务场景下常用的轻量化运行时环境。
2.24 Jakarta EE 11 中的变更
Jakarta EE 11 移除对 Java SE 11 的支持,兼容 Java SE 17 及更高版本运行时;其测试兼容套件要求同时支持 Java SE 17 与 Java SE 21。
Jakarta EE 11 从平台中移除以下技术:
- 受管 Bean(Managed Beans)
- 带附件的 SOAP(SOAP with Attachments)
- XML 绑定(XML Binding)
- XML Web 服务
由于最低支持 Java SE 版本升至 17,Java SE 17 中已移除的相关技术也同步从 Jakarta EE 平台中剔除,包括但不限于:
- 安全管理器及相关权限
- 扩展机制架构与可选包版本管理要求
Jakarta EE 11 为平台新增以下技术:
- Jakarta Data
