小山博史のJavaを楽しむ(11)Javaはクラウドのプラットフォームになり得るのか
株式会社ガリレオ
小山博史
2008/10/30
教育界、技術者コミュニティでJava言語の教育と啓蒙に長年携わってきた筆者が、独自の視点からJavaの面白さを掘り下げていく。(編集部)
ここのところJavaの世界でも、「クラウドコンピューティング(cloud computing)」という用語が使われることが多くなって、注目されています(参考:他社にないピースを持つ:Sun、総合的クラウドを提案)。
2007年のJavaOneの記事である「Sun、Javaモバイルデバイス展開をブレイ氏語る」「『Javaに並列処理と関数型言語の要素を』、ティム・ブレイ氏」を読んでみると分かるように、サン・マイクロシステムズでは、Atomの推進やJava VMによるJava以外の言語のサポート、並列プログラミングのサポートなどを推進していましたが、2008年はクラウドコンピューティングを前面に出してきました。今回は、Javaについて、クラウドコンピューティングという視点から見直してみることにしました。
■ 「クラウドコンピューティング」は定義がモヤモヤ
「“クラウドコンピューティング”という用語を初めて聞いた」という読者もいるかもしれませんが、ネットワーク技術の解説書などでは、インターネットを表すのに雲(クラウド、cloud)がよく使われていることを知っていれば、クラウドコンピューティングとは何か、なんとなく分かるはずです。@IT情報マネジメント用語事典によると、クラウドコンピューティングは、次のように説明されています。
最近出てきた用語だから、いろいろな解釈がありそうですが、ものすごく単純に表現すると「クラウドコンピューティングとは、インターネットに接続されているコンピュータと、そのコンピュータが提供するデータ、サービスを利用して計算をする」ということです。
「ニュースサイトが提供するニュースデータを集めて、興味のあるものだけを抽出するフィルタリング処理を施して、情報を公開する」という処理は、クラウドコンピューティングの単純な例だといってよいでしょう。ニュースサイトが提供するニュースデータのように、現在のインターネットではさまざまなデータが利用できます。そういったデータを利用して、ユーザーが必要とするサービスを提供するために、インターネットに接続されているコンピュータを利用するわけです。
□ すべては雲の中に?
2007年の記事ですが、「Text of Wired's Interview with Google CEO Eric Schmidt」を読むと、Google CEOのEric Schmidt氏は、「これからは、データもアプリケーションもクラウド(インターネット)上にあり、ユーザーは常にオンラインでそれらにアクセスできる」といった趣旨の発言をしています。クラウドという単語に注目すると、「サービスを提供しているサーバが実際はどれなのか」「提供されているデータはどこに保存されていたものなのか」といった情報は、「もはや雲に隠れて分からない」という状態を表現しているともいえます。
先ほどの例に出したニュースデータが、ニュースサイトから来たデータであるという事実は、フィルタリング処理をされた後では分かりにくくなっているでしょう。クラウドコンピューティングの世界では、ハードウェアがどこにあり、処理はどこでされたのか、といったことを気にすることなくユーザーが使えるといわれています。
□ あなたの端末も雲の一部
ここで、個人的な見解ですが、「ユーザーがサービスを利用しようとしてクラウドへ接続する端末も、ほかのユーザーからはクラウドコンピューティングを担う1つのノードとなる」ということも、クラウドコンピューティングの重要なポイントとして考えてもいいのではないかと思います。「ユーザーが利用する端末は、単なるクライアントではなく、クラウドを構成する1つの要素だ」という意見です。
例としては「クラウドに接続するビデオカメラ機能付き携帯電話」などがすぐに思い付きます。この装置は、普段はクラウドに接続してインターネット電話として使うことができます。ビデオカメラ機能を使うときは、クラウドにある自分の動画配信システムへデータを提供する装置となります。クラウドに接続して、電話サービスを利用しながら、動画配信することもできるでしょう。
□ AndroidがJavaのWebサーバに?
システムに対してデータを提供する機能が端末に付くということは、端末でもサーバ機能が必要です。世の中では、同じように考える人がいるようで、「i-jetty」というGoogle Android上でサーブレット/JSPコンテナを同梱させたWebサーバを動作させるプロジェクトがあったりします。
どれくらい実用性があるのかは実機や具体的な利用方法が決まらないと分かりませんが、筆者としては注目をしています。
□ 雲はライセンスに影響も
ちなみに、クラウドコンピューティングが実現される世界では、データやアプリケーションのライセンスはどうなるのか気になるところですが、「オープンソースとクラウドコンピューティング | WIRED VISION」といった記事を読むと、ソフトウェアライセンスの在り方も影響を受けそうだということが分かります。興味深い話ですが、本題から外れますので、ここでは技術的な面のみを取り上げることにします。
■ Javaと雲の前線
クラウドコンピューティングそのものについては、これぐらいにして、技術者の皆さんが興味を持っているクラウドコンピューティングに関係する技術について考えてみたいと思います。
「サーバ上で動作する」「Linux上で動作する」といった実装も重要ですが、これからは、「クラウドの中で動作させる」「クラウドを通じてユーザーに利用してもらう」といった視点から、ソフトウェアやサービスを考える必要があるからです。こういった視点で「今後のJavaを取り巻く世界がどうなっていくのか」を見ていけば、注目すべき技術もキャッチしやすくなるでしょう。
「サン・マイクロシステムズでは、Atomの推進、Java VMによるJava以外の言語のサポート、並行処理プログラミングのサポート、といったことを推進しようとしていた」と最初の方で書きましたが、それぞれの個別の話を、クラウドコンピューティングをキーワードとしてつなぎ合わせてみましょう。意外といろいろと思い付いて面白くなってくるはずです。
□ Atomとクラウド
まずAtomですが、これはクラウド内でのコンテンツデータの情報を交換したり、コンテンツ編集を行うために利用されます。Atomに含まれるAtomPub(Atom PP、Atom Publishing Protocol)は、RESTアーキテクチャに準拠していて、エントリポイントとなるURIへアクセスすると、編集のためのURIやほかのリソースへのURIが含まれています(参考:はてなダイアリーがAtomPub対応のAPIを公開)。
そのため、ユーザーはそれをたどるだけで、コンテンツを参照したり、操作するといった目的を達成できます。クラウドコンピューティングの世界実現に使える技術です。
□ 「Java VMによるJava以外の言語のサポート」とクラウド
「Java VMによるJava以外の言語のサポート」ですが、この狙いは何でしょうか。
クラウドコンピューティングを行うに当たっては、さまざまなプラットフォームで稼働するソフトウェアを連携させて処理を実行する必要があります。ですから、WindowsでもLinuxでもMac OS Xでも動くようにするというのが理想的です。Javaはサーバサイドでは大きな成功を収めることができました。しかし、プラットフォームであるJava VMを見ると、デスクトップマシンや携帯電話での存在感はまだまだです。
ここで、Java VMが「Write once, run anywhere」という理想を実現し、クラウドコンピューティングの世界で主流となるためにはどうすればいいでしょうか? やはり、クラウドコンピューティングのプラットフォームとなるためには、主流となるプログラミング言語であるJava以外にも、プログラミング言語をたくさんサポートして、Java VMで動作するアプリケーションを開発する開発者を増やすという必要があるでしょう。インターネット時代のプラットフォームとして成功しているUNIX系のOSを考えてみると、分かりやすいかもしれません。
UNIX系のOSでは、プログラミング言語C/C++が主流ですが、そのほかの言語もたくさんサポートされていて動作しています。プラットフォームとして成功するためには、そのうえキラーアプリケーションが必要であり、それを開発するための基盤でないといけません。
Java VMによるJava以外の言語サポートは.NETへの対抗という意味合いもあるのでしょうが、クラウドコンピューティングのプラットフォームとしてJavaが使えるということから力を入れているとも考えられます。
UNIX系OSとC/C++はペアで普及しましたが、このプラットフォーム上で稼働する多くのスクリプト言語が誕生しました。それらのスクリプト言語が使えるということで、UNIX系OSを利用するというユーザーが増え、ますますUNIX系OSとC/C++が普及したわけです。同じようにJava VMとJavaがペアで普及していますから、このプラットフォーム上で稼働するスクリプト言語が増えれば、Javaを利用するユーザーがますます増える可能性が高くなるのではないでしょうか。
□ 並行処理プログラミングとクラウド
最後に「並行プログラミングのサポート」ですが、これもクラウドコンピューティングに要求される並行処理プログラムを効率よく開発できる方法をサポートする、と考えると関係が見えてきます。
並行処理は、一般的には1台のマシンにある複数のCPUを効率よく使用して処理をするための方法ですが、この方法がより研究されると、複数台のマシンが協調動作して処理を行う分散処理へも適用できる技術も発展するはずです。
次ページでは、実際にJavaアプリケーションを動かすための仮想/レンタルサーバ「Amazon EC2」「Morph AppSpace」などを紹介し、仮想マシンとクラウドの関係について触れます。
| 1-2 |
| INDEX | ||
| 第11回 Javaはクラウドのプラットフォームになり得るのか | ||
| Page1 クラウドコンピューティング」は定義がモヤモヤ Javaと雲の前線 |
||
| Page2 仮想/レンタルサーバで“雲”煙過眼 雲の向こうに隠されて |
||
小山博史のJavaを楽しむ バックナンバー
- 第1回 JavaとJavaScriptの親しい関係
- 第2回 いろいろなJavaを楽しむ
- 第3回 待望のJava SE 6 でパーシステンス
- 第4回 (Java+Derby)* Ruby on Rails プログラミング
- 第5回 【新人研修向け特別企画】JavaでPHPを使ってみた
- 第6回 JavaFXでJava RIA開発はどれくらい変わるの?
- 第7回 そろそろブログ+RSSアプリでも作ってみませんか?
- 第8回 デスクトップをJava製ウィジェットでにぎやかに
- 第9回 Google Android用携帯アプリ作成のための基礎知識
- 第10回 【新人なるプログラマーへ】ソースコードを読みましょう
- 第11回 Javaはクラウドのプラットフォームになり得るのか
- 第12回 「Javaは遅い」から「Javaは楽しい」に至る歴史
- 第13回 Subversionならできる! NetBook最強バックアップ術
- 第14回 UNIX/Linuxも楽しむJava開発者になるための学習法
- 第15回 年末でJetty(絶対)にできるAndroid携帯サーバ活用
| Java Solutionコラム一覧 |
TechTargetジャパン
- EclipseでScalaプログラミングを始めるための基礎 (2012/2/10)
概要や5つの特徴を紹介し、開発環境を構築して対話型実行環境「REPL」やEclipse上でHello Worldを実行します - 並列分散処理の常識をHadoopファミリから学ぶ (2012/2/8)
並列分散処理の課題やHadoopの長所/短所、そして短所を補うHadoop関連プロジェクトの構成や概要などを簡単に紹介 - WebLogicサーバ最新版「12c」の気になる4つの特徴 (2012/1/31)
久々にメジャーアップグレードしたJavaアプリケーションサーバについて、製品担当者に軽量インストーラなどの特徴を聞いた - GitHubをもっとソーシャルに使いこなすための7つ道具 (2012/1/23)
ソースコードホスティングのGitHub周辺で便利な新サービスが続々登場しているので、まとめて紹介しよう。特に連動クラウド「fluxflex」が注目だ
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


