Quarkus 1.3.0.Final 发布 - 新类加载器基础设施、GraalVM 20 支持以及更多

如果您还没有注意到,距离我们上次发布 Quarkus 主要版本还不到两个月,因为我们经历了一些广泛的测试阶段来验证我们的新类加载器基础设施。

非常感谢所有测试了我们 Alpha/CR 版本并提供反馈的人。

两个月?在 Quarkus 世界里,这可是一段不短的时间,所以请期待大量新内容。

废话不多说,让我们来看看 1.3 版本带来了什么。

迁移指南

急于迁移现有应用程序?这是我们的 1.3.0.Final 迁移指南

有什么新功能?

新类加载器基础设施

由于 Quarkus 的创新性(尤其是在我们的测试基础设施和开发模式方面),我们遇到了一些反复出现的类加载问题。

Quarkus 1.3 带来了全新的类加载基础设施,修复了我们遇到的结构性问题。新的类加载基础设施在 类加载参考指南 中有详细描述。

我们在 Alpha 和 CR 阶段对这个新基础设施进行了完善,所以现在它非常稳固。如果您遇到奇怪的类加载问题,请附带重现步骤报告给我们,我们将在即将发布的 1.3.1 版本中包含所有这些修复。

一个 Vert.x 统治一切

我们做了大量工作,让 Quarkus 中只有一个 Vert.x 实例来处理所有事情,而不是两个。这项工作的目的是减少资源消耗,希望对您来说没有任何改变。

这可能是最显眼的变化:默认情况下,启动 Quarkus 时会显示一个 ASCII 艺术 Banner。

您当然可以

  • 自定义它,

  • 为特定项目禁用它,

  • 为所有项目全局禁用它。

请参考 文档 获取更多详细信息。

Mutiny 崛起

引入了一个新的响应式编程 API。这个名为 Mutiny 的 API 取代了 Axle 和 Reactive Streams Operators 模型(Reactive Streams 和 CompletionStage)。以前的模型仍然可用,但已弃用,将在未来移除。

如果您想了解更多信息,请参考 响应式入门指南

轻松部署到 Kubernetes 或 OpenShift

Kubernetes 扩展已经进行了全面改进,现在用户几乎可以毫不费力地将 Quarkus 应用程序部署到 Kubernetes 或 OpenShift。本质上,该扩展现在还负责生成容器镜像(有关更多详细信息,请参阅 容器镜像)并在生成容器镜像后,将生成的 Kubernetes 清单应用到目标集群。

请参考 文档 获取更多详细信息。

Eclipse MicroProfile 3.3 规范

SmallRye 扩展已更新以实现 Eclipse MicroProfile 3.3。

一篇包含更多细节的博文即将发布。

默认 HTTP 读取超时

我们增加了配置 HTTP 读取超时(通过 quarkus.http.read-timeout)的功能,其默认值为 1 分钟。

新扩展

容器镜像

我们付出了巨大的努力来简化 Quarkus 的容器镜像构建。

我们现在有一组扩展,可以在 Quarkus 构建过程中基于 Quarkus 配置构建镜像,可以使用 Jib、Docker 或 S2I。

有关更多信息,请参阅 容器镜像指南

OptaPlanner

OptaPlanner 是一个 AI 约束求解器。它优化规划和调度问题。

OptaPlanner Quarkus 扩展将 OptaPlanner 的所有功能带到 Quarkus,甚至可以在原生可执行文件中使用。如果您想了解 OptaPlanner 如何提供帮助,请阅读 OptaPlanner 指南

Security JPA

想让您的用户存储在由 Hibernate ORM 管理的数据库中吗?只需添加几个注解,Security JPA 扩展 就能满足您的需求。

Spring Cloud Config Client

我们通过 Spring Cloud Config Client 扩展了我们的 Spring 兼容层。

AWS X-Ray

添加了对 AWS X-Ray 的支持,因此您可以在 JVM 模式和原生模式下与 AWS Lambda 一起使用它。

Qpid JMS

我们现在推荐使用 Qpid JMS 扩展而不是 Artemis JMS 扩展。功能相同,只是增加了更多的灵活性。

Artemis JMS 扩展仍然可用。

有关更多信息,请参阅 JMS 指南

Liquibase

我们已经有了 Flyway 扩展一段时间了,现在您也可以使用 Liquibase 来处理您的数据库模式迁移。

有关更多信息,请参阅 Liquibase 指南

响应式 MongoDB with Panache

喜欢响应式?喜欢 MongoDB?喜欢简单的代码?

隆重推出响应式 MongoDB with Panache 扩展。有关更多详细信息,请参阅 MongoDB with Panache 文档

GraalVM 20.0 支持

1.3.0.Final 支持四种 GraalVM 版本

  • GraalVM 19.3.1 - JDK 8

  • GraalVM 19.3.1 - JDK 11

  • GraalVM 20.0.0 - JDK 8

  • GraalVM 20.0.0 - JDK 11

总而言之,对于 Quarkus,您可以使用

  • JVM 模式下的 JDK 8、11、12、13 或 14

  • 使用 GraalVM 19.3.1 或 20.0.0 的 JDK 8 或 11 来构建原生可执行文件

GraalVM 中的 JDK 11 支持仍处于技术预览阶段。我们方面没有遇到任何特定问题,除了编译速度变慢了约 20%。

Hibernate ORM

自动关联管理通过字节码增强功能已从现在开始禁用。

可以通过将 quarkus.hibernate-orm.second-level-caching-enabled 配置属性设置为 false 来禁用二级缓存。

Spring 兼容层

Spring 兼容层现在基于精简的工件,仅包含必要的 API 和注解,而不是完整的 Spring jar。

更少的依赖,更少的代码,并且只提供支持的功能。

还有更多……

  • Gradle 和 Kotlin 支持方面的多项改进

  • 原生可执行构建的 <enableJni> 选项已被弃用并标记为将要移除,因为 JNI 在 GraalVM 19.3+ 中始终启用。

  • Flyway 扩展现在支持 out-of-order 配置属性。

  • 我们的 Qute 模板引擎正在不断成熟,并获得了相应的错误修复和改进。

  • 我们支持 Keycloak 9。

  • Hibernate Search + Elasticsearch 已升级到 6.0.0.Beta5。

  • 您现在可以注入 Quartz 扩展的底层 Quartz 调度器以获得更大的灵活性。

完整更新日志

您可以在 GitHub 上获取 1.3.0.Alpha11.3.0.Alpha21.3.0.CR11.3.0.CR21.3.0.Final 的完整更改日志。

ADOPTERS.md

为了分享有关 Quarkus 用法的故事,我们在存储库的根目录中添加了一个 ADOPTERS.md 文件

如果您正在使用 Quarkus 并希望在我们的博客上接受采访或只是添加到此文件中,请与我们联系,我们很乐意效劳。

贡献者

Quarkus 社区正在不断壮大,现在已有 246 位贡献者。非常非常感谢他们中的每一位。

特别感谢为 1.3.0 版本做出贡献的 Akito Kidani、Alex Soto、Alexey Loubyansky、Alvaro Serrano、Andreas Eberle、Andrej Petras、Andrew Guibert、Andy Damevin、Aurea Munoz、Bill Burke、Clement Escoffier、cstdev、Darran Lofthouse、David M. Lloyd、Emmanuel Bernard、Erik Mattheis、Erin Schnabel、Felix Wong、Geoffrey De Smet、George Gastaldi、Georgios Andrianakis、Grzegorz Piwowarek、Guillaume Smet、Gunnar Morling、Gwenneg Lepage、Harald Reinmueller、Harold Sun、Ioannis Canellos、Irena Kezic、Jaikiran Pai、Jakubo96、Jan Martiska、Jason T. Greene、Jesper Skov、Joachim Segala、Johannes、John O’Hara、Jonas Scholz、Jordi Sola、Josejulio Martínez、Justin Lee、Kamesh Sampath、Katia Aresti、Kaxil Naik、Ken Finnigan、Kuzuha Shinoda、Ladislav Thon、Loïc Mathieu、Luca Burgazzoli、Luis F Munoz、Luram Archanjo、Maciej Swiderski、Manyanda Chitimbo、Marc Häbich、Martin Kouba、Martin Panzer、Matej Novotny、Max Rydahl Andersen、Michal Karm Babacek、Michał Szynkiewicz、Miroslav Stary、Nicolas Martignole、Olivier Dufour、Ondrej Machala、Paulo Casaes、Pavol Loffay、Pedro Igor、Peter Palaga、Phillip Kruger、Pierre PLR、Raffael Hertle、Ramakrishna Pattnaik、Rinaldo Pitzer Júnior、Robbie Gemmell、Roberto Cortez、Rohan Maity、Rostislav Svoboda、Sanne Grinovero、Sebastian Wastl、Sergey Beryozkin、Stefnotch、Stuart Douglas、Stéphane Épardaud、testfixer、Thomas Segismont、Timothy Power、Tobias Liese、Tomaz Cerar、Vincent Sevel、Vincent Sourin、Vinícius Ferraz Campos Florentino 和 Yoann Rodière。

加入我们

我们非常重视您的反馈,所以请报告错误,提出改进建议…… 让我们一起构建伟大的东西!

如果您是 Quarkus 用户或只是好奇,请不要害羞,加入我们热情的社区