実験段階のクライアント技術が続々
特にユーザー・インタフェース(UI)関連技術の発表が目立った。まず今夏に公開予定のJ2SE(Java2 Platform,Standard Editon)次版で,OSネイティブのルック・アンド・フィールを実現する。JavaのGUIコンポーネントであるSwingは,ルック・アンド・フィールを切り替えるための仕組みを既に備えている。次版ではその選択肢の一つとして「OSネイティブ」を用意する。これに対応するのはWindows XPとGTK。将来はLonghornにも対応する(写真2)。
これ以外には,Java関連の規約を策定するJCP(Java Community Process)にも未提案の新技術が多く発表された。中でも「Project Looking Glass」には注目が集まった(写真3)。3次元表示によるUIを実現する技術だ。ウインドウを90度回転させて横に並べたり,裏返したりできる。ウインドウの数が増えても楽に把握できるし,設定やメモを表示しておくなどウインドウの裏側も便利に使える。
この技術は「3次元的にオブジェクトを表現できるので,表示するオブジェクトの数が多いアプリケーションに向いている」(Looking Glassの開発者であるSun Senior Staff Engineerの川原英哉氏)。例えばファイル・マネージャ。今は深い階層にあるファイルを探す場合,ツリーを展開してしまうと表示範囲が狭くなって望みのものを見つけにくい。奥行きのある3次元空間に表示できれば,もっと直感的で分かりやすくなる。
Looking Glassのような派手さはないが,リッチ・クライアントを対象とした「JDNC(JDesktop Network Components)」(画面[拡大表示])も要注目である。Swingを拡張したもので,UIとネットワーク上のデータを簡単に結び付けられるのが特徴だ。
業務アプリケーションのクライアント・ソフトでは,サーバーからデータを取得してテキスト・ボックスなどに表示し,編集後にサーバーに書き戻す処理が多い。つまりデータとUIの部品が1対1で結び付く。JDNCはここに着目した技術だ。対応するサーバー側のデータソースを指定しておけば,クライアント・ソフトでの表示や編集結果の書き戻しをJDNCのコンポーネントが担当する。データの型や文字数が適切か検証する機能も標準で備える。Javaのプログラムからだけでなく,XMLを使ってコンポーネントを呼び出せるのも利点の一つだ(リスト1[拡大表示])。
Java VM上で動くスクリプト言語
Sunの発表以外では,「Groovy」が高い関心を集めていた。Javaと互換性が高いスクリプト言語である。米Core Developers Network社のJava技術者であるJames Strachan氏らが開発を始め,現在オープンソースで開発が進められている。Groovyの実行環境がスクリプトをJavaのバイトコードに変換し,変換結果をJava仮想マシンが実行する。Javaに文法が似ているが,大幅にコーディング量を減らせるのがメリットだ(リスト2[拡大表示])。RubyやPythonなど他のスクリプト言語に見られる特徴を採り入れたほか,独自機能を盛り込んで生産性を上げた(表[拡大表示])。「Javaに比べて開発時間が半分で済むこともある」(Strachan氏)。
もちろんJavaに比べて劣る点はある。例えば性能は,使い方にもよるがJavaの20~90%程度だという。今後改良が進められる予定だ。
ツールと言語仕様で開発を簡単に
このほかの話題としては,昨年に続きJavaによるソフトウェア開発を簡単にするEoD(Ease of Development)への取り組みが目立っていた。具体的には新たな開発ツールの発売や,コーディングをシンプルにするための仕様を盛り込んだ次期J2SEに関する発表である。
リリースは2005年後半と少し先になりそうだが,J2EE(Java2 Platform,Enterprise Edition)次版にもEoDを意識した仕様が採用される見込みだ。複雑で制約が多いと非難されることの多いEJB(Enterprise JavaBeans)への反省から,J2EE以前のシンプルなJavaオブジェクト(PoJo:Plain old Java object)を使ってEJBコンテナのサービスを利用できるようにする。従来のようにオブジェクトがコンテナのサービスを呼び出すのではなく,コンテナがオブジェクトを呼び出してサービスを提供するという考え方(Inversion of Control:IoC,制御の反転)に基づいて実現される(詳細は技術の真髄(2)「羽生田栄一の開発プロセス論」参照)。