Quarkus 1.11 发布 - RESTEasy Reactive、Dev UI 等!

对于 Quarkus 的每一次发布,故事都是一样的:它带来了大量的令人兴奋的新功能和改进……信不信由你,这是真的。

1.11 是一个重要的里程碑,因为它标志着两个令人惊叹的新功能的开始

  • RESTEasy Reactive,

  • 我们的 Dev UI。

但它也带来了许多其他改进,无论是 Micrometer、jbang 还是我们的 Spring 兼容层。

如果没有所有测试了我们 Beta 版和 CR 版的人们,这次发布就不会如此成功,所以非常感谢所有参与测试本次发布的人!

迁移指南

渴望迁移现有应用程序?这是 我们的 1.11 迁移指南

GraalVM 20.3 的 Java 11 版本是新推荐的 GraalVM 版本。

有什么新功能?

RESTEasy Reactive

正如你可能从名字猜到的那样,这项工作是全新的 JAX-RS 实现,它从头开始编写,以便在我们的通用 Vert.x 层上运行,因此是完全 响应式的,同时还与 Quarkus 紧密集成,并因此将许多框架特定的工作(如注解扫描和元模型生成)移到 构建时

RESTEasy Reactive 允许你利用广泛使用且功能强大的 JAX-RS API 为你的应用程序公开 REST 层,同时在应用程序可达到的最大吞吐量方面获得显著提高。应用程序的启动速度也应该会略微加快,内存消耗也会略微减少。

Georgios 在 RESTEasy Reactive 公告 中详细介绍了这一点。

RESTEasy Reactive 指南 中可以找到详细的文档。

Dev UI

这是一个伟大故事的开端:Quarkus 1.11 提供了一个专用于开发的 UI,使其比以往任何时候都更容易。

dev ui

每个扩展都可以将功能暴露在这个 Dev UI 中,无论是列出 CDI bean、列出端点、重放 Flyway 迁移、部署到 OpenShift……可能性是无限的。

Quarkus 1.11 引入了这个 Dev UI 的基础设施和一些功能。如果你是扩展开发者或想做一些前端工作,我们非常欢迎添加和改进。

Dev UI 仅在开发模式下可用(例如 mvn quarkus:dev),默认情况下可以通过 /q/dev 端点访问。

想为 Dev UI 添加功能?看看 我们的 Dev UI 指南

改进的 Micrometer 支持

我们的 Micrometer 支持在不断改进

  • Kafka Streams 指标现已公开。

  • 注册表已移至扩展。

至于注册表,Prometheus 的注册表是我们核心扩展的一部分:io.quarkus:quarkus-micrometer-registry-prometheus

其余的注册表托管在 Quarkiverse(我们存放附加扩展的地方)

Azure Monitor

io.quarkiverse.micrometer.registry:quarkus-micrometer-registry-azure-monitor

Datadog

io.quarkiverse.micrometer.registry:quarkus-micrometer-registry-datadog

JMX

io.quarkiverse.micrometer.registry:quarkus-micrometer-registry-jmx

SignalFX

io.quarkiverse.micrometer.registry:quarkus-micrometer-registry-signalfx

Stackdriver

io.quarkiverse.micrometer.registry:quarkus-micrometer-registry-stackdriver

StatsD

io.quarkiverse.micrometer.registry:quarkus-micrometer-registry-statsd

如果你想为这些注册表做出贡献或创建新的注册表,Quarkus Micrometer Registry 项目就是你要找的地方。

Spring Data REST

如果你正在使用我们的 Spring Data 兼容层,现在可以利用 Spring Data REST 扩展来简化 CRUD REST 层的编写。它与我们的 REST with Panache 扩展非常相似。

你可以在 专用指南 中找到更多关于它的信息。

非应用程序端点已移至 /q/

Quarkus 公开了某些技术端点,这些端点不是你应用程序的一部分(例如,健康端点)。

为了避免与你的应用程序端点冲突,它们都已移至 /q/ 命名空间。已添加重定向以将旧 URL 重定向到新 URL。

此根路径可以通过 quarkus.http.non-application-root-path 进行自定义。

编辑:我们在本次发布中引入的 /q 命名空间发现了一些问题,这些问题 此处 有描述。这些问题已在 1.11.5.Final 中得到解决。

Hibernate ORM

到目前为止,只能在你的应用程序中注入 JPA EntityManagerFactoryEntityManager。从 1.11 开始,如果你需要访问 Hibernate ORM 特定的方法,可以注入 SessionFactorySession

Jackson

默认启用了 CDI 的 ObjectMapperFAIL_ON_UNKNOWN_PROPERTIES 现在默认禁用。

有关如何恢复到先前行为的更多详细信息,请参阅 https://quarkus.net.cn/guides/rest-json#jackson

jbang 开发模式和平台支持

jbang 的集成现在支持启用开发模式,并可以使用 Quarkus 平台 (BOM) 进行版本管理。为此,你需要使用 jbang v0.62+。

要运行它,只需传递 -Dquarkus.dev,例如:

jbang -Dquarkus.dev myapp.java

例如,myapp.java 如下所示:

//usr/bin/env jbang "$0" "$@" ; exit $?
//DEPS io.quarkus:quarkus-bom:1.11.0.Final@pom
//DEPS io.quarkus:quarkus-resteasy
//DEPS io.quarkus:quarkus-smallrye-openapi

import io.quarkus.runtime.Quarkus;
import io.quarkus.runtime.QuarkusApplication;

import javax.ws.rs.GET;
import javax.ws.rs.Path;

import static java.lang.System.*;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
@Path("/hello")
public class quarkusrest {

    public static void main(String... args) {
        Quarkus.run(args);
    }

    @GET
    public String sayHello() {
        return "hello from Quarkus with jbang.dev";
    }
}

注意第一行中 @pom 的使用;它指示 jbang 加载平台的 pom 并将其用于版本管理,而其他依赖项的版本可以省略。

然后,使用开发模式,你可以编辑该文件并再次保存它,Quarkus 的实时重新加载功能将负责应用更改。

其他开发模式功能,例如 https://:8080/q/devhttps://:8080/q/swagger-ui 也可用。

目前这仅适用于单文件 jbang 脚本,未来的版本将支持多文件。

GraalVM 20.3

Quarkus 1.11 推荐使用的 GraalVM 版本是 GraalVM 20.3。

完整变更日志

你可以在 GitHub 上获取 1.11.0.Beta11.11.0.Beta21.11.0.CR11.11.0.Final 的完整发布说明。

ADOPTERS.md

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

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

贡献者

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

特别是对于 1.11 版本,感谢 Alex Soto、Alexey Loubyansky、Amos Feng、Andy Damevin、Auri Munoz、Bill Burke、Bruno Gonçalves、Cem Nura、Chin Huang、Chris Laprun、Christian von Atzigen、Christoph Hermann、Clement Escoffier、cristhiank、David M. Lloyd、Davide D’Alto、Dejan Bosanac、Dennis Kieselhorst、Erin Schnabel、essobedo、Falko Modler、Foivos Zakkak、Galder Zamarreño、Geoffrey De Smet、George Andrinopoulos、George Gastaldi、Georgios Andrianakis、Guillaume Le Floch、Guillaume Smet、Gunnar Morling、Gwenneg Lepage、Gytis Trikleris、Henrique Prange、Ioannis Canellos、Jan Martiška、Jordi Sola、Julien Ponge、Justin Holmes、Justin Lee、Jérôme TAMA、Kai Hudalla、Katia Aresti、kdnakt、Ken Finnigan、Ken Kwan、Kevin Viet、Knut Wannheden、Ladislav Thon、Loïc Mathieu、Lucca Biagi de Paula Prado、luneo7、Manyanda Chitimbo、Mark Little、Martin Kouba、Martin Panzer、Masafumi Miura、Matej Vasek、Max Rydahl Andersen、Mayank Kunwar、Michael Edgar、Michał Szynkiewicz、mrizzi、Nicolas Gimenez、nragon、Oscar、Peter Palaga、Phillip Kruger、Pierre Smeyers、Piotr Delert、René Grob、Robbie Gemmell、Roberto Cortez、Rostislav Svoboda、Rustam Sultansoy、Samuel Le Berrigaud、Sanne Grinovero、Saumya Singh、Sergey Beryozkin、Simon Bengtsson、Slava、Stuart Douglas、Stéphane Épardaud、Timothy Power、Viacheslav Medvediev、Vincent Sevel、Willem Jan Glerum、Yoann Rodière、Zach Kimberg 和 Àngel Ollé Blázquez。

加入我们

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

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