1.3. 新功能、增强功能和技术变化


本节概述红帽构建的 Quarkus 3.8 中引入的新功能、增强功能和技术变化。

1.3.1. Core

1.3.1.1. 支持 Java 21

Java 21 现在是推荐的版本,但支持 Java 17。

1.3.1.2. 删除了对 Java 11 的支持

在这个 3.8 发行版本中,删除了对版本 3.2 中弃用的 Java 11 的支持。

使用带有虚拟线程(VT)的 Red Hat build of Quarkus 会有以下几项:

  • 增强并发任务的管理,提高可扩展性和资源效率。
  • 通过提高资源效率提高虚拟线程的资源效率,这降低了块。
  • 简化并发模式,简化代码库的维护。
  • 减少线程上下文切换开销,从而降低延迟和更高的吞吐量。
  • 启用更好的多核处理器利用率,允许更多的并发任务,而无需大量上下文切换。
注意

虚拟线程仅在 Java 21 JVM 上被支持。如需更多信息,请参阅 Oracle Java Core Libraries 开发者指南中的 虚拟线程 部分,以及 OpenJDK 的 JEP 444: Virtual Threads

虚拟线程限制:

  • 固定载体线程的库可能会延迟采用,直到 Java 生态系统完全采用虚拟线程兼容性。
  • 冗长的计算需要仔细分析,以防止对资源进行大量处理。
  • 载体线程池的弹性可能会导致内存消耗增加。
  • thread-local 对象轮询模式可能会影响分配和内存用量。
  • 虚拟线程本身并不会解决线程安全问题,需要减少管理。

1.3.2. data

1.3.2.1. Hibernate ORM 升级到 6.4

在红帽构建的 Quarkus 3.8 中,Hibernate Object-Relational Mapping (ORM)升级到 6.4 版本。

如需更多信息,请参阅以下资源:

1.3.2.2. Hibernate Reactive 操作以及 Agroal

在红帽构建的 Quarkus 3.8 中,Hibernate Reactive 可以与 Agroal 共存,这意味着您可以在应用程序中使用 Flyway 或 Liquibase,同时将 Hibernate Reactive 用作对象-Relational Mapping (ORM)。

注意

红帽构建的 Quarkus 中存在一个限制,其中您不能在同一应用程序中同时存在 Hibernate ORM 和 Hibernate Reactive。

如需更多信息,请参阅使用 Hibernate Reactive 的 Quarkus 指南。

1.3.2.3. Hibernate Reactive 升级到 2.2 版本

在 Red Hat build of Quarkus 3.8 中,Hibernate Reactive 扩展升级到版本 2.2,它与 Hibernate ORM 6.4.0 兼容。

重要

Hibernate Reactive 扩展在红帽构建的 Quarkus 3.8 中作为技术预览提供。

如需更多信息,请参阅 Hibernate Reactive 2.2.0 文档。

1.3.2.4. Hibernate Search 升级到 7.0 版本

在 Red Hat build of Quarkus 3.8 中,Hibernate Search 被升级到 7.0 版本。

Hibernate Search 向红帽构建 Quarkus 应用程序提供索引和全文本搜索功能。版本 7.0 引入了对 geo-point 字段的默认配置的改进、新功能以及一些显著变化。

如需了解更多详细信息,请参阅 影响与早期版本的兼容性的更改

要了解更多有关 Hibernate Search 7.0 的信息,请参阅以下资源:

1.3.2.5. 新的 OpenSearch Dev Service

Red Hat build of Quarkus 3.8 引入了一个新的 OpenSearch Dev Service。

当您使用 Hibernate Search 时,Dev Services 默认为根据 Hibernate Search 配置启动 Elasticsearch 或 OpenSearch。

要将 Dev Services 配置为使用 OpenSearch,请指定以下设置:

quarkus.elasticsearch.devservices.distribution=opensearch

如需更多信息,请参阅 Quarkus "Dev Services for Elasticsearch" 指南中的 配置 镜像部分。

1.3.3. Observability(可观察性)

1.3.3.1. 使用 MeterRegistry 自定义 Micrometer

红帽构建的 Quarkus 3.8 引进了许多使用作为上下文和依赖注入(CDI) Bean 实施的新 MeterRegistryCustomizer 接口来自定义 Micrometerterter 的方法。

您可以使用以下方法自定义 Micrometer :

  • 通过使用 MeterFilter 实例自定义 MeterRegistry 实例发送的指标。Micrometer 扩展检测到 MeterFilter CDI Bean,并在初始化 MeterRegistry 实例时使用它们。
  • 通过将 HttpServerMetricsTagsContributor 用于服务器 HTTP 请求。通过提供实现 io.quarkus.micrometer.runtime.HttpServerMetricsTagsContributor 的 CDI Bean,用户代码可以根据 HTTP 请求的详细信息提供任意标签。
  • 通过使用 MeterRegistryCustomizer 进行计量 registry 的任意自定义。用户代码可以通过提供实现 io.quarkus.micrometer.runtime.MeterRegistryCustomizer 的 CDI Bean 来更改激活的任何 MeterRegistry 的配置。

如需更多信息,请参阅 Quarkus " Micrometer Metrics" 指南中的自定义 Micrometer 部分。

1.3.3.2. Micrometer @MeterTag 支持

Micrometer 定义两个注释,@Counted@Timed,您可以添加到方法中。

使用红帽构建的 Quarkus 3.8,微主题器可将 @Meter 注释添加到标上 @Counted@Timed 的方法的参数。

@MeterTag 注释使用 io.micrometer.common.annotation 软件包中的 ValueResolverValueExpressionResolver 解析器动态地为方法计数器或计时器分配额外的标签值。

如需更多信息,请参阅 Quarkus Micrometer Metrics 指南。

1.3.3.3. Micrometer 支持的 netty 指标

红帽构建的 Quarkus 3.8 引入了对从 Micrometer 指标库收集 Netty 分配器指标的支持。

引入了 quarkus.micrometer.binder.netty.enabled 属性,允许在启用了 Micrometer 支持时收集 Netty 指标。

Netty 分配器指标可以深入了解您的 Netty 框架内的内存分配和使用,这有助于了解使用 Netty 的红帽构建的 Quarkus 应用程序的性能。

收集以下指标:

Expand
指标描述

netty.allocator.memory.used

分配器使用的内存大小,以字节为单位

netty.allocator.memory.pinned

分配的缓冲区使用的内存的大小(以字节为单位)。

netty.allocator.pooled.arenas

池分配器的 arenas 数

netty.allocator.pooled.cache.size

池分配器的缓存的大小(以字节为单位)

netty.allocator.pooled.threadlocal.caches

分配器 的线程本地缓存数量

netty.allocator.pooled.chunk.size

池分配器的内存块的大小,以字节为单位

netty.eventexecutor.tasks.pending

事件执行器中待处理的任务数量

有关 Micrometer 的更多信息,请参阅 Quarkus Micrometer 指标 指南。

1.3.3.4. 将 OkHttp tracing gRPC exporter 替换为 Vert.x

在 Red Hat build of Quarkus 3.8 中,OpenTelemetry (OTel)扩展 quarkus-opentelemetry 被改进,将默认的 OTel exporter 替换为基于 Vert.x 构建的 Quarkus 实现。

这消除了对 OkHttp 库的依赖项。导出器仍然会自动与上下文和依赖注入(CDI)连接,因此 quarkus.otel.traces.exporter 属性默认为 cdi

如需更多信息,请参阅使用 OpenTelemetry 的 Quarkus 指南。

1.3.4. 安全性

1.3.4.1. 分割超过 4KB 的 OIDC 会话 Cookie 的功能

使用红帽构建的 Quarkus 3.8,如果其内容大小超过 4KB,您可以将 OpenID Connect (OIDC)会话 Cookie 分成较小的 Cookie。

通常,默认情况下,会话 Cookie 由三个令牌连接组成,包括三个令牌,即 ID、访问和刷新令牌。如果它的大小大于 4KB,一些浏览器可能无法处理它。

在这个版本中,一个超过 4KB 的会话 Cookie 会自动分成多个块。

如需更多信息,请参阅 用于保护 Web 应用程序的 Quarkus OIDC 授权代码流机制

使用红帽构建的 Quarkus 3.8,您可以在 HTTP 请求完成后为身份验证目的创建 OIDC SecurityIdentity 实例。

在这个版本中,quarkus-oidc 扩展包括 io.quarkus.oidc.TenantIdentityProvider 接口,您可以注入并调用在 HTTP 请求完成后将令牌转换为 SecurityIdentity 实例。

如需更多信息,请参阅以下 Quarkus 资源:

1.3.4.3. 自定义 OIDC JavaScript 请求检查

Red Hat build of Quarkus 3.8 引入了 OIDC JavaScriptRequestChecker bean,可用于自定义 JavaScript 请求检查。

如果您使用带有红帽构建的 Quarkus Web 应用的单页应用程序(SPAs)和 JavaScript API,如 FetchXMLHttpRequest(XHR),您必须在浏览器脚本中设置标头,将请求标识为 JavaScript 请求。但是,脚本引擎也可以设置特定于引擎的请求标头本身。

在这个版本中,您可以注册自定义 io.quarkus.oidc.JavaScriptRequestChecker bean,它会在当前请求是 JavaScript 请求时通知 Red Hat build of Quarkus,这有助于避免创建冗余标头。

1.3.4.4. 现在支持延迟 OIDC JWK 解析

Red Hat build of Quarkus 3.8 引入了对延迟 OIDC JSON Web 密钥(JWK)解析的支持,您现在可以解决当前令牌可用的密钥。

此发行版本添加了 quarkus.oidc.jwks.resolve-early 配置属性。默认情况下,此属性设置为 true,这意味着当您建立 OIDC 供应商连接时,JWK 密钥会解决。

但是,您可以将其设置为 false,同时启用密钥延迟解析令牌验证。延迟 JWK 解析在初始化时使用当前令牌而不是读写方法。例如,令牌可能会提供有关如何正确解析密钥的信息。

1.3.4.5. 使用 mTLS 和 HTTP Restrictions 增强安全性

当将 mTLS 客户端身份验证(quarkus.http.ssl.client-auth)设置为 required 时,Red Hat build of Quarkus 会自动禁用普通的 HTTP 端口,以确保只接受安全 HTTPS 请求。要启用普通的 HTTP,请将 quarkus.http.ssl.client-auth 配置为 请求 或设置 quarkus.http.ssl.client-auth=requiredquarkus.http.insecure-requests=enabled

1.3.4.6. HTTP 权限和角色移到运行时配置

Red Hat build of Quarkus 已更新,允许运行时配置 HTTP 权限和角色,跨配置集启用灵活的安全设置。这解决了原生可执行文件锁定到构建时安全配置的问题。现在,针对每个配置文件动态调整安全性,适用于 JVM 和原生模式。

如果您在红帽构建的 Quarkus 中使用 Bearer 令牌身份验证,您可以从验证的 JWT 访问令牌中映射 SecurityIdentity 角色。Red Hat build of Quarkus 3.8 引入了将 OIDC scope 参数映射到 SecurityIdentity 对象的权限的功能。

例如,您可以使用 @PermissionAllowed ("orders_read") 来请求 JWT 令牌具有 orders_read 值的范围声明。

如需更多信息,请参阅 Quarkus OIDC Bearer 令牌身份验证 指南。

1.3.4.8. 使用 CDI 观察安全事件

使用红帽构建的 Quarkus 3.8,您可以使用上下文和依赖注入(CDI)来观察身份验证和授权安全事件。

CDI 观察程序可以是同步或异步的,并支持以下安全事件的报告:

  • io.quarkus.security.spi.runtime.AuthenticationFailureEvent
  • io.quarkus.security.spi.runtime.AuthenticationSuccessEvent
  • io.quarkus.security.spi.runtime.AuthorizationFailureEvent
  • io.quarkus.security.spi.runtime.AuthorizationSuccessEvent
  • io.quarkus.oidc.SecurityEvent

如需更多信息,请参阅 Quarkus"安全提示和技巧"指南中的 观察安全事件 部分。

1.3.4.9. 不支持 OIDC 授权代码流

Red Hat build of Quarkus 3.8 引入了对 OpenID Connect (OIDC)授权代码流的支持。

当 OIDC 授权服务器发出一个 ID 令牌以响应授权请求时,ID 令牌包含一个 非ce 声明,它必须与非ce 身份验证请求查询参数匹配。此功能通过确保返回 ID 令牌来响应原始授权请求,且不是重播响应,这有助于缓解重播攻击。

1.3.4.10. 支持 OIDC 请求过滤器

使用红帽构建的 Quarkus 3.8,您可以通过注册一个或多个 OidcRequestFilter 实现来自定义由 quarkus-oidc-clientquarkus-oidc 扩展提供的 OIDC 客户端请求。

例如,OIDC 请求过滤器可以分析请求正文,并将其摘要添加为新的标头值。

如需更多信息,请参阅 Quarkus "OIDC authorization code flow mechanism for protect web application" 指南中的 OIDC request filters 部分。

在红帽构建的 Quarkus 3.8 中,引入了一个新的 @TenantFeature 注解,将 OpenID Connect (OIDC)功能绑定到 OIDC 租户。

io.quarkus.oidc.Tenant 注解现在用于解析租户配置。

1.3.4.12. 支持 OIDC 令牌传播

红帽构建的 Quarkus 3.8 引入了对 OIDC 令牌传播的支持。

在这个版本中,红帽构建的 Quarkus 端点使用 REST 客户端将传入的 OIDC 访问令牌传播到预期访问令牌的其他安全端点。

1.3.4.13. 客户端证书的角色映射

在使用 Mutual TLS (mTLS)身份验证机制时,红帽构建的 Quarkus 3.8 现在支持将通用名称(CN)属性从客户端的 X.509 证书映射到角色。此功能在特定条件下激活:

此功能在特定条件下激活:

  • 如果使用 quarkus.http.ssl.client-auth=requiredquarkus.http.ssl.client-auth=request启用 mTLS 身份验证机制
  • application.properties 文件引用带有 quarkus.http.auth.certificate-role-properties 属性的角色映射文件。

角色映射文件应该具有 CN=role1,role,…​,roleN 格式,并使用 UTF-8 进行编码。

1.3.4.14. 支持使用内联证书链进行令牌验证

Red Hat build of Quarkus 3.8 引入了使用令牌中内联的 X.509 证书链来验证 OIDC bearer 访问令牌。

这意味着,您在从叶证书中提取公钥前验证证书链。leaf 证书指的是 X.509 证书,它位于证书链的末尾。要验证令牌的签名,您可以使用这个公钥。

1.3.5. 工具

1.3.5.1. 使用 OpenRewrite 扩展更新功能

Quarkus 更新 现在支持 OpenRewrite recipes 用于外部红帽构建的 Quarkus 扩展,使其功能只扩展超过内置扩展的功能。引进了新的方法,增强对外部扩展的迁移支持。

请注意,红帽支持使用 Quarkus 开发工具的开发支持,包括 Quarkus CLI 以原型、开发、测试和部署 Quarkus 应用程序的红帽构建。https://access.redhat.com/support/offerings/developer/红帽不支持在生产环境中使用 Quarkus 开发工具。

1.3.6. Web

1.3.6.1. 通过 CDI 集成增强 /info 端点

使用 quarkus-info 的应用程序现在可以通过 CDI 集成通过额外的数据增强 /info 端点。此功能增强了自定义和扩展应用程序诊断和元数据可见性的功能。

注意

如需更多信息,请参阅 Quarkus 社区的 CDI 集成指南

1.3.6.2. 对 REST 客户端被动中的 SSE 支持的改进

使用红帽构建的 Quarkus 3.8,REST 客户端的服务器事件(SSE)功能得到了增强,启用完整的事件返回和过滤。REST 客户端中的这些更新和新描述为开发人员提供了管理实时数据流的控制和灵活性。

使用红帽构建的 Quarkus 3.8,您可以在使用 rest-client-reactive-jackson 扩展时自定义 ObjectMapper。您可以使用注解 @Client ObjectMapper 添加仅客户端使用的自定义 ObjectMapper。

重要

对于您要继承默认设置的任何自定义操作,您不必修改默认的对象映射器 defaultObjectMapper。您必须改为创建一个副本。defaultObjectMapper 是红帽构建的 Quarkus 本身配置的 ObjectMapper 实例,作为 CDI bean 提供,以及 RESTEasy Reactive 和 REST 客户端(默认应用程序)使用。

如需更多信息,请参阅 Quarkus "Using the REST client" 指南中的自定义 ObjectMapper in REST Client Reactive Jackson 部分。

1.3.6.4. @TestHTTPResource中的 path 参数支持

@TestHTTPResource 注释现在支持路径参数。由于 URI 格式的不合规,不再应用作为 URI 字符串的验证。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部