Quarkus 1.3.0.Final リリース-新しいクラスローダー、GraalVM 20サポートなど

この記事は、Quarkus.io のブログ記事、Quarkus 1.3.0.Final released - New class loader infrastructure, GraalVM 20 support and much much more の翻訳記事です。

お気づきでないかもしれませんが、新しいクラスローダーインフラストラクチャを検証するために、いくつかの大規模なテストフェーズを実施しており、前回のQuarkusのメジャーリリースから2ヶ月弱が経過しています。

我々のAlphas/CRをテストし、フィードバックを提供してくれた全ての人に感謝します。

2ヶ月?Quarkusの世界ではそれが多いので、新しいことを期待しよう。

はじめに、1.3が世界にもたらすものを見てみましょう。

移行ガイド

既存のアプリケーションを移行したいとお考えですか?ここに1.3.0.Finalの移行ガイドがあります

何が新しいの?

新しいクラスローダーインフラストラクチャ

Quarkusの革新的な性質(特にテスト・インフラストラクチャーと開発モードでは)のために、クラス読み込みの問題が何度か発生しました。

Quarkus 1.3には全く新しいクラスのローディング・インフラが付属しており、私たちが抱えていた構造上の問題を解決してくれます。新しいクラス読み込みインフラストラクチャについては、『クラス読み込みリファレンスガイド』で詳しく説明しています。

この新しいインフラストラクチャは、AlphaとCRフェーズで調整したので、現在はかなり安定しています。クラスの読み込みで奇妙な問題が発生した場合は、リプロデューサーに報告してください。これらの修正は、今後の1.3 .1にすべて含まれます。

すべてを支配する1つのVert.x

Quarkus内のすべてを処理するために、Vert.xインスタンスを2つではなく1つにすることにかなりの労力が費やされました。この作業の背後にある考え方は、できれば何も変更せずに、リソースの消費を減らすことです。

バナー

デフォルトでは、Quarkusの起動時にASCIIアートのバナーが表示されるようになりました。

もちろん、次のことが可能です。

  • それをカスタマイズする。
  • 特定のプロジェクトに対して無効にします。
  • すべてのあなたのプロジェクトで全体的に無効にします。

詳細については、ドキュメントを参照してください。

Mutiny の発生

新しいリアクティブプログラミングAPIが導入されました。このMutinyというAPIは、AxleモデルとReactive Streams Operatorsモデル(リアクティブストリームとCompletionStage)を置き換えるものです。以前のモデルはまだ機能していますが、廃止され、将来削除される予定です。

詳細については、『Reactive入門ガイド』を参照してください。

KubernetesやOpenShiftへの簡単なデプロイ

Kubernetesのエクステンションは大幅に改良されて、QuarkusアプリケーションをKubernetesやOpenShiftにデプロイする作業がほとんど不要になりました。基本的には、コンテナイメージ(詳細については、コンテナイメージを参照してください。)の生成と、生成されたKubernetesマニフェストのターゲットクラスタへの適用も、コンテナイメージが生成された後に行うようになりました。

詳細については、ドキュメントを参照してください。

Eclipse MicroProfile 3.3仕様

SmallRye拡張機能は、Eclipse MicroProfile 3.3を実装するために更新されました。

詳細なブログ記事は近日公開予定。

デフォルトのHTTP読み取りタイムアウト

HTTP読み取りタイムアウト(quarkus.http.read-timeoutを使って)を設定する機能が追加されました。デフォルト値は1分です。

新しい拡張機能

コンテナイメージ

Quarkusではコンテナイメージの構築に多大な努力が払われています。

これで、Quarkusビルドの一部として、Jib、Docker、S2Iのいずれかを使って、Quarkus構成に基づいてイメージをビルドする一連の拡張機能ができました。

詳細については、『コンテナイメージガイド』を参照してください。

OptaPlanner

OptaPlannerはAI制約解決です。計画とスケジューリングの問題を最適化します。

OptaPlanner Quarkus拡張機能は、ネイティブの実行形式であっても、OptaPlannerのすべての機能をQuarkusに提供します。OptaPlannerがどのように役立つかについては、OptaPlannerガイドをお読みください。

セキュリティJPA

データベースのユーザーをHibernate ORMで管理したいとお考えですか?いくつかのアノテーションを追加するだけで、Security JPA拡張機能がカバーしてくれます。

Spring Cloud Config Client

Springの互換性レイヤをSpring Cloud Config Clientで拡張しました。

Spring Cloud Configサーバから設定を取得できるようになりました。

AWS X-Ray

AWS X-Rayのサポートが追加されたので、JVMモードとネイティブモードでAWSラムダとともに使用することができます。

Qpid JMS

Artemis JMS拡張ではなく、Qpid JMS拡張を使用することをお勧めします。機能は同じですが、柔軟性が増すだけです。

Artemis JMS拡張はまだ存在します。

詳細については、JMSガイドを参照してください。

Liquibase

以前はFlywayの拡張機能を使っていましたが、データベーススキーマの移行にもLiquibaseを使うことができるようになりました。

詳しくはLiquibaseのガイドを参照してください。

Reactive MongoDB と Panache

リアクティブが好きですか?Mongo DBが好きですか?シンプルなコードが好きですか?

Panache拡張を持つReactive MongoDBが登場した。詳細はMongoDBとPanacheのドキュメントを参照のこと。

GraalVM 20.0 support

1.3.0.Finalは4種類のGraalVMをサポートしています。

  • GraalVM 19.3.1 - JDK 8
  • GraalVM 19.3.1 - JDK 11
  • GraalVM 20.0.0 - JDK 8
  • GraalVM 20.0.0 - JDK 11

要約すると、Quarkusでは次のように使用できます。

  • JVMモードでJDK 8, 11, 12, 13 or 14
  • ネイティブ実行形式をビルドするためJDK 8 もしくは 11 と GraalVM 19.3.1 か 20.0.0

GraalVMのJDK11サポートは、まだ技術プレビュー段階です。私たちの側では、コンパイルが20%遅くなること以外、特に問題はありませんでした。

Hibernate ORM

バイトコード拡張による自動関連付け管理は、今後無効になります。 quarkus.hibernate-orm.second-level-caching-enabled設定プロパティーをfalseに設定すると、セカンドレベルのキャッシュを無効にできます。

Spring 互換層

Spring互換レイヤは、完全なSpring.jarではなく、必要なAPIとアノテーションだけを含む切り落とされたアーティファクトに基づいています。

依存性が少なく、コードも少なく、サポートされている機能だけがあります。

さらに…​

-GradleとKotlinのサポートに関するいくつかの改善しました。 -ネイティブ実行可能ビルドの<有効Jni>オプションは非推奨になり、JNIは常にGraalVM 19.3+で有効になっているため、削除対象としてマークされました。 -Flyway拡張は、順が狂っている設定プロパティをサポートするようになりました。 -私たちのQuteテンプレートエンジンは成熟しつつあり、バグ修正と改善が行われています。 ・Keycloak9をサポートします。 -Hibernate Search+Elasticsearchが6.0 .0.Beta5にアップグレードされました。 -Quartz拡張モジュールのベースとなるQuartzスケジューラを注入して、より柔軟性を持たせることが可能になりました。

完全な変更ログ

1.3.0.Alpha11.3.0.Alpha21.3.0.CR11.3.0.CR21.3.0.Final の完全な変更ログはGitHubで入手できます。

ADOPTERS.md

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

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

貢献者

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

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

Akito Kidani, Alex Soto, Alexey Loubyansky, Alvaro Serrano, Andreas Eberle, Andrej Petras, Andrew Guibert, Andy Damevin, Aurea Munoz, Bill Burke, Clement Escoffier, cstdev, Darran Lofthouse, David M. Lloyd, Emmanuel Bernard, Erik Mattheis, Erin Schnabel, Felix Wong, Geoffrey De Smet, George Gastaldi, Georgios Andrianakis, Grzegorz Piwowarek, Guillaume Smet, Gunnar Morling, Gwenneg Lepage, Harald Reinmueller, Harold Sun, Ioannis Canellos, Irena Kezic, Jaikiran Pai, Jakubo96, Jan Martiska, Jason T. Greene, Jesper Skov, Joachim Segala, Johannes, John O’Hara, Jonas Scholz, Jordi Sola, Josejulio Martínez, Justin Lee, Kamesh Sampath, Katia Aresti, Kaxil Naik, Ken Finnigan, Kuzuha Shinoda, Ladislav Thon, Loïc Mathieu, Luca Burgazzoli, Luis F Munoz, Luram Archanjo, Maciej Swiderski, Manyanda Chitimbo, Marc Häbich, Martin Kouba, Martin Panzer, Matej Novotny, Max Rydahl Andersen, Michal Karm Babacek, Michał Szynkiewicz, Miroslav Stary, Nicolas Martignole, Olivier Dufour, Ondrej Machala, Paulo Casaes, Pavol Loffay, Pedro Igor, Peter Palaga, Phillip Kruger, Pierre PLR, Raffael Hertle, Ramakrishna Pattnaik, Rinaldo Pitzer Júnior, Robbie Gemmell, Roberto Cortez, Rohan Maity, Rostislav Svoboda, Sanne Grinovero, Sebastian Wastl, Sergey Beryozkin, Stefnotch, Stuart Douglas, Stéphane Épardaud, testfixer, Thomas Segismont, Timothy Power, Tobias Liese, Tomaz Cerar, Vincent Sevel, Vincent Sourin, Vinícius Ferraz Campos Florentino and Yoann Rodière.

参加しよう

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

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

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