Javaの父、ゴスリング氏が語る

JavaFXが出遅れた? それはツールだけ

2008/12/08

 「SilverlightやAIRに比べてJavaFXが出遅れている? それはツールについて言えるだけで、何ができるかという点ではJavaFXははるかに進んでいる。ずっと洗練もされていて、JavaVMのパワーと標準化されたAPIが使える」。

 サン・マイクロシステムズは2008年12月2日から3日間、開発者向けイベント「Sun Tech Days 2008 in Tokyo」を開催した。日本の報道関係者のインタビューに応えたバイスプレジデント兼フェローのジェームス・ゴスリング氏は、今回もっとも大きな話題は何かと問われ、迷わず「JavaFX」の名を挙げ、上記のように回答した。Javaの生みの親としても知られる同氏は、基調講演とインタビューで、Javaやプログラミング言語を取り巻く現状について雄弁に語った。

gosling.jpg 米サン・マイクロシステムズ バイスプレジデント兼フェローのジェームス・ゴスリング(James Gosling)氏

JavaFXで手軽に見栄えのするUIを構築

 すでに12月4日に正式版がリリースされたJavaFX SDK 1.0だが(参考記事:JavaFX SDK 1.0正式版をリリース、サン)、Tech Days 2008の初日には、JavaFXで何ができるのかを端的に示す興味深いデモンストレーションが行われた。

 1つ目のデモを行った同社チャック・ムン・リー氏は、統合開発環境のNetBeansを使い、JavaFX Scriptアプリケーションを構築した。JPEG画像をウィンドウに描くだけのシンプルなものからスタートし、描画位置の調整、マウスドラッグによる画像のスクロールなどのコードを加えてみせた。JavaFX Scriptはスクリプトと名付けられてはいるが、静的型付け、宣言型、事前にバイトコードへ明示的にコンパイルを行うといった特徴があり、こうした点だけを見ればJava言語と同様で、いわゆるスクリプト言語的ではない。ただ、構文がシンプルでUI構築に必要なイベント処理やグラフィック処理の定型パターンが豊富に用意されていることから、手軽にUI設計が行えるという特徴がある。

fxdemo01.jpg JavaFX Scriptのサンプルコード
fxdemo02.jpg サンプルコードの実行画面
fxdemo03.jpg マウスドラッグによるアニメーションを加えた例

 リー氏が行ったデモでも、パレットからコンポーネントをソースコードの画面にドロップし、イベントハンドラやアニメーションのタイミングについて変数や数値を設定する、という程度で見栄えのするUIを作成するというものだった。

 ただ、プログラマでないデザイナが使うツール/言語として見ると、NetBeans+JavaFX Scriptは依然ハードルが高い。今のところデザイナ向けツールと呼べるものに「JavaFX 1.0 Production Suite」があるが、これはAdobe Illustrator/PhotoshopからJavaFX形式にコンバートしてエクスポートするプラグインでしかなく、Microsoft Expression StudioのようにXAMLを介してデザイナとプログラマがUIを共有できるといったモデルではない。デザイナも含むツールチェインとして、NetBeans 7ではJavaFX関連機能をさらに追加するというが、現状ではJavaFXのオーサリングツールはまだ限定的だ。

 ツールはまだこれからだが、JavaFXはJavaプラットフォームがあるところなら、どこでも使えるようになるという魅力がある。デスクトップ環境はもちろん、Webブラウザ、モバイル端末、組み込み機器など応用範囲は広い。

 もう1つ、JavaFXの際だった特徴はWebブラウザ上で動かしたアプリケーションを、そのままデスクトップ環境に移して、ローカルアプリケーションとして利用できるようになる点だ。リー氏はデモンストレーションの最後に、構築したグラフィカルなアプリケーションをドラッグ&ドロップでデスクトップアプリケーションとして登録してみせた。

fxdemo04.jpg JavaFXはWebブラウザでも利用できる。Java SE 6 update 10以降を使っていれば、そのままデスクトップ上にドラッグして、ローカルアプリケーションのように利用できる
fxdemo05.jpg JavaFXとJavaで作ったアプリケーションはローカルにキャッシュして、ショートカットを置くことができる。アプリケーションの配布、インストール方法としても簡単だ

Wiiリモコンを使った楽しいハック

wii01.jpg Wiiのリモコンを使ったデモンストレーションを行うサイモン・リッター氏。Wiiのリモコンには赤外線カメラが付いている

 サイモン・リッター氏が行ったデモンストレーションは、JavaFXの威力を見せつけるものだ。「JavaFXは単に書くのが簡単というだけでなく、Javaとの統合が容易だ」(同氏)という通り、既存のJavaベースのライブラリと組み合わせて斬新なUIを作り出せる。

 リッター氏は、白い紙を貼ったボードに、プロジェクタから映写したトランプの絵柄を映し出すデモを行った。白い紙には四隅のうち3個所に赤外線LEDが取り付けられている。この赤外線を拾うのは、Wiiのリモコン。Wiiリモコンには赤外線カメラが付いていて、赤外線発信源の位置を特定できる。

 リッター氏がボードを左右に回転させると、Wiiのリモコンが赤外線LEDの位置を認識し、その情報を元に絵柄も同調して回転させる。ボードを裏返しにすると、裏返しであることを認識してカードの裏面を映し出す。これはRemoteJというJava向けライブラリを使ったデモンストレーションだが、そのコントロールにはJavaではなく、JavaFXを使ったという。

 トランプの絵柄を回転させるのとまったく同様に、リッター氏は、ビニール傘に赤外線LEDを取り付け、回転する傘に合わせて地球の絵柄がグルグル回るデモンストレーションも行った。

wii02.jpg 白いボードにプロジェクタから絵柄を映写。ボードを回転させると絵柄も追従して回転する。JavaFXを使って書いたUIだという
wii03.jpg ビニール傘に地球の写真を映写。やはり傘を回すと地球が回転する

Javaはレガシーな言語か?

 サンが主催する開発者向けイベントでは、開発者ゴコロをくすぐる遊び心のあるハック自慢があることが多い。リー氏、リッター氏に続いて登壇したジェームス・ゴスリング氏も、“最近楽しかったハック”から話を始めた。

cafe.jpg ゴスリング氏が何気なく披露したJavaのロゴが映ったカプチーノの写真は、実はインクジェットプリンタを使って“印字”したもの

 ゴスリング氏は講演で、JavaFXだけでなくJavaやGlassFish、NetBeans、リアルタイムJavaにも触れた。

 Java実行環境を含む50億台のPCや組み込み機器、600万人以上と推定されるJava開発者、毎週1500万のJREのダウンロード、それぞれ500万、800万というGlassFish、NetBeansのダウンロード――。エンタープライズ用途でも組み込み用途でも、いまや押しも押されもせぬ地位にあるJavaだが、ゴスリング氏は「15年前には、こうしたことは自明ではなかった」と振り返る。

 近年、PythonやRubyといったいわゆる軽量言語が注目を集めているが、こうした風潮について問われたゴスリング氏は「スクリプト言語は特定の目的に沿ってデザインされるもの。JavaFXはUI設計に、RubyはWebアプリケーションに特化している。Rubyは手軽にWebアプリケーションを作るのには適している」と答える。「Javaは、もはやCOBOLのようにレガシーになりつつあるという声を、特にRubyコミュニティから聞くことがあるが、これはフェアな見方ではない。彼らはパフォーマンスや複雑な問題については一切話さない。TwitterというWebサイトはパフォーマンスの問題を抱えて悪夢のようだった。Web以外の領域ではJavaに比肩するようなものは何もない」(ゴスリング氏)。

 ゴスリング氏が指摘するWeb以外の領域というのは、例えば、モバイル向けや科学計算、高いセキュリティが求められる金融業務などだ。

 クラスタを使ったHPCでは「同じインテルですらプロセッサに違いがある。ノードが搭載する異なるプロセッサごとに最適化された処理ができる」ことがJavaプラットフォームの強みだという。「JITコンパイラは静的なコンパイルよりはるかに優れているし、mallocよりGCのほうがはるかに速い」(同氏)

ScalaとFortressに注目

 過去5、6年ほどプロセッサの動作クロックの伸びは停滞し、処理を並列化させるマルチコア化が進んできた。こうしたトレンドの先にある未来をゴスリング氏はこう予見する。「いまから20年先、つまりムーアの法則を10巡すれば、いま4コアのプロセッサは4000コアとなる。みなさんは20年後も開発者でしょう。どうやってプログラミングしますか?」

 ゴスリング氏が指摘するのはJavaプラットフォームの並列処理の強みだ。「JavaVMはコア数に増加に対して非常によくスケールする。現在、コア数の最大は256コアだが、JavaVMは仮想的なコアも含めて数千コアでも稼働している」。これに対して「RubyもPythonも、シングルコアでしか動かない」(同氏)。

 現在最も並列処理が求められる領域である大規模なエンタープライズアプリケーションの多くはメッセージ処理であるため、「幸運にも処理を分割するのが容易」(ゴスリング氏)という。レイトレーシングやUIなどのグラフィック処理も並列化が容易で、「汎用性は低くなるがGPU向けのJavaVMも作れるだろう」という。並列化が難しいのは数学的なアルゴリズムで、さらに難しいのは並列化に適したプログラミングモデルの構築と提供だという。

 並列処理でゴスリング氏が注目しているのはFortressだ。「興味深いのはScalaとFortress。動的言語といえるのか分からないが、Fortressは1万コアといったスケールで並列処理プログラミングする方法を探っている」。Scala、FortressともにJavaVM上で使えるプログラミング言語。Scalaは関数型プログラミング言語で、「特に科学計算に向けて設計されているというわけではないが、マルチコアの問題を、より容易にしてくれる」(ゴスリング氏)。Fortressは数式に近い表現でプログラミングができるというエキゾチックな言語。2008年4月にバージョン1.0の仕様書が公開されている。

Javaは以前からクラウド対応

 並列処理と並んで最近話題となっているのがクラウド・コンピューティングだ。グーグルがGoogle App EngineでPythonをサポートしたり、マイクロソフトがWindows Azureプラットフォームで.NETをサポートしようとするなど、サーバとランタイム環境の1対1対応が変わりつつ。サンはJavaのランタイムをクラウド上で提供するようなクラウド構想を大きく発表したことはない。Java、Ruby、Python、Perlが使えるスケーラブルなホスティング環境「Project Caroline」という研究・開発段階のものはあるが、これまで大きく発表したことはない。

 この点についてゴスリング氏は、もともとJavaはクラウド対応だと主張する。「Webホスティングのクラスタは、クラウドというのとは異なる名称で、これまでにも長らく開発されてきた。最大のものはAmazon EC2で、これはJavaを非常に良くサポートする。また、Javaではハードウェアとソフトウェアの切り離しができるので、JavaVMのコードはクラスタ上での移動もできる」(ゴスリング氏)

多くのアプリケーションサーバが古いワケ

 JITコンパイラや並列処理の強みなど優れた技術が投入されているJavaVMは、多言語プラットフォームとなりつつある。Scala、Fortressのほかにも、マルチスレッド処理を意識して設計されたLisp方言の「Clojure」、既存スクリプト言語の移植である「JRuby」、「Jython」などがある。

 その一方、Java言語そのものについては、さまざまな理由から進化が遅れがちだ。

gosling02.jpg

 「Javaコミュニティは、先へ進もうとするのに苦労している。エンタープライズユーザーは今でもJDK 1.4系を使っていて、これをより新しいバージョンのものにしてもらうのは、きわめて困難だ。大企業は非常にゆっくりとしか変化せず、ついて行けないという」。

 企業が最新バージョンのJavaを使わないのは技術的問題ではない。「非常に悲劇的なことに、これは技術に無関係。JavaVMを最新のものにしないのは、ライセンスの問題だ。ライセンスは特定のバージョンに限定されている。例えばある企業がJava 1.4.2でIBMのWebSphereに対して10万ドルを支払っているとすると、これをJDK 6にアップデートするには、またサポートに10万ドル払わないといけない」。

 古い技術が使われ続けるということについて、ゴスリング氏には、特別いっておくべきことがあるようだ。同氏はUnix上のEmacs実装、通称「Gosling Emacs」の開発で知られているが「GNU Emacsは違うが、私のEmacsについては罪は私にある。Emacsは30年前にはクールだった。いまだに人々が使っているのは驚かざるを得ない」。ゴスリング氏は1年前にも「Emacsは消滅すべき」(Emacs should be dead)と発言しており、開発にはテキストエディタではなくモダンな統合開発環境を使うよう促している。「なくなったほうがいいものでも、技術というのは完全になくなったりしないもの。私はかつてFortranを使っていたが、それがいまだに使われているのは驚き。少しずつ置き換わっているがCOBOLもそうだ」。

難しいのは技術より交渉

 JDK 7ではモジュラー化の推進や動的言語サポートの強化などのほかにも、クロージャの採用など言語仕様の変更も検討されている。「クロージャは機能リストに入っているが、まだ採用が決定していない。個人的にはアプリケーション開発が容易になるから入れるべきだと思うが、非常にホットな論争になっている」(ゴスリング氏)。クロージャの導入は特定の処理を書きやすくする反面、新しい機能の追加は混乱の元という主張もある。Javaは関係するプレイヤーの数が多いため、こうした論争があると物事が先へ進みづらくなる。

 揺籃期を含めてJava開発のこれまでの15年を振り返り、何が最も困難だったかという問いに対してゴスリング氏は「難しいのは技術じゃない。技術的課題はむしろ簡単だ。Javaはコミュニティ指向で、それは業界の政治の場でもある。だからこれはエンジニアリングの話ではなく、外交交渉のようなものだ。必要なのは忍耐強さ、粘り強さ。例えばCalendarクラスを見てもらえれば、この意味が分かると思う。途方もない議論が続いて、途方もない複雑さになってしまっている。誰も気にしていないような細かな暦の仕様が全部入っている」。

 それでもJDK 7に関しては「スペックは今後6カ月程度で安定し、18カ月程度でリリースされるだろう、私の推測に過ぎないが」(ゴスリング氏)と、今後のバージョンアップの見通しを語った。

関連リンク

(@IT 西村賢)

情報をお寄せください:

HTML5 + UX フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ

- PR -

注目のテーマ

ソリューションFLASH

「ITmedia マーケティング」新着記事

なぜ料理の失敗写真がパッケージに? クノールが展開する「ジレニアル世代」向けキャンペーンの真意
調味料ブランドのKnorr(クノール)は季節限定のホリデーマーケティングキャンペーン「#E...

業界トップランナーが語る「イベントDX」 リアルもオンラインも、もっと変われる
コロナ禍を経て、イベントの在り方は大きく変わった。データを駆使してイベントの体験価...

SEOを強化するサイトの9割超が表示速度を重視 で、対策にいくら投資している?
Reproが「Webサイトの表示速度改善についての実態調査 2024」レポートを公開。表示速度改...