概要
Java™ は依然として開発者の間で最も人気のあるプログラミング言語ですが、コンテナと Kubernetes に関しては欠点があります。Quarkus によって、現在 700 万人を超える Java 開発者が、習熟しているフレームワークで新しいアプリケーションの構築を続けられています。
Quarkus と開発者の生産性
Quarkus は開発者を念頭に置いて設計されています。開発者の生産性とは、状況が激しく変化し続ける市場に、新しいアプリケーションを迅速に開発およびデプロイすることで、よりすばやく対応できることです。Quarkus は、迅速な内部ループ開発向けのライブコーディング、Red Hat CodeReady Workspaces などの IDE 統合、従来の Java 標準を超える API などの機能により、開発者の生産性向上を支援します。Quarkus によって開発者は、MicroProfile などの標準、Spring Framework API、その他の既存の一般的なフレームワークを組み合わせて使用し、Kubernetes で Quarkus の効率性を活用できます。
Spring Boot アプリケーションを Quarkus に移行する方法
現在の Spring Boot アプリケーションの Quarkus および Red Hat OpenShift への移行は、考えているよりも簡単に実行できます。アプリケーション移行ツールキット (MTA) を使うと、多様な変換パス (Java EE、JDK、Linux、コンテナ化、Quarkus など) に対応するソースコード、さらにはバイナリーを分析して Java アプリケーションのポートフォリオを確認でき、移行プロセスを迅速に進められます。
Spring Boot から Quarkus への移行に対する広範なサポートは、MTA リリース 5.1 で提供されます。
Quarkus とは
Quarkus は、従来の Java 仮想マシン (JVM) 上で実行されるか、ネイティブにコンパイルされた実行可能ファイルとして実行される、Kubernetes ネイティブの Java アプリケーションを構築するためのフレームワークです。Quarkus は、起動時間とメモリー使用量を最小限に抑えて、既存の Java フレームワークおよび開発者ツールと統合して、アプリケーションの開発とデプロイを迅速化します。Quarkus は、サーバーレス、マイクロサービス、コンテナ、Kubernetes、その他のアプリケーションタイプを扱う Java アプリケーションをハイブリッドクラウドで実行するのに役立ちます。
Quarkus のコンセプト
Quarkus は、OpenJDK などの従来の Java 仮想マシン (JVM) ランタイム向けのコンパクトで効率的なアプリケーションを作成するために設計され、ネイティブな実行可能バイナリーを作成してさらなる最適化を可能にします。ここで重要なことは、ビルドの段階でできるだけ事前作業をしておくことで、この作業はアプリケーションのライフタイムの中で 1 回しか発生しません。ビルド段階で、Quarkus はまずアプリケーションを従来の Java バイトコードにコンパイルし、続いて、構成のロードと解析、アノテーションの処理、フレームワークのメタモデルの構築を行って、すべてを従来の実行可能 Java アプリケーション (JAR ファイル) にまとめます。アプリケーションが起動するランタイムでは、これらのステップを実行するためのメモリー、CPU、時間のいずれも必要ではないため、起動時間が大幅に短縮されます。
ネイティブコンパイル
Quarkus アプリケーションをネイティブ実行可能ファイルにコンパイルすることで、さらに効率を向上できます。Mandrel (GraalVM のダウンストリーム・ディストリビューション) を使用してアプリケーションを分析し、「デッドコード」(ランタイムでアクセスされることのないコードパス) を検出し、これをアプリケーション実行可能ファイルから取り除きます。これによって、起動時間が数十ミリ秒、ランタイムで必要なメモリーが数十メガバイトのコンパクトで軽量なアプリケーションになります。