所有 Java EE 规范的总结

Posted

技术标签:

【中文标题】所有 Java EE 规范的总结【英文标题】:A summary of all Java EE specifications 【发布时间】:2016-09-02 02:47:44 【问题描述】:

我正在寻找对所有 Java EE 技术堆栈的清晰描述。

我认为有很多像我这样的人在许多网站/教程中进行了搜索,但没有找到准确的列表,其中列出了 Java EE 中使用的技术以及它们的用途。

我希望有人能简单明了地澄清一下,对所有社区都有好处。

【问题讨论】:

【参考方案1】:

重要提示:虽然此答案仍然有效,但您可能还需要检查以下内容: • 列表Java EE 8 的技术列表;Jakarta EE 8 的技术列表;Jakarta EE 9 的技术列表。


Java EE 7 技术

您将在下面找到 Java EE 7 技术的规范列表。有关更多详细信息,请查看 JSR 页面:

Java EE 平台

JSR 342:Java 平台,企业版 7 (Java EE 7)

网络应用技术

JSR 356:WebSocket 的 Java API JSR 353:用于 JSON 处理的 Java API JSR 340: Java Servlet 3.1 JSR 344: JavaServer Faces 2.2 JSR 341: 表达式语言 3.0 JSR 245: JavaServer Pages 2.3 JSR 52:JavaServer Pages (JSTL) 1.2 标准标签库

企业应用技术

JSR 352:Java 平台的批处理应用程序 JSR 236:Java EE 1.0 的并发实用程序 JSR 346:Java 1.1 的上下文和依赖注入 JSR 330:Java 1.0 的依赖注入 JSR 349: Bean 验证 1.1 JSR 345: 企业 JavaBeans 3.2 JSR 318:拦截器 1.2 JSR 322:Java EE 连接器架构 1.7 JSR 338:Java 持久性 2.1 JSR 250:Java 平台 1.2 的通用注解 JSR 343:Java 消息服务 API 2.0 JSR 907:Java 事务 API (JTA) 1.2 JSR 919:JavaMail 1.5

网络服务技术

JSR 339:用于 RESTful Web 服务的 Java API (JAX-RS) 2.0 JSR 109:实现企业 Web 服务 1.3 JSR 224:基于 XML 的 Web 服务的 Java API (JAX-WS) 2.2 JSR 181:Java 平台的 Web 服务元数据 JSR 101:基于 XML 的 RPC (JAX-RPC) 1.1 的 Java API JSR 67:用于 XML 消息传递的 Java API 1.3 JSR 93:用于 XML 注册表的 Java API (JAXR) 1.0

管理和安全技术

JSR 196:容器 1.1 的 Java 身份验证服务提供者接口 JSR 115:容器 1.5 的 Java 授权合约 JSR 88:Java EE 应用程序部署 1.2(可选) JSR 77: J2EE 管理 1.1 JSR 45: 其他语言 1.0 的调试支持

Java SE 中与 Java EE 相关的规范

JSR 222:用于 XML 绑定 (JAXB) 2.2 的 Java 架构 JSR 206:用于 XML 处理的 Java API (JAXP) 1.3 JSR 221: Java 数据库连接 4.0 JSR 3:Java 管理扩展 (JMX) 2.0 JSR 925: JavaBeans 激活框架 (JAF) 1.1 JSR 173:XML 流 API (StAX) 1.0

更多详情,请参考此page。

Java EE 堆栈

正如 Arun Gupta 在其题为 Java EE 7 Essentials 的书中提到的,不同的组件协同工作以提供一个集成堆栈,如下所示:

所以,我们有以下内容:

不同的组件在逻辑上可以分为三层:后端层、中间层和Web层。这只是一种逻辑表示,可以根据应用程序的要求将组件限制在不同的层。

JPA 和 JMS 提供数据库访问和消息传递等基本服务。 JCA 允许连接到遗留系统。 Batch 用于执行非交互式、面向批量的任务。

托管 Bean 和 EJB 提供了一种简化的编程模型,使用 POJO 来使用基本服务。

CDI、拦截器和通用注释提供了适用于各种组件的概念,例如类型安全的依赖注入、使用拦截器解决横切关注点以及一组通用注释。并发实用程序可用于在托管线程中运行任务。 JTA 启用可应用于任何 POJO 的事务拦截器。

CDI 扩展允许您以标准方式将平台扩展到其现有功能之外。

使用 JAX-RS 和 JAX-WS、JSF、JSP 和 EL 的 Web 服务定义了 Web 应用程序的编程模型。 Web Fragments 允许以非常自然的方式自动注册第三方 Web 框架。 JSON 提供了一种在 Web 层中解析和生成 JSON 结构的方法。 WebSocket 允许通过单个 TCP 连接设置双向全双工通信通道。

Bean Validation 提供了一种标准方法来声明约束并跨不同技术验证它们。

每种技术的简介

要详细了解上面列出的主要技术,请查看Java EE 7 tutorial。可以在page 中找到对主要技术的一个很好的概述。只是在这里引用它:

企业 JavaBeans 技术

Enterprise JavaBeans (EJB) 组件或企业 bean 是一个主体 具有实现业务模块的字段和方法的代码 逻辑。您可以将企业 bean 视为构建块 可以单独使用或与其他企业bean一起使用来执行业务 Java EE 服务器上的逻辑。

企业 bean 是会话 bean 或消息驱动 bean。

会话 bean 代表与客户端的短暂对话。当客户端完成执行时,会话 bean 及其数据 走了。

消息驱动 bean 结合了会话 bean 和消息侦听器的特性,允许业务组件接收消息 异步。通常,这些是 Java 消息服务 (JMS) 消息。

在 Java EE 7 平台中,新的企业 bean 功能包括 以下:

EJB Lite 中的异步本地会话 bean

EJB Lite 中的非持久性计时器

Java EE 7 平台需要 Enterprise JavaBeans 3.2 和 拦截器 1.2。拦截器规范是 EJB 的一部分 规范。

Java Servlet 技术

Java Servlet 技术允许您定义特定于 HTTP 的 servlet 类。 servlet 类扩展了托管服务器的能力 通过请求-响应编程模型访问的应用程序。 尽管 servlet 可以响应任何类型的请求,但它们是 通常用于扩展 Web 服务器托管的应用程序。

在 Java EE 7 平台上,新的 Java Servlet 技术特性 包括以下内容:

非阻塞 I/O

HTTP协议升级

Java EE 7 平台需要 Servlet 3.1。

JavaServer Faces 技术

JavaServer Faces 技术是一种用户界面框架,用于构建 网络应用程序。 JavaServer Faces 技术的主要组成部分 如下:

一个 GUI 组件框架。

一种灵活的模型,用于以不同类型的 html 或不同的标记语言和技术呈现组件。一个Renderer 对象 生成标记以呈现组件并转换数据 存储在模型对象中的类型可以在视图中表示。

用于生成 HTML 4.01 标记的标准 RenderKit

以下功能支持 GUI 组件:

输入验证

事件处理

模型对象和组件之间的数据转换

托管模型对象创建

页面导航配置

表达式语言 (EL)

所有这些功能都可以使用标准 Java API 和 基于 XML 的配置文件。

在 Java EE 7 平台中,JavaServer Faces 技术的新特性 包括以下内容:

HTML5 友好的标记

人脸流动

资源库合约

Java EE 7 平台需要 JavaServer Faces 2.2 和 Expression 语言 3.0。

JavaServer Pages 技术

JavaServer Pages (JSP) 技术可以让你把 sn-ps 的 servlet 将代码直接写入基于文本的文档中。 JSP 页面是基于文本的 包含两种文本的文档:

静态数据,可以用任何基于文本的格式表示,例如 HTML 或 XML

JSP 元素,决定页面如何构建动态内容

有关 JSP 技术的信息,请参阅Java EE 5 教程 在http://docs.oracle.com/javaee/5/tutorial/doc/。

Java EE 7 平台需要 JavaServer Pages 2.3 以实现兼容性 与早期版本,但建议使用 Facelets 作为 新应用中的显示技术。

JavaServer Pages 标准标签库

JavaServer Pages 标准标记库 (JSTL) 封装了核心 许多 JSP 应用程序共有的功能。而不是混合标签 在您的 JSP 应用程序中来自众多供应商,您使用一个, 标准标签集。这种标准化允许您部署您的 任何支持 JSTL 并使之更强大的 JSP 容器上的应用程序 很可能标签的实现被优化了。

JSTL 有迭代器和条件标签,用于处理流控制、标签 用于操作 XML 文档、国际化标签、标签 使用 SQL 访问数据库,以及常用函数的标签。

Java EE 7 平台需要 JSTL 1.2。

Java 持久性 API

Java Persistence API (JPA) 是一个基于 Java 标准的解决方案,用于 坚持。持久性使用对象/关系映射方法 弥合面向对象模型和关系模型之间的鸿沟 数据库。 Java Persistence API 也可以在 Java SE 中使用 Java EE 环境之外的应用程序。 Java 持久性 包括以下几个方面:

Java 持久性 API

查询语言

对象/关系映射元数据

Java EE 7 平台需要 Java Persistence API 2.1。

Java 事务 API

Java 事务 API (JTA) 为 划定交易。 Java EE 架构提供了一个默认的 自动提交以处理事务提交和回滚。一辆汽车 提交意味着正在查看数据的任何其他应用程序将 在每次数据库读取或写入操作后查看更新的数据。 但是,如果您的应用程序执行两个单独的数据库访问 相互依赖的操作,您将需要使用 JTA API 划定整个事务(包括两个操作)的位置, 开始、回滚和提交。

Java EE 7 平台需要 Java Transaction API 1.2。

用于 RESTful Web 服务的 Java API

用于 RESTful Web 服务的 Java API (JAX-RS) 定义了用于 开发根据 Representational 构建的 Web 服务 状态转移 (REST) 架构风格。 JAX-RS 应用程序是一个 由打包为 servlet 的类组成的 Web 应用程序 WAR 文件以及所需的库。

Java EE 7 平台需要 JAX-RS 2.0。

托管 Bean

Managed Beans,轻量级容器管理对象 (POJO) 最低要求,支持一小组基本服务,例如 资源注入、生命周期回调和拦截器。管理 Beans 表示由 指定的托管 bean 的泛化 JavaServer Faces 技术,可在 Java EE 中的任何位置使用 应用程序,而不仅仅是在 Web 模块中。

Managed Beans 规范是 Java EE 7 平台的一部分 规范(JSR 342)。 Java EE 7 平台需要托管 Bean 1.0.

Java EE 的上下文和依赖注入

Java EE (CDI) 的上下文和依赖注入定义了一组 由 Java EE 容器提供的上下文服务,使操作变得简单 供开发人员使用企业 bean 和 JavaServer Faces Web 应用程序中的技术。设计用于有状态的 对象,CDI 也有很多更广泛的用途,让开发人员可以很好地 处理将不同类型的组件集成到一个 松耦合但类型安全的方式。

Java EE 7 平台需要 CDI 1.1。

Java 的依赖注入

Java 的依赖注入定义了一组标准的注解 (和一个接口)用于可注入类。

在 Java EE 平台中,CDI 提供了对 Dependency 的支持 注射。具体来说,您只能在 支持 CDI 的应用程序。

Java EE 7 平台需要 Java 1.0 的依赖注入。

Bean 验证

Bean Validation 规范定义了一个元数据模型和 API 验证 JavaBeans 组件中的数据。而不是分发 在多个层上验证数据,例如浏览器和 服务器端,您可以在一个地方定义验证约束 并在不同的层共享它们。

Java EE 7 平台需要 Bean Validation 1.1。

Java 消息服务 API

Java 消息服务 (JMS) API 是一种消息标准,它允许 用于创建、发送、接收和读取的 Java EE 应用程序组件 消息。它支持松散的分布式通信 耦合、可靠和异步。

在平台上,JMS 的新特性包括:

新的简化 API 为以前的 API 提供了更简单的替代方案。此 API 包含一个 JMSContext 对象,该对象结合了 Connection 和 Session 的函数。

所有带有 close 方法的对象都实现了java.lang.Autocloseable 接口,以便它们可以在 Java 中使用 SE 7 try-with-resources 语句。

Java EE 7 平台需要 JMS 2.0。

Java EE 连接器架构

工具供应商和系统使用 Java EE 连接器架构 集成商创建支持访问的资源适配器 可插入任何 Java EE 的企业信息系统 产品。资源适配器是允许 Java EE 应用程序组件访问底层并与之交互 EIS 的资源管理器。因为资源适配器特定于 它的资源管理器,通常存在不同的资源适配器 适用于每种类型的数据库或企业信息系统。

Java EE 连接器架构还提供了一个 面向性能、安全、可扩展和基于消息的 基于 Java EE 平台的 Web 服务与 可以是同步或异步的现有 EIS。现存的 通过 Java EE 连接器集成的应用程序和 EIS Java EE 平台中的体系结构可以公开为基于 XML 的 Web 使用 JAX-WS 和 Java EE 组件模型提供服务。因此 JAX-WS 和 Java EE 连接器架构是 企业应用集成 (EAI) 和端到端业务 整合。

Java EE 7 平台需要 Java EE 连接器架构 1.7。

JavaMail API

Java EE 应用程序使用 JavaMail API 发送电子邮件通知。 JavaMail API 有两部分:

应用程序组件用来发送邮件的应用程序级接口

服务提供者接口

Java EE 平台包括带有服务提供者的 JavaMail API 允许应用程序组件发送 Internet 邮件。

Java EE 7 平台需要 JavaMail 1.5。

容器的 Java 授权合约

容器的 Java 授权合同 (JACC) 规范 定义 Java EE 应用程序服务器和 授权策略提供者。所有 Java EE 容器都支持这个 合同。

JACC 规范定义了java.security.Permission 类 满足 Java EE 授权模型。该规范定义了 将容器访问决策绑定到实例上的操作 这些权限类。它定义了策略提供者的语义 使用新的权限类来处理授权 Java EE平台的需求,包括定义和使用 角色。

Java EE 7 平台需要 JACC 1.5。

容器的Java认证服务提供者接口

容器的 Java 身份验证服务提供者接口 (JASPIC) 规范定义了一个服务提供者接口 (SPI) 哪些认证提供者实现了消息认证 机制可以集成在客户端或服务器消息处理中 容器或运行时。通过集成的身份验证提供程序 这个接口对他们提供给他们的网络消息进行操作 调用容器。身份验证提供程序转换传出 消息,以便每个消息的来源都可以通过以下方式进行身份验证 接收容器,消息的接收者可以是 由消息发送者验证。身份验证提供程序 验证每条传入消息并返回到它们的调用 容器作为消息的结果建立的身份 身份验证。

Java EE 7 平台需要 JASPIC 1.1。

WebSocket 的 Java API

WebSocket 是一种提供全双工的应用协议 两个对等点之间通过 TCP 进行的通信。 WebSocket 的 Java API 使 Java EE 应用程序能够使用注释创建端点 指定端点的配置参数和 指定其生命周期回调方法。

WebSocket API 是 Java EE 7 平台的新功能。 Java EE 7 平台需要用于 WebSocket 1.0 的 Java API。

用于 JSON 处理的 Java API

JSON 是一种源自 javascript 的基于文本的数据交换格式, 用于 Web 服务和其他连接的应用程序。 Java API for JSON Processing (JSON-P) 使 Java EE 应用程序能够解析, 使用对象模型或流式转换和查询 JSON 数据 型号。

JSON-P 是 Java EE 7 平台的新功能。 Java EE 7 平台 需要 JSON-P 1.0。

Java EE 的并发实用程序

Concurrency Utilities for Java EE 是一个标准 API,用于提供 Java EE 应用程序组件的异步功能,通过 以下类型的对象:托管执行器服务,托管 调度执行器服务、托管线程工厂和上下文 服务。

Java EE 的并发实用程序是 Java EE 7 平台的新功能。 Java EE 7 平台需要 Java EE 1.0 的并发实用程序。

Java 平台的批处理应用程序

批处理作业是无需用户交互即可执行的任务。 Java 平台规范的批处理应用程序是一个批处理 为创建和运行批处理作业提供支持的框架 Java 应用程序。批处理框架由批处理运行时、 基于 XML 的作业规范语言,一种与之交互的 Java API 批处理运行时,以及用于实现批处理工件的 Java API。

Java 平台的批处理应用程序是 Java EE 7 的新功能 平台。 Java EE 7 平台需要批处理应用程序 Java 平台 1.0。

另见

要查看旧 Java EE 版本的技术,请查看以下链接:

Java EE 6 technologies Java EE 5 technologies

【讨论】:

@cassiomolin EJB 3.2 链接未指向正确的位置。应该是 jcp.org/en/jsr/detail?id=345 如果我编辑它抱怨我必须编辑更多字符才能将我的编辑考虑在内。 @ktulinho 好地方!我刚刚修复了链接:)【参考方案2】:

重要提示:虽然此答案仍然有效,但您可能还需要检查以下内容: • 列表Jakarta EE 8 的技术列表;Jakarta EE 9 的技术列表。


Java EE 8 技术

Java EE 8 在 Java EE 7 的基础上构建(有关详细信息,请参阅 older answer),并现代化了对许多行业标准的支持,并继续简化企业就绪 API。

增强功能包括:

支持 HTTP/2 的 Java Servlet 4.0 API 增强的 JSON 支持,包括新的 JSON 绑定 API 新的 REST 反应式客户端 API 异步 CDI 事件 一种新的可移植安全 API 服务器发送事件支持(客户端和服务器端) 支持 Java SE 8 新功能(例如 Data & Time API、Streams API、注释增强)

以下 JSR 在 Java EE 8 中是更新

Java EE 平台

JSR 366:Java EE 8 平台

网络应用技术

JSR 367:用于 JSON 绑定 (JSON-B) 1.0 的 Java API JSR 374:用于 JSON 处理的 Java API (JSON-P) 1.1 JSR 369: Java Servlet 4.0 JSR 372: JavaServer Faces (JSF) 2.3

企业应用技术

JSR 365:上下文和依赖注入 (CDI) 2.0 JSR 380: Bean 验证 2.0 JSR 338:Java 持久性 2.2 JSR 250:常用注解 1.3 JSR 919: JavaMail 1.6

网络服务技术

JSR 370:用于 RESTful Web 服务的 Java API (JAX-RS) 2.1

管理和安全技术

JSR 375:Java EE 安全 API 1.0

更多详情请参考page。

每种技术的简介

要详细了解上面列出的主要技术,请查看Java EE tutorial。可以在page 中找到对主要技术的一个很好的概述。只是在这里引用它:

企业 JavaBeans 技术

Enterprise JavaBeans (EJB) 组件或企业 bean 是一个主体 具有实现业务模块的字段和方法的代码 逻辑。您可以将企业 bean 视为构建块 可以单独使用或与其他企业bean一起使用来执行业务 Java EE 服务器上的逻辑。

企业 bean 是会话 bean 或消息驱动 bean。

会话 bean 表示与客户端的短暂对话。当客户端完成执行时,会话 bean 及其数据 走了。 消息驱动 bean 结合了会话 bean 和消息侦听器的特性,允许业务组件接收消息 异步。通常,这些是 Java 消息服务 (JMS) 消息。

Java EE 8 平台需要 Enterprise JavaBeans 3.2 和 拦截器 1.2。拦截器规范是 EJB 的一部分 规范。

Java Servlet 技术

Java Servlet 技术允许您定义特定于 HTTP 的 servlet 类。 servlet 类扩展了托管服务器的能力 通过请求-响应编程模型访问的应用程序。 尽管 servlet 可以响应任何类型的请求,但它们是 通常用于扩展 Web 服务器托管的应用程序。

在 Java EE 8 平台上,新的 Java Servlet 技术特性 包括以下内容:

服务器推送 HTTP 预告片

Java EE 8 平台需要 Servlet 4.0

JavaServer Faces 技术

JavaServer Faces 技术是一种用户界面框架,用于构建 网络应用程序。 JavaServer Faces 技术的主要组成部分 如下:

一个 GUI 组件框架。 一种灵活的模型,用于以不同种类的 HTML 或不同的标记语言和技术呈现组件。一个渲染器对象 生成标记以呈现组件并转换数据 存储在模型对象中,转换为可以在视图中表示的类型。 用于生成 HTML 4.01 标记的标准 RenderKit。

以下功能支持 GUI 组件:

输入验证 事件处理 模型对象和组件之间的数据转换 托管模型对象创建 页面导航配置 表达语言 (EL)

所有这些功能都可以使用标准 Java API 和 基于 XML 的配置文件。

在 Java EE 8 平台中,JavaServer Faces 技术的新特性 包括以下内容:

通过新的<f:websocket> 标签直接支持 WebSockets 通过新的<f:validateWholeBean> 标记进行类级 bean 验证 兼容 CDI 的 @ManagedProperty 注释 增强的组件搜索表达式框架

Java EE 8 平台需要 JavaServer Faces 2.3 和 Expression 语言 3.0。

有关 JSF 2.3 新功能的精彩总结,请参阅 https://javaserverfaces.github.io/whats-new-in-jsf23.html.

JavaServer Pages 技术

JavaServer Pages (JSP) 技术可以让你把 sn-ps 的 servlet 将代码直接写入基于文本的文档中。 JSP 页面是基于文本的 包含两种文本的文档:

静态数据,可以用任何基于文本的格式表示,例如 HTML 或 XML JSP 元素,决定页面如何构建动态内容

有关 JSP 技术的信息,请参阅 Java EE 5 教程,网址为 http://docs.oracle.com/javaee/5/tutorial/doc/.

Java EE 8 平台需要 JavaServer Pages 2.3 以实现兼容性 与早期版本,但建议使用 Facelets 作为 新应用中的显示技术。

JavaServer Pages 标准标签库

JavaServer Pages 标准标记库 (JSTL) 封装了核心 许多 JSP 应用程序共有的功能。而不是混合标签 在您的 JSP 应用程序中来自众多供应商,您使用一个, 标准标签集。这种标准化允许您部署您的 任何支持 JSTL 并使之更强大的 JSP 容器上的应用程序 很可能标签的实现被优化了。

JSTL 有迭代器和条件标签,用于处理流控制、标签 用于操作 XML 文档、国际化标签、标签 使用 SQL 访问数据库,以及常用函数的标签。

Java EE 8 平台需要 JSTL 1.2。

Java 持久性 API

Java Persistence API (JPA) 是一个基于 Java 标准的解决方案,用于 坚持。持久性使用对象/关系映射方法 弥合面向对象模型和关系模型之间的鸿沟 数据库。 Java Persistence API 也可以在 Java SE 中使用 Java EE 环境之外的应用程序。 Java 持久性 包括以下几个方面:

Java 持久性 API 查询语言 对象/关系映射元数据

Java EE 8 平台需要 Java Persistence API 2.2。

Java 事务 API

Java 事务 API (JTA) 为 划定交易。 Java EE 架构提供了一个默认的 自动提交以处理事务提交和回滚。一辆汽车 提交意味着正在查看数据的任何其他应用程序将 在每次数据库读取或写入操作后查看更新的数据。 但是,如果您的应用程序执行两个单独的数据库访问 相互依赖的操作,您将需要使用 JTA API 划定整个事务(包括两个操作)的位置, 开始、回滚和提交。

Java EE 8 平台需要 Java Transaction API 1.2。

用于 RESTful Web 服务的 Java API

用于 RESTful Web 服务的 Java API (JAX-RS) 定义了用于 开发根据 Representational 构建的 Web 服务 状态转移 (REST) 架构风格。 JAX-RS 应用程序是一个 由打包为 servlet 的类组成的 Web 应用程序 WAR 文件以及所需的库。

在 Java EE 8 平台中,新的 RESTful Web 服务功能包括 以下:

响应式客户端 API:当收到对目标资源的调用结果时,对完成阶段 API 的增强 Java SE 允许指定这些结果的顺序, 优先级、组合或级联,以及如何处理异常 处理。 对服务器发送事件的支持增强:客户端可以使用长时间运行的方式订阅服务器发出的事件通知 联系。已支持新的媒体类型文本/事件流 已添加。 支持 JSON-B 对象,并改进了与 CDI、Servlet 和 Bean 验证技术的集成

Java EE 8 平台需要 JAX-RS 2.1。

托管 Bean

Managed Beans,轻量级容器管理对象 (POJO) 最低要求,支持一小组基本服务,例如 资源注入、生命周期回调和拦截器。管理 Beans 表示由 指定的托管 bean 的泛化 JavaServer Faces 技术,可在 Java EE 中的任何位置使用 应用程序,而不仅仅是在 Web 模块中。

Managed Beans 规范是 Java EE 8 平台的一部分 规范(JSR 366)。 Java EE 8 平台需要托管 Bean 1.0.

Java EE 的上下文和依赖注入

Java EE (CDI) 的上下文和依赖注入定义了一组 由 Java EE 容器提供的上下文服务,使操作变得简单 供开发人员使用企业 bean 和 JavaServer Faces Web 应用程序中的技术。设计用于有状态的 对象,CDI 也有很多更广泛的用途,让开发人员可以很好地 处理将不同类型的组件集成到一个 松耦合但类型安全的方式。

在 Java EE 8 平台中,新的 CDI 功能包括:

用于在 Java SE 8 中引导 CDI 容器的 API 支持观察者排序,它决定了特定事件的观察者方法被调用的顺序,并且支持 用于异步触发事件 配置器接口,用于动态定义和修改 CDI 对象 内置注释文字、用于创建注释实例的便捷功能等

Java EE 8 平台需要 CDI 2.0。

Java 的依赖注入

Java 的依赖注入定义了一组标准的注解 (和一个接口)用于可注入类。

在 Java EE 平台中,CDI 提供了对 Dependency 的支持 注射。具体来说,您只能在 支持 CDI 的应用程序。

Java EE 8 平台需要 Java 1.0 的依赖注入。

Bean 验证

Bean Validation 规范定义了一个元数据模型和 API 验证 JavaBeans 组件中的数据。而不是分发 在多个层上验证数据,例如浏览器和 服务器端,您可以在一个地方定义验证约束 并在不同的层共享它们。

在 Java EE 8 平台中,新的 Bean 验证功能包括 以下:

支持 Java SE 8 中的新功能,例如日期时间 API 添加新的内置 Bean 验证约束

Java EE 8 平台需要 Bean Validation 2.0。

Java 消息服务 API

Java 消息服务 (JMS) API 是一种消息标准,它允许 用于创建、发送、接收和读取的 Java EE 应用程序组件 消息。它支持松散的分布式通信 耦合、可靠和异步。

Java EE 8 平台需要 JMS 2.0。

Java EE 连接器架构

工具供应商和系统使用 Java EE 连接器架构 集成商创建支持访问的资源适配器 可插入任何 Java EE 的企业信息系统 产品。资源适配器是允许 Java EE 应用程序组件访问底层并与之交互 EIS 的资源管理器。因为资源适配器特定于 它的资源管理器,通常存在不同的资源适配器 适用于每种类型的数据库或企业信息系统。

Java EE 连接器架构还提供了一个 面向性能、安全、可扩展和基于消息的 基于 Java EE 平台的 Web 服务与 可以是同步或异步的现有 EIS。现存的 通过 Java EE 连接器集成的应用程序和 EIS Java EE 平台中的体系结构可以公开为基于 XML 的 Web 使用 JAX-WS 和 Java EE 组件模型提供服务。因此 JAX-WS 和 Java EE 连接器架构是 企业应用集成 (EAI) 和端到端业务 整合。

Java EE 8 平台需要 Java EE 连接器架构 1.7。

JavaMail API

Java EE 应用程序使用 JavaMail API 发送电子邮件通知。 JavaMail API 有两部分:

应用程序组件用来发送邮件的应用程序级接口 服务提供者接口

Java EE 平台包括带有服务提供者的 JavaMail API 允许应用程序组件发送 Internet 邮件。

Java EE 8 平台需要 JavaMail 1.6。

容器的 Java 授权合约

容器的 Java 授权合同 (JACC) 规范 定义 Java EE 应用程序服务器和 授权策略提供者。所有 Java EE 容器都支持这个 合同。

JACC 规范定义了 java.security.Permission 类 满足 Java EE 授权模型。该规范定义了 将容器访问决策绑定到实例上的操作 这些权限类。它定义了策略提供者的语义 使用新的权限类来处理授权 Java EE平台的需求,包括定义和使用 角色。

Java EE 8 平台需要 JACC 1.5。

容器的Java认证服务提供者接口

容器的 Java 身份验证服务提供者接口 (JASPIC) 规范定义了一个服务提供者接口 (SPI) 哪些认证提供者实现了消息认证 机制可以集成在客户端或服务器消息处理中 容器或运行时。通过集成的身份验证提供程序 这个接口对他们提供给他们的网络消息进行操作 调用容器。身份验证提供程序转换传出 消息,以便每个消息的来源都可以通过以下方式进行身份验证 接收容器,消息的接收者可以是 由消息发送者验证。身份验证提供程序 验证每条传入消息并返回到它们的调用 容器作为消息的结果建立的身份 身份验证。

Java EE 8 平台需要 JASPIC 1.1。

Java EE 安全 API

Java EE 安全 API 规范的目的是实现现代化 并通过同时建立通用的安全 API 来简化安全 API 方法和机制,并从 在可能的情况下查看开发人员视图。 Java EE Security 引入了 以下 API:

SecurityContext 接口:提供一个通用的、统一的访问点,使应用程序能够测试调用者数据的各个方面并授予 或拒绝访问资源。 HttpAuthenticationMechanism 接口:对 Web 应用程序的调用者进行身份验证,并指定仅在 servlet 中使用 容器。 IdentityStore 接口:提供身份存储的抽象,可用于验证用户和检索调用者 组。

Java EE 8 平台需要 Java EE Security API 1.0。

WebSocket 的 Java API

WebSocket 是一种提供全双工的应用协议 两个对等点之间通过 TCP 进行的通信。 WebSocket 的 Java API 使 Java EE 应用程序能够使用注释创建端点 指定端点的配置参数和 指定其生命周期回调方法。

Java EE 8 平台需要用于 WebSocket 1.1 的 Java API。

用于 JSON 处理的 Java API

JavaScript Object Notation (JSON) 是一种基于文本的数据交换格式 派生自 JavaScript,用于 Web 服务和其他 连接的应用程序。用于 JSON 处理的 Java API (JSON-P) 使 Java EE 应用程序能够解析、转换和查询 JSON 数据 使用对象模型或流模型。

在 Java EE 8 平台中,JSON-P 的新特性包括支持 以下:

JSON 指针:定义用于引用 JSON 文档中特定值的字符串语法。 JSON 指针包括用于 从目标文档中提取值并将它们转换为 创建一个新的 JSON 文档。

JSON Patch:定义一种格式,用于表达要应用于 JSON 文档的一系列操作。

JSON Merge Patch:定义一种格式和处理规则,用于基于特定内容对 JSON 文档应用操作 目标文档。

在基本 JSON 文档处理中添加了编辑和转换功能。

Helper 类和方法,称为 JSON 收集器,利用 Java SE 8 中引入的 Stream API 的功能。

Java EE 8 平台需要 JSON-P 1.1。

用于 JSON 绑定的 Java API

用于 JSON 绑定的 Java API (JSON-B) 提供了一个绑定层,用于 将 Java 对象与 JSON 消息相互转换。 JSON-B 也 支持自定义默认映射过程的能力 这个绑定层通过对给定的 Java 注释使用 字段、JavaBean 属性、类型或包,或通过提供 属性命名策略的实现。

JSON-B 是 Java EE 8 平台的新功能。 Java EE 8 平台 需要 JSON-B 1.0。

Java EE 的并发实用程序

Concurrency Utilities for Java EE 是一个标准 API,用于提供 Java EE 应用程序组件的异步功能,通过 以下类型的对象:托管执行器服务,托管 调度执行器服务、托管线程工厂和上下文 服务。

Java EE 8 平台需要 Java EE 1.0 的并发实用程序。

Java 平台的批处理应用程序

批处理作业是无需用户交互即可执行的任务。 Java 平台规范的批处理应用程序是一个批处理 为创建和运行批处理作业提供支持的框架 Java 应用程序。批处理框架由一个批处理运行时、一个 基于 XML 的作业规范语言,一种与之交互的 Java API 批处理运行时,以及用于实现批处理工件的 Java API。

Java EE 8 平台需要 Java 的批处理应用程序 平台 1.0。

【讨论】:

【参考方案3】:

Jakarta EE 9 技术

根据specification,Jakarta EE 9 版本的目标是提供一组功能上与 Jakarta EE 8 相似但在新的 Jakarta EE 9 命名空间jakarta.* 中的规范。

此外,Jakarta EE 9 版本从 Jakarta EE 8 中删除了一小组旧的、可选的或已弃用的规范,以减少 API 的表面积,以确保新供应商更容易进入生态系统——以及减轻这些旧 API 的实施、迁移和维护的负担。

Jakarta EE 9 主要是一个工具版本:

工具供应商可以从中创建和更新其工具以支持新的jakarta.* 命名空间的平台。

开发团队可以将其用作测试将其应用程序迁移到新命名空间的稳定目标的平台。

运行时供应商可用于测试和提供支持迁移和向后兼容 Jakarta EE 8 的选项和功能的平台。

Jakarta EE 规范项目可用于推动在 Jakarta EE 10 及更高版本中发布的新功能的创新基础。

specification 列出了属于 Jakarta EE 9 的所有技术:

需要以下技术:

Jakarta Enterprise Beans 4.0(Jakarta Enterprise Beans 实体 bean 和关联的 Jakarta Enterprise Beans QL 除外,它们具有 已成为可选)

Jakarta Servlet 5.0

Jakarta Server Pages 3.0

雅加达表达语言 4.0

雅加达消息传递 3.0

雅加达交易 2.0

雅加达激活 2.0

雅加达邮件 2.0

Jakarta 连接器 2.0

雅加达 RESTful Web 服务 3.0

雅加达 WebSocket 2.0

Jakarta JSON 处理 2.0

Jakarta JSON 绑定 2.0

Jakarta 并发 2.0

雅加达批次 2.0

雅加达授权2.0

雅加达身份验证 2.0

雅加达安全 2.0

Jakarta 对其他语言 2.0 的调试支持

Jakarta 标准标签库 2.0

Jakarta Server Faces 3.0

Jakarta Annotations 2.0

Jakarta Persistence 3.0

Jakarta Bean 验证 3.0

Jakarta Managed Beans 2.0

Jakarta Interceptors 2.0

Jakarta 上下文和依赖注入 3.0

Jakarta 依赖注入 2.0

以下技术是可选的:

Jakarta Enterprise Beans 3.2 和更早版本的实体 bean 和关联的 Jakarta Enterprise Beans QL

Jakarta Enterprise Beans 2.x API 组

Jakarta 企业网络服务 2.0

带有附件 2.0 的 Jakarta SOAP

Jakarta Web 服务元数据 3.0

Jakarta XML Web 服务 3.0

Jakarta XML 绑定 3.0

以下技术被移除:

Jakarta Enterprise Beans 3.2 核心规范中的分布式互操作性,第 10 章

雅加达 XML RPC 1.1

Jakarta XML 注册表 1.0

Jakarta 部署 1.2

雅加达管理 1.1

Jakarta EE 9 架构

下图摘自 Jakarta EE 9 specification 页面,显示了这些技术的逻辑关系。这并不意味着将元素物理划分为单独的机器、进程、地址空间或虚拟机。

来自规范:

由单独的矩形表示的容器是 Jakarta EE 运行时环境,为矩形上半部分表示的应用程序组件提供所需的服务。提供的服务由矩形下半部分的方框表示。例如,应用程序客户端容器向应用程序客户端提供 Jakarta 消息传递 API,以及所代表的其他服务。所有这些服务都在下面解释。见Jakarta EE Standard Services。

箭头表示需要访问 Jakarta EE 平台的其他部分。应用程序客户端容器通过 Java API 为应用程序客户端提供对 Jakarta EE 所需数据库的直接访问,以连接数据库系统,即 JDBC™ API。 Web 容器为服务器页面、服务器端应用程序和 servlet 以及 Enterprise Beans 容器提供了对数据库的类似访问。

如前所述,Java™ 平台标准版 (Java SE) 的 API 受 Java SE 运行时环境支持,适用于每种类型的应用程序组件。

【讨论】:

【参考方案4】:

重要提示:虽然此答案仍然有效,但您可能还需要查看Jakarta EE 9 的技术列表。 p>


Jakarta EE 8 技术

Java EE 由 Oracle 在 JCP(Java 社区进程)下维护。 2017 年 9 月,Oracle announced 将向 Eclipse 基金会提交 Java EE,这些技术现在正在 Jakarta EE 品牌下发展(因为 Oracle 仍然拥有“Java”这个名称的商标)。

Jakarta EE 8 是 Java EE 8 从 JCP 到 Eclipse Foundation 的迁移。详情请参阅specification。

下表摘自规范,显示了 2017 年 7 月 31 日的最新 Java EE 8 平台规范与 Jakarta EE 8 平台规范中引用的规范名称和版本之间的差异。

在某些情况下,版本已更改以准备贡献,因此官方 JCP 版本更改了 2017 年 7 月 31 日 31 日平台规范中引用的版本。在其他情况下,版本在贡献之后被更改。 尽管有任何名称或版本更改,Java EE 8 和 Jakarta EE 8 在功能上是相同的。

Java EE 8 Specification Jakarta EE 8 Specification
Java™ Platform, Enterprise Edition 8 Jakarta™ EE Platform 8
Enterprise JavaBeans™ 3.2 Jakarta™ Enterprise Beans 3.2
Common Annotations for the Java Platform 1.3 Jakarta™ Annotations 1.3
Java™ Servlet 4.0 Jakarta™ Servlet 4.0
Java API for WebSocket 1.1 Jakarta™ WebSocket 1.1
JavaServer Faces 2.3 Jakarta™ Server Faces 2.3
JavaServer Pages™ 2.3 Jakarta™ Server Pages 2.3
Standard Tag Library for JavaServer Pages 1.2 Jakarta™ Standard Tag Library 1.2
Expression Language 3.0 Jakarta™ Expression Language 3.0
Debugging Support for Other Languages 1.0 Jakarta™ Debugging Support for Other Languages 1.0
Java™ Message Service 2.0 Jakarta™ Messaging 2.0
Java™ Transaction API 1.2 Jakarta™ Transaction 1.3
JavaMail™ API 1.6 Jakarta™ Mail 1.6
Java EE™ Connector Architecture 1.7 Jakarta™ Connectors 1.7
Web Services for Java EE 1.4 Jakarta™ Enterprise Web Services 1.4
Java™ API for XML-based RPC 1.1 Jakarta™ XML RPC 1.1
Java™ API for XML Registries 1.0 Jakarta™ XML Registries 1.0
Java™ API for RESTful Web Services 2.1 Jakarta™ RESTful Web Services 2.1
Java API for JSON Processing 1.1 Jakarta™ JSON Processing 1.1
Java API for JSON Binding 1.0 Jakarta™ JSON Binding 1.0
Java™ Platform, Enterprise Edition Management 1.1 Jakarta™ Management 1.1
Java™ Platform, Enterprise Edition Deployment 1.2 Jakarta™ Deployment 1.7
Java™ Authorization Service Provider Contract for Containers 1.5 Jakarta™ Authorization 1.5
Java™ Authentication Service Provider Interface for Containers 1.1 Jakarta™ Authentication 1.1
Java™ EE Security API 1.0 Jakarta™ Security 1.0
Java Persistence 2.2 Jakarta™ Persistence 2.2
Bean Validation 2.0 Jakarta™ Bean Validation 2.0
Managed Beans 1.0 Jakarta™ Managed Beans 1.0
Interceptors 1.2 rev A Jakarta™ Interceptors 1.2
Contexts and Dependency Injection for the Java EE Platform 2.0 Jakarta™ Contexts and Dependency Injection 2.0
Dependency Injection for Java 1.0 Jakarta™ Dependency Injection 1.0
Concurrency Utilities for Java EE 1.0 Jakarta™ Concurrency 1.1
Batch Applications for the Java Platform 1.0 rev A Jakarta™ Batch 1.0

【讨论】:

以上是关于所有 Java EE 规范的总结的主要内容,如果未能解决你的问题,请参考以下文章

J2EE十三个规范:总结

关于Servlet的总结

java编码规范及优化总结

Java EE的十三个规范

Java EE规范是如何制定的

J2EE的13个规范