Quarkus 1.6 リリース- AppCDS, Google Cloud Functions, GraalVM 20.1.0 など...

Red Hat で Solution Architect として Quarkus を担当している伊藤ちひろです。

この記事は、Quarkus.io のブログ記事、Quarkus 1.6 released - AppCDS, Google Cloud Functions, GraalVM 20.1.0 and more... の翻訳記事です。

夏になりました。私たちはまだまだ急ピッチでQuarkusの改良に励んでいます。

もちろん、既存の機能やドキュメントの改善とバグを修正するだけではありません。私たちは非常に興味深い新機能もお届けしました。

  • JVMモードでの起動時間を改善するためのAppCDSアーカイブの生成を統合
  • Google Cloud Functionsのサポート - 既存の Amazon Lambda と Azure Functions のサポートに追加
  • リアクティブな IBM Db2 クライアント (Db2 JDBC ドライバは 1.7 で登場)
  • Apache Cassandra クライアント
  • WebJars のロケーター拡張機能と Spring @Scheduled のサポート
  • アプリケーションのトラブルシューティングのためのより良いツール
  • GraalVM 20.1.0 へのアップグレード

これらの多くは、貴重なフィードバックがあったからこそ可能になりました。そしてコミュニティに参加することで、問題をオープンにしたり、quarkus-devリストでスレッドを立ち上げたり、Zulipでチャットをしたりと、どんどん参加してください。私たちは迅速に動き、フィードバックは次のバージョンのQuarkusに直接注入されます。

移行ガイド

既存のアプリケーションの移行をお考えですか?ここに1.6への移行ガイドがあります。

何か新しいことは?

コアの変更

迅速な jar のパッケージ形式

迅速な 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 の制限です)。

近日中に、より多くの詳細を専用のブログ記事でお伝えする予定です。

この機能は実験的なものであり、まだコンテナイメージ生成拡張機能と適切に統合する必要がありますが、それにもかかわらず完全に機能します。

CDI 開発モードのエンドポイント

Quarkus 1.6では、/quarkus/arc/beans/quarkus/arc/observersで CDI コンテキストの概要を知れる便利なエンドポイントを導入しました。

それらはCDI リファレンスガイドに詳しく記載されています。

リクエスト本文の最大ファイルサイズ

以前はデフォルトで無制限でしたが、現在は 10MB に制限しています。もちろん、quarkus.http.limits.max-body-sizeで設定できます。

拡張機能

Google Cloud Functions

Quarkusは、Google Cloud Functionsのサポートを追加したことで、すべての主要なクラウドプロバイダーでサーバーレスをサポートするようになりました。

それについての詳細を知りたいなら、私たちはあなたが簡単な関数を開発するか、HTTPを使用したい場合のいずれかのために 2 つの新しいガイドを持っています。

リアクティブなIBM Db2 クライアント

現在、MySQL/MariaDB、PostgreSQL、IBM Db2 用のリアクティブ SQL クライアントを提供しています。

Apache Cassandra クライアント

Apache Cassandra クライアントが Quarkus Platform に参加しました。

QuarkusアプリケーションでのCassandraの使用方法については、専用ガイドを参照してください。

WebJars ロケータ拡張機能

アプリケーションで webjars を使用している場合、webjar パスからバージョンを破棄できる拡張機能を提供しています。

詳細はドキュメントをご覧ください。

Spring @Scheduled 対応

Spring 互換性レイヤは、Spring の @Scheduled アノテーションのサポートが追加され、より包括的になってきています。

私たちがサポートしていることや現在の制限事項は、すべてこの新しいガイドに記載されています。

GraphQL 拡張機能の OpenTracing

追跡するのが好きですか?GraphQL が好きですか?

SmallRye GraphQL 拡張機能で OpenTracing が有効になったので、OpenTracing 拡張機能が登場するとすぐに対応できるようになりました。

OptaPlanner 拡張機能はコアリポジトリから移動しました。

OptaPlanner 拡張機能は、Quarkus コアリポジトリから OptaPlanner リポジトリに取り出されました。

アーティファクト ID が変更されたので、プロジェクトで OptaPlanner 拡張機能を使用している場合は、新しいものに変更してください。

  • org.optaplanner:optaplanner-quarkus
  • org.optaplanner:optaplanner-quarkus-jackson
  • org.optaplanner:optaplanner-quarkus-jsonb

アーティファクトはQuarkus Platformの一部です。

  • 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 に対応するデプロイメントアーティファクトを持っていることを確認してください。

完全な変更ログ

1.6.0.CR11.6.0.Final の完全な変更ログはGitHubで入手できます。

ADOPTERS.md

Quarkusの使用に関する情報を共有するために、リポジトリのルートにADOPTERS.mdファイルを追加しました。

Quarkusを使用していて、私たちのブログでインタビューを受けたい場合、または単にこのファイルに追加したい場合は、私たちにご連絡ください。

貢献者

Quarkusには現在316人の貢献者がいます。皆様、本当にありがとうございました。

特に1.6リリースについてはみなさんのおかげです。

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 and Yoann Rodière.

参加しよう

私たちはあなたのフィードバックをとても大切にしていますので、バグを報告し、改善を依頼してください...一緒に何か素晴らしいものを作りましょう!

Quarkusのユーザーや好奇心の強い人は、恥ずかしがらずに歓迎コミュニティに参加してください。

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。