历史:
2017年 Oracle将Java EE(Java SE还自己保留)交给开源组织,Eclipse基金会接手。但Oracle不允许开源组织使用Java名号,所以Jakarta EE名称于2018.02.26应运而生。
版本 | 发布日期 | 焦点说明 |
---|---|---|
Java EE 8 | 2017.08 | 增加了JSON绑定和安全相关。Servlet 4.0、Bean Validation 2.0、CDI 2.0、JPA 2.2 |
Jakarta EE 8 | 2019.09 | 规范与Java EE 8完全相同。Maven的GAV变了:javax.servlet:javax.servlet-api:4.0.1 -> jakarta.servlet:jakarta.servlet-api:4.0.2,但命名空间没变依旧还是javax.*,算是个小过度吧 |
Jakarta EE 9 | 2020.11 | 没有加入新功能,Eclipse基金会的首个正式版本。命名空间从javax.*迁移到jakarta.*,前者从此成为历史。所有模块大版本号+1,如Servlet 4.0.2 -> Servlet 5以表示其断层式升级 |
Jakarta EE 9.1 | 2021.06 | 相较于9 没有 加入新API。主要提供对Java SE 11的运行支持 |
这也就导致了JakartaEE与JavaEE应用的不兼容。
解决办法:
针对JakartaEE应用必须采用TongWeb8 版本,默认TongWeb8采用“javax”命名空间以兼容JavaEE规范应用。
支持JakartaEE应用,则生成JakartaEE版本。
生成后进入控制台查看其命名空间为"jakarta"。
如何快速判断应用是否为JakartaEE应用?
1. 检查其应用是否引入jakarta相关代码,如:
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
2. 应用是否引用开源组件Spring Framework 6.x、Spring Boot3.x版本?
Spring Framework6.x 和 Spring Boot3.x 则需要JDK17+,jakarta命名空间的应用服务器支持。通常情况下因为应用采用新的Spring版本,而需要升级JDK与JakartaEE应用服务器。
3. 应用是否引用开源组件Hibernate6.x?
(1)hibernate-validator从6.1.x开始需要jakarta.validation-api:2.0.2。
(2)hibernate-orm从6.x开始需要jakarta.persistence:3.0
基于以上规律可判断应用的JakartaEE规范。