JavaアプレットをはじめとするJava中間コードを解釈・実行する仮想環境を提供するMicrosoft Java仮想マシン(MSJVM)のライフ・サイクルは2007年12月31日をもって終了すると言われています。そこで今回は,MSJVMに依存するJavaアプリケーションやWebファイルを検出するツールを取り上げます。

MSJVMとは

 まずはMSJVMを簡単に説明しておきましょう。マイクロソフト日本法人は,こちらのようなページを公開し,MSJVMを次のように定義しています。

Microsoft Java Virtual Machine (MSJVM) は,Microsoft WindowsのコンポーネントであるMicrosoft Internet Explorerの一部のバージョンに付属していたテクノロジです。このテクノロジにより,JavaアプリケーションまたはJavaアプレットと呼ばれる特定のプログラムをWindowsベースのコンピュータで実行することができます。

図1●MSJVMの移行オプション
 この定義文は非常に簡潔明りょうと言ってよいでしょう。要は,Java中間コードを解釈,実行するMicrosoftのエンジンがMSJVMということになります。ところがこの定義文を注意深く読んでみると,MSJVMは「Microsoft Internet Explorerの一部のバージョンに付属していたテクノロジ」という具合に過去形で説明され,今後は積極的にサポートされない技術であることが分かります。事実,マイクロソフトは図1[拡大表示]のような移行オプションを公開しています。

 ご覧のように,複数の移行オプションが用意されています。移行作業を開始する場合には,事前に,自分のマシン内のどのアプリケーションやどのWebファイルがMSJVMに依存しているのかを知っておく必要があります。マイクロソフトは「Microsoft VM 診断ツール」というものを一般公開し,MSJVMに依存するファイルの検出作業を支援しています。それでは次に,この診断ツールの使い方を説明しましょう。

Microsoft VM 診断ツールの使い方

 Microsoft VM 診断ツールはこちらからダウンロードできます。2004年6月1日現在,ダウンロードできるバージョンは,1.0aとなっています。ダウンロードは指示に従うだけで簡単に完了します。

 ダウンロードした圧縮ファイルを皆さんのマシンに解凍,インストールすると,GUI版とコマンドライン版の2種類のツールが利用できることが分かります。このように2種類のプログラムが用意されている場合,皆さんはどちらのプログラムを使用しますか?

 筆者は,まずコマンドライン版ツールの起動オプションの種類を確認することにしています。理由は簡単です。コマンドライン版ツールはGUI版と比較すると,より多くの起動オプションをサポートしていることが多いからです。

 コマンドライン版ツールがサポートするオプションを調べてみると,「/directoryfile」というオプションがGUI版では用意されていないことが分かりました。このオプションは,診断対象となるディレクトリを指定する機能を提供するオプションです。診断対象ディレクトリを指定しない場合,常識的に判断すれば,すべてのディレクトリが診断対象になるはずです。これでは必要以上に診断時間がかかってしまいますから,筆者は,コマンドライン版ツールを使用することにしました。

 なお,その他の利用できるオプションについては,ダウンロード・ファイルに含まれるユーザーズ・マニュアルの関連個所を参照してください。

 コマンドライン版ツールは軽量高速で,その上,使用できるオプションが豊富なことはありがたいのは事実ですが,1つの弱点を持っています。それは,GUI操作に慣れたWindowsユーザーにとっては「使い勝手が悪い」ということです。数あるオプションをコマンドラインから入力するのは一苦労です。そこで筆者は,一般的な方法ではないのですが,第9回で紹介したDependency Walkerの内部からコマンドライン版診断ツールを起動することにしました。起動手順を次に示します。ちょっと面倒な手順ですが,ITプロフェッショナルには興味ある情報も同時に取得できますから,ここは一つ頑張って挑戦してみましょう。

図2●「Plofile Module」のダイアログ
ステップ1:後で説明するオプション・ファイルを用意する
ステップ2:Dependency Walkerを起動する
ステップ3:「File/Open」からインストールしたコマンドライン版ツール「JavaDiag.exe」を選択する
ステップ4:「Profile/Start Profiling...」を選択し,「Plofile Module」のダイアログ(図2[拡大表示])画面を表示させる
ステップ5:「Program arguments」欄にアットマーク(@)に続けてステップ1で用意したオプション・ファイルを指定する
ステップ6:OKボタンをクリックし,コマンドライン版ツールの実行を開始する

 オプション・ファイルを用意する作業は慣れていないとちょっと面倒です。オプション・ファイルというのは,コマンドライン版ツールに渡すパラメータ・リストを記したテキスト・ファイルです。詳細については,ユーザーズ・マニュアルを参照してもらうとして,筆者は次のようなデータをオプション・ファイル内に書き込みました。

/vm /deps /java /vj /verbose /webfile /webextfile c:\itpro\mywebextfile.txt /reportfile myreportfile.htm /directoryfile c:\itpro\mydirectoryfile.txt

 時間的に余裕のない方は,このデータをそのままコピーし,options.txtなどのファイル名で保存してください。個々のオプションに関する説明は省略しますが,「/webextfile c:\itpro\mywebextfile.txt」と「/directoryfile c:\itpro\mydirectoryfile.txt」については簡単に説明しておきます。

図3●診断対象となる拡張子の一覧
 「/webextfile c:\itpro\mywebextfile.txt」オプションは,診断対象となるファイルの拡張子を指定するものです。現在,図3[拡大表示]のような拡張子を指定することができます。

 メモ帳などのテキスト・エディタを開き,複数の目的のファイル拡張子を記述し,mywebextfile.txtなどとして保存します。

 「/directoryfile c:\itpro\mydirectoryfile.txt」オプションは,診断対象となる特定のディレクトリを指定するものです。筆者はメモ帳を起動し,次のようなディレクトリ情報を記述し,mydirectoryfile.txtとして保存しました。

c:\MyHomePage

 複数のディレクトリを指定できますが,1行単位で指定してください。

図4●筆者の環境での診断結果
 以上で実行手順の説明は終了です。実行すると,Microsoft VM 診断ツールをインストールしたディレクトリにレポート・ファイル(筆者の場合myreportfile.htmという名称)が作成されるはずです。筆者の環境では,図4[拡大表示]のような情報を含むHTMファイルが作成されました。

 なお,Dependency Walkerの各画面には,Microsoft VM 診断ツールの動作背景を示すかなり高度な情報が表示されているはずです。実行時に動的に読み込まれるダイナミック・リンク・ライブラリ(DLL),呼び出されたAPI(Application Programming Interface)とその呼び出したコードなどが次々に表示されてくるはずです。プログラミング作業に従事されている方は,デバッグ時の参考になる情報ですから,部分的に目を通すとよいでしょう。

今回のまとめ

  • MSJVMのライフサイクルは2007年12月31日に終了する
  • MSJVMに依存するファイルは調べておく必要がある
  • 依存ファイルを調査した場合,Microsoft VM 診断ツールを利用できる

 今回は以上で終了です。次回またお会いいたしましょう。ごきげんよう!