Jakarta/Java EE 兼容性如何工作?

How does Jakarta/Java EE compatibility work?

所以我试图了解哪些 JDK 版本与 Jakarta EE 9.1(使用 glassfish 6.1.0)兼容。显然它最多支持 JDK 11,但在 NetBeans 中能够完美地 运行 安装了 JDK 16 的 GlassFish。它还显示已安装的 Jakarta API 库是 9.0.0 版,但不知何故我仍然能够下载、安装和 运行 GlassFish 6.1.0..

简而言之,我真的很困惑所有的版本兼容性,以及在没有匹配版本的情况下这些东西如何在我这边工作(假设我上面写的是正确的)。

一些产品也适用于更高版本的 Java。

Java 8、11 和 17 是官方 Long-Term Support (LTS) 版本。因此,这些是预期在生产中用于严肃部署的版本。

Jakarta EE 9.1 的要点是对 Java11 的支持。一些规范有其他变化,但大多是次要的。

Jakarta 10 目前正在开发中,您可以期待看到创新和改进。您可以找到许多讨论可能的更改和当前计划的视频演示和博客文章。各个团队正在征求对他们的特定规范感兴趣的人的意见。

你说:

able to perfectly run GlassFish with JDK 16 installed

Java 16 现已停产,不再受支持。我建议您转到 Java 17,当前版本,也是 LTS 版本。

是的,许多产品 运行 与 Java 的更高版本兼容。对于符合 Jakarta EE 9.1 的产品尤其如此,旨在支持 Java 11。Java 在破坏或限制 Java 8 和 11 之间的向后兼容性方面存在一些问题。所以一些较旧的产品移动到 Java 8 时可能 运行 出现问题。相比之下,从 Java 11 到 17 的兼容性非常顺利,几乎没有问题。

但这就是 six-month cadence 官方 Java 版本的重点。您可以并且很可能应该使用每个 Java 版本进行一些开发和测试工作。如果您遇到任何问题,可以尽早反馈给问题产品的开发者。

关于 Eclipse GlassFish specifically, their home page 描述了各种版本。

  • 版本 6.2.2 是与 Jakarta EE 9.1 兼容的当前版本。
    • 用 JDK 11 编译到 JDK 17
    • 在 JDK 11 到 JDK 17 上运行。
    • 使用 JDK 18 个抢先体验版本进行了简要测试。
  • 之前的版本 GlassFish 6.2.1 为 JDK 17.
  • 带来了很大改进的支持