はじめに
「Javaアプレットなんて、もう誰も使っていない。いまさら何を…」と思ってはいませんか。
近年、Ajaxの発見によるJavaScriptの再評価は目覚ましいものがあります。コンピュータ言語学に詳しい技術者たちの間では、JavaScriptが高度なオブジェクト指向を備えている事実が知られていましたが、その能力を十分に活用した実装はほとんど見られませんでした。ところが、Ajaxが一般に周知されて以来、高度なJavaScriptライブラリも次々と登場し、多くの技術者がJavaScriptに再び注目しています。
余談になりますがLispのような古い関数型言語もまた、ここ数年で実用的な言語として再評価されるなど、このほかにも過去の技術が再浮上する例はいくつもあります。
本稿を書くきっかけとなったのは、こうしたAjaxブームの中で再浮上したJavaScriptを目の当たりにして、かつてインタラクティブなWebを実現する技術としてJavaScriptと同様に注目されたJavaアプレットの存在を思い出したからです。リッチクライアントを実現するモジュールとしては、Microsoftが近くリリースする予定のSilverlight(旧コードネーム WPF/E)や、Adobe Flash、そしてAjaxなどが考えられますが、もう1つの選択肢としてJavaアプレットの可能性があるのではないかと提案します。
Javaアプレットは1995年以降、Javaブームと共に大きく注目された技術です。Javaアプレットは、OSに依存することなくどこでも実行可能なJavaプラットフォームの利点を生かし、ブラウザに仮想マシンを組み込んでブラウザ上でJavaアプリケーションを実行するというものでした。当時のWebは今よりも回線速度が遅く、相互運用技術も十分に確立されていませんでした。Javaアプレットはブラウザ上に自由に図形やイメージを描画することができ、ブラウザの内部でJavaプログラムを実行することができたため、テキストベースのWebから解放する救世主として喝さいを浴びました。
しかし、その夢は長くは続きません。当時のコンピュータは現在よりも遅く、リソースは限られていました。Java仮想マシンの起動に非常に時間がかかり、Javaアプレットを組み込んでいるWebサイトは動作が重く敬遠されました。また、Javaアプレットはサンドボックスと呼ばれるセキュリティ空間内で実行されるため、ローカルファイルなどにアクセスすることができません。サービス指向アーキテクチャが確立されていない当時では、情報ソースが限定されるため限られた範囲の動きしかできなかったのです。
こうして、徐々にJavaアプレットは支持を失い、代わってFlashが台頭しました。Flashアプリケーションは特別なプログラミングの技術がなくても、スクリプトを使って個人で簡単に開発することができ、Javaアプレットと比較しても軽量でリッチな動きのあるプレゼンテーションを実現することができます。また、アプレットがWebベースの図形処理ソフトやファミコン世代的なミニゲームを中心に広まったのもよくなかったかもしれません。Flashはプロのデザイナーや企業などにも採用される一方、アプレットはビジネス展開の研究が十分になされないままホビーストの間で終わってしまった傾向があります。
なぜJavaScriptは再浮上したのか
こうした事情から、現在では一部で実用されている程度のJavaアプレットですが、本当にJavaアプレットは過去の技術でしょうか。Javaアプレットとは性質が異なりますが、似たような道をたどっていた言語にJavaScriptがあったと思います。JavaScriptもまた、ブラウザに組み込むことができるスクリプトとして注目された過去がありました。ところが、ある程度時間が経過するとアプレット同じ限界に突き当たりました。
JavaScriptも限られたクライアント環境で動作するため、外部データとの入出力ができません。リソースが限られているため、あらかじめ用意された情報の範囲でしか振る舞うことができず、結果として簡単なミニゲームやユーザーとの対話が主な役目となりました。90年代後半から2000年前後位まで、JavaScriptはホビーストやデザイナのための簡易スクリプトという印象が強く、高度な機能を十分に活用されていませんでした。
ところが、Ajaxの発見によって状況は一変します。XMLHttpRequest
オブジェクトを用いた通信機能と、Document Object Model(DOM)による文書制御を駆使することで、クライアントアプリケーションに引けを取らない高度なWebアプリケーションを実装できることが注目されました。この発見の最大のポイントは、XMLHttpRequest
オブジェクトがWebサーバーと通信し、データを送受信できる点です。
また、JavaScriptが最初から持っていたHTMLとの親和性も重要です。JavaScriptはHTMLに組み込むことができ、多くのブラウザでサポートされています。取得した情報を、即座にブラウザ上に反映できるのも、大きな魅力となっているでしょう。
まとめると、Ajaxの発見によるJavaScriptのブームには、次のような要因があると考えられます。
- HTMLに組み込むことができる
- URIからWebサーバーに問い合わせ、結果を取得できる
- Document Object Modelによる文書の操作
- クロスブラウザ・マルチプラットフォーム
- 初心者でも、比較的簡単な言語構造
- インストール作業が不要
このリストとJavaアプレットを比較し、アプレットの可能性に迫りたいと思います。本稿ではJavaアプレットの基本的な開発やJavaのグラフィックス処理については触れません。詳細は、Sunのドキュメント内のアプレットやSwingを参照してください。本稿は、Javaアプリケーションの開発経験者を対象とさせていただきます。