(57)【要約】  １つ以上のアプリケーションによって使用するための予めリンクするクラスのシステムおよび方法。システムおよび方法はまた、ランタイム処理がホストシステムとターゲットシステムとの間に分割する場合に使用され得る。ホストシステムにおいて、少なくともいくつかのクラスは、ロードされ、かつ、リンクされる。少なくとも１つのリンクホストリンクモジュールは、リンクされたクラスから生成される。ホストリンクモジュールは、ターゲットシステム上で動作する１つ以上のアプリケーションによる使用が利用可能にされる。
2005515520.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションを実行するモバイル通信デバイスランタイムシステムであって、
ロードされ、かつリンクされたクラスを有する予めリンクされたモジュールを含み、
該予めリンクされたモジュールは、閉集合がロードされ、リンクされたクラスファイルの情報を有し、
該モバイル通信デバイス上で動作するアプリケーションであって、該アプリケーションは、該アプリケーション実行中に該クラスを用いるアプリケーションを含み、
該アプリケーションは、該アプリケーションの実行中に該予めリンクされたモジュールへのアクセスを有し、これにより、該クラスのローディングおよびリンキングを繰り返す該アプリケーションの必要性は、該予めリンクされたモジュールの該使用により、該アプリケーションの該実行中に、排除されるモバイル通信デバイスランタイムシステム。
【請求項２】
前記予めリンクされたモジュールを生成するホストシステムと、
前記予めリンクされたモジュールがターゲットシステムに提供される通信機構とをさらに含み、
該アプリケーションが該ターゲットシステム上で動作する請求項１に記載のシステム。
【請求項３】
前記ターゲットシステムは、前記アプリケーションによる使用のために、他のモジュールと予めリンクされたモジュールをターゲットリンクするターゲットリンクする手段を含む請求項２に記載のシステム。
【請求項４】
前記予めリンクされたモジュールは、実質的に、コマンド、記号情報およびコードを最適化する請求項１に記載のシステム。
【請求項５】
前記クラスファイルは、前記クラスを含み、記号情報を含む請求項１に記載のシステム。
【請求項６】
前記予めリンクされたモジュールが検証される請求項１に記載のシステム。
【請求項７】
前記予めリンクされたモジュールは、前記アプリケーションによって必要とされた全てのクラスを含む複数のモジュールを含む請求項１に記載のシステム。
【請求項８】
前記予めリンクされたモジュールは、複数のモジュールを含み、該モジュールは、記号参照の数を実質的に最小にする一方で、動的にリンクされる請求項１に記載のシステム。
【請求項９】
前記アプリケーションは、デバイス上で動作し、前記予めリンクされたモジュールは、直接的に、該デバイス上のストレージから実行可能である請求項１に記載のシステム。
【請求項１０】
前記予めリンクされたモジュールは、前記デバイス上で動作する複数のアプリケーションの実行において、ロードするステップおよびリンクするステップの再使用を提供する請求項９に記載のシステム。
【請求項１１】
前記予めリンクされたモジュールは、前記アプリケーションの実行前に生成される請求項１に記載のシステム。
【請求項１２】
前記予めリンクされたモジュールは、コード設定および実行時間に基づいて構成される請求項１に記載のシステム。
【請求項１３】
前記アプリケーションは、帯域幅限定デバイス上で動作する請求項１に記載のシステム。
【請求項１４】
前記アプリケーションがモバイルデータデバイス上で動作する請求項１に記載のシステム。
【請求項１５】
前記アプリケーションがパーソナルデータアシスタント上で動作する請求項１に記載のシステム。
【請求項１６】
前記アプリケーションが装置上で動作する請求項１に記載のシステム。
【請求項１７】
前記アプリケーションが薄いクライアントアプリケーション上で動作する請求項１に記載のシステム。
【請求項１８】
前記クラスがＪａｖａ（Ｒ）ベースクラスを含む請求項１に記載のシステム。
【請求項１９】
ターゲットシステム上で動作するアプリケーションによって使用のためにホストシステムにてクラスをホストリンクする方法であって、
少なくとも数個のクラスを該ホストシステムにてロードするステップと、
該ロードされたクラスを該ホストシステムにてリンクするステップと、
該リンクされたクラスから少なくとも一つのホストリンクされたモジュールを形成するステップとを包含し、
前記ホストリンクされたモジュールは、該ターゲットシステム上で動作する該アプリケーションによって使用のために利用可能とされる方法。
【請求項２０】
サービスアプリケーションは、前記ホストシステムにて、前記ロードするステップにて用いられるように、前記クラスの少なくとも一つを提供する請求項１９に記載の方法。
【請求項２１】
ソフトウェアライブラリは、前記ホストシステムにて前記ロードするステップにて用いられるように、前記クラスの少なくとも一つを提供する請求項１９に記載の方法。
【請求項２２】
Ｊａｖａ（Ｒ）アプリケーションは、前記ホストシステムにて前記ロードするステップにて用いられるように前記クラスの少なくとも一つを提供する請求項１９に記載の方法。
【請求項２３】
前記ホストシステムにて前記ロードされたクラスの前記リンクするステップは、実質的に、コマンド、記号情報およびコードを最適化する請求項１９に記載の方法。
【請求項２４】
前記クラスのファイルは記号情報を含む請求項１９に記載の方法。
【請求項２５】
健全性チェックを用いて、前記ホストリンクされたモジュールを前記ホストシステムにて検証するステップをさらに包含する請求項１９に記載の方法。
【請求項２６】
前記ターゲットシステム上の前記ホストリンクされたモジュールの複数の実行前に、再度、健全性チェックを用いて、前記ホストリンクされたモジュールを前記ホストシステムにて検証するステップをさらに包含する請求項１９に記載の方法。
【請求項２７】
前記ホストリンクされたモジュールは、前記アプリケーションによって必要とされた全てのクラスを含む複数のモジュールを含む請求項１９に記載の方法。
【請求項２８】
前記ホストリンクされたモジュールは、複数のモジュールを含み、該モジュールは、記号参照の数を最小にする一方で、動的にリンクされる請求項１９に記載の方法。
【請求項２９】
前記ホストリンクされたモジュールは、直接に、前記ターゲットシステム上のストレージから実行可能である請求項１９に記載の方法。
【請求項３０】
前記ホストリンクされたモジュールは、閉集合がロードされ、リンクされたクラスファイルの情報を含む請求項１９に記載の方法。
【請求項３１】
前記ホストリンクされたモジュールは、前記アプリケーションの複数の実行において前記ロードするステップおよび前記リンクするステップの再使用を提供する請求項１９に記載の方法。
【請求項３２】
前記ホストシステムは、該ホストリンクされたモジュールの生成中に、モジュール参照を分解する請求項３１に記載の方法。
【請求項３３】
前記ターゲットシステムに提供されている前記ホストリンクされたモジュールは、ホストリンクされたモジュールに関連されるクラスを分解する、前記ターゲットシステムの必要性を排除する請求項３２に記載の方法。
【請求項３４】
前記ホストリンクされたモジュールは、前記アプリケーションおよび第２のアプリケーションの複数の実行において、前記ロードするステップおよび前記リンクするステップの再使用を提供する請求項１９に記載のシステム。
【請求項３５】
前記ホストリンクされたモジュールは、前記アプリケーションの実行前に、生成される請求項１９に記載の方法。
【請求項３６】
前記ホストリンクされたモジュールは、前記ターゲットシステムへのコード通信に基づいて構成される請求項１９に記載の方法。
【請求項３７】
前記ホストリンクされたモジュールは、コード設定および実行時間に基づいて構成される請求項１９に記載の方法。
【請求項３８】
前記ホストリンクされたモジュールを、前記アプリケーションによって使用のために前記ターゲットシステムに提供するステップをさらに包含する請求項１９に記載の方法。
【請求項３９】
前記ホストリンクされたモジュールを、前記ホストシステムから前記ターゲットシステムに、モバイル通信ネットワークを介して、前記アプリケーションによって使用のために、送信するステップをさらに包含する請求項１９に記載の方法。
【請求項４０】
前記ホストシステムと前記ターゲットシステムとの間に、該ホストシステムにて前記ホストリンクされたモジュールを形成するステップにより、かつ、前記アプリケーションによって使用のために、該ターゲットシステムにて該ホストリンクされたモジュールを少なくとも一つのターゲットリンクされたモジュールにリンクするステップにより、処理マシーンランタイムを分割するステップをさらに含む請求項１９に記載の方法。
【請求項４１】
前記アプリケーションによって使用のために前記ターゲットシステムにて前記ホストリンクされたモジュールを他のモジュールにターゲットリンクするステップをさらに包含する請求項１９に記載の方法。
【請求項４２】
前記ホストシステムにて前記ロードされたクラスをリンクするステップにおいて使用のためにエクスポートされた識別子のテーブルを提供するステップをさらに包含する請求項４１に記載の方法。
【請求項４３】
前記ターゲットシステムは帯域幅限定デバイスを含む請求項１９に記載の方法。
【請求項４４】
前記ターゲットシステムは前記アプリケーションを実行する処理マシーンを含む請求項１９に記載の方法。
【請求項４５】
前記ターゲットシステムは、前記アプリケーションを実行する仮想マシーンを含む請求項１９に記載の方法。
【請求項４６】
前記ターゲットシステムは、モバイルデータデバイスを含む請求項１９に記載の方法。
【請求項４７】
前記ターゲットシステムはパーソナルデータアシスタントを含む請求項１９に記載の方法。
【請求項４８】
前記ターゲットシステムは装置を含む請求項１９に記載の方法。
【請求項４９】
前記ターゲットシステムは薄いクライアントアプリケーションを含む請求項１９に記載の方法。
【請求項５０】
前記ターゲットシステムは、前記ホストリンクされたモジュールを処理する仮想マシーンコードプロセッサを含む請求項１９に記載の方法。
【請求項５１】
前記ターゲットシステムは、前記ホストリンクされたモジュールを処理するハードウェア処理マシーンランタイムを含む請求項１９に記載の方法。
【請求項５２】
前記クラスはＪａｖａ（Ｒ）ベースクラスを含む請求項１９に記載の方法。
【請求項５３】
請求項１９の方法を実行するように、プログラムコードを含む、コンピュータ読み出し可能媒体上に格納されたコンピュータソフトウェア。
【請求項５４】
請求項１９の方法に従って製造されたホストリンクされたモジュール。
【請求項５５】
ターゲットシステムにおけるホストリンクモジュールを操作する方法であって、該ホストリンクモジュールは少なくともいくつかのクラスをロードするステップを経てホストシステムによって生成され、該ホストシステムは該ロードされたクラスと該ホストシステムにおいてリンクし、該リンクされたクラスからの少なくとも１つのホストリンクモジュールを形成する、方法は、
該ターゲットシステムにおいて該ホストシステムから該ホストリンクモジュールを受信するステップと、
任意の追加のクラスが該ホストリンクモジュールとリンクされるべきかどうかを判断するステップと、
追加のクラスがリンクされるべきである場合、次に、ターゲットリンクモジュールを形成するために該追加のクラスと該ホストリンクモジュールとをリンクするステップと、
該ターゲットリンクモジュールが該ターゲットシステム上で動作するアプリケーションによって使用されることを可能にするステップと
を包含する、方法。
【請求項５６】
前記ターゲットシステムに提供される前記ホストリンクモジュールは、該ホストリンクモジュールと関連した分解しているクラスから該ターゲットシステムを削除する、請求項５５に記載の方法。
【請求項５７】
前記ターゲットシステムに提供された前記ホストリンクモジュールは、該ホストリンクモジュールと関連したクラスを解決するために該ターゲットシステムに対する必要性を削除する、請求項５５に記載の方法。
【請求項５８】
前記ターゲットシステムは、帯域幅限界デバイスを含む、請求項５５に記載の方法。
【請求項５９】
前記ターゲットシステムは、前記アプリケーションを実行するための処理マシーンを含む、請求項５５に記載の方法。
【請求項６０】
前記ターゲットシステムは、前記アプリケーションを実行するための仮想マシーンを含む、請求項５５に記載の方法。
【請求項６１】
前記ターゲットシステムは、モバイルデータデバイスを含む、請求項５５に記載の方法。
【請求項６２】
前記ターゲットシステムは、パーソナルデータアシスタントを含む、請求項５５に記載の方法。
【請求項６３】
前記ターゲットシステムは、電気器具を含む、請求項５５に記載の方法。
【請求項６４】
前記ターゲットシステムは、小型軽量クライアントアプリケーションを含む、請求項５５に記載の方法。
【請求項６５】
前記ターゲットシステムは、前記ホストリンクモジュールを処理するための仮想マシーンコードプロセッサを含む、請求項５５に記載の方法。
【請求項６６】
前記ターゲットシステムは、前記ホストリンクモジュールを処理するためのハードウェア処理マシーンランタイムを含む、請求項５５に記載の方法。
【請求項６７】
前記クラスは、Ｊａｖａ（Ｒ）ベースのクラスを含む、請求項５５に記載の方法。
【請求項６８】
コンピュータ読み出し可能媒体に格納されたコンピュータソフトウェアであって、該コンピュータソフトウェアは、請求項５５による方法を実行するためのプログラムコードを含む、コンピュータソフトウェア。
【請求項６９】
前記ホストリンクモジュールは、前記ターゲットシステム上の複数の実行より前に、一旦健全性チェックを用いて前記ホストシステムで点検される、請求項５５に記載の方法。
【請求項７０】
前記ホストリンクモジュールは、前記アプリケーションによって必要とされる全てのクラスを含む複数のモジュールを含む、請求項５５に記載の方法。
【請求項７１】
前記ホストリンクモジュールは、複数のモジュールを含み、該モジュールは、記号参照の数を本質的に最小化する間に動的にリンクされる、請求項５５に記載の方法。
【請求項７２】
前記ホストリンクモジュールは、前記ターゲットシステム上の格納装置から直接実行可能である、請求項５５に記載の方法。
【請求項７３】
前記ホストリンクモジュールは、前記アプリケーションの複数の実行において、前記ロードするステップ再利用および前記前記リンクするステップの再利用を提供する、請求項５５に記載の方法。
【請求項７４】
前記ホストシステムは、前記ホストリンクモジュールの生成中に、モジュールリファレンスを解決する、請求項７３に記載の方法。
【請求項７５】
前記ホストリンクモジュールは、前記アプリケーションおよび第２のアプリケーションの複数の実行において、前記ロードするステップの再利用およびリンクするステップの再利用を提供する、請求項５５に記載の方法。
【請求項７６】
前記ホストリンックモジュールは、前記アプリケーションの実行の前に生成される、請求項５５に記載の方法。
【請求項７７】
前記ホストリンクモジュールは、前記ターゲットシステムとのコード通信に基づいて構成される、請求項５５に記載の方法。
【請求項７８】
前記ホストリンクモジュールは、コードセットアップおよび実行時間に基づいて構成される、請求項５５に記載の方法。
【請求項７９】
モバイル通信ネットワークを介して前記ターゲットシステムにおける前記ホストシステムから、前記ホストリンクモジュールを受信するステップをさらに包含する、請求項５５に記載の方法。
【請求項８０】
前記ホストシステムにおける前記ホストリンクモジュールを形成することによって、かつ、前記ターゲットシステムにおいて、前記アプリケーションによる使用のための少なくとも１つのターゲットシステムに該ホストリンクモジュールをターゲットリンクすることによって、該ホストシステムと該ターゲットシステムとの間の処理マシーンランタイムを分類するステップをさらに包含する、請求項５５に記載の方法。
【請求項８１】
ロードされ、リンクされるクラスを含む予めリンクされたモジュールと、
クラスファイルにロードされ、かつ、リンクされたクローズセットの情報を有する予めリンクされたモジュールと、
アプリケーションの実行中に該クラスを使用するアプリケーションと
を含む、アプリケーションを実行するためのモジュールベースのランタイムシステムであって、
該アプリケーションの実行中に使用するための該予めリンクされたモジュールとのアクセスを有するアプリケーションであって、該クラスのローディングおよびリンキングを繰り返すための該アプリケーションの必要性は、該予めリンクされたモジュールの使用のために、該アプリケーションの実行中に削除される、モジュールベースのランタイムシステム。
【請求項８２】
ホストシステムにおいて少なくともいくつかのクラスをロードするステップと、
該ホストシステムにおいて該ロードされたクラスにリンクするステップと、
該リンクされたクラスから少なくとも１つのホストリンクモジュールを形成するステップと
を包含する処理を経て生成されるホストリンクモジュールであって、
該ホストリンクモジュールは、該ターゲットシステムで動作するアプリケーションによる使用が利用可能にされる、
ターゲットシステムで動作するアプリケーションによる使用のためのホストリンクモジュール。
【請求項８３】
ホストリンクモジュールを含む搬送波において実現されるコンピュータデータ信号であって、該ホストリンクモジュールはロードされリンクされるクラスを含み、該ホストリンクモジュールはクラスファイルにロードされ、かつ、リンクされるクローズセットの情報を有し、該ホストリンクモジュールはアプリケーションの実行中に該クラスを使用する該アプリケーションによって使用し、該アプリケーションは該アプリケーションの実行中に該ホストリンクモジュールへのアクセスを有し、それにより、該クラスのローディングおよびリンキングを繰り返すための該アプリケーションの必要性が、該ホストリンクモジュールの使用のために該アプリケーションの実行中に削除される、コンピュータデータ信号。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願）
本出願は、２００１年５月３０日に出願された米国仮出願第３０／２９４，３３１号「ホストシステムとターゲットシステムとの間の処理マシーンランタイム（ｒｕｎｔｉｍｅ）を分割する方法」に対して優先権を主張する。この参照による、米国仮出願第３０／２９４，３３１号の図面を含む全ての開示は、本明細書に援用される。
【背景技術】
【０００２】
（背景）
本発明は、処理マシーンランタイムの環境の分野に関する。特に、本発明は、ターゲットシステムでのリソースを保存するためにホストシステムとターゲットシステムとの間の処理マシーンランタイムを分割する方法に関する。
【０００３】
現在、バーチャルマシーンの最新の技術は、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃ（Ｓｕｎ）からのＪａｖａ（Ｒ）バーチャルマシーン（ＪＶＭ）である。Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ  Ｊａｖａ（Ｒ）技術の中心は、Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ  Ｐｕｂ  Ｃｏ；ＩＳＢＮ：０２０１４３２９４３のＴｉｍ  ＬｉｎｄｈｏｌｍとＦｒａｎｋ  ＹｅｌｌｉｎによるＪａｖａ（Ｒ）バーチャルマシーン規格のセカンドエディションのチャプター４のクラスファイルフォーマットにより現在、特定化されるような、Ｊａｖａ（Ｒ）バーチャルマシーンコードまたはバイトコードである。
【０００４】
クラスファイルバイトコードは、ＳｏｌａｒｉｓＴＭ、Ｗｉｎ３２、ＬｉｎｕｘＴＭ、Ｍａｃ、および他の動作可能なプラットフォーム上で、ＳｕｎのＪａｖａ（Ｒ）ＴＭランタイム環境（ＪＲＥ）と共動する。通常、Ｊａｖａ（Ｒ）プログラム言語で書かれたソースコードは、「Ｊａｖａ（Ｒ）ｃ」などのＪａｖａ（Ｒ）ＴＭコンパイラを使用して、バーチャルマシーンバイトコードをそれぞれのクラスファイルフォーマットにコンパイルされ、その後、ＪＲＥまたは互換性のあるランタイム環境、および処理マシーンを使用して実行される。
【０００５】
図１を参照して、階層のＪＲＥアーキテクチャブロック図は、Ｓｕｎの技術の幾つかの局面を示す。種々のメカニズム（１００Ａおよび１００Ｂ）は、プログラムソフトウェア（１１０Ａおよび１１０Ｂ）バイトコードクラスファイルを提供する。例えば、コンパイラ１００Ａは、ソフトウェア１１０Ａをバイトコードクラスファイルにコンパイルする。あるいは、ウェブブラウザは、ソフトウェア１００Ｂバイトコードクラスファイルをダウンロードするためにソフトウェア「ｐｌｕｇｉｎ」１１０Ｂを使用し得る。
【０００６】
クラスファイル内のバイトコードは、通常、各クラスがクラスファイルを有する幾つかの他のクラスを参照する。このために、標準パッケージ１２０クラスファイルは、ソフトウェア（１１０Ａおよび１１０Ｂ）の例によって再利用されるためのシェアソフトウェアリソースとして提供される。ＪＶＭ１４０は、クラスファイルを取得し、ソフトウェア（１１０Ａおよび１１０Ｂ）および標準パッケージクラスファイル１２０を実行する。
【０００７】
示されたものはまた、最上位にＪＲＥ１４２動作を有する種々のシステム１３０である。ランタイムにおける標準パッケージは、アプリケーションプログラマのインターフェース（ＡＰＩ）で示される特定のランタイムプラットフォームを定義する。
【０００８】
Ｊａｖａ（Ｒ）ＴＭ２スタンダードエディション（Ｊ２ＳＥ）は、Ｓｕｎ参照プラットフォームＡＰＩである。それらはまた、ＪＶＭ上で駆動される標準パッケージのセットで構成されるＪＲＥを含む参照インプリメンテーションを提供する。アプリケーションディベロッパは、Ｊ２ＳＥ標準パッケージクラスを参照するＪａｖａ（Ｒ）ＴＭプログラム言語におけるアプリケーションを書き込み得、Ｊ２ＳＥコンプライアントランタイムシステム上でアプリケーションを実行させることが期待され得る。Ｊ２ＳＥとの比較によって通常定義される他のプラットフォームが存在する。例えば、Ｊ２ＳＥとＪａｖａ（Ｒ）ＴＭ２エンタープライズエディション（Ｊ２ＥＥ）とのスーパーセットを更なる特徴として加える。特定の関心は、Ｊ２ＳＥとＪａｖａ（Ｒ）ＴＭ２マイクロエディション（Ｊ２ＭＥ）とのサブセットである。
【０００９】
Ｊ２ＳＥプラットフォームは、例えば、ＳｏｌａｒｉｓＴＭ，Ｗｉｎ３２，Ｍａｃ，ＬｉｎｕｘＴＭ、および他の図１のブロックによって示されるような、システム上で動作されるように首尾よく適応され得るが、Ｊ２ＳＥは、複数のデバイス上で動作するために首尾よくは適用されない。例えば，標準Ｊ２ＳＥパッケージのクラスファイルは、ディスク領域の１６メガバイト以上で現在消費（ｃｏｎｓｕｍｅ）し得る。ディスク領域の１６メガバイト以上は、複数のデバイスの格納容量を越え得る。
【００１０】
この問題を処理するために、Ｓｕｎは、Ｊａｖａ（Ｒ）ＴＭ２マイクロエディション（Ｊ２ＭＥ）プラットフォーム、付加的なバーチャルマシーン、および、関連するデバイス構成を紹介する。
【００１１】
接続され制限されたデバイス構成（ＣＬＤＣ）およびＫバーチャルマシーン（ＫＶＭ）は、ユーザが、１２８Ｋから５１２Ｋのメモリでユーザの手で小さなコンシュマーデバイスを処理し、モバイル情報デバイスプロフィール（ＭＩＤＰ）とともに使用される場合、セルフォンおよび２ｗａｙペイジャなどのデバイスに対するアプリケーション環境を提供し得る。
【００１２】
接続されたデバイス構成（ＣＤＣ）およびＣバーチャルマシーン（ＣＶＭ）は、エマージング、２ＭＢ以上のメモリを有する次世代コンシュマーデバイスを処理し、基本プロフィールとともに用いられる場合、次世代コンシュマーデバイスのためのアプリケーション環境を提供し得る。
【００１３】
Ｊ２ＭＥの利点は、上述のＣＬＤＣまたはＣＤＣとともに用いられる場合、より少ないスタンダードクラスパッケージは、Ｊ２ＳＥと比較されるような複数のデバイスを格納する。したがって、Ｊ２ＭＥは、Ｊ２ＳＥの特徴の全てをサポートしないことを犠牲にして、デバイス上のより少ない領域を取り上げ得る。
【００１４】
Ｊａｖａ（Ｒ）ＴＭランタイム技術は、異なるシステム及びデバイスに対して利用可能であり得るが、そして、Ｊ２ＭＥプラットフォームは、機能を取り除く事によってデバイスの制限された格納領域問題を処理するが、Ｊ２ＭＥは、デバイスランタイムインプリメンテーションの効果を処理し得ないので、適切な解決法を考慮し得ない。従って、ターゲットデバイスに対して最適化するランタイムのための必要性（および、他の必要性）が存在する。
【００１５】
本発明のよりよい理解のために、Ｊａｖａ（Ｒ）ランタイム技術に関する以下の情報が提供される。Ｓｕｎ  ＪＶＭのセクション§２．１７．１におけるＬｉｎｄｈｏｌｍに従って、「Ｊａｖａ（Ｒ）バーチャルマシーンは、幾つかの特定のクラスの主要な方法を呼び出すことおよび、ストリングスのアレイである単一の引数を通過することによって実行を開始する。このことは、特定のクラスにロードさせ（§２．１７．２）、それが使用する他のタイプに対してリンクさせ（§２．１７．３）、および、初期化させる（§２．１７．４）」。従って、図１のＪＶＭ１４０を開始する場合に「主要な」クラスの名前を特定化することによって、クラスファイルは、ロードされ、場色コードインストラクションの実行は、クラスファイルの静的で主要のエントリポイントで開始する。さらに、クラスなど「主要な」クラスによって使用される参照されたタイプは、リンクされ、初期化される。「主要な」クラスファイルによる他のクラスの使用に応じて、重要なランタイムリソースは、使用されたクラスファイルのロードおよびリンクのためにコンシュームされる。
【００１６】
Ｊａｖａ（Ｒ）ＴＭランタイム技術は、ランタイムシステムが「主要な」クラスが実行に対して特定化される時間ごとに必要とされる全てのファイルをロードしリンクすることが必要である。ここで、実行は、デバイスなどのターゲットシステム上のリソースの険しい（ｐｒｅｃｉｐｉｔｏｕｓ）消費の原因であり得る。
【００１７】
通常のＪａｖａ（Ｒ）アプリケーションは、幾つかの支持クラスファイルを有する可能性と同様の静的な主要なエントリポイントを含む少なくと一つの「主要な」クラスファイルを有する。
【００１８】
以下のＪａｖａ（Ｒ）ＴＭプログラムリストの例が、次で考慮される。
【００１９】
【数１】
2005515520.tif 000003
上記は、二つのクラスに対するソースコードを提供し、ＨｅｌｌｏおよびＢｙｅのそれぞれは、Ｈｅｌｌｏ．Ｊａｖａ（Ｒ）ｆｉｌｅおよびＢｙｅ．Ｊａｖａ（Ｒ）ｆｉｌｅにおける各クラスに対するソースの配置によって、および、Ｈｅｌｌｏ．ｃｌａｓｓファイルおよびＢｙｅ．ｃｌａｓｓファイルを取得するための命令「Ｊａｖａ（Ｒ）ｃ  Ｈｅｌｌｏ．Ｊａｖａ（Ｒ）  Ｂｙｅ．Ｊａｖａ（Ｒ）」を使用する事によってなどの、当業者に公知のフォーマット方法をクラスファイルにコンパイルされ得る。
【００２０】
Ｈｅｌｌｏクラスは、静的な主要ポイントを提供し、従って、ＪＶＭ１４０を開始する場合「主要な」クラスとして特定されることに適用可能である。
【００２１】
図２を参照して、図１のランタイムのリンク技術は、上述の「Ｈｅｌｌｏ」プログラムの例を参照して考慮される。複数のクラスファイル２００は、（図１の）バーチャルマシーン１４０に対して利用可能である。各クラスファイルは、他の使用されるクラスファイルに対する参照を取り除くためにバーチャルマシーン１４０によって使用される象徴的な情報を有する。
【００２２】
通常、Ｈｅｌｌｏ．ｃｌａｓｓ  ファイル２１０Ａは、ＪＶＭ１４０を開始する場合に特定化されるような２２０Ａでまずロードされる。ＪＶＭ１４０は次いで、ロードされたクラス２２０Ａの主要なエントリポイントでのバイトコード指示を実行するために進む。Ｈｅｌｌｏクラス２２０Ａは幾つかの標準パッケージクラスを使用するので、使用されるクラスに対するクラスファイルは、Ｈｅｌｌｏクラス２２０Ａにロードされリンクされる。同様に、Ｈｅｌｌｏクラスで使用されるＳｔｒｉｎｇ．ｃｌａｓｓファイル２１０Ｃ、Ｓｙｓｔｅｍ．ｃｌａｓｓファイル２１０Ｄ、および、他のクラスファイル２１０は、２２０Ｃ，２２０Ｄ，２２０でロードされ、２３０Ｃ，２３０Ｄおよび２３０でリンクされる。Ｈｅｌｌｏクラスはまた、Ｂｙｅ  ｃｌａｓｓ（標準パッケージクラスでない指示クラス）を使用し、その結果、ファイル２１０Ｅは、２２０Ｅでロードされ，２３０Ｅでリンクされる。
【００２３】
図面には示されないが、クラスファイル２１０が２２０でロードされ、２３０でリンクされる時間ごとに、任意のクラスファイル（ロードされる２２０）の使用ロードされリンクされ得る。例えば、ロードされた支持Ｂｙｅ  ｃｌａｓｓ２２０Ｅの場合、複数の同じクラスがＨｅｌｌｏ  ｃｌａｓｓ２１０Ａとして使用される。Ｂｙｅ  ｃｌａｓｓ２２０Ｅが２３０Ｅにロードされリンクされる場合に応じて、Ｂｙｅ  ｃｌａｓｓ２２０Ｅは、Ｈｅｌｌｏクラスによって使用されロードされるクラスと共通であるまた、クラスファイル２１０をロードすることを有し得る。しかしながら、Ｂｙｅ２２０Ａによって使用される全てのクラスは、支持Ｂｙｅクラスを使用し得るためにＨｅｌｌｏに対するようなＢｙｅに究極的同様にリンクされなければならない。この状況は、標準パッケージクラスと同様である。
【００２４】
（２２０で）ロードし、（２３０で）リンクするトラディショナルクラスファイルは、重大なランタイムリソースをコンシュームし、クラスファイルをロードすることおよびリンクすることが、プログラムを実行するための命令の特定によってトリガされる場合に、図３Ａおよび３Ｂを参照して次でさらに説明されるように、「主要な」プログラムの実行をスローダウンし得る。
【００２５】
図３Ａおよび図３Ｂを参照して、図２のランタイムリンキング技術をさらに示すフローチャート、特に選択的な遅発分解（ｌａｔｅ  ｒｅｓｏｌｕｔｉｏｎ）が、説明される。「メイン」クラスは、ハードドライブまたはネットワーク等のクラス記憶２００から３１０にロードされる。クラスは、３１５において検証され、準備される。遅発分解が３２０において判定される際に利用されない場合は、全ての利用されるクラスは、３２５にリンクされ、ロードされる。遅発分解が３２０において利用されるか利用されないかに関わらず、「メイン」クラスは、３３０において初期化される。
【００２６】
メインエントリポイントからの命令が、３３５において取り出される。取り出された命令が、３４０において判定される際に分解されていないリファレンスを含まない場合は、取り出された命令は、３４５において実行される。しかし、取り出された命令が３４０において判定される際に、まだロードされていないクラスに対するクラスリファレンス等の分解されていない識別子リファレンスを含む場合、そして、遅発分解が３５０において判定される再利用されない場合、ランタイムにおいてエクセプションが投げられる。遅発分解が、３５０において判定される際に利用される場合、かつ、３５５において参照されたクラスがロードされ得ない場合、ランタイムにおいてエクセプションが投げられる。しかし、遅発分解が３５０において判定される際に利用される場合、かつ、参照されたクラスがロードされ得る場合、参照されたクラスはロードされ、かつ、リファレンスは３４５におおいて命令を実行する前に３６０において分解される。３６５において判定される際に実行すべき命令がさらにある場合、次の命令が３３５において取り出され、その他の場合は、バーチャルマシンは終了する。
【００２７】
遅発分解が利用される場合、幾つかのクラスファイルは、メインプログラムバイトコードの実行の間に３６０においてロードされ、リンクされる。もしくは、遅発分解が利用されない場合は、幾つかのクラスファイルは、ＪＶＭ１４０に対して「メイン」クラスファイルを特定した後、メインプログラムバイトコードを実行する前に、３２５においてロードされ、リンクされる。どちらの場合も、メインプログラムがランタイムにおいてＪＶＭ１４０による実行のための特定される時と、メインプログラムが終了するかまたはエクセプションを投げるかのどちらかの時との間に、ローディングおよびリンキングのために、リソースの険しい消費が続いて起こり得る。
【００２８】
従って、遅発分解を排除することによってでさえ、リンキングおよびローディングのトリガーとなる実行において、クラスファイルをローディングおよびリンキングするために、リソースの険しい消費に対する潜在的な危険性が存在する。
【発明の開示】
【課題を解決するための手段】
【００２９】
（要旨）
本発明は、上述の問題およびその他の問題を乗り越える。本発明の教示に応じて、１つ以上のアプリケーションによって利用するために、クラスをプレリンキングするシステムおよび方法が提供される。本システムおよび方法はまた、ランタイム処理がホストシステムとターゲットシステムとの間のスプリットである場所において、利用され得る。ホストシステムにおいて、少なくともいくつかのクラスが、ロードされ、リンクされる。少なくとも１つのホストにリンクされるモジュールが、リンクされたクラスから生成される。ホストにリンクされたモジュールは、ターゲットシステムにおいて動作する１つ以上のアプリケーションにおいて利用するために利用可能になる。
【００３０】
本発明がより明確に理解され得るように、ここで本発明の実施形態が、添付の図を参照して例のみによってより詳細に説明される。
【００３１】
同一の参照記号は、同様の要素を参照するように異なる図において利用される。
【発明を実施するための最良の形態】
【００３２】
（詳細な説明）
図４は、モジュールベースのランタイムシステムの実施形態を示す。リンクされていないクラスファイルではなく、処理マシン４４０は、すでにロードされ、リンクされたクラスを含むモジュール４５０を実行する。より詳細には、モジュール４５０は、クラスファイルをロードし、リンクした閉じられたセットにおいて発見される情報を含むことにより、ターゲット処理マシン４４０に対するコマンド、記号情報ならびにコードサイズおよび速度を最適化する。モジュール４５０により、ランタイムは、全ての実行においてこの仕事を繰り返すのではなく、メインプログラムの複数の実行において、中間のローディングおよびリンキング仕事を再利用することができる。モジュール４５０は、ローディングよびリンキングのトリガーとなる実行の代替物を提供する。
【００３３】
コンパイラ（または他のメカニズム）４０５は、他のクラス４１１に対する記号参照４０９を含むクラスファイル４０７を受取る。コンパイラ４０５は、バイトコードの形式のクラスファイル４０７および４１１を処理することにより、記号参照４０９は分解される。処理されたクラスファイルは、モジュール４５０として処理マシン４４０に提供される。処理マシン４４０は、典型的には、モジュールサイズが従来のランタイムクラスファイルよりも実質的に小さい（例えば、Ｊａｖａ（Ｒ）クラスファイルサイズと比較して、約８倍の縮小があり得る）ため、より効果的に、ターゲットデバイス４３０において作動する。また、複数の実行の前に、健全さのチェックを利用して一度モジュールコードが検証され得、それにより、その後の実行速度が増加する。モジュールはコード通信を最小化するように構成され得、特に、通信帯域幅制限デバイスにおいて有用である。モジュール４５０は、コード設定および実行時間を最小化するように構成され得、特にランタイムリソースが制限デバイスにおいて有用である。モジュール４５０は、既存の処理マシンランタイムに適用され得る一方で、図５に示されるように、リファレンスＡＰＩとの互換性を維持する。
【００３４】
図５は、様々なメカニズム４０５Ａおよび４０５Ｂがソフトウェア４１０を提供する実施形態を示す。コンパイラ４０５Ａは、ソフトウェア４１０をコンパイルする。もしくは、他のメカニズム４０５Ｂが、ソフトウェア４１０をダウンロードするか、別の方法でソフトウェア４１０を取得するために利用され得る。ソフトウェア４１０のインスタンスによって再利用されるソフトウェアリソースをシェアするように、標準的なクラスパッケージ４２０が提供される。処理マシン４４０は、標準的なクラスパッケージ４２０を利用して、クラスを取得し、かつ、ソフトウェア４１０を実行する。
【００３５】
また、上部で処理マシン４４０が動作する、モバイルデバイス４３０Ａ，パーソナルデータアシスタント（ＰＤＡ）４３０Ｂ、電気器具４３０Ｃ、小型軽量クライアント４３０Ｄまたは他のデバイス４３０Ｅ等の様々なターゲットデバイス４３０が示される。
【００３６】
図５において、モジュール４５０は、ソフトウェア４１０を提供するメカニズムと機械コードを実行する処理マシン４４０との間に導入される。しかし、処理マシン４４０は、直接的にクラスファイルを利用するのではなく、ここでモジュール４５０の利用によって処理される以外は、提供されるソフトウェア４１０のクラスおよび標準的なクラスパッケージ４２０をさらに利用する。コンパイラが、入力においてクラスファイルおよびソースファイルの両方を取り、かつ、出力においてモジュールを生成し得るので、クラスファイルはさらに利用され得る。
【００３７】
モジュール４５０の存在のために、処理マシン４４０は、バーチャルマシンである必要もなければ、クラスファイル形式を知る必要さえなく、それにより、クラスファイルをロードし、リンクし、かつ分解する必要性を排除することによって、ターゲットシステムにおける性能を最適化する。図６を参照して説明されるように、提供されるランタイムが、ホストシステムとターゲットデバイス４３０との間のスプリットである場合は、さらなる最適化が可能である。
【００３８】
図６は、モジュールベースのランタイムシステムのスプリットの実施形態を示す。クラスランタイム処理は、ホストシステム５３０とターゲットシステム４３０との間のスプリットである。モジュールの利用により、ランタイムは、ホストシステムとターゲットデバイスとの間で効果的なスプリットであり得、ターゲットデバイスにおいて効果的にランタイムを最適化する。
【００３９】
ホストシステムスプリットランタイムにおいて、クラスファイル（４０７および４１１）は、５１０においてホストリンクされ、ホストリンクモジュール５２０になる。閉じられたクラスファイルセット分析の仕事は、ホストシステム５３０にオフロードされる。ターゲットシステムスプリットランタイムにおいて、ホストリンクされるモジュール５２０は、５４０において、ホストシステム５３０から通信され得、５５０において、ターゲットリンクされ、ターゲットリンクされたモジュール５６０となる。任意の追加のクラス分解が、ターゲットシステム４３０において必要とされる場合、さらに必要とされるターゲットモジュール識別子５６２が、５５０において、ホストリンクされたモジュール５２０とターゲットリンクされて、ターゲットリンクされたモジュール５６０を形成する。処理マシン４４０は、ターゲットリンクされたモジュール５６０を実行する。
【００４０】
図７は、別のスプリットランタイムシステムを示すブロック図である。ホストシステム５３０に対して、クラスファイル４１０は、ホストリンクされたモジュール５２０に５１０でホストリンクされている。このシステムに対して、ホストリンキングの詳細は、以下に図８、９および１０を参照してさらに記載される。ターゲットシステム４３０に対して、ホストリンクされたモジュール５２０は、５４０でホストシステム５３０と通信し、ターゲットリンクされたモジュール５６０にターゲットリンクされる（５５０）。ホストとターゲットの間の通信５４０は、任意の媒体を介して起こり得、これにより、モジュール（単数または複数）は、（例えば、ターゲットがモバイル通信デバイスである場合にはモバイル通信ネットワークを通して、キャリア信号で具体化されるデータ信号を通して）ターゲットに提供され得る。ターゲットリンキングの詳細は、以下で図８、９および１１を参照してさらに説明される。
【００４１】
図８を参照して、クラスファイルのローディング、モジュール内へのスプリットリンキング、および、図６および７のスプリットモジュールランタイムの実行を示すブロック図がここで説明される。閉じられたクラスファイルセットの解析動作がホストシステム４００Ａにオフロードされる。従って、クラスファイル６００は、６１０でロードされ、ホストリンクされたモジュール５２０Ａおよび５２０Ｆにホストリンクされる。Ｈｅｌｌｏ．ｃｌａｓｓファイル６１０ＡおよびＢｙｅ．ｃｌａｓｓファイル６１０Ｅ（ここで、ＨｅｌｌｏクラスファイルがＢｙｅクラスにプレリンクされる）に存在する最適化された情報を含む、例えば「Ｈｅｌｌｏ」モジュール５２０Ａ用のアプリケーションモジュールが示される。モジュール５２０Ａは、また、ライブラリモジュール５２０Ｆに対するシンボリック参照６１５を有する。ライブラリモジュール５２０Ｆは、ＨｅｌｌおよびＢｙｅクラスが用いる標準パッケージクラス（例えば、オブジェクトクラスファイル６１０Ｂ、ストリングクラスファイル６１０Ｃ、システムクラスファイル６１０Ｄおよび他のクラスファイル６１０）の全てを含む。ライブラリモジュール５２０Ｆは、全てのパブリックシンボルを出し得、これにより、ＨｅｌｌＯ等の多くの異なる「メイン」クラスが標準クラスパッケージファイルの全てを再使用し得る。あるいは、ライブラリモジュールは、ＨｅｌｌｏおよびＢｙｅクラスによって用いられるこれらのクラスファイルのみを含むか、全ての用いられたクラスさえもモジュール５２０Ａに直接に含まれ得る。後者の場合は、ターゲットシステムに対する任意のシンボル分析を必要とはしない。
【００４２】
少なくとも１つのホストリンクされたモジュール（５２０Ａおよび／または５２０Ｆ）が利用可能な場合、５４０で候補モジュール６２０Ａおよび６２０Ｆをターゲットシステム４００Ｂのランタイムと通信可能である。一度候補モジュール（６２０Ａおよび６０２Ｆ）がターゲットシステムで受信されると、候補モジュールは、ターゲットリンクされたモジュール５６０Ａおよび５６０Ｆにターゲットリンクされ、任意のモジュールシンボリック参照６１５は、６３０で示されるように分析される。メインモジュールクラス（例えば、Ｈｅｌｌｏクラス６４０）は、実行のために特定化され得る。しかし、有利には、各時間において、Ｈｅｌｌｏクラスのメインプログラムが実行し、ターゲットリンキング６３０が参照６５０を提供する際に、参照６５０を分析する必要性は無い。
【００４３】
図９によると、フローチャートは、図８のリンキング技術をさらに図示し、ホストリンキングステップおよびターゲットリンキングステップを図示していることが示される。ホストにおけるスプリットランタイムシステムにおいて、クラス６００は、ロードされ、８００でホストリンクされたモジュール５２０にホストリンクされる。従って、少なくとも１つのホストリンクされたモジュール５２０は、ターゲット上のスプリットランタイムシステムに送られる。
【００４４】
ターゲット上のスプリットランタイムシステムにおいて、少なくとも１つの候補ホストリンクされたモジュール６２０は、９００でターゲットリンクされたモジュール５６０にターゲットリンクされる。少なくとも１つのターゲットリンクされたモジュール５６０は、７３０で実行される。新規のモジュールが７４０で決定されると所望される場合、ホストリンキングプロセス８００、通信プロセス（７００および７２０）ならびにターゲットリンキングプロセス９００のサイクルが続き得る。しかし、新規のモジュールが所望されない場合、ローディングおよびリンキングのオーバーヘッド無く、ターゲットリンクされたモジュールの実行が７３０で繰り返されることが続く。
【００４５】
図１０によると、フローチャートは、図９のホストリンキングステップをさらに図示することが示される。ホストのスプリットランタイムシステムにおいて、ホストリンクされたモジュール５２０が出したシンボルは、８１０で外部のモジュール識別子８１５を提供する。また、クラス６００は、８２０で候補ホストクラス８２５を提供する。候補ホストクラス８２５のクラス参照は、外部モジュール識別子８１５を用いることによって、８３０でモジュール参照と置き換えられ、これにより、候補モジュールクラス８３５の閉じられたセットを提供する。従って、候補モジュールが出した識別子８４５は、８４０で提供される。候補モジュールクラス８３５および出された識別子８４５は、次いで、８５０で検証される。８６０で決定されるように検証される場合、ホストリンクされた候補モジュールは、ホストリンクされたモジュール５２０として８７０で提供される。８６０で決定されるように検証されない場合、エクセプション（ｅｘｃｅｐｔｉｏｎ）が投げられる。
【００４６】
図１１によると、フローチャートは、図９のターゲットリンキングステップをさらに図示することが示される。デバイスのスプリットランタイムシステムにおいて、受信された候補モジュール６２０は、９１０で候補モジュール参照９１５を提供する。また、ターゲットリンクされたモジュール５６０は、９２０でターゲットモジュール識別子９２５を提供する。次に、候補モジュールにおけるモジュール参照の分析は、９３０で分析されたモジュール９３５を提供する。分析されたモジュール９３５は、９４０で検証され、分析されたモジュール９３５が他のターゲットリンクされたモジュール５６０によって９６０で格納される。しかし、分析されたモジュール９３５が９５０で決定されたように首尾良く検証されない場合、エクセプションが投げられる。動作の好ましいモードを含んで、本発明の好ましい実施形態を詳細に説明してきたので、本発明およびその動作が異なる要素およびステップによって実行されることが理解される。本実施形態は、例示によってのみ提示され、本発明のシステムおよび方法の範囲することを意図しておらず、特許請求の範囲に規定される。
【００４７】
本システムおよび方法の広い範囲を示すために、以下のものが提供される。ビジュアルマシーンコードは、通常ソフトウェアによってインタプリタされる。しかし、ビジュアルマシーンコードプロセッサは、ハードウェアで実装され得る。本システムおよび方法をハードウェアプロセスマシーンランタイムに適応することは、本発明の範囲内である。本システムおよび方法の広い範囲のさらなる例として、本システムおよび方法は、コマンド、シンボリック情報、および、本システムおよび方法のモジュールを用いることによるコードを考慮してもよい。本システムおよび方法は、例えば、いくつかの場合において、機能を失うことなく、Ｊａｖａ（Ｒ）クラスファイルのサイズと比較して８倍のモジュールサイズだけ減らすことによって、従来のランタイムクラスファイルよりも実質的に小さいモジュールサイズを考慮してもよい。本システムおよび方法は、何回も実行する前に一度だけ健全性（ｓａｎｉｔｙ）チェックすることによってモジュールコードが検証され得ることを提供し得る。
【００４８】
本システムおよび方法は、また、モジュールが新規のクラスのみを結合して、モジュール格納装置のサイズを最小化して、通信帯域幅が制限されたデバイスへの効率良いモジュールの送達を考慮することを可能にし得る。本システムおよび方法の広い範囲の別の例として、本システムおよび方法は、全ての必要とされたクラスを結合し得、リソースが制限されたデバイスにおけるコードセットアップおよび実行時間を最小化し得る。本システムおよび方法は、存在する処理マシーンランタイムに適応され得、一方で、参照ＡＰＩとの互換性を維持する。本システムおよび方法は、モジュールが動的に共にリンクされ得、一方で、シンボリック参照の数を最小化し得ることを提供し得る。さらに、本システムおよび方法は、デバイスの格納装置からモジュールのコードが直接に実行され得ること（クラスファイルは、コードとは違い、実行前に格納装置からロードされる必要がある）を提供し得る。
【００４９】
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
【図面の簡単な説明】
【００５０】
【図１】図１は、従来のランタイム技術を示すブロック図である。
【図２】図２は、図１のランタイムのリンキング技術を示すブロック図である。
【図３Ａ】図３Ａは、特に選択的な遅発分解を示す、図２のランタイムリンキング技術をさらに示すフローチャートである。
【図３Ｂ】図３Ｂは、特に選択的な遅発分解を示す、図２のランタイムリンキング技術をさらに示すフローチャートである。
【図４】図４は、例示的なスプリットランタイムシステムを示すブロック図である。
【図５】図５は、例示的なスプリットランタイムシステムを示すブロック図である。
【図６】図６は、異なる例示的なスプリットランタイムシステムを示すブロック図である。
【図７】図７は、異なる例示的なスプリットランタイムシステムを示すブロック図である。
【図８】図８は、スプリットランタイムシステムのためのリンキング技術を示すブロック図である。
【図９】図９は、ホストリンキングステプおよびターゲットリンキングステップを導入して、図８にリンキング技術をさらに示すフローチャートである。
【図１０】図１０は、図９のホストリンキングステップをさらに示すフローチャートである。
【図１１】図１１は、図９のターゲットリンキングステップをさらに示すフローチャートである。
【図１】
2005515520.tif 000004
【図２】
2005515520.tif 000005
【図３Ａ】
2005515520.tif 000006
【図３Ｂ】
2005515520.tif 000007
【図４】
2005515520.tif 000008
【図５】
2005515520.tif 000009
【図６】
2005515520.tif 000010
【図７】
2005515520.tif 000011
【図８】
2005515520.tif 000012
【図９】
2005515520.tif 000013
【図１０】
2005515520.tif 000014
【図１１】
2005515520.tif 000015
【国際調査報告】
2005515520.tif 000016
2005515520.tif 000017