GlassFish 6 和 JDK 11

GlassFish 6 and JDK 11

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

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

现在开始很有意义,因为以后更新到 Jakarta EE 10 会更容易。

Jakarta EE 9 与 Jakarta EE 8 几乎相同,只是将所有 API 特定页面移至 jakarta 命名空间。它没有带来任何新功能,因此现在不需要 JDK 升级。

您可以在这里找到更详细的信息:

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

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

JVM failed to start: com.sun.enterprise.admin.launcher.GFLauncherException: The server exited prematurely with exit code 1.

这个具体问题确实不同于 Jakarta EE API 本身的 Java SE 兼容性,也不同于其他 Jakarta EE 服务器,它们本身可以与较新的 [=29] 兼容=] SE版本。

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

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