PR
Q 質問 Java アプレットを使ったアプリケーションの起動時間が長い。アプリケーションの起動時間を短くするには,どうすればよいでしょうか

A 回答Javaアプレットのファイル・サイズを小さくする,JARファイルを分割する,Java Plug-inを使う──などの方法で,起動時間を短くすることが可能になります。

 Javaアプレットは起動時に,(1)Javaアプレットのダウンロード,(2)JavaVM(仮想マシン)の起動,(3)Javaアプレットの初期化,を行っています。それぞれの時間を短くするには,図4[拡大表示]で示した方法があります。効果的な方法はネットワーク環境によって異なるため,LAN環境とWAN環境に分けて説明しましょう。

図4●Javaアプレットの起動時間を短縮する方法
Javaアプレットの起動時には,(1)Javaアプレットのダウンロード,(2)JavaVMの起動,(3)Javaアプレットの初期化――を行っている。それぞれの時間を短縮するには,ファイル・サイズを小さくするなど,いくつかの方法がある
図5●LAN環境で効果的な方法
LAN環境では,Javaアプレットの初期化時間を短縮させることが効果的である。ログイン・プログラムとアプリケーション本体のプログラムを別のJARファイルにし,アプリケーション開始時にはログイン用のプログラムだけを初期化することで,初期化時間を短くできる。アプリケーション本体の初期化は,ログイン処理中にバックグラウンドで処理する
図6●WAN環境で効果的な方法
WAN環境では,Javaアプレットのダウンロード時間を短縮させることが効果的である。ダウンロード時間を短くする方法の一つに,事前にJavaアプレットをダウンロードしておく方法がある。Java2の新機能を使えば,比較的容易に実現できる

LAN環境では初期化時間に注目

 一般にLAN環境ではネットワークの容量が大きいため,Javaアプレットのダウンロード時間は短くなります。ダウンロード時間よりも,Javaアプレットの初期化時間を短くする方が効果的です。

 図4[拡大表示]で示したように,Javaアプレットの初期化時間を短くするには,Javaアプレットを分割し,初期化時間を分散する方法があります。すべての初期化をアプリケーションの起動時に行うのではなく,必要最小限の初期化だけをアプリケーションの起動時に行う方法です。例えば,ログイン処理だけを行うJavaアプレットを作成し,アプリケーションの起動時にダウンロードするようにします。そうすれば,アプリケーションの初期化時間は短くなります(図5[拡大表示])。

 残りのアプリケーション本体の初期化は,ログイン処理中(利用者がキーボード入力している間)に行ってしまえば,利用者を待たせません。実際のソース・コードも難しくありません。必要なJARファイルは,JavaVMが自動的に解釈してサーバーからダウンロードしてくれます。ですから,ログイン処理中に,別スレッドを生成し,アプリケーション本体のJARファイルに含まれているオブジェクトを生成するだけで,分割したJavaアプレットの初期化をバックグラウンドで処理することができます。

WANではダウンロード時間に注目

 一方,WAN環境では,一般にネットワークの容量が小さいため,Javaアプレットのダウンロード時間が長くなります。ダウンロード時間を短くする工夫が効果的です。

 図4[拡大表示]で示したように,Javaアプレットのダウンロード時間を短くするには,ダウンロードするJavaアプレットのファイル・サイズを小さくすることが基本です。ファイル・サイズが大きくなりやすいのはGU Iです。

 市販のビジュアル開発ツールには,便利で高度なGU Iライブラリが搭載されていますが,GU Iライブラリを使うとファイル・サイズが大きくなってしまいます。ファイル・サイズだけを考えた場合,市販のGU Iライブラリは使わない方が良いと言えます。JavaVMに備わっているGU Iライブラリだけで構築すれば,ファイル・サイズを小さくすることが可能です。JavaVMに含まれるGU Iライブラリは,JDK1.1ではAWTクラスだけでしたが,JDK1.2ではSwingクラスが備わっています。Swingクラスは,市販のGU Iライブラリと同等の高度なGU I部品です。Swingクラスを利用すれば,GU Iライブラリをダウンロードせずに高度なGUI部品が利用できます。

 ダウンロード時間を短くするために,あらかじめJavaアプレットをダウンロードし,ローカル・ディスクに保存しておく方法もあります。アプリケーションの起動時にはローカルにあるJavaアプレットを使います。プッシュ・ソフトウエアを使えば簡単に実現できますが,Java2の新機能を活用することでも実現できます(図6[拡大表示])。JARファイルのバージョン・チェック機能と,JavaVMの拡張機能を利用するのです。アプリケーションの起動時は,まず,JavaアプレットのバージョンをサーバーにあるJavaアプレットと比較します。もし,最新のJavaアプレットがローカルにあれば,Javaアプレットをダウンロードせずに,ローカルにあるJavaアプレットを利用します。アプリケーションの起動時にJavaアプレットをダウンロードしないため,特にWAN環境で効果が期待できます。

JavaVMの起動時間を短くする

 最後は,クライアント環境を整備することで,アプリケーションの起動時間を短くする方法です。具体的には,起動時間の短いJavaVMを利用する方法です。通常はWWWブラウザに標準搭載しているJavaVMを利用しますが,このJavaVMを使わない方法があります。WWWブラウザの拡張機能であるプラグインを使った米Sun Microsystemsの「Java Plug-in」です。同社のWWWサイト( http://java.sun.com:80/products/plugin/
index_ja.html
)からダウンロードできます。最新バージョンは,Java Plug-in 1.2.2。Java Plug-inは,総じて起動時間の短いJavaVMです。

 Java Plug-inを使うには,WWWブラウザにインストールする必要があります。また,HTMLファイルも変更しなければなりません。Javaアプレットを利用するために記述するタグを,<APPLET>タグから<OBJECT>タグに変更します。<APPLET>タグで記述されていれば,Java Plug-inをセットアップしてもJava Plug-inは使われず,WWWブラウザに標準搭載しているJavaVMが利用されます。

(本誌)