所以我试图了解哪些 JDK 版本与 Jakarta EE 9.1(使用 glassfish 6.1.0)兼容。显然它最高支持 JDK 11,但在 NetBeans 中能够完美运行安装了 JDK 16 的 GlassFish。它还显示已安装的 Jakarta API 库是 9.0.0 版,但不知何故我仍然能够下载、安装和运行 GlassFish 6.1.0..
简而言之,我真的很困惑所有的版本兼容性,以及在没有匹配版本的情况下这些东西如何在我这边工作(假设我上面写的是正确的)。
最佳答案
- 任何符合 Jakarta EE 9.0 的产品保证与 Java 8 一起使用.
- 任何符合 Jakarta EE 9.1 的产品保证与 Java 11 一起使用.
一些产品也适用于更高版本的 Java。
Java 8、11 和 17 是官方的 Long-Term Support (LTS)版本。因此,这些版本预计将用于正式部署的生产环境中。
Jakarta EE 9.1 的要点是对 Java 11 的支持。一些规范有其他变化,但大多是次要的。
Jakarta 10 目前正在开发中,您可以期待看到创新和改进。您可以找到许多讨论可能的更改和当前计划的视频演示和博客文章。各个团队正在征求对其特定规范感兴趣的人员的意见。
你说:
able to perfectly run GlassFish with JDK 16 installed
Java 16 现已停产,不再受支持。我建议您继续使用 Java 17,即当前版本和 LTS 版本。
是的,许多产品可以在更高版本的 Java 上运行良好。对于与旨在支持 Java 11 的 Jakarta EE 9.1 兼容的产品尤其如此。Java 在破坏或限制 Java 8 和 11 之间的向后兼容性方面存在一些问题。因此,一些较旧的产品在超过 Java 8 时可能会遇到问题。在相比之下,从 Java 11 到 17 的兼容性非常顺利,几乎没有问题。
但这就是 six-month cadence 的重点官方 Java 版本。您可以并且很可能应该使用每个 Java 版本进行一些开发和测试工作。如果您遇到任何问题,您可以尽早向问题产品的开发者反馈。
关于 Eclipse GlassFish具体来说,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 的支持。
关于java - Jakarta/Java EE 兼容性如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69599649/