Javaフレームワーク「Quarkus」登場。Javaコードからネイティブバイナリを生成し瞬時にJavaアプリが起動、コンテナへの最適化を実現。Red Hatがリリース
Red Hatは、Kubernetesなどのコンテナ環境に最適化されたJavaアプリケーションを実現するフレームワーク「Quarkus」を発表しました。
Red HatはQuarkusの目的を、Kubernetesやサーバレス環境においてJavaを先進的なプラットフォームにすることだと説明しています。下記はQuarkusを発表したブログの記事から引用。
The goal of Quarkus is to make Java a leading platform in Kubernetes and serverless environments while offering developers a unified reactive and imperative programming model to optimally address a wider range of distributed application architectures.
Quarkusのゴールは、Kubernetesやサーバレスなどの環境において、分散環境の幅広いアプリケーションアーキテクチャに適合するため、デベロッパーに対してリアクティブとインペラティブなプログラミングモデルを統合して提供することで、Javaを先進的なプラットフォームにすることだ。
インペラティブとリアクティブの両モデルに対応したプログラミングが可能
Quarkusの特徴は、具体的には2つ分かれています。
1つはプログラミングにおけるフレームワークとしてのQuarkusで、プログラミングにおいてインペラティブ(Imperative)なモデル、すなわち実行すべき命令を1つ1つ順番に記述していく比較的伝統的といえるモデルと、リアクティブ(Reactive)なモデル、すなわち(説明するのが難しいのですが)扱っている値の変更や関係性を中心に記述する最近注目されているモデルの両方を可能にするというもの。
また、既存の優れたJavaライブラリに対応するフルスタックのフレームワークだと説明されています。
Javaコードからネイティブバイナリを生成、瞬時にJavaアプリが起動するコンテナ
そしてQuarkusのもう1つの特徴が、Javaアプリケーションのコードからネイティブバイナリを作成し、コンテナ化することで瞬時にJavaアプリケーションが起動し、メモリ消費量も少ない、コンテナやKubernetes環境に最適化された実行形式を実現できることです。
これはQuarkusのフレームワークを用いて開発されたアプリケーションをコンパイルして生成されたファイルを基に、GraalVM内のコンパイラを用いて実行可能なネイティブバイナリを生成、コンテナ形式にパッケージするという機能です。
GraalVMとは、オラクルがオープンソースとしてリリースした多言語対応のVMです。
参考:オラクル、JavaやJavaScript、Ruby、Pythonなど多言語対応を単一ランタイムで実現する「GraalVM」をオープンソースで公開。Twitterが本番環境で採用
Red Hatのテストでは、簡単なデモアプリケーションが0.008秒で起動したことが紹介されています。
これまでJavaアプリケーションはJavaVMの起動時間のオーバーヘッドなどがかかるため、軽量なコンテナ環境を十分に活かすことが難しいと考えられてきました。
QuarkusはこうしたJavaの課題を解決すべく、プログラミングモデルの面で分散環境に対する柔軟性を持たせ、実行環境においては瞬時に起動しメモリ利用量もスリムにするもので、注目に値するフレームワークだといえそうです。
Javaのエバンジェリストでもあるマイクロソフトの寺田氏も、自身のブログでQuarkusを「まさにこれを待っていた!!という技術でした」と紹介しています。ぜひあわせてご覧ください。
関連記事
2020年6月、Red Hatが商用サポートの開始を発表しました。
あわせて読みたい
NGINX、F5による買収を正式発表。F5のロードバランサとNGINXのプロキシなどにより総合的なアプリケーションサービスを提供
≪前の記事
NVIDIA、Mellanoxの買収を正式に発表。InfinibandやHPC用スイッチなどデータセンター向け高性能ネットワーク技術を手中に