ログイン / 登録 アカウント

もうすでに、Quarkusという奇妙な言葉がJava開発コミュニティで話題になるのを見たことがあるのではないでしょうか。そして、それに関する最新のRed Hatのニュースで、正式なRed Hat RuntimeとしてQuarkusが導入されるという話もご覧になったかも知れません。

しかし、これはいったい何を意味し、なぜQuarkusがそれほど重要なのでしょう?この記事では、現在私たちがいる、現代的な、分散型の、Kubernetesファーストの、クラウドネイティブなアプリケーション開発の世界にJavaを導入する意味と、それがなぜ重要なのかについて、詳しく解説します。

まず最初に、Quarkusとは何か?

Quarkusは、GraalVMおよびHotSpot向けに調整されたKubernetesネイティブなJavaフレームワークで、最高品質のJavaライブラリと標準規格から作られています。Quarkusの目的は、JavaをKubernetesおよびサーバーレス環境の主要プラットフォームのひとつにするとともに、より広範な分散型アプリケーション・アーキテクチャに対応するフレームワークを開発者に提供することです。

Quarkusは、より高速な起動時間、必要性と使用量に基づくマイクロサービスの自動的なスケールアップ/ダウン、およびアプリケーションのサイズとコンテナイメージのフットプリントの大幅な削減による高密度化の提供を通して、コスト節約の実現に貢献します。

Quarkusは、開発者の生産性向上、コスト削減、市場への投入スピード短縮、および信頼性に寄与するように設計された機能を提供します。Quarkusのもうひとつの主要な設計目標は、使うのが楽しいということで、開発環境に多少の楽しさを求めない人がいるでしょうか?

なるほど、素晴らしいですね!しかしQuarkusKubernetesネイティブなJavaがなぜそれほど重要なのですか?

Javaが登場したのは25年前ですが、現在でも、一番ではないにしても、人気のあるプログラミング言語のひとつです。SlashDataによると、2019年5月時点で、全世界に760万人以上のJava開発者がいました。

Javaは元々、クラウドネイティブな現代的アプリケーション用ではなく、モノリシックなアプリケーション・スタック用に設計されており、新しい、軽量フレームワークで機能させるには、Javaアプリケーションは起動が遅く、非常に多くのメモリを使用する可能性があります。Quarkusは、Javaを将来に持ち込むことを目的としています。

Quarkusは、Javaのスキルとより広いJavaエコシステムを使用してこれらの新しいデプロイメント環境とアプリケーション・アーキテクチャに対応する能力を設計者に提供するために作られました。重要なビジネス・アプリケーションでKubernetesの使用が増えているため、新しいKubernetesアプリケーション環境でJavaがスケーリング可能であることが重要となります。

Kubernetesは非常に軽量の、動的でリソースに制約のある環境で、高速な起動時間と少ないメモリ占有量を特徴としますが、これはJavaの動作の仕組みと非常に対照的です。Javaは今でもエンタープライズ・プログラミングで最も優勢な言語ですが、コンテナが素早くスケールアップ/ダウンされ比較的短いライフスパンを持つKubernetes環境では、不必要なオーバーヘッドを生む可能性があります。

特に今は、作業要員が分散しているため、最小限のリソースと帯域幅を使用してアプリケーションの立ち上げが可能であることが非常に重要です。Quarkusはその処理の多くを、ライブラリ・フレームワークの最適化、依存性の最小化、および非使用コードの除去などのビルドフェーズに移動させ、アプリケーションの起動時間とメモリ必要量を大幅に低減します。これはJavaをコンテナとともに使用できることを意味し、まさに私たちが、そして数百万のJava開発者が望んでいることです。コンテナを使うためだけに新しいプログラミング言語を学ばねばならない理由などないのです!

Javaに代わるもっと新しいプログラミング言語はないのですか? Javaを将来に持ち込むことがなぜそれほど重要なのですか?

なるほど、興味深い質問です。確かに、過去数年の間に、Ruby、Go、Rustなどの新しい言語が次々に登場し、主流の一角を占めてきました。しかし、これらの新顔がいくら輝いて見えても、ビジネスユーザー向けの機能を備えていないため、これらはアプリケーション開発者が使う言語ではなく、むしろ、システム開発言語です。

これが何を意味するかと言うと、たとえば航空機予約システムでは、Javaが厳格なタイプセーフとコンパイル時チェックを提供することから、これらの言語よりもJavaが選ばれます。実際、プログラミング言語の世界はかなり動きが遅く、CおよびC++によって証明されているように、ひとつの言語が真に強固になり最適化されてスタックの基礎部分になるには、10年あるいはそれ以上かかる場合があります。開発者は必要がない限りリスクを冒して新しい言語、特に生まれて10年以内の言語を使おうとはしません。これらの基準に照らすと、25歳のJavaはまだかなり若く、新しい環境内でも進化できる余地が十分にあります。

世界中のすべてのJava開発者と、Javaで構築された重要なビジネスアプリケーションの数を考えると、JavaとKubernetesネイティブなアプリケーションとの互換性が絶対に必要です。Kubernetesはコンテナ化アプリケーションのデプロイ、スケーリング、および管理のためのシステムとして驚異的な成功を収めていますが、長期にわたる選択肢となるためには、Javaをサポートできる必要があります。

Quarkusの基本原則のひとつは、エンタープライズJava開発者の作業に楽しさを取り戻すことでした。これは、QuarkusによってJava開発者が既存の専門知識をクラウドネイティブなマイクロサービスとイベント駆動アプリケーションの構築に使えるようになるからです。これは、開発者が新しい言語のトレーニングに時間を費やす必要がなく、すでにある力量を維持しながらクラウドネイティブなマイクロサービスの開発を単一の言語に標準化できることを意味するので、企業にとって重要なことです。

なぜRed HatJavaの将来を築くことに取り組んでいるのですか?

Red HatはJavaコミュニティに参加し、その中でリーダーの役割を果たしてきた長い歴史があります。実際、Red Hatは2007年以来OpenJDKコミュニティのメンバーであり、同プロジェクトに対する最大の貢献者の1社になっています。

私たちは、オープンな、コミュニティプロセスに取り組んでおり、Javaの将来の最前線に立ち続けたいと考えています。また、オープンソースの根幹と気風を活かして、Javaを可能な限りコミュニティ指向のままにしたいと考えています。

お客様と話をしていると、様々なベンダーがそれぞれ独自のJava製品を提供するという、Javaエコシステムの分断化についての質問を耳にします。Red Hatは、人気の高いクラウドネイティブJavaオープンソース・プロジェクトの専門家に加えて、Quarkusコミュニティのスチュワード役を務めています。

私たちはオープンな作業と協力体制の素晴らしさを確信しており、皆さまと力を合わせてJavaをKubernetesネイティブの将来に持ち込む先鋒となるのを楽しみにしています。


About the author

トピックス

注目のニュース

今後のイベント

関連ウェビナー

お客様事例