--クラウドコンピューティングに対して、Javaからアプローチできることに何があるでしょうか。
"クラウド"なんて、まったくおかしなバズワードだね。これまで存在したさまざまなWebホスティングを名前を変えてそう呼んでいるに過ぎなくて、Javaはもうずっと前からそれに対応している。たとえばクラウドの代表としてAmazonのサービス(EC2)がよく挙げられるが、これはすでにJavaアプリケーションに対応している。
そういう意味では(90年代に登場した)JavaSpacesはクラウドの走りだったかもしれない。当時、JVMは複数言語に対応していなかったから、(ネットワーク上でオブジェクトを共有するという)JavaSpacesはそれなりのパワーと可能性をもっていた。だが時代は大きく変わった。いまはJVMの上で複数の言語を標準で動かせる。1つのスクリプトから別のスクリプトを呼び出す -- 以前は非常に困難だったことが、現在のJVMでは簡単にできる。JavaSpacesはよく機能していたが、あまりにも"Javaユニバース"、つまりJavaの世界の中に閉じこもりすぎて、他の言語との相互運用ができなかった。そのため、Sunのメインのプロジェクトからは外れてしまったのだが。
--ではクラウドやJavaSpacesとは逆で、もし、リソースの共有などを考えなくてもいいほどに個々のコンピュータの性能が飛躍的に上がった場合、Javaのパワーをどう使いたいと思われますか。
(すこし考え込んで)うーん……非常に答えるのが難しい質問だが、やはりコンピュータゲームになるかな。クリエイティブなパワー、ダイナミックなパワー…ゲームには相当のパワーが必要だから。
現在、JVMは256コアまではサポート可能で、何千ものスレッドを扱える。将来的にはもっとこの数字は増えていくだろう。だから今後の課題としては、JVMよりもプログラムモデルが挙げられるようになると思う。つまりマルチコアに対してどう分解するか、がカギになる。現状ではエンタープライズに関してはほぼ問題ないが、汎用デスクトップPCの場合、やはりグラフィックをどうレンダリングするかが問題になってくる。考えられる方法はレイトレーシングでマルチコアに分解するというものだが、正直、すべてを解決できる方法はないというところだ。