jakarta-ee - GlassFish 6 和 JDK 11
问题描述
我正在接近 Jakarta EE 9,我似乎明白 GF 6 只能在 JDK 8 上运行。另一方面,Jakarta EE 9 与 JDK 8 兼容,那么这允许在 GF 6 上开发和运行 EE 9 应用程序,好的,但是我的疑问:
- 如果第一个 EE 实现只能在 JDK 8 上运行,那么在最新/热门的 Jakarta EE 9 技术上进行开发是否有意义?为什么 ?
解决方案
确实,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 兼容(并且希望也是更新的)。
推荐阅读
- angular - 在 Observable 中更改数组中的对象
不是带有 rxjs 的数组本身 - python - 如何在网站 https://www.wikiloc.com/wikiloc/download.do?id=41057284 中单击带有文本的按钮作为获取应用程序
- python - 输入路径不存在 apache-spark
- java - RecyclerView Adapter 的 notifyItemRangeChanged 很慢?
- r - 使用 `texreg` 显示 AIC、BIC gof stats
- php - 从复选框中获取值
- java - Java replaceAll ' with '' 除了第一次和最后一次出现
- python - 带有两个布尔数组的 For 循环的 If 条件中的 ValueError
- asp.net - 知道 ASP.NET 是阻塞和同步的,ASP.NET 如何比 Node.js 快?
- java - 运行 JUnit 测试类时如何重启 SpringBootApplication 应用程序