2009年4月20日 :
Oracle和SUN共同宣布了最终协议,Oracle将以74亿美元收购SUN公司
2018年:
Oracle决定将Java EE(Java SE还自己保留)移交给开源组织Eclipse基金会,但涉及到商标和版权原因,Oracle不允许开源组织用Java的名号。
于是Eclipse选出了 "Jakarta EE" 和"Enterprise Profile"两个名字,最终前者胜出。所以Jakarta EE名称于2018.02.26应运而生。
javax命名空间其实早已成为过去式,
从JavaEE 8开始就被正式被改名为jakarta EE,
从Jakarta EE 9开始,便使用了全新的jakarta.*命名空间.
新版本的除了包含在JDK包中的除了javax.sql部分的,其他的javax部分基本都会替换为jakarta。
比如:开发web程序最常用的servlet,从maven中央仓库检索,会发现:servlet4.0.1以前的版本是javax,javax.servlet在2018年之后就没有更新了, 从4.0.2版本以后均迁移到了jakarta
影响:
1. Apache Tomcat
作为 Java EE 的重要实现项目,Apache Tomcat 项目中,javax 和 jakarta 都有出现。
Tomcat 9.0.x 版本:
javax 包含了一系列 Java Servlet、Java WebSocket 和 Java EL 扩展包,
例如 javax.servlet、javax.websocket 和 javax.el 等等,版本号为 4.0。
Tomcat 10.0.x 版本:
由于 Java EE 的迁移,javax 被替换成了 jakarta。
因此,Tomcat 10.0.x 版本中的 jakarta 包含了一系列的 Jakarta Servlet、Jakarta WebSocket 和 Jakarta EL 扩展包,
例如 jakarta.servlet、jakarta.websocket 和 jakarta.el 等等,版本号为 5.0。
需要注意的是,虽然 Tomcat 10.0.x 中的包名已经改为 jakarta,但是这些包的 API 和功能与之前的 javax 包保持兼容,因此开发人员可以在迁移应用程序时逐步将包名替换为 jakarta。
总的来说,Tomcat 9.0.x 版本中使用 javax 包,Tomcat 10.0.x 版本中使用 jakarta 包。但是,这两个版本中的包都包含了相同的 Servlet、WebSocket 和 EL 规范,只是包名和版本号略有不同。
Spring Boot 2.5.0 开始,使用 Tomcat 10 作为默认的嵌入式 Servlet 容器。如果想使用其他嵌入式 Servlet 容器,可以在项目中显式配置。在迁移项目到 Tomcat 10 时,需要注意包名和 API 的变化,进行适当的调整。
2. Spring6或者springboot3版本,会有一些jakarta的包
升级到JakartaEE10以上可能需要做一下操作:
更改包前缀需要更新对旧包的所有引用javax -> jakarta
过时的批注可能需要替换为替代批注
重写使用已删除 API 的代码,这些 API 没有直接的替代方案