Quarkus 1.12 发布 - Fast jar 成为默认选项,RESTEasy Reactive 支持 Multipart

我很荣幸地宣布 Quarkus 1.12.0.Final 的发布。

它带来了一些重要的变化

  • 构建 jar 时,Fast jar 现在是默认的打包方式。

  • RESTEasy Reactive 持续改进,现在支持 multipart。

  • 已移除 Vert.x Axle 和 RX Java 管理的实例。

  • 我们已升级到 GraalVM 21.0。

迁移指南

急切地想迁移现有应用程序?这是我们的 1.12 迁移指南

有什么新功能?

Fast jar 成为默认选项

Quarkus 一直提供几种 jar 打包类型。历史上,我们有标准 jar 打包(带有 -runner.jarlib/ 目录)或 uber jar。在 Quarkus 1.5 中,我们引入了一种名为 Fast jar 的新打包类型,其主要目标是进一步提高我们的启动时间。

在 Quarkus 的时间线上,1.5 意味着一个世纪前,我们认为 Fast jar 已经准备就绪,并带来了足够的改进来证明这次更改是合理的。因此,我们决定从 1.12 开始将其设为默认。

此更改将对您的工作流程产生影响,因为生成的工件现在位于 quarkus-app 目录中。

因此,您将不再使用以下方式启动您的应用程序

java -jar target/my-application-runner-1.0.0-SNAPSHOT.jar

您现在将使用以下方式启动它

java -jar target/quarkus-app/quarkus-run.jar

部署应用程序时,需要部署整个 quarkus-app 目录。

您的 Dockerfiles 也需要进行调整以考虑这一点。

您可以在我们的 迁移指南 中找到更多详细信息。

如果现在不是更改工作流程的时候,您可以通过在 application.properties 中添加以下属性轻松恢复到之前的打包方式

quarkus.package.type=legacy-jar

RESTEasy Reactive

我们继续稳步改进 RESTEasy Reactive,这次我们引入了 Multipart 支持。

它与 RESTEasy 的 Multipart 支持非常相似,看起来像这样

import java.util.Map;

import javax.ws.rs.core.MediaType;

import org.jboss.resteasy.reactive.PartType;
import org.jboss.resteasy.reactive.RestForm;
import org.jboss.resteasy.reactive.multipart.FileUpload;

public class FormData {

    @RestForm
    @PartType(MediaType.TEXT_PLAIN)
    public String description;

    @RestForm("image")
    public FileUpload file;
}

您可以在更新的 RESTEasy Reactive 指南 中找到更多关于它的信息。

GraalVM 21

Quarkus 1.12 推荐的版本是 GraalVM 21.0。

Vert.x Axle 和 RX Java 管理的实例已移除

它们已经被弃用了一段时间,现在已被移除。

请使用原始 Vert.x 实例或 Mutiny 实例。

完整变更日志

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

编辑:我们发现此版本中引入的 /q 命名空间存在一些问题,详情请参见 此处。这些问题已在 1.12.1.Final 中得到解决。

ADOPTERS.md

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

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

贡献者

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

特别感谢 Alex Soto, Alexey Loubyansky, Andy Damevin, artsemstones, Auri Munoz, Bernhard Lutzmann, Bill Burke, Clement Escoffier, Erin Schnabel, Ertunc Aybars, essobedo, Falko Modler, Florian Heubeck, Foivos Zakkak, Galder Zamarreño, Gaétan Collaud, George Gastaldi, Georgios Andrianakis, Guillaume Le Floch, Guillaume Smet, Gwenneg Lepage, Henrique Prange, Ioannis Canellos, Jaikiran Pai, James Netherton, Jan Martiška, JiriOndrusek, Johnnes Souza, Joost Baas, Jose, Jose Ignacio Gil Jaldo, Josef Smrcka, Julien Ponge, Katia Aresti, Ken Finnigan, Knut Wannheden, kstrempel, Ladislav Thon, Loïc Mathieu, Lucas Reeh, Maciej Walkowiak, Mahieddine Cherif, Maik Möwes, manusa, Manyanda Chitimbo, Martin Kouba, Martin Panzer, Matej Novotny, Matej Vasek, Maxime DAVID, Mayank Kunwar, Michał Szynkiewicz, Moritz Becker, mrizzi, Nuno Alves, Oscar, PAPADOPOULOS Nikolaos, Peter Palaga, Petr Široký, Phillip Krüger, René Grob, Robert Stupp, Roberto Cortez, Rostislav Svoboda, Sanne Grinovero, SaumyaSingh1, sebthom, Sergey Beryozkin, S.H, Stuart Douglas, Stéphane Épardaud, Suleimenov Yelzhas, Ted Won, Thomas McWork, Thomas Pfaff, Thomas Segismont, Timothy Power, Tobias Stadler, Vasilis Andritsoudis, Vincent Sevel, xstefank, and Yoann Rodière 为 1.12 的发布做出的贡献。

加入我们

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

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