Quarkus 1.6 发布 - AppCDS、Google Cloud Functions、GraalVM 20.1.0 等...

夏天来了,我们仍在以快速的步伐努力改进 Quarkus。

当然,我们改进了现有功能、文档并修复了错误,但也带来了一些非常有趣的新功能

  • 集成 AppCDS 归档生成,以改善 JVM 模式下的启动时间

  • 支持 Google Cloud Functions - 加入现有的 Amazon Lambda 和 Azure Functions 支持

  • 响应式 IBM Db2 客户端(Db2 JDBC 驱动程序将在 1.7 中推出)

  • Apache Cassandra 客户端

  • WebJars 定位器扩展和 Spring @Scheduled 支持

  • 更好的应用程序故障排除工具

  • 升级到 GraalVM 20.1.0

这一切得益于社区宝贵的反馈和参与,请继续支持我们,提交 issue,在 quarkus-dev 邮件列表中发帖,在 Zulip 上与我们交流。我们发展迅速,您的反馈将直接融入到 Quarkus 的下一个版本中。

迁移指南

急于迁移现有应用程序?这是我们为 1.6 提供的迁移指南

有什么新功能?

核心变更

Fast-jar 打包格式

fast-jar 打包格式正在不断成熟。如果您还没有在您的应用程序上测试过它,我们建议您尝试一下,因为我们将在未来的某个时候将其设为默认值。

您可以通过将以下行添加到 application.properties 来进行测试

quarkus.package.type=fast-jar

或在构建时传递 -Dquarkus.package.type=fast-jar

AppCDS

Quarkus 1.6 引入了在构建过程中自动生成 AppCDS 的能力。

本质上,如果您使用的是 Java 11+,通过配置 quarkus.package.create-appcds=true(是的,就是这么简单!),Quarkus 将创建一个 AppCDS 文件,您可以使用它来提高应用程序在 JVM 模式下的启动时间。AppCDS 文件名为 app-cds.jsa,并生成在应用程序 jar 的同一目录下(支持所有类型的 Quarkus jar)。

要使用它,只需从 jar 文件和 AppCDS 文件所在的目录运行 java -jar -XX:SharedArchiveFile=app-cds.jsa myapp.jar(这不一定是你最初的构建目录,但文件必须在同一个目录中,并且 Java 进程必须从该目录运行)。请注意,此目录要求不是 Quarkus 特有的限制,而是 JVM 的要求,即构建 AppCDS 文件和使用它的应用程序运行时必须具有相同的类路径。最后,请确保在构建和运行应用程序时使用相同的 JVM 版本(同样,这也是 JVM 的限制)。

在接下来的几天里,我们将在专门的博客文章中分享更多详细信息。

尽管此功能仍处于实验阶段,并且仍需与容器镜像生成扩展 properly 集成,但它仍然是完全可用的。

CDI 开发模式端点

Quarkus 1.6 引入了一些有用的端点,可以通过 /quarkus/arc/beans/quarkus/arc/observers 来概览您的 CDI 上下文。

这些在 CDI 参考指南中有详细描述。

请求体最大文件大小

以前默认是无限制的,现在我们将其限制为 10 MB。当然,您仍然可以通过 quarkus.http.limits.max-body-size 进行配置。

扩展

Google Cloud Functions

通过增加对 Google Cloud Functions 的支持,Quarkus 现在支持所有主要云提供商的无服务器部署。

如果您想了解更多信息,我们为您准备了两篇新指南,您可以选择开发一个简单的函数使用 HTTP

响应式 IBM Db2 客户端

我们现在有了用于 MySQL/MariaDB、PostgreSQL 和 IBM Db2 的响应式 SQL 客户端。

Apache Cassandra 客户端

Apache Cassandra 客户端已加入 Quarkus 平台。

专用指南中了解更多关于如何在 Quarkus 应用程序中使用 Cassandra 的信息。

WebJars 定位器扩展

如果您在应用程序中使用 webjars,我们现在提供了一个扩展,允许您从 webjar 路径中删除版本号。

更多信息请参阅我们的文档

Spring @Scheduled 支持

我们的 Spring 兼容层通过增加对 Spring 的 @Scheduled 注释的支持,变得越来越完善。

我们支持的内容和当前限制都在本新指南中有所描述。

GraphQL 扩展中的 OpenTracing

喜欢追踪事物?热爱 GraphQL?

我们已经为您准备好了,一旦 OpenTracing 扩展可用,SmallRye GraphQL 扩展中将启用 OpenTracing。

OptaPlanner 扩展已移出核心仓库

OptaPlanner 扩展已从 Quarkus 核心仓库提取到 OptaPlanner 仓库。

顺便说一句,artifact id 已经更改,因此,如果您在项目中使用 OptaPlanner 扩展,请迁移到新的扩展

  • org.optaplanner:optaplanner-quarkus

  • org.optaplanner:optaplanner-quarkus-jackson

  • org.optaplanner:optaplanner-quarkus-jsonb

这些 artifact 是 Quarkus 平台的一部分,所以

  • 您可以通过 https://code.quarkus.io 或使用常规的 add-extension 命令直接安装它们。

  • 它属于平台 BOM,所以您无需定义版本。

原生镜像

GraalVM 20.1.0

我们已升级到 GraalVM 20.1.0。虽然旧版本可能仍然可用,但我们建议升级到此版本。

信任存储

GraalVM 19.3 改变了原生镜像处理信任存储的方式。

我们的文档在这方面已过时且帮助不大,已更新

故障排除

TROUBLESHOOTING.md

Quarkus 的启动时间和运行时性能一直在不断提高,其主要原因是我们获得了社区的宝贵反馈。(嗯,我们也做了基准测试。)

当您遇到 Quarkus 的性能问题时,我们经常会要求更多细节,而您可能不熟悉能够为我们提供有用见解的各种工具。

通过我们新的 TROUBLESHOOTING.md,可以轻松地对用户应用程序的启动或运行时缓慢进行剖析。

扩展依赖验证

此更改仅与扩展开发者相关:Quarkus 现在会验证扩展中的部署和运行时依赖项是否一致。

如果 Quarkus 向您发出警告,请检查每个运行时依赖项是否在部署 pom 中具有相应的部署 artifact。

完整更新日志

您可以在 GitHub 上获取 1.6.0.CR11.6.0.Final 的完整变更日志。

ADOPTERS.md

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

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

贡献者

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

特别感谢 Aaron Rogers、Ales Justin、Alex Soto、Alexander Schwartz、Alexey Loubyansky、Andrea Cosentino、Andrej Petras、Andrew Guibert、Andy Damevin、Antonio Goncalves、Aurea Munoz、Luis Barreiro、Bill Burke、Cem Nura、Chris Laprun、Christian Beikov、Clement Escoffier、crissi98、Cuneyt Ozen、David Santos、Dejan Bosanac、Diogo Quintela、Domenico Loiacono、Dominika Vagnerova、Emanuel Alves、Emmanuel Bernard、Falko Modler、Foivos Zakkak、Galder Zamarreño、Garima Monga、Gaétan Collaud、Geoffrey De Smet、George Gastaldi、Georgios Andrianakis、ghokun、Giacomo Margaria、Guillaume Le Floch、Guillaume Nodet、Guillaume Smet、Gunnar Morling、Gwenneg Lepage、Gytis Trikleris、hantsy、Harald Reinmueller、Harsh Madhani、Hugh Lunnon、Ioannis Apostolidis、Ioannis Canellos、Jaikiran Pai、James Perkins、Jan Martiška、Jiří Locker、Jonathan Dowland、Jordi Sola、Jorge Solórzano、Justin Lee、kdnakt、Ken Finnigan、Kevin Viet、Ladislav Thon、Loïc Mathieu、Luka Lodrant、Manyanda Chitimbo、Marcin Czeczko、Mark Borner、Markus Heberling、Martin Kouba、Matej Novotny、Matej Vasek、Max Rydahl Andersen、Michał Górniewski、Michał Szynkiewicz、Moritz Becker、Paul Carter-Brown、Paul Robinson、Paulo Casaes、Pedro Igor、Peter Palaga、Phillip Krüger、Raffael Correia Mendes、Robbie Gemmell、Roberto Cortez、Romain Quinio、Rostislav Svoboda、Sanne Grinovero、Sergey Beryozkin、Sorin I Costea、Stuart Douglas、Ståle Pedersen、Stéphane Épardaud、Thomas Segismont、Timothy Power、Vincent Sevel、Vinícius Ferraz Campos Florentino、Vlastimil Eliáš、Willem Jan Glerum 和 Yoann Rodière 对 1.6 版本做出的贡献。

加入我们

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

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