首页 > 解决方案 > GlassFish 6 和 JDK 11

问题描述

我正在接近 Jakarta EE 9,我似乎明白 GF 6 只能在 JDK 8 上运行。另一方面,Jakarta EE 9 与 JDK 8 兼容,那么这允许在 GF 6 上开发和运行 EE 9 应用程序,好的,但是我的疑问:

  1. 如果第一个 EE 实现只能在 JDK 8 上运行,那么在最新/热门的 Jakarta EE 9 技术上进行开发是否有意义?为什么 ?

标签: jakarta-eeglassfish

解决方案


确实,Jakarta EE 9 本质上与 Jakarta EE 8 完全相同,但随后将javax.*整个源代码中的包/前缀重命名为jakarta.*. 因此,所需的最低Java SE 版本也仍然是 1.8。重要的是,因为 TCK 测试仍然需要至少 Java SE 1.8。

但是,特别是对于 GlassFish 6.0.0,幕后的故事有点不同。虽然它仍然最低限度地需要 Java SE 1.8,但它本身又与 Java SE 11 或更高版本不兼容。即,您甚至无法使用 Java SE 11 执行 GlassFish 核心引擎。它会立即因以下错误消息而死:

JVM 无法启动:com.sun.enterprise.admin.launcher.GFLauncherException:服务器提前退出,退出代码为 1。

这个具体问题与 Jakarta EE API 本身的 Java SE 兼容性确实不同,也与其他 Jakarta EE 服务器本身不同,后者本身只能与较新的 Java SE 版本兼容。

例如,WildFly 22+ 与 Java SE 11(甚至一直到当前可用的 15)完美兼容,因此您可以在 Java SE 版本高达 15 的 WildFly 上安全地运行 Jakarta EE 9 应用程序。

有计划在 Jakarta EE 9 发布之前使 GlassFish 6.0.0 Java SE 11 兼容,但不幸的是,由于开源代码提交者没有时间,这并没有实现。目前有一个GlassFish 6.1.0工作正在进行中,这应该使它最终与 Java SE 11 兼容(并且希望也是更新的)。


推荐阅读