改进 Quarkus 扩展命名以提高清晰度

Quarkus 致力于为 JVM 开发者提供现代化、高效且富有成效的开发体验。我们致力于让您更轻松地构建云原生应用程序,无论您使用的是传统的阻塞式、响应式还是虚拟线程编程模型。

历史上,Quarkus 在多个扩展名称中使用了“reactive”一词,以表示其对非阻塞、事件驱动编程的额外支持。

然而,我们发现这种术语给用户带来了许多混淆和误解。许多用户错误地认为使用这些“reactive”扩展会迫使他们采用响应式编程,尽管 Quarkus 默认推荐应用程序使用传统的阻塞式编程模型,只有在有需求时(如高并发需求或需要编排许多异步任务)才使用响应式编程模型。

随着 Java 21 中虚拟线程(Virtual Threads)的正式发布,传统、响应式以及现在的虚拟线程编程模型之间的区别变得更加重要。

我们的解决方案:新的命名策略

为了解决这个问题并更有效地指导用户,我们决定修订某些扩展的命名约定。此更改旨在阐明这些 Quarkus 扩展的功能和灵活性,让您更轻松地为项目选择合适的扩展。

此更改将于 Quarkus 3.9 版本生效。

以下是更改摘要

  • Quarkus RESTEasy Reactive 变更为 Quarkus REST,强调其通用性,超越了仅限于响应式编程的范畴。

  • Quarkus SmallRye Reactive Messaging 现更名为 Quarkus Messaging,表明其更广泛的使用场景。

  • 那些本质上推动响应式编程模型的扩展,例如 Quarkus Hibernate Reactive,将保留“reactive”术语。

  • Quarkus REST Client Reactive 简化为 Quarkus REST Client,在更通用的“REST”目录下统一命名。

  • 其他几个扩展也为保持一致性进行了更名。

Quarkus REST、Quarkus Messaging 和 Quarkus REST Client 在底层仍然利用响应式引擎以实现效率和性能。在用户层面,这是一个实现细节。

这些扩展的配置属性也已重命名,以引用新名称。

对用户的影响

这些更改旨在明确说明,在使用这些扩展时,您并不局限于响应式编程。无论您偏爱传统的阻塞式方法、响应式编程还是虚拟线程,Quarkus 都能满足您的需求。

对于大多数项目,此重命名不应要求进行更改,但对于那些使用了 `quarkus-rest-client` 的项目,可能需要在依赖项中进行一些调整。我们致力于使此过渡尽可能顺利。以下是一些帮助您适应的关键点:

  • Maven 迁移:我们为重命名的扩展引入了 Maven 迁移,在您更新依赖项时将引导您使用新名称。

  • 配置回退:旧的配置属性将继续工作。但建议迁移到新的属性。

  • 工具更新:Quarkus CLI 将默认在新项目中 all 使用新名称,但仍兼容旧名称。

  • Quarkus 更新:`quarkus update` 提供了食谱,帮助您在相关时执行更新/重命名(包括配置属性)。

  • 文档:我们的文档已更新以反映新的扩展名称,使您更容易为项目找到合适的扩展。

  • 迁移指南:一如既往,我们的迁移指南包含所有详细信息。但是,我们强烈建议使用 `quarkus update` 来迁移到新名称。

对于现有项目,我们建议您继续使用旧名称,如果您想保持与旧版本 Quarkus 的兼容性——否则,请按照自己的节奏升级到新名称。

对于新项目,我们将默认使用并推荐新名称。

这对扩展作者意味着什么

如果您开发了 Quarkus 扩展,并希望在支持新版本的同时保持与 Quarkus LTS 版本的兼容性,我们建议将旧名称保留为新名称的别名。这将确保您的扩展与旧版本 Quarkus 兼容。迁移解决了这个问题。

对于针对 3.9+ 的扩展,您应该使用新名称。可以为 3.8 及更早版本创建一个单独的分支以保留旧名称。