Java 17 将是 Quarkus 3.7 的最低版本
今天我们宣布 Quarkus 3.7 将把 Quarkus 的最低 JDK 版本提升至 Java 17。
当我们开始 Quarkus 3.0 时,我们仍然使用 Java 11。我们收到的反馈是,对于许多用户来说,迁移到 Jakarta EE 10 比迁移底层 JDK 要容易。我们希望给生态系统一些时间来跟上,并确保我们有一个良好的方案来支持那些需要继续使用 Java 11 的用户。
在 3.0 版本中,我们支持了 Quarkus 核心的 Java 11,并且我们标记 Java 11 为已弃用。需要注意的是,平台的部分组件,尤其是 Camel Extensions for Quarkus,已经要求 Java 17。
今天,我们迈出了将 Quarkus 核心迁移到 Java 17 的一步,使其成为 Quarkus 3.7 及后续版本的最低 JDK 要求。
这意味着 Quarkus 3.7 将需要 Java 17 来构建和运行所有 Quarkus 应用程序。
以下是此决定的部分原因以及它对您作为 Quarkus 用户意味着什么。
每个人都在使用 Java 11 - 你不能这样做!
我们知道许多用户仍在继续使用 Java 11,我们不会强迫您迁移到 Java 17。我们只是将其设为 Quarkus 3.7 及后续版本的最低版本。
话虽如此——过去 30 天的使用数据开发构建显示,只有不到 8% 的用户在 Quarkus 开发中使用 Java 11。

我们预计生产环境中的 Java 11 使用率会更高,但趋势很明显——Java 11 的使用率很低并且在下降。
如果您愿意帮助我们获取更准确的未来数据,请考虑贡献匿名构建时间数据——有关详细信息,请参阅 quarkus.io/usage。 |
我现在还不能迁移到 Java 17,我该怎么办?
如果您现在还不能迁移到 Java 17,那么您可以继续使用 Quarkus 3.6,但我们建议您考虑使用 Quarkus 3.2 LTS 流,因为这是将获得最长更新和修复的版本。
但请注意,Java 11 本身也正在迅速接近完全支持的结束。例如,Red Hat 的完整Java 11 支持将于 2024 年 10 月结束,而Oracle 于 2023 年 9 月结束了 Premier 支持。因此,我们强烈建议您尽快开始规划迁移到 Java 17 甚至 Java 21。
我已经在使用 Java 17 了,这对我有何影响?
如果您已经在使用 Java 17,那么此更改将不会影响您。您可以继续使用 Quarkus 中的 records、多行字符串、更快的运行时性能以及 Java 17 中的所有其他酷炫功能。
为什么是 Java 17 而不是 Java 21?
Quarkus 今天已经支持 Java 21。Java 21 最知名的特性可能是虚拟线程,我们在 Java 19 首次预览时就已支持。我们主要推荐 Java 21 是因为它所做的所有改进都使任何 Java 应用程序运行得更快、更高效——无论是否使用虚拟线程。
但现实是,今天的公司和组织仍在迁移到 Java 17 的过程中,我们希望确保我们不会同时迫使他们迁移到 Java 21。
但如果您可以,请使用 Java 21 的 Quarkus,它非常棒!
我是一名 Quarkus 扩展开发者,这对我有何影响?
如果您是 Quarkus 扩展开发者,那么您应该已经使用 Java 17 测试您的扩展了。如果您还没有,那么您现在应该开始这样做。
如果您是Quarkiverse 扩展生态系统的一部分,那么在 Quarkus 3.2 时我们就已经建议您有一个针对 3.2 的分支。
如果您已经有了,那么事情应该相当直接。
为 Quarkus 3.2 构建您的扩展,使用 Java 11 作为基准,并让您的主分支使用 Java 17。
某些扩展仍然可以在 Java 11 上发布,但它们将针对 Quarkus 3.2 或 3.6——需要格外小心,以确保该扩展能够继续在 Quarkus 3.7 及更高版本上正常工作。
像 Quarkus 生态系统 CI 这样的事情,我们希望将其更新为支持多个分支——如果您对此感兴趣,特别是帮助其正常工作,请关注并/或在 quarkus-dev 邮件列表或 Zulip 上的开发频道上发帖。
Quarkus 不需要用 Java 17 构建,为什么还要要求它?
今天 Quarkus 不使用 Java 17 的特性,我们是故意这样做的,以便能够同时支持 Java 11、Java 17、Java 21 等。我们可以继续这样做——我们并不**真正**需要 records、多行字符串等来构建 Quarkus。
但不幸的是,我们开始看到我们或其他扩展的依赖项正在迁移到 Java 17,我们希望确保我们能够支持它们,并且用户可以使用它们。
2024 年即将到来的一项特别的例子是,JPA 3.2 for Hibernate ORM 7 要求 Java 17。
还有很多其他例子,因此,一旦这个 PR 合并,Quarkus 主分支将要求 Java 17 来构建和运行。