MicroProfile与Jakarta EE规范发展历程与详解
1. MicroProfile版本发展
1.1 MicroProfile 2.2 - 2019年2月10日发布
本次发布对容错、开放跟踪、开放API和REST客户端规范进行了更新。
| 规范 | 版本 |
| — | — |
| Open Tracing | 1.3 |
| Open API | 1.1 |
| Rest Client | 1.2 |
| Config | 1.3 |
| Fault Tolerance | 2.0 |
| Metrics | 1.1 |
| JWT Propagation | 1.1 |
| Health Check | 1.0 |
| CDI | 2.0 |
| JSON - P | 1.1 |
| JAX - RS | 2.1 |
| JSON - B | 1.0 |
兼容实现包括:
- Helidon 1.2.0
- Payara Server 5.192
- Thorntail 2.4.0.Final
- Payara Micro 5.192
- Open Liberty 19.0.0.3
- KumuluzEE 3.5.0
- WebSphere Liberty 19.0.0.3
1.2 MicroProfile 3.0 - 2019年6月11日发布
对指标、健康检查和REST客户端规范进行了更新。
| 规范 | 版本 |
| — | — |
| Open Tracing | 1.3 |
| Open API | 1.1 |
| Rest Client | 1.3 |
| Config | 1.3 |
| Fault Tolerance | 2.0 |
| Metrics | 2.0 |
| JWT Propagation | 1.1 |
| Health Check | 2.0 |
| CDI | 2.0 |
| JSON - P | 1.1 |
| JAX - RS | 2.1 |
| JSON - B | 1.0 |
兼容实现有:
- Helidon 1.3.0
- WebSphere Liberty 19.0.0.7
- Thorntail 2.5.0.Final
- KumuluzEE 3.6.0
- Open Liberty 19.0.0.7
- Fujitsu Launcher 2.0
1.3 MicroProfile 3.1 - 2019年10月13日发布
对指标和健康检查规范进行了更新,健康检查规范更名为健康。
| 规范 | 版本 |
| — | — |
| Open Tracing | 1.3 |
| Open API | 1.1 |
| Rest Client | 1.2 |
| Config | 1.3 |
| Fault Tolerance | 2.0 |
| Metrics | 2.1 |
| JWT Propagation | 1.1 |
| Health | 2.1 |
| CDI | 2.0 |
| JSON - P | 1.1 |
| JAX - RS | 2.1 |
| JSON - B | 1.0 |
此版本无兼容实现。
1.4 MicroProfile 3.2 - 2019年11月11日发布
在MicroProfile 3.1发布不到一个月后发布,对指标和健康规范进行了更新。
| 规范 | 版本 |
| — | — |
| Open Tracing | 1.3 |
| Open API | 1.1 |
| Rest Client | 1.2 |
| Config | 1.3 |
| Fault Tolerance | 2.0 |
| Metrics | 2.2 |
| JWT Propagation | 1.1 |
| Health | 2.1 |
| CDI | 2.0 |
| JSON - P | 1.1 |
| JAX - RS | 2.1 |
| JSON - B | 1.0 |
兼容实现如下:
- Quarkus 1.1.0.Final
- Open Liberty 19.0.0.12
- Helidon 2.0.2
- WebSphere Liberty 19.0.0.12
- Payara Server 5.194
- KumuluzEE 3.7.0
- Payara Micro 5.194
- WildFly 19.0.0.Beta1
- Thorntail 2.6.0.Final
1.5 MicroProfile 3.3 - 2020年2月17日发布
对配置、指标、容错、健康和REST客户端规范进行了更新。
| 规范 | 版本 |
| — | — |
| Open Tracing | 1.3 |
| Open API | 1.1 |
| Rest Client | 1.4 |
| Config | 1.4 |
| Fault Tolerance | 2.1 |
| Metrics | 2.3 |
| JWT Propagation | 1.1 |
| Health | 2.2 |
| CDI | 2.0 |
| JSON - P | 1.1 |
| JAX - RS | 2.1 |
| JSON - B | 1.0 |
兼容实现包括:
- WildFly 19
- Payara Server 5.2020.2
- KumuluzEE 3.9.0
- Payara Micro 5.2020.2
- Open Liberty 20.0.0.4
- JBoss EAP XP 1.0.0
- WebSphere Liberty 20.0.0.4
- Helidon 2.1.0
- Thorntail 2.7.0.Final
1.6 MicroProfile 4.0 - 2020年12月23日发布
原计划2020年6月发布,因MicroProfile工作组的建立而推迟。这是新成立的MicroProfile工作组的首次发布,对所有12个核心规范进行了更新,并与Jakarta EE 8保持一致,还引入了四个新规范:
- 响应式消息传递:基于响应式流操作符规范提供异步消息传递。
- 响应式流操作符:允许两个不同的异步流库更轻松地相互流式传输数据。
- 上下文传播:使由托管线程支持的CompletableFutures能够从这些线程捕获上下文。
- GraphQL:遵循GraphQL标准,一种数据查询和操作语言,可防止REST端点中固有的数据欠获取和过获取问题。
| 规范 | 版本 |
|---|---|
| Open Tracing | 2.0 |
| Open API | 2.0 |
| Rest Client | 2.0 |
| Config | 2.0 |
| Fault Tolerance | 3.0 |
| Metrics | 3.0 |
| JWT Propagation | 1.2 |
| Health | 3.0 |
| Jakarta CDI | 2.0 |
| Jakarta JSON - P | 1.1 |
| Jakarta JAX - RS | 2.1 |
| Jakarta JSON - B | 1.0 |
| Reactive Messaging | 1.0 |
| Reactive Streams Operators | 1.0 |
| Context Propagation | 1.0 |
| GraphQL | 1.0 |
兼容实现有:
- Payara Micro 5.2021.1
- Open Liberty 21.0.0.3
- WildFly 23
- WebSphere Liberty 21.0.0.3
1.7 MicroProfile 4.1 - 2021年7月20日发布
对配置、健康、开放跟踪、开放API、REST客户端、响应式消息传递、响应式流操作符、上下文传播和GraphQL规范进行了更新,并引入了两个新规范:
- 对Jakarta注解的支持:定义了一组表示常见语义概念的注解,以实现声明式编程风格。
- 长时间运行的操作:允许松散耦合的服务协调长时间运行的活动,以确保全局一致的结果,而无需对数据加锁。
| 规范 | 版本 |
|---|---|
| Open Tracing | 2.0 |
| Open API | 2.0 |
| Rest Client | 2.0 |
| Config | 2.0 |
| Fault Tolerance | 3.0 |
| Metrics | 3.0 |
| JWT Propagation | 1.2 |
| Health | 3.1 |
| Jakarta CDI | 2.0 |
| Jakarta JSON - P | 1.1 |
| Jakarta JAX - RS | 2.1 |
| Jakarta JSON - B | 1.0 |
| Jakarta Annotations | 1.3 |
| Reactive Messaging | 2.0 |
| Reactive Streams Operators | 2.0 |
| Context Propagation | 1.2 |
| GraphQL | 1.1 |
| Long - Running Actions | 1.0 |
兼容实现如下:
- Open Liberty 21.0.0.9 (JDK 8和JDK 11)
- Payara Community (Web Profile) 5.2022.2 (JDK 8)
- Quarkus 2.7.2.Final (JDK 11)
- WildFly 26.1.2.Final (JDK 8, JDK 11, JDK 17)
- Payara Enterprise 5.37.0 (JDK 8)
- WildFly 26.1.3.Final (JDK 8, JDK 11, JDK 17)
- Payara Enterprise (Web Profile) 5.37.0 (JDK 8)
- AISWare Flying Server MP 3.5.0 (JDK 8)
- Payara Community 5.2022.2 (JDK 8)
1.8 MicroProfile 5.0 - 2021年12月7日发布
对所有12个核心规范和上下文传播规范进行了更新,并与Jakarta EE 9.1保持一致。
| 规范 | 版本 |
| — | — |
| Open Tracing | 3.0 |
| Open API | 3.0 |
| Rest Client | 3.0 |
| Config | 3.0 |
| Fault Tolerance | 4.0 |
| Metrics | 4.0 |
| JWT Propagation | 2.0 |
| Health | 4.0 |
| Jakarta CDI | 3.0 |
| Jakarta JSON - P | 2.0 |
| Jakarta JAX - RS | 3.0 |
| Jakarta JSON - B | 2.0 |
| Jakarta Annotations | 2.0 |
| Reactive Messaging | 2.0 |
| Reactive Streams Operators | 2.0 |
| Context Propagation | 1.3 |
| GraphQL | 1.1 |
| Long - Running Actions | 1.0 |
兼容实现包括:
- Open Liberty 22.0.0.1 (JDK 11, JDK 17)
- Apache TomEE 9.0.0.RC1 (JDK 11+)
- Fujitsu Launcher 4.0 (JDK 11)
- Payara Server Community 6.2022.2 (JDK 11+)
- WildFly 26.0.0.Final (JDK 8, JDK 11, JDK 17)
- Payara Server Community (Web Profile) 6.2022.2 (JDK 11+)
- WildFly 27.0.0.Final (JDK 8, JDK 11, JDK 17)
- Helidon 3.1 (JDK 17)
1.9 MicroProfile 6.0 - 2023年1月发布
对指标、JWT认证和开放API规范进行了更新,并引入了一个新规范:
- 遥测:遵循OpenTelemetry标准,提供跟踪、指标、日志和行李等遥测数据。OpenTelemetry标准于2019年4月形成,是Open Tracing和OpenCensus标准的合并,旨在创建一个统一的遥测标准。
JWT传播规范更名为JWT认证,同时引入了Jakarta EE 10核心配置文件。
| 规范 | 版本 |
| — | — |
| Telemetry | 1.0 |
| Open API | 3.1 |
| Rest Client | 3.0 |
| Config | 3.0 |
| Fault Tolerance | 4.0 |
| Metrics | 5.0 |
| JWT Authentication | 2.1 |
| Health | 4.0 |
| Jakarta EE 10 Core Profile | - |
| Open Tracing | 3.0 |
| Reactive Messaging | 3.0 |
| Reactive Streams Operators | 3.0 |
| Long - Running Actions | 2.0 |
| GraphQL | 2.0 |
| Context Propagation | 1.3 |
Jakarta EE核心配置文件规范如下:
- Jakarta RESTful Web Services 3.1
- Jakarta Interceptors 2.1
- Jakarta JSON Processing 2.1
- Jakarta Dependency Injection 2.0
- Jakarta JSON Binding 3.0
- Jakarta Annotations 2.1
- Jakarta Contexts and Dependency Injection 4.0
兼容实现有:
- Open Liberty 22.0.0.13 - beta (JDK 11, JDK 17)
- Fujitsu Launcher 5.0 (JDK 17)
- Open Liberty 23.0.0.3 (JDK 11, JDK 17)
- Helidon 4.0 (JDK 21+)
- Payara Server Enterprise 6.0.0 (JDK 11+)
1.10 MicroProfile 6.1 - 2023年10月16日发布
对配置、指标和遥测规范进行了更新。
| 规范 | 版本 |
| — | — |
| Telemetry | 1.1 |
| Open API | 3.1 |
| Rest Client | 3.0 |
| Config | 3.1 |
| Fault Tolerance | 4.0 |
| Metrics | 5.1 |
| JWT Authentication | 2.1 |
| Health | 4.0 |
| Jakarta EE 10 Core Profile | - |
| Open Tracing | 3.0 |
| Reactive Messaging | 3.0 |
| Reactive Streams Operators | 3.0 |
| Long - Running Actions | 2.0 |
| GraphQL | 2.0 |
| Context Propagation | 1.3 |
兼容实现如下:
- Open Liberty 23.0.0.10 - beta (JDK 11, JDK 17)
- Payara Server Community 6.2024.3 (JDK 11)
- Open Liberty 23.0.0.12 (JDK 11, JDK 17)
- Payara Server Community (Web Profile) 6.2024.3 (JDK 11)
- IBM WebSphere Liberty 23.0.0.12 (JDK 11, JDK 17)
- Payara Server Enterprise (Web Profile) 6.12.0 (JDK 11)
- Payara Server Enterprise 6.12.0 (JDK 11)
1.11 MicroProfile 7.0 - 2024年8月22日发布
对容错、遥测、开放API和REST客户端规范进行了更新。指标规范从核心规范集移至独立规范集,原因如下:
- OpenTelemetry标准中添加了更全面的指标,因此在遥测2.0规范中也有体现。
- 一些供应商选择不实现原始的指标规范。
| 规范 | 版本 |
|---|---|
| Telemetry | 2.0 |
| Open API | 4.0 |
| Rest Client | 4.0 |
| Config | 3.1 |
| Fault Tolerance | 4.1 |
| JWT Authentication | 2.1 |
| Health | 4.0 |
| Jakarta EE 10 Core Profile | - |
| Open Tracing | 3.0 |
| Reactive Messaging | 3.0 |
| Reactive Streams Operators | 3.0 |
| Long - Running Actions | 2.0 |
| GraphQL | 2.0 |
| Context Propagation | 1.3 |
| Metrics | 5.1 |
兼容实现为:
- Open Liberty - 24.0.0.9 - beta (JDK 11, JDK 17, and JDK 21)
2. Jakarta EE规范概述
2.1 兼容实现
一个组织要认证其对Jakarta EE规范(或任何与Java相关的规范)的实现,需要通过一系列称为技术兼容性套件(TCK)的测试。这些测试检查所有Jakarta EE规范的正确性和一致性。一旦测试通过,组织可以向Jakarta EE工作组提交兼容性认证请求(CCR)以获得批准。
2.2 Jakarta EE配置文件
Jakarta EE有三个配置文件:平台、Web配置文件和在Jakarta EE 10发布时引入的新核心配置文件。
-
平台
:为托管所有Jakarta EE应用程序定义了一个标准平台,适用于需要完整Jakarta EE规范集来开发企业应用程序的开发人员,包含30个规范。
-
Web配置文件
:定义了Jakarta EE平台的一个子集,包含专门用于开发Web应用程序的Web技术,包含23个规范。
-
核心配置文件
:为云原生运行时(包括支持构建时应用程序的运行时)提供最小基础,包含一组针对适合微服务和提前编译的较小运行时的Jakarta EE规范,包含8个规范。
2.3 Jakarta EE规范详情
| 规范名称 | 当前版本 | 兼容实现 |
|---|---|---|
| Jakarta Activation | 2.1(Jakarta EE 10) | Eclipse Angus/Activation 2.0.2 |
| Jakarta Annotations | 3.0(Jakarta EE 11) | Eclipse GlassFish 8.0.0 - M3 |
| Jakarta Authentication | 3.1(Jakarta EE 11) | Eclipse Epicyro 3.1.0,Eclipse GlassFish 8.0.0 - M6 |
| Jakarta Authorization | 3.0(Jakarta EE 11) | Eclipse Exousia 3.0.0 - M3,Eclipse GlassFish 8.0.0 - M5 |
| Jakarta Batch | 2.1(Jakarta EE 10) | JBatch 2.1.0 - M2 |
| Jakarta Concurrency | 3.1(Jakarta EE 11) | Open Liberty 22.0.0.6 - beta |
| Jakarta Config | 开发中 | 无 |
| Jakarta Connectors | 2.1(Jakarta EE 10) | Eclipse GlassFish 7.0.0 - M4 |
| Jakarta Contexts and Dependency Injection | 4.1(Jakarta EE 11) | Weld 6.0.0.Beta1 |
| Jakarta Data | 1.0(Jakarta EE 11) | Hibernate ORM 6.6.0,Open Liberty 24.0.0.6 |
| Jakarta Debugging Support for Other Languages | 2.0(Jakarta EE 9) | Eclipse GlassFish 6.0.0 |
| Jakarta Dependency Injection | 2.0(Jakarta EE 9) | Weld 4.0.3.Final,Weld 5.0.0.SP2 |
| Jakarta Deployment | 1.7(Jakarta EE 8) | Eclipse GlassFish 5.1.0 |
| Jakarta Enterprise Beans | 4.0(Jakarta EE 9) | Eclipse GlassFish 6.0.0 - RC2 |
| Jakarta Enterprise Web Services | 2.0(Jakarta EE 9) | Eclipse GlassFish 6.0.0 |
| Jakarta Expression Language | 6.0(Jakarta EE 11) | Tomcat 11.0.0 - M18 |
| Jakarta Faces | 4.1(Jakarta EE 11) | - |
2.3 Jakarta EE规范详情(续)
| 规范名称 | 当前版本 | 兼容实现 |
|---|---|---|
| Jakarta Activation | 2.1(Jakarta EE 10) | Eclipse Angus/Activation 2.0.2 |
| Jakarta Annotations | 3.0(Jakarta EE 11) | Eclipse GlassFish 8.0.0 - M3 |
| Jakarta Authentication | 3.1(Jakarta EE 11) | Eclipse Epicyro 3.1.0,Eclipse GlassFish 8.0.0 - M6 |
| Jakarta Authorization | 3.0(Jakarta EE 11) | Eclipse Exousia 3.0.0 - M3,Eclipse GlassFish 8.0.0 - M5 |
| Jakarta Batch | 2.1(Jakarta EE 10) | JBatch 2.1.0 - M2 |
| Jakarta Concurrency | 3.1(Jakarta EE 11) | Open Liberty 22.0.0.6 - beta |
| Jakarta Config | 开发中 | 无 |
| Jakarta Connectors | 2.1(Jakarta EE 10) | Eclipse GlassFish 7.0.0 - M4 |
| Jakarta Contexts and Dependency Injection | 4.1(Jakarta EE 11) | Weld 6.0.0.Beta1 |
| Jakarta Data | 1.0(Jakarta EE 11) | Hibernate ORM 6.6.0,Open Liberty 24.0.0.6 |
| Jakarta Debugging Support for Other Languages | 2.0(Jakarta EE 9) | Eclipse GlassFish 6.0.0 |
| Jakarta Dependency Injection | 2.0(Jakarta EE 9) | Weld 4.0.3.Final,Weld 5.0.0.SP2 |
| Jakarta Deployment | 1.7(Jakarta EE 8) | Eclipse GlassFish 5.1.0 |
| Jakarta Enterprise Beans | 4.0(Jakarta EE 9) | Eclipse GlassFish 6.0.0 - RC2 |
| Jakarta Enterprise Web Services | 2.0(Jakarta EE 9) | Eclipse GlassFish 6.0.0 |
| Jakarta Expression Language | 6.0(Jakarta EE 11) | Tomcat 11.0.0 - M18 |
| Jakarta Faces | 4.1(Jakarta EE 11) | - |
| Jakarta Injection | 2.0(Jakarta EE 9) | Weld 4.0.3.Final,Weld 5.0.0.SP2 |
| Jakarta Interceptors | 2.1(Jakarta EE 10) | Weld 6.0.0.Beta1 |
| Jakarta JSON Binding | 3.0(Jakarta EE 10) | Eclipse Yasson 3.0.0 |
| Jakarta JSON Processing | 2.1(Jakarta EE 10) | Eclipse Parsson 2.1.0 |
| Jakarta Mail | 2.0(Jakarta EE 9) | Eclipse GlassFish 6.0.0 |
| Jakarta Persistence | 3.1(Jakarta EE 11) | Hibernate ORM 6.6.0 |
| Jakarta RESTful Web Services | 3.1(Jakarta EE 10) | RestEasy 6.2.0.Final |
| Jakarta Security | 3.0(Jakarta EE 11) | Eclipse GlassFish 8.0.0 - M6 |
| Jakarta Servlet | 6.0(Jakarta EE 11) | Tomcat 11.0.0 - M18 |
| Jakarta Server Pages | 3.1(Jakarta EE 11) | Tomcat 11.0.0 - M18 |
| Jakarta Server Faces | 4.1(Jakarta EE 11) | Mojarra 4.1.0 |
| Jakarta Transaction | 2.0(Jakarta EE 9) | Eclipse GlassFish 6.0.0 |
| Jakarta Validation | 3.0(Jakarta EE 9) | Hibernate Validator 8.0.0.Final |
| Jakarta WebSocket | 2.1(Jakarta EE 10) | Tomcat 11.0.0 - M18 |
2.4 部分规范详细介绍
2.4.1 Jakarta Activation
Jakarta Activation规范目前在Jakarta EE 10中的版本为2.1,它定义了一组标准服务,用于确定任意数据的MIME类型,封装对其的访问,发现可对其执行的操作,并实例化适当的bean来执行这些操作。其兼容实现为Eclipse Angus/Activation 2.0.2。
2.4.2 Jakarta Annotations
Jakarta Annotations规范在Jakarta EE 11中的版本为3.0,它定义了一组表示常见语义概念的注解,能够实现一种声明式编程风格,适用于多种Java技术。兼容实现是Eclipse GlassFish 8.0.0 - M3。
2.4.3 Jakarta Authentication
Jakarta Authentication规范在Jakarta EE 11中的版本为3.1,它定义了一个通用的低级SPI用于认证机制。这些机制与调用者和容器环境交互,以获取调用者的凭证,验证这些凭证,并将经过身份验证的身份(如名称和组)传递给容器。兼容实现有Eclipse Epicyro 3.1.0和Eclipse GlassFish 8.0.0 - M6。
2.5 规范发展脉络图
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(Jakarta EE 8):::process --> B(Jakarta EE 9):::process
B --> C(Jakarta EE 10):::process
C --> D(Jakarta EE 11):::process
A1(Jakarta Activation 2.0):::process --> A
A2(Jakarta Annotations 1.3):::process --> A
A3(Jakarta Authentication 2.0):::process --> A
B1(Jakarta Activation 2.1):::process --> B
B2(Jakarta Annotations 2.0):::process --> B
B3(Jakarta Authentication 3.0):::process --> B
C1(Jakarta Activation 2.1):::process --> C
C2(Jakarta Annotations 2.1):::process --> C
C3(Jakarta Authentication 3.1):::process --> C
D1(Jakarta Annotations 3.0):::process --> D
D2(Jakarta Authentication 3.1):::process --> D
3. 总结
MicroProfile和Jakarta EE规范在不断发展和演进,以适应不断变化的技术需求和企业应用开发的挑战。MicroProfile从2016年的1.0版本发展到2024年的7.0版本,每次发布都带来了规范的更新和新特性的引入,如响应式消息传递、遥测等。而Jakarta EE也从最初的版本逐步发展,引入了不同的配置文件以满足不同场景的开发需求。
对于开发者来说,了解这些规范的发展历程和详细内容,有助于选择合适的版本和技术来构建高效、可靠的企业应用。同时,关注规范的更新动态,能够及时应用新特性,提升应用的性能和可维护性。在未来,随着技术的不断进步,这些规范也将继续发展,为企业应用开发提供更多的支持和便利。
超级会员免费看

被折叠的 条评论
为什么被折叠?



