1.3. 新機能、機能拡張、および技術的な変更
このセクションでは、Red Hat build of Quarkus 3.8 で導入された新機能、拡張機能、および技術的な変更を概説します。
1.3.1. コア リンクのコピーリンクがクリップボードにコピーされました!
1.3.1.1. Java 21 のサポート リンクのコピーリンクがクリップボードにコピーされました!
Java 17 もサポートされていますが、現在は Java 21 が推奨バージョンです。
1.3.1.2. Java 11 のサポートが削除される リンクのコピーリンクがクリップボードにコピーされました!
この 3.8 リリースでは、バージョン 3.2 で非推奨となった Java 11 のサポートが削除されました。
1.3.1.3. Red Hat build of Quarkus に仮想スレッドのサポートが追加 リンクのコピーリンクがクリップボードにコピーされました!
仮想スレッド (VT) を備えた Red Hat build of Quarkus を使用すると、次のことが実現します。
- 同時実行タスクの管理を強化し、スケーラビリティーとリソース効率を向上させます。
- ブロックにかかるコストが安い仮想スレッドを使用してリソース効率を改善することで、命令型プログラミングモデルを強化します。
- 同時実行モデルを簡素化し、コードベースのメンテナンスを効率化します。
- スレッドコンテキスト切り替えのオーバーヘッドが削減され、レイテンシーが短縮され、スループットが向上します。
- マルチコアプロセッサーの使用率が向上し、コンテキスト切り替えによる大きなペナルティなしに、より多くの同時タスクを実行できるようになります。
仮想スレッドは Java 21 JVM でのみサポートされます。詳細は、Oracle Java Core Libraries Developer Guide の Virtual Threads セクションおよび OpenJDK の JEP 444: Virtual Threads を参照してください。
仮想スレッドの制限:
- キャリアースレッドを固定するライブラリーは、Java エコシステムが仮想スレッドの互換性を完全に採用するまで採用を遅らせる可能性があります。
- 長時間の計算では、リソースの独占を防ぐために慎重な分析が必要です。
- キャリアースレッドプールの弾力性により、メモリー消費量が増加する可能性があります。
- スレッドローカルオブジェクトポーリングパターンは、割り当てとメモリー使用量に大きな影響を与える可能性があります。
- 仮想スレッドは本質的にスレッドの安全性の問題を解決するものではないため、注意深い管理が必要です。
1.3.2. データ リンクのコピーリンクがクリップボードにコピーされました!
1.3.2.1. Hibernate ORM のバージョン 6.4 へのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.8 では、Hibernate Object-Relational Mapping (ORM) がバージョン 6.4 にアップグレードされます。
詳細は、以下を参照してください。
1.3.2.2. Hibernate Reactive は Agroal と連携して動作 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.8 では、Hibernate Reactive は Agroal と共存できます。つまり、Hibernate Reactive を Object-Relational Mapping (ORM) として使用しながら、アプリケーションで Flyway または Liquibase を使用できます。
Red Hat build of Quarkus には制限があり、同じアプリケーションで Hibernate ORM と Hibernate Reactive の両方を使用することはできません。
詳細は、Quarkus の Hibernate Reactive ガイドを参照してください。
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 エクステンションは、Red Hat build of 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 は、Red Hat build of Quarkus アプリケーションにインデックス作成機能と全文検索機能を提供します。バージョン 7.0 では、機能強化、新機能、およびジオポイントフィールドのデフォルト設定に対するいくつかの注目すべき変更が導入されています。
詳細は、以前のバージョンとの互換性に影響する変更点 を参照してください。
Hibernate Search 7.0 の詳細は、次のリソースを参照してください。
- Quarkus の Hibernate Search ガイド
- Hibernate Search 7.0.1 リファレンスドキュメント
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 を起動します。
OpenSearch を使用するように Dev Services を設定するには、次の設定を指定します。
quarkus.elasticsearch.devservices.distribution=opensearch
詳細は、Quarkus の「Dev Services for Elasticsearch」ガイドの イメージの設定 セクションを参照してください。
1.3.3. 可観測性 リンクのコピーリンクがクリップボードにコピーされました!
1.3.3.1. MeterRegistry を使用した Micrometer のカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.8 では、コンテキストおよび依存関係の注入 (CDI) Bean として実装された新しい MeterRegistryCustomizer インターフェイスを使用して、Micrometer をカスタマイズするさまざまな方法が導入されています。
Micrometer は次の方法でカスタマイズできます。
-
MeterFilterインスタンスを使用して、MeterRegistryインスタンスが発行するメトリクスをカスタマイズします。MicrometerエクステンションはMeterFilterCDI Bean を検出し、MeterRegistryインスタンスを初期化するときにそれらを使用します。 -
サーバーの HTTP リクエストに
HttpServerMetricsTagsContributorを使用して。ユーザーコードは、io.quarkus.micrometer.runtime.HttpServerMetricsTagsContributorを実装する CDI Bean を提供することで、HTTP リクエストの詳細に基づいて任意のタグを提供できます。 -
メーターレジストリーを任意にカスタマイズする
MeterRegistryCustomizerを使用して。ユーザーコードは、io.quarkus.micrometer.runtime.MeterRegistryCustomizerを実装する CDI Bean を提供することで、アクティブ化された任意のMeterRegistryの設定を変更できます。
詳細は、Quarkus の「Micrometer メトリクス」ガイドの Micrometer のカスタマイズ セクションを参照してください。
1.3.3.2. Micrometer @MeterTag がサポートされる リンクのコピーリンクがクリップボードにコピーされました!
Micrometer は、メソッドに追加できる 2 つのアノテーション @Counted と @Timed を定義します。
Red Hat build of Quarkus 3.8 では、Micrometer は @Counted および @Timed でアノテーションが付けられたメソッドのパラメーターに @MeterTag アノテーションを追加できます。
@MeterTag アノテーションは、io.micrometer.common.annotation パッケージの ValueResolver または ValueExpressionResolver リゾルバーを使用して、メソッドカウンターまたはタイマーに追加のタグ値を動的に割り当てます。
詳細は、Quarkus の Micrometer Metrics ガイドを参照してください。
1.3.3.3. Micrometer でサポートされる Netty メトリクス リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.8 では、Micrometer メトリクスライブラリーからの Netty アロケーターメトリクスの収集のサポートが導入されています。
quarkus.micrometer.binder.netty.enabled プロパティーが導入され、Micrometer サポートも有効になっている場合に Netty メトリクスの収集が可能になります。
Netty アロケーターメトリクスは、Netty フレームワーク内のメモリー割り当てと使用状況に関する分析情報を提供します。これにより、Netty を使用する Red Hat build of Quarkus アプリケーションのパフォーマンスを把握するのに役立ちます。
以下のメトリクスが収集されます。
| メトリクス | 説明 |
|---|---|
|
| アロケーターが使用するメモリーのサイズ (バイト単位) |
|
| 割り当てられたバッファーが使用するメモリーのサイズ (バイト単位)。 |
|
| プールされたアロケーターのアリーナの数 |
|
| プールされたアロケーターのキャッシュのサイズ (バイト単位) |
|
|
プールされたアロケーターの |
|
| プールされたアロケーターのメモリーチャンクのサイズ (バイト単位) |
|
| イベント実行者の保留中のタスクの数 |
Micrometer の詳細は、Quarkus の Micrometer Metrics ガイドを参照してください。
1.3.3.4. OkHttp トレース gRPC エクスポーターを Vert.x に置き換える リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.8 では、OpenTelemetry (OTel) エクステンション quarkus-opentelemetry が強化され、デフォルトの OTel エクスポーターが、Vert.x 上に構築された Red Hat build of Quarkus 実装に置き換えられました。
これにより、OkHttp ライブラリーへの依存が排除されます。エクスポーターは引き続きコンテキストおよび依存関係の注入 (CDI) と自動的に接続されるため、quarkus.otel.traces.exporter プロパティーはデフォルトで cdi に設定されます。
詳細は、Quarkus の Using OpenTelemetry ガイドを参照してください。
1.3.4. セキュリティー リンクのコピーリンクがクリップボードにコピーされました!
1.3.4.1. 4KB を超える OIDC セッション Cookie を分割する機能 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.8 では、コンテンツサイズが 4 KB を超える場合に、OpenID Connect (OIDC) セッション Cookie を小さな Cookie に分割できます。
通常、デフォルトで暗号化されるセッション Cookie は、ID トークン、アクセストークン、および更新トークンの 3 つのトークンの連結で構成されます。サイズが 4KB を超えると、一部のブラウザーでは処理できない可能性があります。
この更新により、サイズが 4 KB を超えるセッション Cookie は自動的に複数のチャンクに分割されます。
詳細は、Web アプリケーションを保護するための Quarkus OIDC 認証コードフローメカニズム ガイドを参照してください。
1.3.4.2. HTTP リクエストが完了したら OIDC SecurityIdentity インスタンスを作成する リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.8 では、HTTP リクエストが完了した後に認証目的で OIDC SecurityIdentity インスタンスを作成できます。
このバージョンでは、quarkus-oidc エクステンションに io.quarkus.oidc.TenantIdentityProvider インターフェイスが含まれており、これを注入して呼び出すことで、HTTP リクエストの完了後にトークンを SecurityIdentity インスタンスに変換できます。
詳細は、次の Quarkus リソースを参照してください。
- Web アプリケーションを保護するための OIDC 認証コードフローメカニズム ガイド。
- 「OIDC ベアラートークン認証」ガイドの HTTP リクエストが完了した後の認証セクション。
1.3.4.3. OIDC JavaScript リクエストチェックのカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.8 では、JavaScript リクエストチェックをカスタマイズするために使用できる OIDC JavaScriptRequestChecker Bean が導入されています。
Red Hat build of Quarkus でシングルページアプリケーション (SPA) と、Fetch や XMLHttpRequest(XHR) などの JavaScript API を使用する場合は、ブラウザースクリプトにヘッダーを設定して、リクエストを 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 Key (JWK) 解決のサポートが導入され、トークンが利用可能になった瞬間にキーを解決できるようになりました。
このリリースでは、quarkus.oidc.jwks.resolve-early 設定プロパティーが追加されました。デフォルトでは、このプロパティーは true に設定されており、OIDC プロバイダー接続を確立した瞬間に JWK キーが解決されることを意味します。
ただし、これを false に設定すると、トークン検証と同時にキーの遅延解決が有効になります。遅延 JWK 解決では、初期化時に 1 回だけ読み取るアプローチではなく、現在のトークンが使用されます。たとえば、トークンはキーを正しく解決する方法に関する情報を提供する場合があります。
1.3.4.5. mTLS と HTTP 制限によるセキュリティー強化 リンクのコピーリンクがクリップボードにコピーされました!
mTLS クライアント認証 (quarkus.http.ssl.client-auth) が required に設定されていると、Red Hat build of Quarkus は、安全な HTTPS 要求のみが受け入れられるように、プレーン HTTP ポートを自動的に無効にします。プレーン HTTP を有効にするには、quarkus.http.ssl.client-auth を request に設定するか、quarkus.http.ssl.client-auth=required と quarkus.http.insecure-requests=enabled の両方を設定します。
1.3.4.6. HTTP 権限とロールがランタイム設定に移動する リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus が更新され、HTTP 権限とロールのランタイム設定が可能になり、プロファイル全体で柔軟なセキュリティー設定が可能になりました。これにより、ネイティブ実行可能ファイルがビルド時のセキュリティー設定にロックされる問題が解決されます。セキュリティーはプロファイルごとに動的に調整できるようになり、JVM モードとネイティブモードの両方に適用できます。
1.3.4.7. ベアラートークン認証における OIDC スコープ属性と SecurityIdentity 権限のマッピング リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus で Bearer トークン認証を使用する場合は、検証済みの JWT アクセストークンから SecurityIdentity ロールをマップできます。Red Hat build of Quarkus 3.8 では、OIDC スコープパラメーターを SecurityIdentity オブジェクトの権限にマップする機能が導入されました。
たとえば、@PermissionAllowed("orders_read") を使用して、JWT トークンに orders_read 値を持つ scope 要求があることを要求できます。
詳細は、Quarkus の OIDC Bearer トークン認証 ガイドを参照してください。
1.3.4.8. CDI を使用したセキュリティーイベントの監視 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of 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 の「Security tips and tricks」ガイドの セキュリティーイベントの監視 セクションを参照してください。
1.3.4.9. OIDC 認証コードフロー nonce をサポート リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.8 では、OpenID Connect (OIDC) 認証コードフロー nonce 機能のサポートが導入されました。
OIDC 認可サーバーが認可要求に応答して ID トークンを発行する場合、ID トークンには nonce 認証要求クエリーパラメーターと一致する nonce クレームが含まれます。この機能は、ID トークンが元の承認要求への応答として返され、再生された応答ではないことを保証することで、リプレイ攻撃を軽減するのに役立ちます。
1.3.4.10. OIDC リクエストフィルターがサポートされている リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.8 では、1 つ以上の OidcRequestFilter 実装を登録することで、quarkus-oidc-client または quarkus-oidc エクステンションによって行われた OIDC クライアント要求をカスタマイズし、新しい要求ヘッダーを更新または追加できます。
たとえば、OIDC リクエストフィルターはリクエスト本文を分析し、そのダイジェストを新しいヘッダー値として追加できます。
詳細は、Quarkus の「Web アプリケーションを保護するための OIDC 認証コードフローメカニズム」ガイドの OIDC 要求フィルター のセクションを参照してください。
1.3.4.11. テナントに対するバインド OIDC 機能に新しい OIDC @TenantFeature アノテーションが導入される リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.8 では、OIDC テナントへのバインド OpenID Connect (OIDC) 機能に新しい @TenantFeature アノテーションが導入されています。
io.quarkus.oidc.Tenant アノテーションがテナント設定の解決に使用されるようになりました。
1.3.4.12. OIDC トークンの伝播をサポート リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.8 では、OIDC トークン伝播のサポートが導入されました。
この更新により、Red Hat build of Quarkus エンドポイントは REST クライアントを使用して、受信した OIDC アクセストークンを、アクセストークンを必要とする他のセキュアなエンドポイントに伝播します。
1.3.4.13. クライアント証明書のロールマッピング リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.8 では、Mutual TLS (mTLS) 認証メカニズムを使用するときに、クライアントの X.509 証明書の共通名 (CN) 属性をロールにマッピングできるようになりました。この機能は特定の条件下で有効になります。
この機能は特定の条件下で有効になります。
-
quarkus.http.ssl.client-auth=requiredまたはquarkus.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 ベアラーアクセストークンの検証が導入されています。
つまり、リーフ証明書から公開鍵を抽出する前に、証明書チェーンを検証することになります。リーフ証明書とは、証明書チェーンの最後に配置される X.509 証明書を指します。トークンの署名を検証するには、この公開鍵を使用します。
1.3.5. ツール リンクのコピーリンクがクリップボードにコピーされました!
1.3.5.1. OpenRewrite による更新機能の拡張 リンクのコピーリンクがクリップボードにコピーされました!
quarkus update では、外部 Red Hat build of Quarkus エクステンションの OpenRewrite レシピがサポートされるようになり、組み込みエクステンションだけにとどまらない機能が拡張されました。新しいレシピが導入され、外部エクステンションの移行サポートが強化されました。
Red Hat は、Red Hat build of Quarkus アプリケーションのプロトタイプ作成、開発、テスト、およびデプロイを行うための Quarkus CLI を含む Quarkus 開発ツールの使用に対する 開発サポート を提供していることに注意してください。Red Hat は、実稼働環境での Quarkus 開発ツールの使用をサポートしていません。
1.3.6. Web リンクのコピーリンクがクリップボードにコピーされました!
1.3.6.1. CDI 統合による /info エンドポイントの強化 リンクのコピーリンクがクリップボードにコピーされました!
quarkus-info を使用するアプリケーションは、CDI 統合を通じて /info エンドポイントを追加データで強化できるようになりました。この機能により、アプリケーション診断とメタデータの可視性をカスタマイズおよび拡張する機能が強化されます。
詳細は、Quarkus コミュニティーの CDI 統合ガイド を参照してください。
1.3.6.2. REST Client Reactive における SSE サポートの改善 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.8 では、REST Client の Server-Sent Events (SSE) 機能が強化され、完全なイベントの返送とフィルタリングが可能になります。REST Client のこれらの更新と新しい説明により、開発者はリアルタイムデータストリームの管理における制御と柔軟性が向上します。
1.3.6.3. REST Client Reactive Jackson での ObjectMapper のカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.8 では、rest-client-reactive-jackson エクステンションを使用するときに ObjectMapper をカスタマイズできます。アノテーション @ClientObjectMapper を使用して、クライアントのみが使用するカスタム ObjectMapper を追加できます。
デフォルト設定を継承するカスタマイズアクションの場合は、デフォルトのオブジェクトマッパー defaultObjectMapper を変更しないでください。代わりにコピーを作成する必要があります。defaultObjectMapper は、Red Hat build of Quarkus 自体が設定し、CDI Bean として利用可能にし、RESTEasy Reactive および REST Client などのアプリケーションがデフォルトで使用する ObjectMapper のインスタンスです。
詳細は、Quarkus の「REST クライアントの使用」ガイドの REST Client Reactive Jackson での ObjectMapper のカスタマイズ セクションを参照してください。
1.3.6.4. @TestHTTPResource でのパスパラメーターのサポート リンクのコピーリンクがクリップボードにコピーされました!
@TestHTTPResource アノテーションはパスパラメーターをサポートするようになりました。URI 形式に準拠していないため、URI 文字列としての検証は適用されなくなりました。