WildFly 是否使用 jakarta.* api 或者 javax.* api 是否仍然兼容

Ruc*_*chi 6 wildfly jakarta-ee jakarta-migration

我已将我的项目从 Java 11 更新到 17,因此我必须将我的 WildFly 版本从 15 更新到 25,因为 Java 17 的 WAR 与 WildFly 15 不兼容。问题是,我是否必须从 迁移到 ,javax因为jakartaWildFly WildFly 17 发布后现在支持 Jakarta EE 8 吗?jakarta那么,是否真的必须从该位置迁移到另一个位置javax,或者是否有解决方法?

Bal*_*usC 8

Jakarta EE 8(2019 年 9 月)仍然使用该javax.*软件包。它本质上与 Java EE 8(2017 年 8 月)完全相同,只是品牌名称发生了变化。Jakarta EE 9(2020 年 11 月)是第一个使用该jakarta.*软件包的版本。它本质上仍然与 Java EE 8 完全相同,但现在品牌名称包名称发生了变化。Jakarta EE 10(2022 年 9 月)继续使用该jakarta.*包,但本质上是 Java EE 8 之后的第一个版本,在 API 中进行了实际更改和新内容。

请注意,WildFly“WildFly”和“WildFly Preview”。根据文档

WildFly 版本 17 - 26 是 Jakarta EE 8。WildFly
预览版本 22 - 26 是 Jakarta EE
9。WildFlyWildFly 预览版本 27 -30 是 Jakarta EE 10。

在您的具体情况下,您显然有一个 Jakarta EE 8 应用程序和一个 WildFly 25 服务器。因此,只要您选择“WildFly 25”而不是“WildFly Preview 25”,就可以了。验证的一种快速方法是盲目地将javax.*目标 WAR 部署到服务器,并检查它在运行时是否不会NoClassDefFoundError在类上引发任何错误javax.*

顺便说一句,支持 Jakarta EE 8 的最新 WildFly 版本是 26,这是目前仍在积极维护的版本(在撰写本文时,26.1.3 仅在 9 天前发布,25.x 已不再维护)一年多),所以我强烈建议从 WildFly 25 进一步升级到 WildFly 26。

也就是说,您确实应该迁移到jakarta.*下一步,因为javax.*这显然是一个死胡同。另外,应该注意的是,这一切与 Java SE 17 版本完全无关。此外,Jakarta EE 10 仍然兼容 Java SE 11。

也可以看看: