クラウドでのJavaの存在感は高まるか?
今年の春まで、主要なクラウドでJavaをサポートしているのは、Goolge App Engineのみでした。クラウドで構築するアプリケーションのサーバサイドのプログラミング言語としてRubyをはじめとしたオープンソース系の言語が注目を集めていたこともあり、「クラウド時代にJavaはフェードアウトしていくのではないか」とさえ思える状況でした。
しかしこの半年で状況は大きく変わりました。Amazonクラウドをはじめ、VMware、Red Hat、そしてオラクルもJava対応のクラウドを発表しています。今月行われたJavaOneではクラウドに向けた進化も発表され、Javaはクラウド時代にも、その存在感を示すことになりそうです。
クラウドでのJavaについて、これまでの経緯をまとめました。
この半年で立ち上がったクラウドのJava環境
この半年で、Java対応のクラウドが次々に発表されました。
4月にAmazonクラウドが発表した「Amazon Elastic Beanstalk」は無料で使えるAmazonクラウドのオプションで、クラウド上にスケーラブルなJavaの実行環境を構築してくれます。
VMwareが4月に発表した「Cloud Foundry」は、vSphereやAmazonクラウドなどのIaaSに展開することでJavaに対応したクラウド実行環境を実現するPaaS基盤。Red Hatが発表したOpen Shiftも、同様にJavaをサポートしたPaaS基盤ソフトウェアです。
10月にはオラクルが、Java EEをサポートしたパブリッククラウド「Oracle Public Cloud」で、クラウドへの参入を表明しました。
Javaは多くの企業が業務システムの構築に利用しています。企業がパブリッククラウドで、あるいはプライベートクラウドで業務システムを構築しようとしたとき、Javaが選択できることはクラウドにとって重要なことです。
クラウド事業者、クラウド事業者のためのソフトウェアを提供しているソフトウェアベンダは現在、企業の業務システムをクラウドへ展開することを重視しています。その意味で、彼らがJavaのサポートを始めたのは、今になって考えれば時間の問題だったのかもしれません。
クラウドでのJavaサポートはまだ始まったばかりで、企業が安心して使える環境が整うにはもう少し時間がかかるでしょう。しかし1年後、2年後にはクラウドにおいてJavaはメジャーなプログラミング言語の1つになっているでしょう。
性能への評価、そして多言語対応
業務システムをクラウド展開するというニーズ以外にも、Javaのクラウド展開を後押しする要因があります。
1つは、JavaVMが備えていた優れた性能や機能です。Twitterが、これまで利用していたRuby on RailsからJavaVMへと移行することを表明したことに、その一端が表れています。
Twitterは「JavaVMへ移行する最大の理由は、リアルコンカレンシーモデル」「大量のメモリやCPUを載せたマシンではJavaVMのほうがネットワークI/Oなどでずっと効率よく動作した」と、JavaVMの機能や性能を高く評価しています。クラウドで利用するランタイム環境としてJavaVMの機能と性能は、あらためて評価されることになりそうです。
もう1つは複数言語のサポートです。Herokuをはじめ、Cloud Foundry、OpenShiftなど、最近のPaaSは複数のプログラミング言語をサポートするのが当然となってきました。利用者にとっても、特定の言語しか使えないプラットフォームよりも、複数の言語が選択できるPaaSの方が好ましく思えるでしょう。
JavaVMは、JavaだけでなくScalaやClojure、そしてRubyやPHPなどの実装もあります。さらにJava 7では動的言語をより高速に実行できるようになりました。PaaSベンダーにとって、クラウドで複数言語をサポートするキーコンポーネントしてのJavaVMは欠かせない存在になるでしょう。
クラウドへ適応進化するJava/Java EE
そしてJava自体もクラウド対応へと進化の舵を切りました。Java EEは次のバージョンのJava EE 7で、それ自身がPaaS基盤となると宣言しています。
すでに仮想化ハイパーバイザのOracleVM上に開発中のJava EE 7を乗せたGlassFishを稼働し、Javaアプリケーションの負荷に応じてインスタンスが増減するというPaaSのデモが行われており、来年第3四半期には登場予定です。
さらに、Javaの将来のバージョンであるJava 9では、1つのJavaVM上のプロセス空間を切り分けて実行できるマルチテナント機能をJavaVMに組み込もうとしています。これを利用すると、仮想化ハイパーバイザを使わずにJava対応のクラウドを実現する、ということもできそうです。
Javaはクラウドでも存在感を見せる
まとめましょう。業務システムをクラウドに乗せるというニーズ、JavaVMの性能への評価と多言語対応の機能など、クラウド事業者から見てJavaは魅力的な実行環境になっています。
そしてJava EEやJavaVMそのものも、クラウドへの最適化を果たそうとしており、クラウド環境へのJavaの親和性は急速に高まることになりそうです。
これらの動向を踏まえると、Java、そしてその基盤となるJavaVMやフレームワークのJava EEは、ユーザー企業がクラウドを基盤にした業務アプリケーションを展開するプラットフォームとしても、そしてクラウド上でPaaSを展開するクラウド事業者にとっても、非常に重要性なコンポーネントとなることでしょう。
あわせて読みたい
Node.js専用PaaS「Node Ninja」と「Z Cloud」をファーストサーバが発表。開発元のJoyentと提携
≪前の記事
Yahoo! JAPANにおけるアジャイル開発、スクラムへの取組み(後編)