14、MicroProfile与Jakarta EE规范发展历程与详解

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也从最初的版本逐步发展,引入了不同的配置文件以满足不同场景的开发需求。

对于开发者来说,了解这些规范的发展历程和详细内容,有助于选择合适的版本和技术来构建高效、可靠的企业应用。同时,关注规范的更新动态,能够及时应用新特性,提升应用的性能和可维护性。在未来,随着技术的不断进步,这些规范也将继续发展,为企业应用开发提供更多的支持和便利。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值