(57)【特許請求の範囲】
【請求項１】
アーキテクチャ・ニュートラル・コードのメソッドを有するプログラムが設けられているコンピュータ・ネットワークにおいて、メソッドがメソッドのアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードである場合に低減されたラン−タイム・メモリ空間要求を有する前記プログラムを実行するクライアント・コンピュータ・システムであって：
ラン−タイム・メモリ；
アーキテクチャ・ニュートラル・コードのメソッドを受け取るネットワーク通信インターフェイス；
受け取った場合に前記メソッドの前記アーキテクチャ・ニュートラル・コードを前記ラン−タイム・メモリの利用可能な空間に圧縮しないでロードするネットワーク通信マネージャ；
前記メソッドの前記ロードされたアーキテクチャ・ニュートラル・コードから前記メソッドの圧縮されていないアーキテクチャ特定コードを前記ラン−タイム・メモリに生成するコード・ジェネレータ；
前記プログラムの実行を制御し、それにより前記メソッドが呼び出され、かつ異なる時間に呼び出されないようにする、実行コントローラ；
（Ａ）呼び出されていない前記メソッドの圧縮可能なものの前記圧縮されていないアーキテクチャ特定コードを前記ラン−タイム・メモリに圧縮し、それにより前記ラン−タイム・メモリにおいて空間が利用可能になり、かつ（Ｂ）前記メソッドの圧縮解除可能なものが呼び出されうるように該メソッドの該圧縮解除可能なものの前記圧縮されたアーキテクチャ特定コードを前記ラン−タイム・メモリの利用可能な空間に圧縮解除するための、コード・コンプレッサを備えていることを特徴とするクライアント・コンピュータ・システム。
【請求項２】
前記コード・コンプレッサは、前記メソッドの前記圧縮解除可能なものが呼び出されるとすぐに該メソッドの該圧縮解除可能なものの前記圧縮されたアーキテクチャ特定コードを圧縮解除することを特徴とする請求項１に記載のクライアント・コンピュータ・システム。
【請求項３】
前記コード・コンプレッサは、所定の時間間隔後に前記メソッドの前記圧縮解除可能なものの前記圧縮されたアーキテクチャ特定コードを圧縮解除することを特徴とする請求項１に記載のクライアント・コンピュータ・システム。
【請求項４】
前記コード・コンプレッサは、前記メソッドの前記圧縮可能なものがもはや呼び出されないとすぐに該メソッドの該圧縮可能なものの前記圧縮されていないアーキテクチャ特定コードを圧縮することを特徴とする請求項１、２または３に記載のクライアント・コンピュータ・システム。
【請求項５】
前記コード・コンプレッサは、前記ラン−タイム・メソッドにおける空間が必要であるが利用可能でない場合に前記メソッドの前記圧縮可能なものの前記圧縮されていないアーキテクチャ特定コードを圧縮することを特徴とする請求項１、２または３に記載のクライアント・コンピュータ・システム。
【請求項６】
最も古く呼出されたメソッドから最も新しく呼出されたメソッドまでの順番に現在呼び出されていない前記メソッドのそれらをリストする最も古く呼び出されたリスト；を更に備え、
前記メソッドの前記圧縮可能なものは、前記ラン−タイム・メモリの空間が必要であるが利用可能でない場合に前記圧縮されていないアーキテクチャ特定コードを有する前記最も古く呼出されたリストにおける前記最も古く呼出されたメソッドであることを特徴とする請求項１から請求項５のいずれか一項に記載のクライアント・コンピュータ・システム。
【請求項７】
前記コード・コンプレッサは、前記ラン−タイム・メモリが必要であるが利用可能でない場合に前記メソッドのフラッシュ可能なものの前記圧縮されたアーキテクチャ特定コードを該ラン−タイム・メモリからフラッシュすることを特徴とする請求項１から請求項６のいずれか一項に記載のクライアント・コンピュータ・システム。
【請求項８】
二次メモリ；
（Ａ）前記ラン−タイム・メモリの空間が必要であるが利用可能でない場合に前記メソッドの記憶可能なものの前記圧縮されたアーキテクチャ特定コードを前記二次メモリに記憶し、かつ（Ｂ）前記メソッドの前記検索可能なものの前記圧縮されたアーキテクチャ特定コードを前記二次メモリから検索する、コード・コンプレッサ；を更に備えていることを特徴とする請求項１から請求項７のいずれか一項に記載のクライアント・コンピュータ・システム。
【請求項９】
アーキテクチャ・ニュートラル・コードのメソッドを有するプログラムが設けられているコンピュータ・ネットワークにおいて、メソッドがメソッドのアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードである場合に低減されたラン−タイム・メモリ空間要求を有する前記プログラムを実行する方法であって：
ラン−タイム・メモリを供給し；
アーキテクチャ・ニュートラル・コードの前記プログラムを受け取り；
前記プログラムが受け取られた場合に前記メソッドの前記アーキテクチャ・ニュートラル・コードを前記ラン−タイム・メモリの利用可能な空間に圧縮しないでロードし；
前記メソッドの前記ロードされたアーキテクチャ・ニュートラル・コードから前記メソッドの圧縮されていないアーキテクチャ特定コードを前記ラン−タイム・メモリに生成し；
前記プログラムを実行し、それにより前記メソッドが呼び出され、かつ異なる時間に呼び出されないようにし；
呼び出されていない前記メソッドの圧縮可能なものの前記圧縮されていないアーキテクチャ特定コードを前記ラン−タイム・メモリに圧縮し、それにより前記ラン−タイム・メモリにおいて空間が利用可能になり；かつ
前記メソッドの圧縮解除可能なものが呼び出されうるように該メソッドの該圧縮解除可能なものの前記圧縮されたアーキテクチャ特定コードを前記ラン−タイム・メモリの利用可能な空間に圧縮解除する段階を具備することを特徴とする方法。
【請求項１０】
前記圧縮解除段階は、前記メソッドの前記圧縮解除可能なものが呼び出されるとすぐに該メソッドの該圧縮解除可能なものの前記圧縮されたアーキテクチャ特定コードを圧縮解除することを含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記圧縮解除段階は、所定の時間間隔後に前記メソッドの前記圧縮解除可能なものの前記圧縮されたアーキテクチャ特定コードを圧縮解除することを含むことを特徴とする請求項９に記載の方法。
【請求項１２】
前記圧縮段階は、前記メソッドの前記圧縮可能なものがもはや呼び出されないとすぐに該メソッドの該圧縮可能なものの前記圧縮されていないアーキテクチャ特定コードを圧縮することを含むことを特徴とする請求項９、１０または１１に記載の方法。
【請求項１３】
前記圧縮段階は、前記ラン−タイム・メソッドにおける空間が必要であるが利用可能でない場合に前記メソッドの前記圧縮可能なものの前記圧縮されていないアーキテクチャ特定コードを圧縮することを特徴とする請求項９、１０または１１に記載のクライアント・コンピュータ・システム。
【請求項１４】
最も古く呼出されたメソッドから最も新しく呼出されたメソッドまでの順番に現在呼び出されていない前記メソッドのそれらをリストする最も古く呼び出されたリストを供給し、
前記メソッドの前記圧縮可能なものは、前記ラン−タイム・メモリの空間が必要であるが利用可能でない場合に前記圧縮されていないアーキテクチャ特定コードを有する前記最も古く呼出されたリストにおける前記最も古く呼出されたメソッドであることを特徴とする請求項９から請求項１３のいずれか一項に記載の方法。
【請求項１５】
前記コード・コンプレッサは、前記ラン−タイム・メモリが必要であるが利用可能でない場合に前記メソッドのフラッシュ可能なものの前記圧縮されたアーキテクチャ特定コードを該ラン−タイム・メモリからフラッシュする段階を更に具備することを特徴とする請求項９から請求項１４のいずれか一項に記載の方法。
【請求項１６】
二次メモリを供給し；
前記ラン−タイム・メモリの空間が必要であるが利用可能でない場合に前記メソッドの記憶可能なものの前記圧縮されたアーキテクチャ特定コードを前記二次メモリに記憶し；かつ
前記メソッドの前記検索可能なものの前記圧縮されたアーキテクチャ特定コードを前記二次メモリから検索する、段階を更に具備することを特徴とする請求項９から請求項１５のいずれか一項に記載の方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、低減されたラン−タイム・メモリ空間要求を有するプログラムを実行する方法及びコンピュータ・システムに関する。特に、本発明は、アーキテクチャ特定コードのラン−タイム・メモリ空間要求が低減されるようにネットワークにわたり伝送されたアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードを実行するネットワークにおける方法及びコンピュータ・システムに関する。
【０００２】
【従来の技術】
コンピュータ・システムは、いま、以後ＡＮコードを称する、そのコードがアーキテクチャ・ニュートラル（ＡＮ）２進フォーマットであるプログラムの特性を利用すべく構築または構成されている。それゆえに、これらのプログラムのＡＮコードは、コンピュータ・システムの特定アーキテクチャまたはプラットフォームから独立である。
用語アーキテクチャは、一系列のコンピュータ・モデルのオペレーティング特性を意味すべくこの文書の目的に対して定義される。特定のアーキテクチャの例は、マッキントッシュ・コンピュータ、ＤＯＳまたはＷｉｎｄｏｗｓオペレーティング・システムを用いているＩＢＭ  ＰＣコンパチブル・コンピュータ、Ｓｏｌａｒｉｓオペレーティング・システムを走らせているサン・マイクロシステムズ・コンピュータ、及びＵｎｉｘオペレーティング・システムを用いているコンピュータ・システムを含む。
【０００３】
用語アーキテクチャ特定（ＡＳ）は、特定のコンピュータ・アーキテクチャを有するコンピュータ・システムでだけの実行のために、以後ＡＳコードと称する、ある一定のプログラムのコードが２進フォーマットにあるという要求を参照すべくこの文書の目的に対して定義される。それゆえに、通常のプログラミング言語（例えば、Ｃ言語）で書かれかつ特定のアーキテクチャ（例えば、ＩＢＭコンパチブルＰＣ）に対してコンパイルされたコードを有するプログラムは、そのアーキテクチャまたはそのアーキテクチャのエミュレータでだけ走ることができる。
用語アーキテクチャ・ニュートラル（ＡＮ）は、そのコンパイルされたコードを異なるアーキテクチャを有する種々のコンピュータ・システムで実行することができるプログラムを参照すべくこの文書の目的に対して定義される。例えば、特定のアーキテクチャを有するコンピュータ・システムは、Ｊａｖａ（サン・マイクロシステムズの登録商標）バーチャル・マシン・モジュールで構成することができる。Ｊａｖａバーチャル・マシン・モジュールは、Ｊａｖａバーチャル・マシンの命令セットに対して、以後、Ｊａｖａバイトコードと称する、Ｊａｖａプログラミング言語で書かれかつバイトコードにコンパイルされたコードを有するプログラムの実行を可能にする。Ｊａｖａバイトコードは、コンピュータ・システムの特定のアーキテクチャから独立である。
【０００４】
ＡＮコードを有するプログラムの重要な特徴は、それらの移植性（ポータビリティ）を含む。例えば、ＡＮコードのプログラムは、コンピュータ・システムの特定アーキテクチャに係わりなくＡＮコードを実行すべく構成されたあらゆるコンピュータ・システムで実行することができるので、これらのプログラムは、一つのコンピュータ・システムから別のコンピュータ・システムにネットワークにわたり容易に移送することができる。例えば、Ｊａｖａバイトコードにコンパイルされたプログラムは、Ｊａｖａバーチャル・マシン・モジュールを有するあらゆるコンピュータ・システムで実行することができかつＨｏｔＪａｖａ（サン・マイクロシステムズの登録商標）ネットワーク通信マネージャを用いて一つのコンピュータ・システムから別のコンピュータ・システムにネットワークにわたり容易に移送することができる。
【０００５】
更に、Ｊａｖａバイトコードにコンパイルされたプログラムの移植性に関する別の重要な特徴は、そのようなプログラムの検証可能性である。特に、Ｊａｖａバーチャル・マシン・モジュールは、これらのプログラムが所定の完全性基準を満足するということを容易に検証することができる。そのような完全性基準は、ＪａｖａバイトコードがＪａｖａバーチャル・マシン・モジュールのスタックをオーバフローまたはアンダフローすることができないということ及びＪａｖａバイトコードの全ての命令は、そのデータ型がそれらの命令に対するデータ型制限とマッチするデータだけを利用するということを保証するスタック及びデータ型使用制限を含む。結果として、Ｊａｖａバイトコードのプログラムは、オブジェクト・ポインタをフォージ(forge) することができずかつ一般にユーザが使用することの許可を明示的に認可したもの以外のシステム資源をアクセスすることができない。
【０００６】
これらの理由に対して、コンピュータ・システムは、ネットワークにわたり受け取られるＡＮコードのプログラムの実行のために構成されている。事実、ある場合には、プログラムがコンピュータ・システムのラン−タイム（即ち、実行−時間）メモリ（例えば、ランダム・アクセス・メモリ（ＲＡＭ））に直接ロードされるので、そのようなコンピュータ・システムは、二次メモリ（例えば、ハード・ディスク）さえも要求しないであろう。結果として、そのようなコンピュータ・システムのユーザは、現在ソフトウェア・プロダクトの典型であるソフトウェア購入、設置、構成及びアップグレードのサイクルから自由にされる。
ＡＮコードのちょうど説明した特徴は、ネットワークされかつ要求によりＡＮコードでロードされる小さいまたは安いコンピュータ・システムでの使用を特に魅力的にする。例えば、これらの種類のコンピュータ・システムは、ビデオ・ゲーム、パーソナル・ディジタル・アシスタンス（ＰＤＡｓ）、セルラ・フォン、または、他の同様なコンピュータ・システムまたはコンピュータ・オペレーティッド・デバイスでありうる。
【０００７】
不運にも、しかしながら、ＡＮコードのプログラムは、ＡＳコードの同じプログラムよりもゆっくり実行される。例えば、Ｊａｖａ（登録商標）バーチャル・マシン・モジュールによって実行されるＪａｖａ（登録商標）コードのプログラムは、一般的にＡＳコードの同等プログラムの２．５から２０倍ゆっくり実行される。それゆえに、コンピュータ・システムのユーザは、コンピュータ・システムでの実行のためにＡＳコードにネットワークにわたり受け取ったプログラムのＡＮコードを生成する（即ち、変換する）のが望ましいことを見出しうる。この場合には、コンピュータ・システムは、また、プログラムのＡＮコードの受け取りにより、コンピュータ・システムの特定のアーキテクチャでの実行のために対応ＡＳコードにそれを生成する、コード・ジェネレータを含みうる。
【０００８】
ちょうど記述したコンピュータ・システムでは、価格は、非常に重要である。実際には、そのようなコンピュータ・システムを構築することにおける最も重要なコストの一つは、ロードされたプログラムの実行に対して必要なラン−タイム・メモリの量である。従って、そのような低減が強力な競合し得る利点
（効果）を生成するので、これらのコンピュータ・システムによって要求されるラン−タイム・メモリの量を低減することは、非常に重要である。
【０００９】
【発明が解決しようとする課題】
残念ながら、ＡＮから生成されたＡＳコードは、オリジナルＡＮコードよりもかなり大きい。例えば、Ｊａｖａバイトコードから生成されたＡＳコードは、一般的に、Ｊａｖａバイトコードの大きさの２から５倍である。それゆえに、固定された量のラン−タイム・メモリは、ＡＮコードよりも実質的に少ないコンパイルされたＡＳコードを保持することができる。しかしながら、先に示したように、ＡＳコードは、それがそれから生成されるＡＮコードよりも速くかつ十分な性能を達成するための唯一の方法でありうる。
更に、上記した型のコンピュータ・システムでは、二次メモリにページすることが可能でないかもしれない。この場合には生成されたＡＳコードは、ラン−タイム・メモリキャッシュされかつラン−タイム・メモリにおけるその空間が要求される場合にフラッシュされうる。しかしながら、フラッシュされたプログラムの実行が継続されるべき場合、オリジナルＡＮコードは、ネットワークにわたり再びダウンロードされかつＡＳコードに生成されなければならない。これは、プログラムの実行スピードにかなり影響を及ぼす。更に、二次メモリにページすることが可能なコンピュータ・システムにおいてさえも、二次メモリからＡＳコードを検索するために必要な時間は、あまりにも費用が掛かるであろう。
【００１０】
本発明では、ＡＳコードの圧縮そして圧縮解除は、ラン−タイム・メモリにおけるＡＳコードの記憶費用を低減するために用いられる。これは、ＡＳコードをフラッシュしかつそれを再生成することよりも速いので、ＡＳコードの実行スピードは、圧縮及び圧縮解除によってあまり影響を及ぼされない。
本発明の目的は、上記従来の技術における問題点に鑑み、メソッドがメソッドのアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードにある場合に低減されたラン−タイム・メモリ空間要求でプログラムを実行することができるクライアント・コンピュータ・システム及び方法を提供することである。
【００１１】
【課題を解決するための手段】
本発明の上記目的は、アーキテクチャ・ニュートラル・コードのメソッドを有するプログラムが設けられているコンピュータ・ネットワークにおいて、メソッドがメソッドのアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードである場合に低減されたラン−タイム・メモリ空間要求を有するプログラムを実行するクライアント・コンピュータ・システムであって：ラン−タイム・メモリ；アーキテクチャ・ニュートラル・コードのメソッドを受け取るネットワーク通信インターフェイス；受け取った場合にメソッドのアーキテクチャ・ニュートラル・コードをラン−タイム・メモリの利用可能な空間に圧縮しないでロードするネットワーク通信マネージャ；メソッドのロードされたアーキテクチャ・ニュートラル・コードからメソッドの圧縮されていないアーキテクチャ特定コードをラン−タイム・メモリに生成するコード・ジェネレータ；プログラムの実行を制御し、それによりメソッドが呼び出され、かつ異なる時間に呼び出されないようにする、実行コントローラ；（Ａ）呼び出されていないメソッドの圧縮可能なものの圧縮されていないアーキテクチャ特定コードをラン−タイム・メモリに圧縮し、それによりラン−タイム・メモリにおいて空間が利用可能になり、かつ（Ｂ）メソッドの圧縮解除可能なものが呼び出されうるように該メソッドの該圧縮解除可能なものの圧縮されたアーキテクチャ特定コードをラン−タイム・メモリの利用可能な空間に圧縮解除するための、コード・コンプレッサを備えているクライアント・コンピュータ・システムによって達成される。
【００１２】
本発明のクライアント・コンピュータ・システムでは、コード・コンプレッサは、メソッドの圧縮解除可能なものが呼び出されるとすぐに該メソッドの該圧縮解除可能なものの圧縮されたアーキテクチャ特定コードを圧縮解除するように構成してもよい。
本発明のクライアント・コンピュータ・システムでは、コード・コンプレッサは、所定の時間間隔後にメソッドの圧縮解除可能なものの圧縮されたアーキテクチャ特定コードを圧縮解除するように構成してもよい。
本発明のクライアント・コンピュータ・システムでは、コード・コンプレッサは、メソッドの圧縮可能なものがもはや呼び出されないとすぐに該メソッドの該圧縮可能なものの圧縮されていないアーキテクチャ特定コードを圧縮するように構成してもよい。
【００１３】
本発明のクライアント・コンピュータ・システムでは、コード・コンプレッサは、ラン−タイム・メソッドにおける空間が必要であるが利用可能でない場合にメソッドの圧縮可能なものの圧縮されていないアーキテクチャ特定コードを圧縮するように構成してもよい。
本発明のクライアント・コンピュータ・システムでは、最も古く呼出されたメソッドから最も新しく呼出されたメソッドまでの順番に現在呼び出されていないメソッドのそれらをリストする最も古く呼び出されたリスト；を更に備え、メソッドの圧縮可能なものは、ラン−タイム・メモリの空間が必要であるが利用可能でない場合に圧縮されていないアーキテクチャ特定コードを有する最も古く呼出されたリストにおける最も古く呼出されたメソッドであるように構成してもよい。
【００１４】
本発明のクライアント・コンピュータ・システムでは、コード・コンプレッサは、ラン−タイム・メモリが必要であるが利用可能でない場合にメソッドのフラッシュ可能なものの圧縮されたアーキテクチャ特定コードを該ラン−タイム・メモリからフラッシュするように構成してもよい。
本発明のクライアント・コンピュータ・システムでは、二次メモリ；（Ａ）ラン−タイム・メモリの空間が必要であるが利用可能でない場合にメソッドの記憶可能なものの圧縮されたアーキテクチャ特定コードを二次メモリに記憶し、かつ（Ｂ）メソッドの検索可能なものの圧縮されたアーキテクチャ特定コードを二次メモリから検索する、コード・コンプレッサ；を更に備えていてもよい。
また、本発明の上記目的は、アーキテクチャ・ニュートラル・コードのメソッドを有するプログラムが設けられているコンピュータ・ネットワークにおいて、メソッドがメソッドのアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードである場合に低減されたラン−タイム・メモリ空間要求を有するプログラムを実行する方法であって：ラン−タイム・メモリを供給し；アーキテクチャ・ニュートラル・コードのプログラムを受け取り；プログラムが受け取られた場合にメソッドのアーキテクチャ・ニュートラル・コードをラン−タイム・メモリの利用可能な空間に圧縮しないでロードし；メソッドのロードされたアーキテクチャ・ニュートラル・コードからメソッドの圧縮されていないアーキテクチャ特定コードをラン−タイム・メモリに生成し；プログラムを実行し、それによりメソッドが呼び出され、かつ異なる時間に呼び出されないようにし；呼び出されていないメソッドの圧縮可能なものの圧縮されていないアーキテクチャ特定コードをラン−タイム・メモリに圧縮し、それによりラン−タイム・メモリにおいて空間が利用可能になり；かつメソッドの圧縮解除可能なものが呼び出されうるように該メソッドの該圧縮解除可能なものの圧縮されたアーキテクチャ特定コードをラン−タイム・メモリの利用可能な空間に圧縮解除する段階を具備する方法によって達成される。
【００１５】
本発明の方法では、圧縮解除段階は、メソッドの圧縮解除可能なものが呼び出されるとすぐに該メソッドの該圧縮解除可能なものの圧縮されたアーキテクチャ特定コードを圧縮解除するように構成してもよい。
本発明の方法では、圧縮解除段階は、所定の時間間隔後にメソッドの圧縮解除可能なものの圧縮されたアーキテクチャ特定コードを圧縮解除するように構成してもよい。
本発明の方法では、圧縮段階は、メソッドの圧縮可能なものがもはや呼び出されないとすぐに該メソッドの該圧縮可能なものの圧縮されていないアーキテクチャ特定コードを圧縮することを含むように構成してもよい。
本発明の方法では、圧縮段階は、ラン−タイム・メソッドにおける空間が必要であるが利用可能でない場合にメソッドの圧縮可能なものの圧縮されていないアーキテクチャ特定コードを圧縮するように構成してもよい。
【００１６】
本発明の方法では、最も古く呼出されたメソッドから最も新しく呼出されたメソッドまでの順番に現在呼び出されていないメソッドのそれらをリストする最も古く呼び出されたリストを供給し、メソッドの圧縮可能なものは、ラン−タイム・メモリの空間が必要であるが利用可能でない場合に圧縮されていないアーキテクチャ特定コードを有する最も古く呼出されたリストにおける最も古く呼出されたメソッドであるように構成してもよい。
本発明の方法では、コード・コンプレッサは、ラン−タイム・メモリが必要であるが利用可能でない場合にメソッドのフラッシュ可能なものの圧縮されたアーキテクチャ特定コードを該ラン−タイム・メモリからフラッシュする段階を更に具備するように構成してもよい。
【００１７】
本発明の方法では、二次メモリを供給し；ラン−タイム・メモリの空間が必要であるが利用可能でない場合にメソッドの記憶可能なものの圧縮されたアーキテクチャ特定コードを二次メモリに記憶し；かつメソッドの検索可能なものの圧縮されたアーキテクチャ特定コードを二次メモリから検索する、段階を更に具備するように構成してもよい。
【００１８】
【作用】
纏めると、本発明は、アーキテクチャ・ニュートラル・コードにおけるメソッドをプログラムに供給するクライアント・コンピュータ・システム及びコンピュータ・ネットワークにおける関連メソッドである。クライアント・コンピュータは、メソッドがメソッドのアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードにある場合に低減されたラン−タイム・メモリ空間要求でプログラムを実行することができる。クライアント・コンピュータ・システムは、ラン−タイム・メモリ、通信インターフェイス、ネットワーク通信マネージャ、実行コントローラ、コード・ジェネレータ、及びコード・コンプレッサを備えている。
【００１９】
ネットワーク通信インターフェイスは、アーキテクチャ・ニュートラル・コードのメソッドを受け取る。ネットワーク通信マネージャは、受け取った場合にメソッドの圧縮されていないアーキテクチャ・ニュートラル・コードをラン−タイム・メモリの利用可能な空間にロードする。
コード・ジェネレータは、次いでラン−タイム・メモリでメソッドのロードされたアーキテクチャ・ニュートラル・コードからメソッドの圧縮されたいないアーキテクチャ特定コードを生成する。実行コントローラは、メソッドが呼び出されかつ異なるときに呼び出されないようにプログラムの実行を制御する。
コード・コンプレッサは、呼び出されないメソッドの圧縮可能なもののアーキテクチャ特定コードをメモリにおいて圧縮する。その結果、空間がラン−タイム・メモリにおいて利用可能にされる。コード・コンプレッサは、また、メソッドの圧縮解除可能なものが呼び出されうるようにメソッドの圧縮解除可能なもののアーキテクチャ特定コードをラン−タイム・メモリの利用可能な空間に圧縮解除する。
【００２０】
一実施例では、コード・コンプレッサは、メソッドの圧縮解除可能なものが呼び出されるとすぐにメソッドの圧縮解除可能なものの圧縮されたアーキテクチャ特定コードを圧縮解除する。
別の実施例では、コード・コンプレッサは、所定の時間間隔の後でメソッドの圧縮解除可能なものの圧縮されたアーキテクチャ特定コードを圧縮解除する。
さらに別の実施例では、コード・コンプレッサは、メソッドの圧縮可能なものがもはや呼び出されないとすぐにメソッドの圧縮可能なものの圧縮されていないアーキテクチャ特定コードを圧縮する。
別の実施例では、コード・コンプレッサは、ラン−タイム・メモリにおける空間が必要であるが利用可能でない場合にメソッドの圧縮可能なものの圧縮されていないアーキテクチャ特定コードを圧縮する。更に、この実施例では、クライアント・コンピュータ・システムは、最も古く呼出されたメソッドから最も新しく呼出されたメソッドの順番に現在呼び出されていないメソッドのそれらをリストする最も古く呼出されたリストを更に備えうる。結果として、メソッドの圧縮可能なものは、ラン−タイム・メモリにおける空間が必要であるが利用可能でない場合に圧縮されていないアーキテクチャ特定コードを有する最も古く呼出されたリストにおける最も古く呼出されたメソッドである。
【００２１】
更に別の実施例では、コード・コンプレッサは、ラン−タイム・メモリにおける空間が必要であるが利用可能でない場合にメソッドのフラッシュ可能なものの圧縮されたアーキテクチャ特定コードをラン−タイム・メモリからフラッシュする。
先の実施例に対する代替として、クライアント・コンピュータ・システムは、二次メモリを更に備えうる。この場合には、コード・コンプレッサは、ラン−タイム・メモリにおける空間が必要であるが利用可能でない場合にメソッドの記憶可能なものの圧縮されたアーキテクチャ特定コードを二次メモリに記憶する。コード・コンプレッサは、その圧縮されたアーキテクチャ特定コードが圧縮解除されるべきであるメソッドの検索可能なものの圧縮されたアーキテクチャ特定コードを二次メモリから検索する。
【００２２】
本発明の更なる目的及び特徴は、図面を参照することにより以下の詳細の説明及び特許請求の範囲からさらに容易に明らかであろう。
【００２３】
【実施例】
図１を参照すると、本発明によるコンピュータ・ネットワーク１００が示されている。それは、一つ以上のクライアント・コンピュータ・システム１０２、一つ以上のサーバ・コンピュータ・システム１０４、及びネットワーク通信接続１０６を含む。
クライアント・コンピュータ・システム１０２は、ネットワーク通信接続１０６を介してサーバ・コンピュータ・システム１０４に接続される。ネットワーク通信接続１０６は、ローカルまたはワイド・エリア・ネットワーク、インターネット、またはネットワーク通信接続の他の型でありうる。
各サーバ・コンピュータ・システム１０４は、中央処理装置（ＣＰＵ）１１０、ユーザ・インターフェイス１１２、ネットワーク通信インターフェイス１１６、及びメモリ１１８を含む。ネットワーク通信インターフェイスは、各サーバ・コンピュータ・システムがネットワーク通信接続１０６を介してクライアント・コンピュータ・システム１０２に通信できるようにする。
【００２４】
各サーバ・コンピュータ・システム１０４のメモリ１１８は、オペレーティング・システム１２０、ネットワーク通信マネージャ１２２、及びプログラム１４５を記憶する。オペレーティング・システム及び通信マネージャは、全てＣＰＵ１２０で走る。オペレーティング・システムは、ユーザ・インターフェイス１１２でユーザによって発行されかまたはクライアント・コンピュータ・システム１０２のユーザからネットワーク通信接続１０６を介してネットワーク通信インターフェイス１１６によって受け取られたコマンドに応じてネットワーク通信マネージャの走行を制御しかつ統合する。
プログラム１４５は、メソッド１４７を備えている。この文書の目的に対して、プログラムの実行の間に種々の時間で呼び出されるかまたは呼び出されないプログラムの離散的フラグメントまたは部分は、メソッドと考えられる。
【００２５】
各サーバ・コンピュータ・システム１０４のメソッド１４７は、クライアント・コンピュータ・システム１０２の特定のアーキテクチャ（即ち、プラットフォーム）から独立したアーキテクチャ・ニュートラル（ＡＮ）言語のＡＮコードを含む。これらのプラットフォームは、特定のプログラミング言語からＡＮコードにコンパイルされる。好ましい実施例では、これらのプログラムは、Ｊａｖａプログラミング言語で書かれかつＪａｖａバイトコードにコンパイルされる。更に、これらのプログラムは、オブジェクト指向型メソッドでプログラムされるソフトウェア・プログラムを形成するメソッドを有するオブジェクト・クラスに含まれる。
後で詳述するように、メソッド１４７は、ネットワーク通信マネージャ１２２を用いてクライアント・コンピュータ・システム１０２にユーザ要求により伝送される。それゆえに、これらのメソッドのＡＮコードは、ネットワーク移動コードと考えられる。
【００２６】
各クライアント・コンピュータ・システム１０２は、ビデオ・ゲーム、パーソナル・ディジタル・アシスタント（ＰＤＡ）、セルラ・フォーン、デスクトップ・コンピュータ、または他のコンピュータ・システムまたは、少量のラン−タイム・メモリを必要とするコンピュータ動作型デバイスでありうる。更に、各クライアント・コンピュータ・システムは、中央処理装置（ＣＰＵ）１２６、ユーザ・インターフェイス１２８、ネットワーク通信インターフェイス１３２、リード・オンリー・メモリ（ＲＯＭ）１３４、及びラン−タイム（即ち、ｒｕｎ−ｔｉｍｅ）ランダム・アクセス・メモリ（ＲＡＭ）１３６を含む。ネットワーク通信インターフェイスは、クライアント・コンピュータ・システムがネットワーク通信接続１０６を介してサーバ・コンピュータ・システム１０４と通信できるようにする。
【００２７】
各クライアント・コンピュータ・システム１０２のＲＡＭ１３６は、オペレーティング・システム１３８、ネットワーク通信マネージャ１４０、バーチャル・マシン・モジュール１４２、コード・ジェネレータ１４４、及びＲＯＭ１３６から全てロードされたコード・コンプレッサ１４６を記憶する。ＲＡＭは、また、ダウンロードされたＡＮコードから生成されたアーキテクチャ特定（ＡＳ）コードを含んでいるダウンロードされたＡＮコード及び／又はメソッド１４８を含んでいるメソッド１４７を有するプログラム１４５を記憶する。オペレーティング・システム、ネットワーク通信マネージャ、バーチャル・マシン・モジュール、コード・コンパイラ、コード・コンプレッサ、及びプログラムは、全てＣＰＵ１２６で実行される。オペレーティング・システムは、ユーザ・インターフェイス１２８でユーザによって発行されたコマンドに応じてネットワーク通信マネージャ、バーチャル・マシン・モジュール、コード・コンパイラ、コード・コンプレッサ、及びプログラムの実行を制御及び統合する。
【００２８】
前にほのめかしたように、ＡＮコードを含んでいるメソッド１４７は、ユーザ要求によりサーバ・コンピュータ・システム１０４から受け取られる。これらのメソッドは、好ましい実施例では、ＨｏｔＪａｖａネットワーク通信マネージャである、ネットワーク通信マネージャ１４０を用いて得られる。ネットワーク通信マネージャは、次いでこれらのメソッドをＲＡＭ１３６にロードする。
バーチャル・マシン・モジュール１４２のコード・ベリファイヤ１５１は、ロードされたメソッド１４７のＡＮコードが所定の完全性基準に一致することを検証する。先に示したように、これは、ロードされたメソッドがバーチャル・マシン・モジュールのスタックをオーバフローまたはアンダーフローすることができないということ及び全ての命令は、そのデータ型がそれらの命令に対するデータ型制限に一致するデータだけを利用するということを保証すべくスタック及びデータ型使用制限を含みうる。好ましい実施例では、バーチャル・マシン・モジュールは、Ｊａｖａバーチャル・マシン・モジュールである。
【００２９】
ＡＳコードを含んでいるメソッド１４８は、サーバ・コンピュータ・システム１０４から得られかつネットワーク通信マネージャ１４０を用いてＲＡＭ１３６にロードされたＡＮコードを初めに含んでいた。しかし、これらのプログラムのオリジナルＡＮコードは、コード・ジェネレータ１４４によってＡＳコードに生成された。ＡＳコードは、クライアント・コンピュータの特定アーキテクチャで実行可能である。先に示したように、ユーザは、生成されたＡＳコードが対応しているＡＮコードよりも速く実行されうるので、ＡＳコードに生成されたＡＮコードのプログラムを有することを望むであろう。
更に、ＲＡＭ１３６に記憶された所定のＡＳコード生成基準１５０が満足される場合に、ＡＳコードを含んでいるメソッド１４８は、生成されたそれらのＡＮコードを有する。ＡＳコード生成基準は、ユーザ・インターフェイス１２８でユーザによって入力され、かつ後でより完全に説明される。
【００３０】
バーチャル・マシン・モジュール１４２の実行コントローラ１５３は、メソッド１４７及び／又は１４８の実行を制御する。特に、エクセキュータは、クライアント・コンピュータ・システム１０２の特定アーキテクチャでの実行のためにメソッド１４７のＡＮコードを解釈しかつこれらのメソッドが、特定アーキテクチャでの実行のためにＡＳコードを含んでいるメソッド１４８を呼出すことができるようにする。メソッドの実行の間に生成された実行１４９データは、ＲＡＭ１３６に記憶される。更に、ネットワーク通信マネージャ１４０、コード・ジェネレータ１４４、及び／又はコード・コンプレッサ１４６がＡＮコードであるならば、実行コントローラは、同様にそれらの実行も制御する。
更に、クライアント・コンピュータ・システム１０２のＲＡＭ空間要求を低く保つために、コード・コンプレッサ１４６は、種々の時間でメソッド１４７及び／又は１４８のコードをＲＡＭ１３６で圧縮及び圧縮解除する。それらがＲＡＭ１３６に記憶されかつユーザ・インターフェイス１２８でユーザによって入力される所定の圧縮及び圧縮解除基準１５２及び１５４をそれぞれ満足するので、これは、圧縮可能及び圧縮解除可能であるメソッドに対して行われる。圧縮及び圧縮解除基準は、後でより完全に説明される。
【００３１】
メソッド１４７及び／又は１４８の記憶及び呼出し状態は、メソッド（メソッド）状態データ構造１５５で保守される。メソッド状態データ構造は、ネットワーク通信マネージャ１４０、実行コントローラ１５３、コード・ジェネレータ１４４、及びコード・コンプレッサ１４６によって更新される。
図２は、メソッド１４７及び／又は１４８をＲＡＭ１３６で圧縮及び圧縮解除することにおけるクライアント・コンピュータ・システム１０２のそれぞれのオペレーションの機能ブロック図を示す。更に、図３及び４は、それぞれ好ましい圧縮及び圧縮解除メソッド３００及び４００を示す。
図１〜図３を参照すると、ユーザが、クライアント・コンピュータ・システム１４の一つのプログラム１４５の実行を要求する場合、ユーザのクライアント・コンピュータ・システム１０２は、サーバ・コンピュータ・システムから要求したプログラムの各メソッド１４７を得る（図３のステップ３０２）。これは、ユーザが、サーバ・コンピュータ・システムからのプログラムをダウンロードしかつ実行すべくユーザ・インターフェイス１２８でコマンドを発行する場合に行われる。応答として、オペレーティング・システム１２０は、そのような要求が行われたということを示しているメッセージを生成するネットワーク通信マネージャ１４０を呼出す。ネットワーク通信インターフェイス１３２は、次いで、サーバ・コンピュータ・システムにメッセージを伝送する。
【００３２】
サーバ・コンピュータ・システム１０４のネットワーク通信インターフェイス１１６は、伝送されたメッセージを受け取る。それに応じて、サーバ・コンピュータ・システムのネットワーク通信マネージャ１２２は、ユーザのクライアント・オペレーション・システム１０２にメソッドを次いで伝送するネットワーク通信インターフェイスに要求されたプログラム１４５のメソッド１４７を供給する。伝送されたメソッド１４７は、ユーザのクライアント・コンピュータ・システム１０２のネットワーク通信インターフェイス１３２によって受け取られる。それに応じて、ネットワーク通信マネージャ１４０は、次いで、ＲＡＭ１３６において十分な空間が受け取ったメソッドをロードするために利用可能であるかどうかを決定する（図３の意思決定ステップ３０４）。利用可能であれば、次いでネットワーク通信マネージャは、圧縮されていないこれらのメソッドのＡＮコードをＲＡＭの利用可能な空間）にロードする（図３のステップ３０６）。結果として、これらのメソッドは、他のプログラム４５の先にロードされたメソッド１４７と一緒にＲＡＭにロードされる。これらのメソッドをロードすることにおいて、ネットワーク通信マネージャは、メソッド及これらのメソッドによって占有されたＲＡＭ１３６におけるメモリ空間に対する対応ポインタを識別すベくメソッド状態データ構造１５５のメソッド（メソッド）記憶状態表２００を更新する。更に、ネットワーク通信マネージャは、メソッドのＡＮコードが圧縮されえいない（Ｕ）ことを示すべくメソッド状態表を更新する。
【００３３】
ネットワーク通信マネージャ１４０は、バーチャル・マシン・モジュール１４２のコード・ベリファイヤ１５１を次いで呼出す。応答として、コード・ベリファイヤは、ちょうどロードされたメソッド１４７のＡＮコードが、先に説明した所定の完全性基準と一致することを検証する（図３のステップ３０７）。
ネットワーク通信マネージャ１４０は、ちょうどロードされたメソッド１４７のいずれかのＡＮコードがＡＳコードにコンパイルされるかどうかを次いで決定する（図３の意思決定段階３０８）。これは、ＡＳコード生成基準に基づいて行われる。当業者が認識するように、ユーザは、広範囲のオプションからかつユーザのクライアント・コンピュータ・システムに特有な多数の条件に基づきＡＳコード生成基準を選択及び／又は同調させうる。例えば、ＡＳコード生成基準は、これらのメソッドがロードされる場合に全てのダウンロードされたメソッドのＡＮコードがＡＳコードに生成されるべきであるということ、またはそれらがロードされる場合にＡＮコードを有するダウンロードされたメソッドの全てがＡＳコードに生成されたそれらのＡＮコードを有さないということ、またはそれらがロードされる場合に特定の大きさまたは型のＡＮコードを有するそれらのダウンロードされたメソッドだけがＡＳコードに生成されたそれらのＡＮコードを有するということを特定しうる。
【００３４】
ちょうどロードされたメソッド１４７のあるものがＡＳコードに生成されたそれらのＡＮコードを有するならば、ネットワーク通信マネージャは、コード・ジェネレータ１４４を呼出す。コード・ジェネレータは、これらのメソッドのＡＮコードをＡＳコードに生成するためにＲＡＭ１３６に十分な空間があるかどうかを決定する（図３の意思決定ステップ３１０）。あるならば、コード・ジェネレータは、利用可能な空間にこれらのメソッドのＡＳコードを生成し（図３のステップ３１２）かつ生成されたＡＳコードによって占有された空間をポイントすべくメソッド記憶状態表２００のポインタを更新する。結果として、これらのメソッドは、そのＡＮコードがＡＳコードに生成された他の先にダウンロードされたメソッドと共に、ＡＳコードを含むメソッド１４８としてＲＡＭに記憶される。
【００３５】
ちょうどロードされたＡＮコードを含んでいるメソッド１４７及び／又はちょうどロードされかつＡＳコードに生成されたＡＳコードを含んでいるメソッド１４８を有するプログラム１４５は、次いで、先にロードされたプログラム１４５と共にエクスキュータの制御下で実行される（図３のステップ３１４）。先に示したように、実行コントローラは、ユーザのクライアント・コンピュータ・システム１０２の特定アーキテクチャでの実行のためにメソッド１４７のＡＮコードを解釈しかつこれらのプログラムが特定アーキテクチャでの実行のためにＡＳコードを含んでいるメソッド１４８を呼出すことができるようにする。
それがスリープさせられる、等なので、ロードされたメソッド１４７及び／又は１４８のそれぞれは、種々の時間で呼び出されないであろう。プログラム実行コントローラがこれが発生したということを決定する場合、それは、現在呼び出されていないということを示すためにメソッド状態データ構造１５５の最も古く呼出された（ＬＲＩ）リスト２０２にメソッドを加える。ＬＲＩリストのメソッドは、最も新たらしく呼出されたものから最も古く呼出されたものまでリストされる。
【００３６】
先に示したように、ＲＡＭ１３６の空間要求を低減するために、所定の圧縮基準１５２が満足される各ロードされたメソッド１４７及び／又は１４８のコードは、コード・コンプレッサ１４６によって圧縮される。好ましい実施例では、圧縮基準は、圧縮可能メソッド１４７または１４８のコードが（１）ＲＡＭ１３６の空間が必要であるが利用可能でなく、かつ（２）メソッドが、そのコードがまだ圧縮されていないＬＲＩリスト２０２のメソッドの最も古く呼び出された、ときに圧縮されるということを特定する。
ネットワーク通信マネージャ１４０がＲＡＭ１３６の空間がサーバ・コンピュータ・システム１０４によって受け取られた一つ以上のメソッド１４７をロードするために利用可能ではないということを決定する場合（図３の意思決定ステップ３０４）、それは、コード・コンプレッサ１４６を呼出す。それに応じて、コード・コンプレッサは、十分な空間が利用可能になるまでＬＲＩリスト２０２の最も古く呼出されたメソッドのコードを圧縮する（図３のステップ３１６）。コード・コンプレッサは、また、メソッドの圧縮されたコードのメモリ空間への対応ポインタを識別しかつメソッドのコードが圧縮されたということを示すためにメソッド記憶状態表２００も更新する（Ｃ）。次いでネットワーク通信マネージャは、先に説明したように、利用可能な空間に空間が利用可能にされたメソッドをロードする（図３のステップ３０６）。
【００３７】
コード・コンプレッサ１４６は、当業者によく知られたあらゆる高速データ圧縮技術を使用しうる。更に、コード・コンプレッサは、メソッド１４７のＡＮコード及びメソッド１４８のＡＳコードの最適圧縮に対して個別の圧縮技術を使用しうる。
更に、ＲＡＭの空間がちょうどロードされた一つ以上のメソッド１４７をコンパイルするためにコード・ジェネレータによって要求される場合（図３の意思決定ステップ３１０）、コード・ジェネレータ１４４は、コード・コンプレッサ１４６を呼出す。ちょうどロードされたメソッドの場合におけるように、コード・コンプレッサは、十分な空間が利用可能になるまでＬＲＩリスト２０２の最も古く実行されたメソッドのコードを圧縮し（図３のステップ３１８）、かつそのようにすることにより、メソッドの圧縮されたコードのメモリ空間への対応ポインタを識別しかつメソッドのコードが圧縮されたということを示すためにメソッド記憶状態表２００を更新する（Ｃ）。コード・ジェネレータは、次いで、先に説明したように、空間が利用可能になったメソッドのＡＳコードを利用可能空間に生成する（図３のステップ３１２）。
【００３８】
更に、ロードされたメソッド１４７及び／又は１４８が呼び出されると同時に、それらは、実行データを生成する。実行コントローラ１５３が決定するこれらのメソッドのいずれかが呼び出されることに対し（図３の意思決定ステップ３２０）かつＲＡＭ１３６の空間が実行データを記憶するために利用可能であることに対して（ステップ３２２）、実行コントローラは、ＲＡＭに実行データを記憶する（図３のステップ３２４）。
しかしながら、エクセキュータ１５３が決定するロードされたメソッド１４７及び／又は１４８のそれぞれが実行可能であることに対し（図３の意思決定ステップ３２０）かつＲＡＭ１３６の空間が利用可能ではないが実行データを記憶することが必要であることに対して（意思決定ステップ３２２）、エクセキュータは、コード・コンプレッサ１４６を呼出す。ＲＡＭにおける空間が必要であるような先の情況におけるように、コード・コンプレッサは、十分な空間が利用可能になるまでＬＲＩリスト２０２における最も古く実行されたメソッドのコードを圧縮する（図３のステップ３２６）。そして、先に説明したように、コード・コンプレッサは、メソッドの圧縮されたコードのメモリ空間への対応ポインタを識別しかつメソッドのコードが圧縮されたということを示すためにメソッド記憶状態表２００を更新する（Ｃ）。次いで、実行コントローラは、先に記述したように、ＲＡＭにおいて利用可能になった空間に実行データを記憶し、かつその実行データが記憶されたメソッドを有するプログラムの実行が継続される（図３のステップ３１４）。
【００３９】
更に、図１、２、及び４を参照すると、ＲＡＭ１３６の空間が利用可能である場合、圧縮されかつ所定の圧縮解除基準１５４が満足される各ロードされたメソッド１４７及び／又は１４８は、コード・コンプレッサ１４６によって圧縮解除される。好ましい実施例では、圧縮解除可能なメソッドのコードを圧縮解除するための所定の圧縮解除基準は、メソッドのコードが圧縮されかつメソッドが再び呼び出されるときに圧縮解除されるということを単に特定する。
それゆえに、実行コントローラ１５３がロードされたメソッド１４７及び／又は１４８の一つが呼び出されるということを決定するときにはいつでも（図４の意思決定ステップ４０２）、それは、このメソッドのコードが圧縮されるかどうかを決定する（図４の意思決定ステップ４０４）。これは、メソッド記憶状態表２００から決定される。メソッドのコードが圧縮されないならば、メソッドは、実行コントローラによって呼び出される（図４のステップ４０６）。それがもはや呼び出されない場合には、そのコードは、先に説明したメソッドでコード・コンプレッサ１４６によった圧縮されうる。
【００４０】
しかしながら、呼び出されるメソッド１４７または１４８のコードが圧縮されるならば、実行コントローラは、メソッドのコードを圧縮解除するためにコード・コンプレッサ１４６を呼出す。コード・コンプレッサは、メソッドのコードを圧縮解除するためにＲＡＭ１３６において十分な空間が利用可能であるかどうかを決定する（図４の意思決定ステップ４０８）。十分な空間が利用可能ならば、コード・コンプレッサは、利用可能な空間でメソッドのコードを圧縮解除する（図４のステップ４１０）。そのようにすることで、それは、圧縮されていないコードのメモリ空間への対応ポインタを識別しかつメソッドのコードがいま圧縮されていないということを示すためにメソッド記憶状態表２００を更新する（Ｕ）。
【００４１】
しかしながら、十分な空間が利用可能でないならば、コード・コンプレッサ１４６は、空間が利用可能になるまでそのコードがまだ圧縮されていないＬＲＩリスト２０２の最も古く実行されたメソッドのコードを圧縮する（図４のステップ４１２）。これは、先に示したメソッドで行われる。空間が利用可能になった後、圧縮解除されるべきメソッド１４７または１４８のコードは、利用可能な空間でコード・コンプレッサによって圧縮解除され、そして説明したメソッドで実行コントローラ１５３によって呼び出される（図４のステップ４１０及び４０６）。
前記の観点において、本発明は、実行スピードをセーブすると同時にラン−タイム・メモリ空間における低減を提供するということが明らかである。これは、ロードされたメソッド１４７及び／又は１４８を圧縮することによって、それらは、ＲＡＭにおける空間が必要な場合にＲＡＭ１３６からフラッシュされかつサーバ・コンピュータ・システム１０４から再ダウンロードされる必要がなくはないという事実による。更に、ＡＳコードを含んでいるメソッドの場合には、これらのメソッドが再ダウンロード及び再生成される必要がないので、実行スピードは、さらにセーブされる。しかしながら、当業者が認識するように、他の代替実施例は、同様な利益を供給すべくインプリメントすることができる。
【００４２】
特に、先に説明した圧縮基準１５２は、ＲＡＭ１３６の空間が必要であったが利用可能でない場合に圧縮されていないコードを有する最も古く呼出されたメソッド１４７及び／又は１４８のコードが圧縮されるであろうということを特定した。しかしながら、圧縮基準は、広範囲のオプションからかつユーザのクライアント・コンピュータ・システム１０２に特有な多数の条件に基づきユーザによって選択されうる。例えば、圧縮基準は、各メソッドのコードがプログラムもはや呼び出されなくなったならば圧縮されるということを単に特定しうる。または、それは、ある一定のメソッドのコードが圧縮するための時間が利用可能なときは遅延させて圧縮されるということを特定しうる。先のいずれかのものの更なる変形として、圧縮基準は、特定の大きさまたは型のメソッドのコードだけが圧縮されるということを特定しうる。
【００４３】
更に、先に示したように、圧縮解除基準１５４は、そのコードが圧縮されたコードであるメソッド１４７または１４８が、メソッドが呼び出されるとすぐにそのコードを圧縮解除させるということを特定した。しかしながら、圧縮解除基準は、所定の時間間隔が期限切れ（満了）になった後に圧縮されたコードが圧縮解除されるということを特定できる。この場合には、データ・コンプレッサは、時間間隔を計時するためのタイマを含むことができる。一例では、この技術は、メソッドがこの時間間隔に対して圧縮されそしてそれが目覚めさせられるときのほんの少し前に圧縮解除されるように既知の時間間隔に対してスリープさせられているメソッドに用いることができる。または、別の例では、技術は、それにわたりメソッドが圧縮される時間間隔が  データがメソッドに対して利用可能になる場合を予測するように選択されるようなデータを待っているメソッドに用いることができる。
【００４４】
別の実施例では、圧縮基準１５２は、また、ロードされたメソッド１４７及び／又は１４８がＲＡＭ１３６からフラシュされる場合を特定しているフラッシング基準も含みうる。例えば、フラッシング基準は、呼び出されないＲＡＭにおいてロードされたメソッドが存在しないならば、圧縮されたコードを有するＬＲＩリスト２０２の最も古く呼出されたメソッドは、フラッシュ可能でありかつ十分な空間が利用可能になるまでＲＡＭ１３６からフラッシュされるということを示しうる。その結果、メソッドがＲＡＭからフラッシュされそして再び呼び出される場合、ネットワーク通信マネージャは、先に説明したメソッドでメソッドを供給するサーバ・コンピュータ・システム１０４からメソッドを再ダウンロードしなければならない。実行コントローラ１５３は、フラシュされたメソッドへの参照を除去することによってメソッド記憶状態表２００を更新する。
【００４５】
更に、ちょうど説明した実施例に対する変形として、ＡＳコード生成基準１５０は、それらのＡＮコードがＡＳコードに生成されたメソッド１４８のＡＮコードが生成されたＡＳコードと共にＲＡＭ１３６に維持されるべきであるということを特定しうる。これは、メソッドのＡＳコードがＲＡＭからフラッシュされなければならない場合にメソッドのＡＮコードがメソッドのＡＳコードに再生成することができるように行われる。これは、サーバ・コンピュータ・システムからメソッドのＡＮコードを再ダウンロードするために必要な時間をセーブする。更に、ＡＮコードは、それがＡＳコードへの再生成に対して必要になるまでＲＡＭに圧縮することができる。
ちょうど説明した実施例の別の変形では、メソッド１４８のダウンロードされたＡＮコードは、実行コントローラ１５３の制御下で初めに実行されるであろう。次いで、実行コントローラは、ＡＮコードのラン−タイム挙動に基づき統計を纏めかつ纏められた統計がＡＳコード生成基準１５０のある一定のしきい値基準を満足するならばＡＮコードをＡＳコードに生成するであろう。例えば、実行コントローラは、ＡＮコードがランする回数の計数を保守しうる。一度この計数がしきい数を通過したならば、実行コントローラは、ＡＮコードをＡＳコードに生成するためにコード・ジェネレータ１４４を呼出すであろう。
【００４６】
ＲＡＭ１３６からロードされたメソッド１４７及び／又は１４８をフラッシュすることは実行スピードの点で費用が掛かるので、図５及び図６に示すように、二次メモリ５００は、さもなければフラッシュされるメソッドを記憶するために用いることができる。この場合には、先に説明した圧縮基準１５２は、ちょうど説明したフラッシング基準に類似しかつそれらが二次記憶基準を満足するので記憶可能であるメソッドを記憶するために用いられる二次記憶基準１５６を含む。しかしながら、この場合には、コード・コンプレッサ１４６は、二次メモリにおけるこれらのメソッドをポイントするためにメソッド記憶状態表２００のポインタを更新する。更に、それらのコードが圧縮され、二次メモリに記憶され、かつ圧縮解除されるべきであるように検索可能であるメソッドに対して、メソッドのコードは、二次メモリから検索されそして先に説明したメソッドでＲＡＭ１３６において圧縮解除される。
【００４７】
また、クライアント・コンピュータ・システム１０２が二次メモリ５００を含むような実施例（例えば、ネットワーク型デスクトップ・コンピュータ）では、メソッド１４７は、サーバ・コンピュータ・システム１０４から二次メモリにダウンロードすることができる。次いで、これらのメソッドは、サーバ・コンピュータ・システム１０４からではなく二次メモリからＲＡＭ１３６に直接ロードすることができる。更に、そのような実施例では、オペレーティング・システム１３８、ネットワーク通信マネージャ１４０、バーチャル・マシン・モジュール１４２、及びコード・コンプレッサ１４６は、二次メモリに記憶しかつそこからＲＡＭにロードすることができる。
別の実施例では、オペレーティング・システム１３８、ネットワーク通信マネージャ１４０、バーチャル・マシン・モジュール１４２、コード・ジェネレータ１４４、及びコード・コンプレッサ１４６は、サーバ・コンピュータ・システム１０４の一つからクライアント・コンピュータ・システム１０２のＲＡＭ１３６にダウンロードすることができる。
【００４８】
これは、サーバ・コンピュータ・システムのメソッド１４７に対して先に説明したものと同様なメソッドで行われる。
そして、本発明は、２〜３の実施例を参照して記述されたが、記述は、本発明の説明のためであり本発明を限定することを企図していない。特許請求の範囲によって定義されたような本発明の真の精神及び範疇から逸脱することなく種々の変更が当業者において生起されうる。
【００４９】
【発明の効果】
本発明のクライアント・コンピュータ・システムは、アーキテクチャ・ニュートラル・コードのメソッドを有するプログラムが設けられているコンピュータ・ネットワークにおいて、メソッドがメソッドのアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードである場合に低減されたラン−タイム・メモリ空間要求を有するプログラムを実行するクライアント・コンピュータ・システムであって：ラン−タイム・メモリ；アーキテクチャ・ニュートラル・コードのメソッドを受け取るネットワーク通信インターフェイス；受け取った場合にメソッドのアーキテクチャ・ニュートラル・コードをラン−タイム・メモリの利用可能な空間に圧縮しないでロードするネットワーク通信マネージャ；メソッドのロードされたアーキテクチャ・ニュートラル・コードからメソッドの圧縮されていないアーキテクチャ特定コードをラン−タイム・メモリに生成するコード・ジェネレータ；プログラムの実行を制御し、それによりメソッドが呼び出され、かつ異なる時間に呼び出されないようにする、実行コントローラ；（Ａ）呼び出されていないメソッドの圧縮可能なものの圧縮されていないアーキテクチャ特定コードをラン−タイム・メモリに圧縮し、それによりラン−タイム・メモリにおいて空間が利用可能になり、かつ（Ｂ）メソッドの圧縮解除可能なものが呼び出されうるように該メソッドの該圧縮解除可能なものの圧縮されたアーキテクチャ特定コードをラン−タイム・メモリの利用可能な空間に圧縮解除するための、コード・コンプレッサを備えているので、メソッドがメソッドのアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードにある場合に低減されたラン−タイム・メモリ空間要求でプログラムを実行することができる。
【００５０】
本発明の方法は、アーキテクチャ・ニュートラル・コードのメソッドを有するプログラムが設けられているコンピュータ・ネットワークにおいて、メソッドがメソッドのアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードである場合に低減されたラン−タイム・メモリ空間要求を有するプログラムを実行する方法であって：ラン−タイム・メモリを供給し；アーキテクチャ・ニュートラル・コードのプログラムを受け取り；プログラムが受け取られた場合にメソッドのアーキテクチャ・ニュートラル・コードをラン−タイム・メモリの利用可能な空間に圧縮しないでロードし；メソッドのロードされたアーキテクチャ・ニュートラル・コードからメソッドの圧縮されていないアーキテクチャ特定コードをラン−タイム・メモリに生成し；プログラムを実行し、それによりメソッドが呼び出され、かつ異なる時間に呼び出されないようにし；呼び出されていないメソッドの圧縮可能なものの圧縮されていないアーキテクチャ特定コードをラン−タイム・メモリに圧縮し、それによりラン−タイム・メモリにおいて空間が利用可能になり；かつメソッドの圧縮解除可能なものが呼び出されうるように該メソッドの該圧縮解除可能なものの圧縮されたアーキテクチャ特定コードをラン−タイム・メモリの利用可能な空間に圧縮解除する段階を具備するので、メソッドがメソッドのアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードにある場合に低減されたラン−タイム・メモリ空間要求でプログラムを実行することができる。
【図面の簡単な説明】
【図１】本発明を組み込んだクライアント・コンピュータ・システムのブロック図である。
【図２】クライアント・コンピュータ・システムのオペレーションの機能ブロック図である。
【図３】クライアント・コンピュータ・システムの圧縮メソッドのフローチャートである。
【図４】クライアント・コンピュータ・システムの圧縮解除メソッドのフローチャートである。
【図５】クライアント・コンピュータ・システムの代替実施例を示す。
【図６】クライアント・コンピュータ・システムの代替実施例のオペレーションの機能ブロック図を示す。
【符号の説明】
１００  コンピュータ・ネットワーク
１０２  クライアント・コンピュータ・システム
１０４  サーバ・コンピュータ・システム
１０６  ネットワーク通信接続
１１０、１２６  ＣＰＵ
１１２、１２８  ユーザ・インターフェイス
１１６  通信インターフェイス
１１８
１２０、１３８  オペレーティング・システム
１２２、１４０  ネットワーク通信マネージャ
１３２  ネットワーク通信インターフェイス
１３４  ＲＯＭ
１３６  ＲＡＭ
１４２  バーチャル・マシン・モジュール
１４５  プログラム
１４６  コード・コンプレッサ
１４７  メソッド：ＡＮコード
１４８  メソッド：ＡＳコード
１４９  実行データ
１５０、１５２、１５４  基準
１５１  コード・ベリファイヤ
１５３  実行コントローラ
１５５  メソッド状態データ構造
【図１】
0003955358.tif 000002
【図２】
0003955358.tif 000003
【図３】
0003955358.tif 000004
【図４】
0003955358.tif 000005
【図５】
0003955358.tif 000006
【図６】
0003955358.tif 000007