JP4021520B2 - 読み出し専用メモリにクラスをロードする方法及びシステム - Google Patents
読み出し専用メモリにクラスをロードする方法及びシステム Download PDFInfo
- Publication number
- JP4021520B2 JP4021520B2 JP14079397A JP14079397A JP4021520B2 JP 4021520 B2 JP4021520 B2 JP 4021520B2 JP 14079397 A JP14079397 A JP 14079397A JP 14079397 A JP14079397 A JP 14079397A JP 4021520 B2 JP4021520 B2 JP 4021520B2
- Authority
- JP
- Japan
- Prior art keywords
- class
- data
- memory
- stored
- methods
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44557—Code layout in executable memory
- G06F9/44563—Sharing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
- G06F9/44573—Execute-in-place [XIP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Description
【産業上の利用分野】
本発明は、一般に、ランタイムに動的にロードされるクラスを有しているオブジェクト指向型コンピュータ・システムに関し、特に、読み出し専用メモリにクラスのサブセットをプリロードするシステム及び方法に関する。
【0002】
【従来の技術】
オブジェクト指向型プログラミング言語における現在の傾向は、分散型コンピューティング環境にダイナミック・コンテント(動的内容)の分散を収容すべく言語の機能性を拡張することである。一つのそのような言語では、これは、ランタイムでクラスを動的にロードすることによって達成される。クラスは、オブジェクトの挙動をモデル化する変数及びメソッドの収集である。ランタイムでクラスを動的にロードすることによって、既存のアプリケーションは、分散型コンピューティング環境内のコンピュータ・システムに存在する新しいクラスにおいて結合することによって機能性を追加することができる。
【0003】
【発明が解決しようとする課題】
そのような言語では、記号参照は、クラス・メンバー(即ち、クラスのメソッド及び変数)を参照するために用いられる。クラスが呼び出されるとき、動的ローダーは、クラスに対する記憶スキーマを決定しかつ記号参照を解く。そのようなローディング・スキームは、しばしば更新されるクラスをアクセスするときに利益がある。しかしながら、そのようなローディング・スキームの限界は、ランダム・アクセス・メモリ(RAM)のような読み取り/書き込みメモリ・デバイスへのその依存(従属)である。二次記憶装置(例えば、不揮発性磁気ディスク記憶装置)がほとんどまたは全くないコンピューティング環境では、この方法におけるクラスの動的ローディグは、RAMの記憶容量を素早く使い果たすことができる。RAMの容量が限られていると、アプリケーションによって用いられるRAMの量を最小化することが望ましい。従って、動的ロード可能クラスを有するオブジェクト指向型プログラム・コードを実行するために利用されるRAMの量を制限する必要性が存在する。
【0004】
従来技術の欠陥を克服する方法及びシステムを供給することは利益がある。
本発明の目的は、上記従来技術における問題点に鑑み、動的ロード可能クラスを有するオブジェクト指向型プログラム・コードを実行するために利用されるRAMの量を制限する方法及びシステムを提供することである。
【0005】
【課題を解決するための手段】
本発明の上記目的は、分散型コンピュータ・システムのコンピュータを動作する方法であって、複数のクラスをメモリに記憶し、各クラスは、データ及び少なくとも一つのメソッドを含み、各メソッドは、複数のバイトコードを含み、バイトコードのサブセットは、コンピュータによってアクセス可能なメソッドへの記号参照を含み;各クラスに対して、クラスのデータがクラスのメソッドの一つによって変更可能であるときにクラスのデータにフラグを立て;メモリに記憶された特定のメソッドへの各記号参照に対して、特定のメソッドのメモリ位置を置換し;各クラスの各メソッドに対して、メソッドのバイトコードの一つがメモリに記憶されていないメソッドへの記号参照を含むときにメソッドにフラグを立て;かつ各クラスを含んでいる実行可能モジュールを供給する段階を具備し、各フラグが立っていないメソッド及び各フラグが立っていないデータは、実行可能モジュールを実行するときに読み出し専用記憶媒体に記憶され、かつ各フラグが立てられたメソッド及び各フラグが立てられたデータは、実行可能モジュールを実行するときに読み取り及び書き込み許可型記憶媒体に記憶される方法によって達成される。
【0006】
また、本発明の上記目的は、コンピュータ・システムを動作する方法であって、第1のサブモジュール及び第2のサブモジュールに分割されたブラウザ・モジュールを読み出し専用メモリ・デバイスに記憶し、各サブモジュールは、複数の命令及びデータを含み、第2のサブモジュールは、命令のサブセット及びデータのサブセットを有し、命令のサブセット及びデータのサブセットは、複数の命令の実行中に変更可能である命令及びデータを含み;コンピュータ・システムの起動により、ランダム・アクセス・メモリ・デバイスに第2のサブモジュールを記憶し;かつ情報−内容データ及びコンピュータ−実行可能モジュールをインポートすべくブラウザ・モジュールを実行し、インポートされたデータ及びコンピュータ−実行可能モジュールは、ランダム・アクセス・メモリ・デバイスに記憶される段階を具備する方法によって達成される。
【0007】
更に、本発明の上記目的は、通信リンクによって接続された複数のコンピュータを有する分散型データ処理システムにおける、一つのコンピュータであって、複数のクラスを記憶するメモリ、各クラスは、複数のデータ及び少なくとも一つのメソッドを含み、各メソッドは、複数のバイトコードを含み、バイトコードの第1のセットは、メモリに記憶されたメソッドを参照し、バイトコードの第2のセットは、通信リンクによってアクセス可能なメソッドを参照し;各クラスに対して、クラスのデータがクラスのメソッドの一つによって変更可能であるときにクラスのデータにフラグを立て、かつ各クラスの各メソッドに対して、メソッドのバイトコードの一つがメモリに記憶されていないメソッドへの記号参照を含むときにメソッドにフラグを立てるオフライン・クラス・ローダー;及び第1の部分及び第2の部分を有する実行可能モジュールを生成するリンカ、第1の部分は、オフライン・ローダーによってフラグが立てられたデータ及びクラスのメソッドのそれぞれを含み、かつ第2の部分は、第1の部分にないデータ及びクラスのメソッドのぞれぞれを含む、を備えているコンピュータによって達成される。
【0008】
本発明のコンピュータでは、実行可能モジュールの第1の部分は、実行可能モジュールが実行されるときに読み取り及び書き込み許可媒体に記憶されるべく構成され、かつ第2の部分は、実行可能モジュールが実行されるときに読み取り専用記憶媒体に記憶されるべく構成されるようにしてもよい。
【0009】
【作用】
纏めると、この開示は、ランタイム・ダイナミック・ローディングを必要とせずにメモリにそのクラスがプリロードされる実行可能モジュールを生成するために用いられるオフライン・クラス・ローダーに関する。実行可能モジュールは、しかしながら、ランタイム・ダイナミック・ローディングに合わせられるクラス構造を含む。それゆえに、オフライン・クラス・ローダーは、静的ローディングを収容すべく既存のクラス構造を変更する。しかしながら、クラス構造は、未解決参照を含むメソッド及びデータを変えることを許容する。オフライン・クラス・ローダーは、それらがランダム・アクセス・メモリに記憶されるべきであることを特定するこれらのメソッド及びデータにタグを付ける。全ての他のデータは、読み取り専用メモリに記憶される。静的ローディング処理の終了で、二つのアドレス空間を含む、プリロード可能な実行可能モジュールが生成される。モジュールの実行中に変化するデータ及び未解決参照を有するメソッドを含む第1のアドレス空間は、ランダム・アクセス・メモリにロードされる。第2のアドレス空間は、読み取り専用メモリにロードされる定数データ及び静的ロードされたクラスを有するメソッドを含む。
【0010】
このファッションのプリロード可能な実行可能モジュールは、二次記憶装置がほとんどないかまたは全くないクライアント・コンピュータを有する分散型コンピュータ・システムにおいて有利である。そのようなクライアント・コンピュータは、限定的資源に素早く変わるランダム・アクセス・メモリで全面的に走るべくアプリケーションに要求する。アプリケーションを二つのアドレス空間に分割するためにオフライン・クラス・ローダーを用いることにより、プリロード可能モジュールによって用いられるRAMの量は、最小化される。実施例では、最小二次記憶装置を有しているクライアント・コンピュータは、クライアントの読み取り専用メモリにブラウザをプリロードするためにオフライン・クラス・ローダーを用いる。ブラウザは、上記二つのアドレス空間に分割される。システム初期化またはパワーアップで、ブラウザのランダム・アクセス・メモリ部分は、読み取り専用メモリからランダム・アクセス・メモリにロードされる。読み取り専用メモリからのブラウザの大きな部分を実行することによって、ブラウザは、クライアントが連通する他のサーバ・コンピュータから(それが)取得することができる情報−内容及び実行可能モジュールを記憶すべくさらなるRAM記憶装置を有する。
【0011】
本発明のさらなる目的及び特徴は、図面と共に以下の詳細な説明及び特許請求の範囲からより容易に明らかであろう。
【0012】
【実施例】
ここに記載された方法及びシステムは、少なくとも一つのサーバ・コンピュータ及び多数のクライアント・コンピュータを接続する通信リンクを有する分散型コンピューティング環境を用いる。クライアント・コンピュータのあるものは、二次記憶装置(例えば、不揮発性磁気ディスク記憶装置)をほとんどまたは全く有さずそれによりランダム・アクセス・メモリから全面的に走ることをアプリケーションに要求する。Java(ジャワ)プログラミング言語で開発されたアプリケーションは、そのようなクライアント・コンピュータで実行される。アプリケーションは、一つ以上のサーバ・コンピュータから、Javaアプレットのような、Javaコンテントをインポートするために用いられるブラウザであるのが好ましい。一般的に、ブラウザは、Webサイトとして作用(作動)するサーバからハイパー・テキスト・マークアップ言語(HTML)文書としてフォーマットされた一つ以上のWebページをアクセスすべくハイパー・テキスト・トランスファー・プロトコル(HTTP)を用いてWeb文書(ドキュメント)を検索する翻訳(変換)されたプログラム・モジュールである。HTML文書は、翻訳(変換)されかつクライアント・コンピュータに関連付けられたユーザへ与えられる。しばしば、HTML文書は、アプレットを組み込む。アプレットは、Javaクラスとして表される実行可能モジュールである。ブラウザは、アプレットを実行するためにアプレット及びその関連クラスにロードする。
【0013】
ブラウザ、HMTL文書、及びアプレットは、全てコンピュータのRAMにある。時として、RAMにロードされるデータの量は、その容量を超えうる。クライアント・コンピュータが二次記憶装置を有さないときに、読み取り専用メモリにブラウザ及び他の基本支援クラス(basic support classes) を設置することは、有利である。この方法で、RAM記憶装置は、インポートされたアプレットに対して特に保存される。ブラウザ及び他の基本支援クラス(例えば、I/O及びユーティリティ・クラス)は、読み取り専用メモリにプリロードされるのが好ましい。
【0014】
オフライン・クラス・ローダーは、ブラウザ及び基本支援クラスのような、Javaアプリケーションを、少なくとも二つの個別アドレス空間に分割する。第1のアドレス空間は、読み取り専用メモリ・デバイスにありかつダイナミック(動的)ローディングを必要としないメソッド及び定数のままであるデータを含む。第2のアドレス空間は、ランダム・アクセス・メモリのような、読み取り/書き込みメモリ・デバイスにあり、かつダイナミック(動的)ローディングを必要とするメソッド及び実行中に変更されるデータを含む。
この方法で分割されたブラウザは、クライアント・コンピュータの読み取り専用メモリに最初に記憶することができる。システムがパワー・オンしたとき、第2のアドレス空間は、RAMにプリロードされる。これは、HTML文書、アプレット、他の情報−コンテキスト、及び通信リンクを通してアクセス可能である実行可能モジュールをインポートすべくブラウザによる使用に対して大量のRAM記憶装置を残す。
【0015】
この開示は、Javaプログラミング言語に関して説明されるということに注目すべきである。この理由で、この説明は、Javaの名称集(nomenclature)を用いる。次のJava名称集は、説明全体を通してよく用いられかつここで簡単に説明される。クラスは、オブジェクトの挙動(behavior)を説明するために用いられるインスタンス変数及びメソッドのグループ化である。オブジェクトは、クラスのインスタンスである。インスタンス変数は、クラスからインスタンス生成されるオブジェクトのデータである。静的インスタンス変数は、クラスの全インスタンスに対して同じであるというものである。非静的インスタンス変数は、クラスの各インスタンスに対して変化する。定数データは、プログラム実行中に変更されないデータである。
メソッドは、明確に規定された一連の動作を実行するプログラム・セグメントである。Javaでは、メソッドは、バイトコードのストリームとして表される命令によって実行される。バイトコードは、8ビット・オペランドまたはオプコードのような命令の一部でありうる8ビット・コードである。インターフェイスは、方法を実行するバイトコードがランタイムで画定されるアブストラクト・クラスである。Javaアプリケーションは、JavaインタープリタまたはJavaジャスト−イン−タイム・コンパイラを用いて実行することができるバイトコードからなる実行可能モジュールである。Javaプログラミング言語の特徴のより詳細な説明は、Tim Ritchey, Programming with Java Beta 2.0, New Riders Publishing (1995) に記載されている。
【0016】
図1を参照すると、複数のクライアント・コンピュータ102及び複数のサーバ・コンピュータ104を有する分散型コンピュータ・システム100が示されている。実施例では、各クライアント・コンピュータ102は、他の型の通信接続を用いることができるけれども、インターネット106を介してサーバ104に接続される。サーバ及びクライアント・コンピュータは、サン(Sun)ワークステーション、IBMコンパチブル・コンピュータ及びマッキントッシュ(Macintosh)コンピュータのような、デスクトップ・コンピュータでありうるのが好ましいが、実際にはあらゆる型のコンピュータがサーバまたはクライアント・コンピュータでありうる。更に、システムは、分散型コンピュータ・システムに限定されない。特定の詳細なしで実用化されうるしかつ種々のコンピュータ・システム及び種々の構成、或いはしっかり結合された(tightly-coupled) プロセッサのメークまたはモデル、または弛く結合された(loosely-coupled) マイクロプロセッサ・システムの種々の構成で実施されうる。
【0017】
実施例では、一つ以上のサーバ・コンピュータが、Javaコンテントまたはアプレットを含むHTML文書のリポジトリを含むWebサイトとして作動する。クライアント・コンピュータは、クライアント・コンピュータに関連付けられたユーザに、サーバ・コンピュータから利用可能であるHTML文書へのアクセスを供給するブラウザを実行する。図1を参照すると、サーバ・コンピュータは、一つ以上のプロセッサ112、通信インターフェイス116、ユーザ・インターフェイス114、及びメモリ110を一般的に含む。メモリ110は、次のものを記憶する:
・ オペレーティング・システム118;
・ インターネット通信マネージャ・プログラムまたは他の型のネットワーク・アクセス手順120;
・ Javaプログラミング言語で書かれたソース・コードをバイトコードのストリームに翻訳(変換)するためのコンパイラ122;
・ Javaソース・コードを含む一つ以上のソース・コード・ファイル126を含むソース・コード・リポジトリ124;
・ 一つ以上のクラス・ファイル130、及びそれぞれが特定のクラスを表すデータを含むクラス・ファイルを含む一つ以上のクラス・ライブラリ131を含むクラス・ファイル・リポジトリ128;
・ クラスのある一定のセットをプリロードするために用いられるオフライン・クラス・ローダー132;オフライン・クラス・ローダーは、静的クラス・ローダーと呼ぶこともできる;
・ リンカに対して認識可能であるフォーマットでクラス・メンバー、クラス・データ構造、及びメモリ記憶インジケータを表すオブジェクト・ファイルを生成するアセンブラ134;
・ 一セットのプリロードされたクラスに対するメモリ・レイアウトを決定しかつ全記号参照を解くためのリンカ136;
・ HTML文書をアクセスすることに使用するブラウザ138;及び
・ サーバによる使用のための一つ以上のデータ・ファイル146ブラウザは、次のものを含むことができる:
・ クラスをユーザのアドレス空間にロードしかつ各ロードされたクラスに関連付けられた方法の保全性を確認すべくバイトコード・プログラム・バリファイヤを用いる、ランタイム・タイム・クラス・ローダー・モジュール140;
・ 特定のプログラムがある所定の保全性基準を満足するかどうかを確認するためのバイトコード・プログラム・バリファイヤ・モジュール142;及び
・ HTML文書をロードするためのHTMLローダー144;
並びに他のモジュール。
【0018】
図2は、一つ以上のプロセッサ202、通信インターフェイス206、ユーザ・インターフェイス204、読み取り専用メモリ208及びランダム・アクセス・メモリ210を含むクライアント・コンピュータを示す。読み取り専用メモリ208は、定数のままであるデータ及び未解決参照を有していない方法を含む支援手順(オペレーティング・システム213及びネットワーク・アクセス手順214を含む)及びブラウザ212の一部を記憶する。ランダム・アクセス・メモリ210は、次のものを記憶する:
・ アプリケーションの実行中に変更されるデータ及び未解決参照を有する方法を含む支援手順216、217及びブラウザ215の第2の部分;
・ ユーザ・インターフェイス204を介してユーザの要求でブラウザによって得られた一つ以上のHTML文書222を含むHTML文書リポジトリ220;
・ 一つ以上のクラス・ファイルまたはアプレット226を含むクラス・ファイル・リポジトリ224;及び
・ その処理中にクライアントが用いうる一つ以上のデータ・ファイル228。
【0019】
図3は、プリロード可能な実行可能モジュールを生成するために用いられる一連のステップを示すオーバービューである。ここに記載した方法及びシステムは、ブラウザ及び他の支援手順をプリロードすることに関するものであるということに注目すべきである。しかしながら、ここに記載した方法及びシステムは、これら特定のJavaアプリケーションに限定されない。あらゆるJavaアプリケーション、またはランタイムで通常リンクされる方法の他のセットは、ここに記載した方法及びシステムを用いてプリロードすることができる。
Javaアプリケーションを含む各クラスに対するソース・コード126は、クラス・ファイル130にコンパイラ122によってコンパイルされる。クラス・ファイルは、クラスを表しているクラス・データ構造、各方法のバイトコード、定数データ、並びに他の情報を含む。クラス・ファイルのより詳細な説明は、以下に示す。代替的に、アプリケーションに対応しているクラス・ファイルは、一つ以上のクラス・ライブラリ131に既に存在することができる。一度クラス・ファイルが利用可能であれば、プリロードされるべきアプリケーションを構成するクラス・ファイル128のセット全体は、オフライン・クラス・ローダー132へ伝送される。
【0020】
オフライン・クラス・ローダー132の目標は、各クラスに関連付けられた方法及び変数のどれが読み取り専用メモリに記憶することができかつどれがランダム・アクセス・メモリ・デバイスに記憶されるべきるかを決定することである。Javaインターフェイスを呼出すかまたは非静的インスタンス変数を用いる方法は、ランダム・アクセス・メモリに存在することが必要である。これは、インターフェイスを実行するバイトコードがランタイムで決定されかつ非静的インスタンス変数が関連クラスの各インスタンス生成に対して変更されるからである。オフライン・クラス・ローダー132は、これらの方法及び変数を見出しかつそれらがランダム・アクセス・メモリ・デバイスにロードされるべきであることを特定する特別のインジケータを挿入することによってそれらにフラグを立てる。オフライン・クラス・ローダーは、また、実行可能コードの更なるコンパクト表現を生成するために多数の最適化を実行する。例えば、各クラスに関係付けられる定数プールは、アプリケーションにある全てのクラスに対して組み合わされる。更に、オフライン・クラス・ローダーは、プリロードされたクラス環境に対するダイナミック・ローディングのために当初は構成されたクラス・ファイルを適合させるべく更なる処理を実行する。
【0021】
オフライン・クラス・ローダー302の出力は、二つのファイルからなることができる:アプリケーション全体に対する定数データを含む定数プール・ファイル;及びクラス・データ構造及びクラス・メンバーを含む更新されたクラス・ファイル。これらファイルの両方におけるデータは、データ定義としてフォーマットされ、各定義は、メモリ位置を示しているオフセット及びバイトコードを特定する。更新されたクラス・ファイルは、特定のセットのバイトコードが存在するメモリ記憶デバイスの型を示すメモリ記憶インジケータを含む。しかしながら、ここで説明した方法及びシステムは、これら二つのファイルを生成することに限定されない。全ての関連クラス・データを含む単一ファイルを含むが、それに限定されない、他のファイル構成を用いることができる。
【0022】
ファイルは、次いで、適切なアドレス空間にデータをマップすべくリンカに対して要求されたフォーマットを有するオブジェクト・モジュールを生成するアセンブラ134へ伝送される。一つがランダム・アクセス・メモリ・デバイスに対してかつ第2のものが読み取り専用メモリ・デバイスの対するような、二つのアドレス空間があるのが好ましい。オブジェクト・モジュールは、次いで、アプリケーションにおけるクラスに対するメモリ・レイアウトを生成するリンカ136へ伝送される。一度メモリ・レイアウトが決定されたならば、リンカ136は、全ての記号的参照を解きかつそれらを直接アドレスで置換する。メモリ・レイアウトは、二つのアドレス空間に分割される。読み取り専用メモリに対してフラグが立てられたメソッド及びデータは、第1のアドレス空間に含まれかつランダム・アクセス・メモリにおける記憶を必要とするようにフラグが立てられたメソッド及びデータは、第2のアドレス空間に含まれる。リンカ136からの出力は、これら二つのアドレス空間に対するメソッド及びデータを含むプリロード可能な実行可能モジュール306である。
【0023】
上記したようなオフライン・クラス・ローダーの主機能(main function) は、読み取り専用メモリに記憶されるべきメソッド及びデータ、及びランダム・アクセス・メモリに記憶されるべきメソッド及びデータを決定することである。更に、全てのプリロードされたクラスに対する定数プールは、オフライン・クラス・ローダーによって組み合わされるのが好ましく、それにより用いる読み取り専用記憶の量を最小化する。定数プールを組み合わせるために、用いられる記憶の量を低減すべくある一定の最適化が実行される。特定的には、重複表現(duplicate expressions) は、削除されかつより長いストリングスの部分であるストリングスは、より長いストリングの適切なサブストリング位置へのポインタで置換される。
【0024】
全てのクラスを含んでいる、汎用定数プールは、二つのセグメントに分割され、第1のセグメントは、256バイトをスパンしかつ第2のセグメントは、64kマイナス256バイトをスパンする。第1のセグメントは、最大256定数を含むことができかつ第2のセグメントは、残りの定数を含む。定数プールは、最も頻繁に参照される定数がプールの第1のセグメントに記憶されかつ最も少なく参照される定数が第2のセグメントに記憶されるように順序付けられる。一度定数プールが結合されたならば、定数を参照するバイトコードは、調整されることが必要でありうる。第1のセグメントの定数は、8ビット・オペランドによって参照され第2のセグメントの定数は、二つの8ビット・オペランドによって参照される(オペランド702が8ビット・オペランドでありオペランド704及び706が一緒に16ビット・オペランドを形成する図7を参照のこと)。8ビット・オペランドから16ビット・オペランドへの拡張は、汎用定数プールの第2のセグメントの定数を参照するそれらのバイトコードを調整すること、並びにそれらのメソッドにおけるバイトコードの変化した相対位置の原因となるべきメソッドにおける(例えば、分枝命令の)バイトコード・オフセット値の調整を必要とする。更に、バイトコードの変更は、種々の例外ハンドラーが割り当てられるメソッド内の変化したバイトコード開始及び終了位置を反映すべく例外テーブルに記憶されたオフセットを更新することを必要とする。
【0025】
更に、オフライン・クラス・ローダーは、クラスをプリロードするために適するものにクラス構造を適合させるために二つの他の変形を実行する。プリロードされたクラスに対するクラス初期化を実行する、静的クラス・イニシャライザが生成される。また、メソッドを記号的に参照するノン・クィック命令フォーマットを用いているバイトコードは、直接的にメソッドを参照するクィック命令フォーマットで記録される。
図8及び図9は、オフライン・クラス・ローダー132によって用いられるステップを更に詳細に示す。最初オフライン・クラス・ローダーは、そのクラスがプリロードされるべきアプリケーションの一部である。各クラスに対するクラス・ファイルを受け取る。図4は、クラス・ファイルに対するフォーマットを示す。クラス・ファイルは、一つ以上のヘッダ・レコード402、定数プール404、一つ以上のメソッド406、及び例外テーブル408を含む。ヘッダ・レコード402は、定数プールの大きさ、メソッドの数、及び例外テーブルの大きさを表すことができる。定数プール404は、アプリケーションの実行中、変更されないままであるデータを含む。そのようなデータの例は、ストリング定数、静的ファイナル整数、メソッドへの参照、クラスへの参照、及びインターフェイスへの参照を含むことができる。メソッド・データ406は、各メソッドをインプリメント(実現)するバイトコードのストリームからなる。例外テーブルの各エントリは、バイトコードにスタート及びエンド・オフセット、例外型、及び例外に対するハンドラーのオフセットを与える。エントリは、示された型の例外がスターティング及びエンディング・オフセットによって示されたコード内で生ずるときに、例外に対するハンドラーが所与のハンドラー・オフセットで見出されるということを示す。
【0026】
各クラス・ファイルは、オフライン・クラス・ローダーによって読み取られ(ステップ802)かつ各クラスに対する適切なクラス・データ構造は、構築され(ステップ804)、それは、アプリケーションをプリプロセスするためにもちいられるコンピュータのメモリに記憶される。図6は、クラス・データ構造600を示す。各クラスに対して、クラス・ブロック602、一つ以上のメソッド・ブロック604、各メソッドに対するバイトコード608、一つ以上のフィールド・ブロック614、フィールドに対する個別データ・エリア618、定数プール624、マップ・テーブル626及び例外テーブル628が存在する。
クラス・ブロックは、次のデータを含むことができる固定サイズ・データ構造である:
・ クラス名630;
・ 現行クラスの即上部クラスのクラス・ブロックへのポインタ632;
・ 各ポインタがメソッド・ブロックを参照している、一つ以上のポインタ634のアレー;
・ 各ポインタがフィールド・ブロックを参照している、一つ以上のポインタ636のアレー;
・ クラスの定数プールへのポインタ638;及び
・ クラスの例外テーブルへのポインタ640。
【0027】
メソッド・ブロック604は、所定数のメソッドを含む固定サイズ・データ構造である。一つ以上のメソッド・ブロックは、クラスの全てのメソッドを含むべく割り当てられる。メソッド・ブロック604は、メソッド名612及び対応バイトコード608へのポインタ610を含む。
フィールド・ブロック614は、インスタンス変数またはフィールドを含む固定サイズ・データ構造である。Javaに供給されたインスタンス変数の二つの異なる型のそれぞれに対して異なるフィールド・ブロック・フォーマットがある第1のフォーマット616は、整数または浮動小数点インスタンス変数のために用いられる。このフォーマット616は、インスタンス変数の名前、型(例えば、整数または浮動小数点)、及びその値を含む。第2のフォーマット620は、ダブルまたはロング型インスタンス変数に対して用いられる。このフォーマット620は、インスタンス変数の名前、型(例えば、ダブルまたはロング)及びインスタンス変数618の値の位置へのポインタを含む。
【0028】
図10は、クラス・データ構造を構築するために用いられるステップを示す。ヘッダ・レコードにおける情報は、クラス・データ構造のそれぞれに対する空間を割り当てるために用いられる(ステップ1002)。一度クラス・データ構造が割り当てられたならば、これらの構造のそれぞれの位置へのポインタは、クラス・ブロックに含まれる(ステップ1004)。
次に、オフライン・クラス・ローダーは、定数プールで読み取る。これらのステップを説明する前に、定数プールの内容をまず説明する。図5は、各クラス・ファイルに記憶される定数プールの構造を示す。第1のエントリは、クラスの名前及びスーパークラス502の名前を含む。これらの名前は、ストリング定数として記憶されかつ第1のエントリは、定数プールにおけるこれらのストリングの位置へのポインタを含む。次のエントリは、フィールドまたはインスタンス変数に属する。ヘッダ504は、定数プールにおけるフィールドの数を示すために用いられる。種々のフィールド506は、ヘッダに続く。
【0029】
同様に、ストリング定数は、定数プールにおけるストリング定数の数を示すヘッダ508により先行される。種々のストリング定数510が続く。ストリング定数は、メソッド名、クラス名、及びインターフェイス名を示すために用いられる。次に、メソッド参照は、メソッド512の数を示しているヘッダによって先行される定数プールに記憶される。定数プールは、メソッド名514及びメソッドのクラス名516へのポインタを含むメソッド・ポインタ511を各メソッドに対して含む。これらの名前は、定数プールにストリング定数として記憶される。メソッド・ポインタ511は、メソッドを記号的に参照するために用いられる。これは、呼出しメソッド命令のノン−クィック・フォーマットで用いられる。メソッドは、メソッドを呼出すための命令を含むことができる。ノン−クィック・フォーマットの命令は、次のようでありうる:
invoke method“class”.“method” (1)
ここで、“class”は、クラス名を含んでいるストリング定数を参照しかつ“method”は、メソッド名を含んでいるストリング定数を参照する。呼出しメソッド命令は、メソッドのポインタ511へのポインタを含む。オフライン・クラス・ローダーは、メソッドのブロックへのポインタをメソッドの名前に加えることによってこの記号参照を解くことを試みる。一度リンカがクラスに対するメモリ・レイアウトを決定したならば、リンカは、メソッドを直接的に参照する(即ち、メソッドのアドレスを記憶することによって)クィック・フォーマットにより呼出しメソッド命令のノン−クィック・フォーマットを置換する。記号参照を解くことによって、メソッドは、プリロードすることができる。
【0030】
図10を再び参照すると、記憶(装置)は、定数が汎用定数プールに記憶されるまでクラス・ファイルの定数プールにおけるそれらの最初の位置から種々の一時的位置まで定数の動きを追跡するマップ・テーブル626に対して割り当てられる。マップ・テーブル626は、各クラスに対して生成されかつ定数プールにおける各インスタンスの最初のアドレスをその現行位置へマップする(ステップ1006)。フィールド以外の定数プールに含まれた全てのデータは、クラス・ファイルから読み取られかつ定数プールに記憶される(ステップ1008)。定数がクラス・ファイルから定数プールへ転送されるときに、マップ・テーブル626は、定数プールにおける最初のアドレス及び現行位置を反映すべく更新される(ステップ1008)。しかしながら、定数プールから読み取られるフィールドは、一つ以上のフィールド・ブロックにロードされかつマップ・テーブルにおいてそれらに対するエントリは、行われない(ステップ1008)。
【0031】
メソッド・データは、クラス・ファイルから読み取られかつ一つ以上のメソッド・ブロックに記憶される。更なる記憶(装置)は、各メソッドに関連付けられたバイトコードに対して割り当てられる。メソッドの名前は、バイトコードの位置へのポインタと共にメソッド・ブロックに設置される(ステップ1010)。同様に、例外テーブルは、クラス・ファイルからその対応例外テーブル・データ構造へロードされる(ステップ1012)。
図8及び図9を再び参照すると、クラス・データ構造が構築された後、ハッシュ・テーブル180(図3参照)は、全ての定数プールの合計サイズに従って割り当てられかつ重複定数の除去において後で用いられる(ステップ805)。
次に、オフライン・クラス・ローダーは、重複定数を除去すべく進行する。これは、空間効率的方法で全てのクラスの定数プールを組み合わせるために実行される。各クラス・ファイルに対して(ステップ806)、クラスの定数プールにおける各エントリは、重複定数に対してスキャン(走査)される(ステップ812)。図11を参照すると、重複定数は、ハッシュ・テーブルを用いて検出される。定数のハッシュ値は、適切なハッシング機能によって決定される(ステップ1102)。検査は、ハッシュ値がハッシュ・テーブルに含まれるかどうかを決定すべく行われる(ステップ1104)。ハッシュ値がハッシュ・テーブルに存在するならば、定数は、重複でありかつエントリは、既存の定数のメモリ位置を反映すべくマップ・テーブルにおける定数のエントリを変更することによって定数プールから検出される(ステップ1106)。さもなければ、定数のハッシュ値及びメモリ位置は、ハッシュ・テーブルに記憶される(ステップ1108)。
【0032】
図8及び図9を再び参照すると、オフライン・クラス・ローダーは、共通サブストリングスを決定すべく進行する。共通サブストリングは、定数プールに既に記憶されたより長いストリングの一部として含まれるものである。各クラス・ファイルに対して(ステップ814)各ストリング定数は、それが定数プールに含まれるより長いストリングの一部であるかどうかを決定すべく走査される(ステップ816)。これは、多数の周知のストリング・マッチング・アルゴリズムの一つを用いて達成することができる。そのようなサブストリングが見出されたときに、それは、より大きなストリングにおけるサブストリングの位置へのポインタで置換される(ステップ818)。
次に、オフライン・クラス・ローダーは、クラス・ファイルのそれぞれに含まれる全てのメソッドのバイトコードを走査すべく進行する(ステップ820〜824)。図12を参照すると、バイトコードは、呼出しインターフェイス命令に対して検査される(ステップ1202)。呼出しインターフェイス命令を有するメソッドは、そのような命令によって呼び出されるメソッドがランタイムまでインプリメントされないので、RAM記憶装置に対して印が付けられる(ステップ1204)。さもなければ、バイトコードは、呼出しメソッド命令に対して検査される(ステップ1206)。この情況では、呼び出されるべきメソッドを含むメソッド・ブロックへのポインタ518(図5参照)は、定数プールに記憶されるメソッドの名前に加えられる(ステップ1208)。後でリンカが全てのクラスのメモリ・レイアウトを決定したときに、リンカは、メソッドへの記号参照をメソッドへの直接アドレスで置換する。これは、メソッドへのポインタを含むメソッド・ブロックへのメソッドの名前ポインタを追跡することによって決定される。
【0033】
各バイトコードが走査されるときに、参照カウントは、バイトコードによってアクセスされる各定数に対して行われる(ステップ828)。参照カウントは、は、マップ・テーブルに含まれるエキストラ・フィールドである。これは、定数プールをリオーダ(reorder) するために最も頻繁に用いられる定数を決定すべく後で用いられうる。更に、各バイトコードは、バイトコードによって変更されるフィールドに対して走査される。これは、フィールドが割当てステートメント(assignment statement)の左側で用いられるかどうかをチェックすることによって決定することができる。この場合には、フィールドは、新しい値を受け容れる。変更されたフィールドがその値がフィールド・ブロックに記憶されたものであれば、フィールド・ブロック全体は、RAM記憶装置に対して印が付けられる(ステップ830)。
【0034】
一度空間が汎用定数プールに対して割り当てられたならば、種々のクラス定数プールからの各エントリは、汎用定数プールに併合される(ステップ902)。先に示したように、定数プールは、二つのセグメント(区分)に分割される。第1のセグメントは、最も頻繁に参照された定数の256までを含む。第2のセグメントは、残りの定数を含む。決して参照されたことがない定数は、除去されかつ汎用定数プールに記憶されない。マップ・テーブルが参照カウントを有し、重複エントリを除去し、かつ共通サブストリングスへのポインタを有するので、定数プール・エントリは、各クラスのマップ・テーブルから読み取られる。
一度汎用定数プールが形成されたならば、汎用定数プールの第2のセグメントに記憶された定数を参照するバイトコードは、定数を参照するために、1バイトの代わりに2バイトを占有する、2倍長オフセット値を必要とする。これは、各クラスのメソッドに対して各バイトコードにわたり走査すること(スキャニング)(ステップ906〜908)及び、各バイトコードに対して汎用定数プールの第2のセグメントにおける定数を参照すること、定数をアドレス指定するために1バイト・オフセットを2バイト・オフセットで置換することを必要とする(ステップ910)。これは、バイトコードを記憶するために別のデータ・エリアを割り当てることによって達成することができる。バイトコードが走査されたときに、それらは、新しいデータ・エリアに読み取られかつ2バイト・オフセットでの置換を必要とする1バイト・オフセットは、この複写処理中に置換される。メソッド・ブロックは、次いで、バイトコードに対する新しい記憶位置を反映すべく更新される。分枝命令を表しているバイトコードに対するオフセット・オペランドは、分枝バイトコードと分枝ターゲット・バイトコードの位置の間に加えられたバイトの数(もしあれば)に従って調整される。
【0035】
同様に、各クラス・ファイルに対する例外テーブルは、クラス・ファイルのメソッドのいずれかが定数プールの第2のセグメントの定数を参照するならば、調整を必要とする。定数プールの第2のセグメントの定数を参照する調整された命令は、以前よりも多くの空間を占有し、それにより例外テーブルのオフセットに影響を及ぼす。逆スタート及びエンド・オフセット並びに2倍長定数プール・オフセットの挿入によって影響を及ぼされるハンドラ・オフセットは、計算されかつ例外テーブルに記憶される(ステップ916〜918)。
次に、新しい方法は、静的クラス初期化を処理すべく生成される。通常、クラスが動的にロードされるときには、クラス・イニシャライザは、クラスに関連付けられたある一定の変数、等を初期化すべく同じ時間で走らされる。クラスは、ここに記載された方法及びシステムでプリロードされるので、クラス初期化は、実行されない。従って、オフライン・クラス・ローダーは、プリロードされたクラスに対するクラス初期化を実行するメソッドを生成しなければならない。しかしながら、データフロー分析は、各クラス・イニシャライザを実行するための実行シーケンスを決定するためにまず実行される(ステップ920〜924)。シーケンスは、一つのクラスが別のクラスで初期化されるデータを利用しうるなので重要である。正しいシーケンスが維持されないならば、静的クラス・イニシャライザは、正しくない結果を生ずる。一度シーケンスが決定されると、プリロードされるべきそれらのクラスに対してシーケンスで各クラスを初期化する新しい方法が生成される(ステップ926)。
【0036】
結合インジケータは、次いで、ランダム・アクセス・メモリに記憶されるべきメソッド及びフィールド・ブロックにフラグを立てるためにクラス・ブロック構造に挿入される。リンカは、ランダム・アクセス・メモリに記憶されるべきメソッド及びフィールド・ブロックに対する個別のアドレス空間を生成するためにこの情報を用いる。リンカは、インジケータの欠如がメソッド及びフィールドが読み取り専用メモリに記憶されるべきであるということを示すと想定することができる。代替的に、読み取り専用メモリに記憶されるべきそれらのメソッド、クラス・データ構造、及びフィールドを明示的に示すために更なるインジケータを用いることができる(ステップ928)。
そして、オフライン・クラス・ローダーは、汎用定数プール、クラス・データ構造を含んでいる更新されたクラス・ファイル及び、メモリ記憶必要事項を特定しているインジケータ、並びに特別ブート時間インジケータを出力する(ステップ930)。
【0037】
図13を参照すると、プリロード可能な実行可能モジュール及びブート時間インジケータ1220は、クライアント・コンピュータの読み取り専用メモリに永続的に記憶される。クライアント・コンピュータがパワー・オンされリブートされるごとに、ブート時間インジケータ1220は、自動的に実行される。他のタスクの中で、ブート時間インジケータは、実行中にランダム・アクセス・メモリに存在しなければならない全てのメソッド及びデータを、リンカによってそれらに割り当てられたランダム・アクセス・メモリ位置にコピーする。
上記システム及び方法は、インターネットを通してHTML文書をアクセスすることに使用するJavaブラウザ及び支援手順を実行することに関して説明されたけれども、ここに記載した方法及びシステムは、あらゆるJavaアプリケーションに適用可能である。更に、Javaアプリケーションは、分散型環境で走ることを必要とせず、それは、外部システムから新しいクラスをインポートすることなくクライアントまたはサーバ・コンピュータで実行されるスタンド−アロン・モードで走ることができる。スタンド−アロン・モードでは、アプリケーションは、特定のコンピューティング環境のメモリ・コンストレインツ(拘束)を満たすために二つのアドレス空間に分割される。
【0038】
ここに記載された方法及びシステムは、Javaプログラミング言語により記載されたけれども、それは、クラスのダイナミック・ランタイム・ローディングを利用する他のオブジェクト指向型クラスを用いているコンピュータ・システムに適用可能である。
更に、上記に記載された方法及びシステムは、ランダム・アクセス・メモリのようなメモリ・デバイス以外の種々の型の実行可能媒体上の実行に従順である。それに限定されないが、メモリ・デバイス、コンパクト・ディスク、またはフロッピ・ディスクでありうるコンピュータ読取り可能記憶媒体のような、他の型の実行可能な媒体を用いることができる。
本発明は、それらの同等物の完全な範疇に鑑みて特許請求の範囲によって定義される。
【0039】
【発明の効果】
本発明の方法は、分散型コンピュータ・システムのコンピュータを動作する方法であって、複数のクラスをメモリに記憶し、各クラスは、データ及び少なくとも一つのメソッドを含み、各メソッドは、複数のバイトコードを含み、バイトコードのサブセットは、コンピュータによってアクセス可能なメソッドへの記号参照を含み;各クラスに対して、クラスのデータがクラスのメソッドの一つによって変更可能であるときにクラスのデータにフラグを立て;メモリに記憶された特定のメソッドへの各記号参照に対して、特定のメソッドのメモリ位置を置換し;各クラスの各メソッドに対して、メソッドのバイトコードの一つがメモリに記憶されていないメソッドへの記号参照を含むときにメソッドにフラグを立て;かつ各クラスを含んでいる実行可能モジュールを供給する段階を具備し、各フラグが立っていないメソッド及び各フラグが立っていないデータは、実行可能モジュールを実行するときに読み出し専用記憶媒体に記憶され、かつ各フラグが立てられたメソッド及び各フラグが立てられたデータは、実行可能モジュールを実行するときに読み取り及び書き込み許可型記憶媒体に記憶されるので、動的ロード可能クラスを有するオブジェクト指向型プログラム・コードを実行するために用いられるRAMの量を制限できる。
【0040】
また、本発明の方法は、コンピュータ・システムを動作する方法であって、第1のサブモジュール及び第2のサブモジュールに分割されたブラウザ・モジュールを読み出し専用メモリ・デバイスに記憶し、各サブモジュールは、複数の命令及びデータを含み、第2のサブモジュールは、命令のサブセット及びデータのサブセットを有し、命令のサブセット及びデータのサブセットは、複数の命令の実行中に変更可能である命令及びデータを含み;コンピュータ・システムの起動により、ランダム・アクセス・メモリ・デバイスに第2のサブモジュールを記憶し;かつ情報−内容データ及びコンピュータ−実行可能モジュールをインポートすべくブラウザ・モジュールを実行し、インポートされたデータ及びコンピュータ−実行可能モジュールは、ランダム・アクセス・メモリ・デバイスに記憶される段階を具備するので、動的ロード可能クラスを有するオブジェクト指向型プログラム・コードを実行するために用いられるRAMの量を制限できる。
【0041】
本発明のコンピュータは、通信リンクによって接続された複数のコンピュータを有する分散型データ処理システムにおける、一つのコンピュータであって、複数のクラスを記憶するメモリ、各クラスは、複数のデータ及び少なくとも一つのメソッドを含み、各メソッドは、複数のバイトコードを含み、バイトコードの第1のセットは、メモリに記憶されたメソッドを参照し、バイトコードの第2のセットは、通信リンクによってアクセス可能なメソッドを参照し;各クラスに対して、クラスのデータがクラスのメソッドの一つによって変更可能であるときにクラスのデータにフラグを立て、かつ各クラスの各メソッドに対して、メソッドのバイトコードの一つがメモリに記憶されていないメソッドへの記号参照を含むときにメソッドにフラグを立てるオフライン・クラス・ローダー;及び第1の部分及び第2の部分を有する実行可能モジュールを生成するリンカ、第1の部分は、オフライン・ローダーによってフラグが立てられたデータ及びクラスのメソッドのそれぞれを含み、かつ第2の部分は、第1の部分にないデータ及びクラスのメソッドのぞれぞれを含むので、動的ロード可能クラスを有するオブジェクト指向型プログラム・コードを実行するために用いられるRAMの量を制限できる。
【図面の簡単な説明】
【図1】分散型コンピュータ・システムのブロック図である。
【図2】図1の分散型コンピュータ・システムにおけるクライアント・コンピュータのブロック図である。
【図3】プリロード可能な実行可能モジュールを生成するために用いられる処理コンポーネントを示しているフロー図である。
【図4】クラス・ファイルに対するファイル・レイアウトを示す図である。
【図5】定数プールに対するファイル・レイアウトを示す図である。
【図6】クラス・ブロック・データ構造を示す図である。
【図7】命令バイトコード・ストリームを示す図である。
【図8】オフライン・クラス・ローダーによって用いられる方法のフローチャートの一部である。
【図9】オフライン・クラス・ローダーによって用いられる方法のフローチャートの他の一部である。
【図10】クラス・ブロック・データ構造を構築するための方法のフローチャートである。
【図11】重複定数を除去するための方法のフローチャートである。
【図12】ノン・クイック命令フォーマットをクイック命令フォーマットに変換するための方法のフローチャートである。
【図13】読み取り専用メモリ及びランダム・アクセス・メモリへのプリロードされたアプリケーションのマッピングを示しかつ静的クラス・イニシャライザによってランダム・アクセス・メモリにマップされた方法及びデータの一部のローディングを示すブロック図である。
【符号の説明】
100 分散型コンピュータ・システム
102 クライアント・コンピュータ
104 サーバ・コンピュータ
106 インターネット
108 サーバ
110 メモリ
112 プロセッサ
114 ユーザ・インターフェイス
116 通信インターフェイス
118 オペレーティング・システム
120 ネットワーク・アクセス手順
122 コンパイラ
124 ソース・コード・リポジトリ
126 ソース・コード・ファイル
128 クラス・ファイル・リポジトリ
130 クラス・ファイル
131 クラス・ライブラリ
132 オフライン・クラス・ローダー
134 アセンブラ
136 リンカ
138 ブラウザ
140 ランタイム・タイム・クラス・ローダー・モジュール
142 バイトコード・プログラム・バリファイヤ・モジュール
144 HTMLローダー
146 データ・ファイル
Claims (4)
- 分散型コンピュータ・システムにおいてコンピュータを動作させる方法において、
プロセッサにより、複数のクラスをメモリに記憶する段階であって、
各クラスは、データ及び少なくとも一つのメソッドを含み、
各メソッドは、複数のバイトコードを含み、
該バイトコードのサブセットは、前記コンピュータによってアクセス可能なメソッドへの記号参照を含む段階と;
前記プロセッサにより、各前記クラスに対して、該クラスのデータが当該クラスのメソッドの一つによって変更可能であるときに該クラスのデータに特別のインジケータを挿入することによってフラグを立てる段階と;
前記プロセッサにより、前記メモリに記憶された特定のメソッドへの各前記記号参照を前記特定のメソッドのメモリ位置で置換する段階と;
前記プロセッサにより、各前記クラスの各前記メソッドに対して、前記メソッドのバイトコードの一つが前記メモリに記憶されていないメソッドへの記号参照を含むときに前記メソッドに特別のインジケータを挿入することによってフラグを立てる段階と;
前記プロセッサにより、必要に応じ特別のインジケータを挿入することによってフラグを立てられた各前記クラスを含んでいる実行可能モジュールを記憶する段階であって、各フラグが立っていないメソッド及び各フラグが立っていないデータは、前記実行可能モジュールが実行されるときには読み出し専用記憶媒体に記憶されている状態であり、かつ各前記フラグが立てられたメソッド及び各フラグが立てられたデータは、前記実行可能モジュールが実行されるときには読み取り及び書き込み許可型記憶媒体に記憶されている状態であるような段階と、を具備することを特徴とする方法。 - コンピュータ・システムを動作させる方法において、
プロセッサにより、第1のサブモジュール及び第2のサブモジュールに分割されたブラウザ・モジュールを読み出し専用メモリ・デバイスにプリロードすることにより記憶する段階であって、
各サブモジュールは、複数の命令及びデータを含み、
前記第2のサブモジュールは、前記命令のサブセット及び前記データのサブセットを有し、
前記命令のサブセット及び前記データのサブセットは、前記複数の命令の実行中に変更可能である命令及びデータを含む段階と;
前記プロセッサにより、前記コンピュータ・システムの起動により、ランダム・アクセス・メモリ・デバイスに前記第2のサブモジュールを記憶する段階と;
内容情報データ及びコンピュータ−実行可能モジュールをインポートすべく前記ブラウザ・モジュールを実行する段階であって、
前記インポートされたデータ及び前記コンピュータ−実行可能モジュールは、前記ランダム・アクセス・メモリ・デバイスに記憶される段階と、を具備することを特徴とする方法。 - 通信リンクによって接続された複数のコンピュータを有する分散型データ処理システムにおける、一つの該コンピュータにおいて、
複数のクラスを記憶するメモリであって、
各前記クラスは、複数のデータ及び少なくとも一つのメソッドを含み、各前記メソッドは、複数のバイトコードを含み、
前記バイトコードの第1のセットは、前記メモリに記憶されたメソッドを参照し、
前記バイトコードの第2のセットは、前記通信リンクによってアクセス可能なメソッドを参照するメモリと;
各前記クラスに対して、前記クラスのデータが前記クラスのメソッドの一つによって変更可能であるときに前記クラスのデータに特別のインジケータを挿入することによってフラグを立て、かつ各前記クラスの各前記メソッドに対して、前記メソッドのバイトコードの一つが前記メモリに記憶されていないメソッドへの記号参照を含むときに前記メソッドに特別のインジケータを挿入することによってフラグを立てるオフライン・クラス・ローダーと;
第1の部分及び第2の部分を有する実行可能モジュールを生成するリンカであって、
前記第1の部分は、前記オフライン・ローダーによってフラグが立てられた前記データ及び前記クラスのメソッドのそれぞれを含み、かつ
前記第2の部分は、前記第1の部分にない前記データ及び前記クラスのメソッドのそれぞれを含むリンカと、
を備えていることを特徴とするコンピュータ。 - 前記実行可能モジュールの前記第1の部分は、前記実行可能モジュールが実行されるときには読み取り及び書き込み許可媒体に記憶されている状態となるように構成され、かつ前記第2の部分は、前記実行可能モジュールが実行されるときには読み取り専用記憶媒体に記憶されている状態となるように構成されることを特徴とする請求項3に記載のコンピュータ。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/655474 | 1996-05-30 | ||
US08/655,474 US5815718A (en) | 1996-05-30 | 1996-05-30 | Method and system for loading classes in read-only memory |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10198570A JPH10198570A (ja) | 1998-07-31 |
JP4021520B2 true JP4021520B2 (ja) | 2007-12-12 |
Family
ID=24629025
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP14079397A Expired - Lifetime JP4021520B2 (ja) | 1996-05-30 | 1997-05-30 | 読み出し専用メモリにクラスをロードする方法及びシステム |
Country Status (8)
Country | Link |
---|---|
US (4) | US5815718A (ja) |
EP (2) | EP0810522B1 (ja) |
JP (1) | JP4021520B2 (ja) |
KR (1) | KR100450312B1 (ja) |
CN (1) | CN1114155C (ja) |
DE (2) | DE69738504D1 (ja) |
SG (1) | SG76513A1 (ja) |
TW (1) | TW363167B (ja) |
Families Citing this family (156)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5815718A (en) * | 1996-05-30 | 1998-09-29 | Sun Microsystems, Inc. | Method and system for loading classes in read-only memory |
US6473768B1 (en) * | 1996-11-12 | 2002-10-29 | Computer Associates Think, Inc. | System and method for modifying an executing application |
US6003038A (en) * | 1997-03-31 | 1999-12-14 | Sun Microsystems, Inc. | Object-oriented processor architecture and operating method |
US5974428A (en) * | 1997-08-29 | 1999-10-26 | International Business Machines Corporation | Method and apparatus for class version naming and mapping |
US5966702A (en) * | 1997-10-31 | 1999-10-12 | Sun Microsystems, Inc. | Method and apparatus for pre-processing and packaging class files |
US6026237A (en) * | 1997-11-03 | 2000-02-15 | International Business Machines Corporation | System and method for dynamic modification of class files |
US5953526A (en) * | 1997-11-10 | 1999-09-14 | Internatinal Business Machines Corp. | Object oriented programming system with displayable natural language documentation through dual translation of program source code |
US6272673B1 (en) * | 1997-11-25 | 2001-08-07 | Alphablox Corporation | Mechanism for automatically establishing connections between executable components of a hypertext-based application |
US5995975A (en) * | 1997-11-25 | 1999-11-30 | International Business Machines Corporation | Dictionary based process for object containment |
US6349344B1 (en) * | 1997-12-16 | 2002-02-19 | Microsoft Corporation | Combining multiple java class files into a run-time image |
DE19810675A1 (de) * | 1998-03-12 | 1999-10-14 | Giesecke & Devrient Gmbh | Datenträger |
US6493870B1 (en) * | 1998-03-20 | 2002-12-10 | Sun Microsystems, Inc. | Methods and apparatus for packaging a program for remote execution |
US6658492B1 (en) * | 1998-03-20 | 2003-12-02 | Sun Microsystems, Inc. | System and method for reducing the footprint of preloaded classes |
US6199196B1 (en) * | 1998-03-20 | 2001-03-06 | Sun Microsystems, Inc. | Methods and apparatus for linking a program for remote execution |
CZ20003437A3 (cs) * | 1998-03-23 | 2001-11-14 | International Business Machines Corporation | Java runtime systém s upravenou sdílenou oblastí konstant |
US6061520A (en) * | 1998-04-07 | 2000-05-09 | Sun Microsystems, Inc. | Method and system for performing static initialization |
US7089331B1 (en) | 1998-05-29 | 2006-08-08 | Oracle International Corporation | Method and mechanism for reducing client-side memory footprint of transmitted data |
JP4026940B2 (ja) * | 1998-07-22 | 2007-12-26 | 松下電器産業株式会社 | プログラム変換装置 |
US6374266B1 (en) * | 1998-07-28 | 2002-04-16 | Ralph Shnelvar | Method and apparatus for storing information in a data processing system |
US6430569B1 (en) | 1998-08-14 | 2002-08-06 | Sun Microsystems, Inc. | Methods and apparatus for type safe, lazy, user-defined class loading |
US7143421B2 (en) * | 1998-09-09 | 2006-11-28 | Microsoft Corporation | Highly componentized system architecture with a demand-loading namespace and programming model |
US8434099B2 (en) | 1998-09-09 | 2013-04-30 | Microsoft Corporation | Efficient linking and loading for late binding and platform retargeting |
US6446084B1 (en) | 1998-09-22 | 2002-09-03 | Sun Microsystems, Inc. | Optimizing symbol table lookups in platform-independent virtual machines |
US6631515B1 (en) | 1998-09-24 | 2003-10-07 | International Business Machines Corporation | Method and apparatus to reduce code size and runtime in a Java environment |
JP2000122876A (ja) * | 1998-10-16 | 2000-04-28 | Matsushita Electric Ind Co Ltd | 情報処理装置 |
GB2343021A (en) * | 1998-10-19 | 2000-04-26 | Ibm | Class loading model for object oriented programming |
JP2000148503A (ja) * | 1998-11-10 | 2000-05-30 | Mitsubishi Electric Corp | 動的モジュール構成方式及び動的モジュール構成方法及びデバイス |
GB9825102D0 (en) | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
CA2255042C (en) * | 1998-11-30 | 2004-04-13 | Leonard W. Theivendra | Class loader |
US6305012B1 (en) * | 1998-12-03 | 2001-10-16 | International Business Machines Corporation | Method and apparatus for dynamic selection of instructions for compiling using tags |
US6530075B1 (en) * | 1998-12-03 | 2003-03-04 | International Business Machines Corporation | JIT/compiler Java language extensions to enable field performance and serviceability |
US6338160B1 (en) * | 1998-12-08 | 2002-01-08 | Nazomi Communications, Inc. | Constant pool reference resolution method |
US6624761B2 (en) | 1998-12-11 | 2003-09-23 | Realtime Data, Llc | Content independent data compression method and system |
US6848111B1 (en) * | 1999-02-02 | 2005-01-25 | Sun Microsystems, Inc. | Zero overhead exception handling |
US6637023B1 (en) * | 1999-03-03 | 2003-10-21 | Microsoft Corporation | Method and system for updating read-only software modules |
US7195661B2 (en) * | 1999-03-05 | 2007-03-27 | Pioneer Metals And Technology, Inc. | Magnetic material |
US6601104B1 (en) | 1999-03-11 | 2003-07-29 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
CA2267539C (en) * | 1999-03-30 | 2004-04-13 | Object Technology International Inc. | Access to resource files stored in rom |
US6845498B1 (en) * | 1999-05-11 | 2005-01-18 | Microsoft Corporation | Method and apparatus for sharing data files among run time environment applets in an integrated circuit card |
US6763397B1 (en) | 1999-05-27 | 2004-07-13 | Sun Microsystems, Inc. | Fully lazy linking |
US6618769B1 (en) * | 1999-05-27 | 2003-09-09 | Sun Microsystems, Inc. | Module-by-module verification |
US6766521B1 (en) | 1999-05-27 | 2004-07-20 | Sun Microsystems, Inc. | Dataflow algorithm for symbolic computation of lowest upper bound type |
US6601114B1 (en) * | 1999-05-27 | 2003-07-29 | Sun Microsystems, Inc. | Fully lazy linking with module-by-module verification |
JP3531536B2 (ja) * | 1999-05-28 | 2004-05-31 | 日本電気株式会社 | 抽象構文記法を用いたデータ構造定義における型情報の動的割り当て方法 |
US6968549B1 (en) * | 1999-07-02 | 2005-11-22 | Beryl Technical Assays Llc | Method and system for dynamically loading data structures into memory with global constant pool |
US7150005B2 (en) * | 1999-07-02 | 2006-12-12 | Beryl Technical Assays, Llc | Method and system for global constant management for memory |
US6460136B1 (en) * | 1999-07-12 | 2002-10-01 | Hewlett-Packard Co., | Method and apparatus for loading an operating system kernel from a shared disk memory |
US6701334B1 (en) * | 1999-07-13 | 2004-03-02 | Sun Microsystems, Inc. | Methods and apparatus for implementing individual class loaders |
US6874145B1 (en) | 1999-07-13 | 2005-03-29 | Sun Microsystems, Inc. | Methods and apparatus for implementing an application lifecycle design for applications |
US7257812B1 (en) | 1999-12-16 | 2007-08-14 | Sun Microsystems, Inc. | Methods and apparatus for managing an application |
US6584612B1 (en) * | 1999-07-15 | 2003-06-24 | International Business Machines Corporation | Transparent loading of resources from read-only memory for an application program |
GB9921720D0 (en) * | 1999-09-14 | 1999-11-17 | Tao Group Ltd | Loading object-oriented computer programs |
US7076788B1 (en) * | 1999-11-01 | 2006-07-11 | Nokia Networks Oy | Method for describing software architecture |
US20010042241A1 (en) * | 2000-01-21 | 2001-11-15 | Fujitsu Limited | Apparatus and method for executing program using just-in time-compiler system |
AU2001239492A1 (en) * | 2000-02-07 | 2001-08-14 | Insignia Solutions Plc | Global constant pool to allow deletion of constant pool entries |
EP1128263B1 (en) * | 2000-02-21 | 2010-05-19 | Panasonic Corporation | Linking of Java class files for embedded devices |
US6813762B1 (en) * | 2000-02-22 | 2004-11-02 | Freescale Semiconductor, Inc. | Method for processing program files in a programming language capable of dynamic loading |
US7389284B1 (en) | 2000-02-29 | 2008-06-17 | Oracle International Corporation | Method and mechanism for efficient processing of remote-mapped queries |
US6865730B1 (en) * | 2000-03-08 | 2005-03-08 | International Business Machines Corporation | Interprocedural analysis and optimization of an object oriented program in the presence of dynamic class loading |
US6745386B1 (en) * | 2000-03-09 | 2004-06-01 | Sun Microsystems, Inc. | System and method for preloading classes in a data processing device that does not have a virtual memory manager |
JP2001256058A (ja) * | 2000-03-13 | 2001-09-21 | Omron Corp | インタプリタ型言語によるプログラムの実行方法およびその方法を用いた情報処理装置 |
EP1290555A2 (en) * | 2000-03-20 | 2003-03-12 | Koninklijke Philips Electronics N.V. | Method of executing a computer program with an interpreter, computer system and computer program product |
US20020087958A1 (en) * | 2000-04-20 | 2002-07-04 | International Business Machines Corporation | Method and apparatus of transforming a class |
US6675375B1 (en) * | 2000-04-28 | 2004-01-06 | Sun Microsystems, Inc. | Method and apparatus for optimized multiprocessing in a safe language |
AU2001267653A1 (en) * | 2000-06-15 | 2001-12-24 | Canal + Technologies | Method for managing classes for an object-oriented programming language with dynamic resolution and tool for generating native structures from java binaries implementing said method |
US6918106B1 (en) * | 2000-07-31 | 2005-07-12 | Sun Microsystems, Inc. | Method and apparatus for collocating dynamically loaded program files |
US9252955B2 (en) * | 2000-08-18 | 2016-02-02 | United States Postal Service | Apparatus and methods for the secure transfer of electronic data |
US7302582B2 (en) * | 2000-08-21 | 2007-11-27 | United States Postal Service | Delivery point validation system |
JP2002091762A (ja) * | 2000-09-14 | 2002-03-29 | Denso Corp | プログラム生成装置 |
US8692695B2 (en) | 2000-10-03 | 2014-04-08 | Realtime Data, Llc | Methods for encoding and decoding data |
US9143546B2 (en) | 2000-10-03 | 2015-09-22 | Realtime Data Llc | System and method for data feed acceleration and encryption |
US6968540B2 (en) * | 2000-10-25 | 2005-11-22 | Opnet Technologies Inc. | Software instrumentation method and apparatus |
US6901591B1 (en) * | 2000-10-31 | 2005-05-31 | Sun Microsystems, Inc. | Frameworks for invoking methods in virtual machines |
US6996813B1 (en) | 2000-10-31 | 2006-02-07 | Sun Microsystems, Inc. | Frameworks for loading and execution of object-based programs |
US6978456B1 (en) * | 2000-10-31 | 2005-12-20 | Sun Microsystems, Inc. | Methods and apparatus for numeric constant value inlining in virtual machines |
EP1207454A1 (en) * | 2000-11-15 | 2002-05-22 | International Business Machines Corporation | Java run-time system with modified linking identifiers |
WO2002048864A2 (en) * | 2000-11-20 | 2002-06-20 | Zucotto Wireless, Inc. | System registers for an object-oriented processor |
US7107537B2 (en) | 2001-01-16 | 2006-09-12 | Hewlett-Packard Development Company, L.P. | Apparatus and method for updating applications to embedded devices and peripherals within a network environment |
US7386046B2 (en) | 2001-02-13 | 2008-06-10 | Realtime Data Llc | Bandwidth sensitive data compression and decompression |
EP1374046B1 (en) * | 2001-02-23 | 2012-02-22 | Microsoft Corporation | System and method for transforming object code |
US20020170047A1 (en) * | 2001-02-23 | 2002-11-14 | Brian Swetland | System and method for transforming object code |
US7080373B2 (en) * | 2001-03-07 | 2006-07-18 | Freescale Semiconductor, Inc. | Method and device for creating and using pre-internalized program files |
US7096466B2 (en) * | 2001-03-26 | 2006-08-22 | Sun Microsystems, Inc. | Loading attribute for partial loading of class files into virtual machines |
US7020874B2 (en) * | 2001-03-26 | 2006-03-28 | Sun Microsystems, Inc. | Techniques for loading class files into virtual machines |
US6957428B2 (en) * | 2001-03-27 | 2005-10-18 | Sun Microsystems, Inc. | Enhanced virtual machine instructions |
US7543288B2 (en) * | 2001-03-27 | 2009-06-02 | Sun Microsystems, Inc. | Reduced instruction set for Java virtual machines |
BRPI0209761B1 (pt) * | 2001-05-30 | 2018-04-03 | Blackberry Limited | Sistema de tempo de execução de dispositivo de comunicação móvel para executar uma aplicação, método de manusear um módulo ligado ao principal em um sistema alvo e produto de programa de computador |
US6748396B2 (en) | 2001-06-01 | 2004-06-08 | International Business Machines Corporation | Independent class loader for dynamic class loading |
US6901589B2 (en) * | 2001-06-25 | 2005-05-31 | Wind River Systems, Inc. | System and method for determining a root cause of a failure |
AU2002329611A1 (en) * | 2001-07-20 | 2003-03-03 | Altaworks Corporation | System and method for adaptive threshold determination for performance metrics |
US7039904B2 (en) | 2001-08-24 | 2006-05-02 | Sun Microsystems, Inc. | Frameworks for generation of Java macro instructions for storing values into local variables |
US6988261B2 (en) | 2001-08-24 | 2006-01-17 | Sun Microsystems, Inc. | Frameworks for generation of Java macro instructions in Java computing environments |
US7103590B1 (en) * | 2001-08-24 | 2006-09-05 | Oracle International Corporation | Method and system for pipelined database table functions |
US7058934B2 (en) * | 2001-08-24 | 2006-06-06 | Sun Microsystems, Inc. | Frameworks for generation of Java macro instructions for instantiating Java objects |
US7228533B2 (en) * | 2001-08-24 | 2007-06-05 | Sun Microsystems, Inc. | Frameworks for generation of Java macro instructions for performing programming loops |
US7219034B2 (en) | 2001-09-13 | 2007-05-15 | Opnet Technologies, Inc. | System and methods for display of time-series data distribution |
US7213240B2 (en) * | 2001-10-05 | 2007-05-01 | Sun Microsystems, Inc. | Platform-independent selective ahead-of-time compilation |
US6976254B2 (en) | 2001-11-28 | 2005-12-13 | Esmertec Ag | Inter-method control transfer for execution engines with memory constraints |
EP1324221A3 (en) * | 2001-12-21 | 2003-12-03 | Sap Ag | Storing data objects either in database or in archive |
US7114152B2 (en) * | 2002-01-08 | 2006-09-26 | International Business Machines Corporation | Method, apparatus, and program to determine the mutability of an object at loading time |
US7664731B2 (en) * | 2002-03-21 | 2010-02-16 | United States Postal Service | Method and system for storing and retrieving data using hash-accessed multiple data stores |
AU2003213722A1 (en) * | 2002-03-21 | 2003-10-08 | David J. Payne | Method and system for storing and retrieving data using hash-accessed multiple data stores |
US7272827B2 (en) * | 2002-04-03 | 2007-09-18 | International Business Machines Corporation | Statically detecting externally referenced interfaces of a program |
US6973457B1 (en) | 2002-05-10 | 2005-12-06 | Oracle International Corporation | Method and system for scrollable cursors |
US7610351B1 (en) | 2002-05-10 | 2009-10-27 | Oracle International Corporation | Method and mechanism for pipelined prefetching |
US7246347B1 (en) * | 2002-06-26 | 2007-07-17 | Sun Microsystems, Inc | Method and apparatus for loading class files into non-volatile memory |
AU2003245447B2 (en) * | 2002-09-06 | 2009-08-27 | United States Postal Service | Method and system for efficiently retrieving secured data by securely pre-processing provided access information |
US7159119B2 (en) * | 2002-09-06 | 2007-01-02 | United States Postal Service | Method and system for efficiently retrieving secured data by securely pre-processing provided access information |
US7051323B2 (en) * | 2002-10-08 | 2006-05-23 | Sun Microsystems, Inc. | Method and apparatus for initializing romized system classes at virtual machine build time |
US7093243B2 (en) * | 2002-10-09 | 2006-08-15 | International Business Machines Corporation | Software mechanism for efficient compiling and loading of java server pages (JSPs) |
US7055145B2 (en) * | 2002-10-30 | 2006-05-30 | Intel Corporation | Dynamic management of execute in place applications |
US20040123270A1 (en) * | 2002-12-23 | 2004-06-24 | Motorola, Inc. | Method and apparatus for shared libraries on mobile devices |
KR100493893B1 (ko) * | 2003-02-07 | 2005-06-10 | 삼성전자주식회사 | 자바 프로그램에서 클래스 로딩 과정을 단축시키는 시스템및 방법 |
US7073171B2 (en) * | 2003-02-28 | 2006-07-04 | Bea Systems, Inc. | EJB implementation class loading with removed dependencies with ability to replace EJB implementation class without full redeployment |
DE10310290A1 (de) * | 2003-03-10 | 2004-09-23 | Robert Bosch Gmbh | Rechenvorrichtung |
US7143398B2 (en) * | 2003-03-13 | 2006-11-28 | Che-An Chang | Application infa operating system |
US7328432B2 (en) * | 2003-06-02 | 2008-02-05 | Sun Microsystems, Inc. | Proximity-based addressing for supporting in-place execution in virtual machines |
US7411956B2 (en) * | 2003-06-05 | 2008-08-12 | International Business Machines Corporation | Methods and apparatus for routing packets |
US7248895B2 (en) * | 2003-06-12 | 2007-07-24 | Nokia Corporation | Controlling settings for mobile telecommunications apparatus |
FR2862395B1 (fr) * | 2003-11-14 | 2006-12-15 | Trusted Logic | Procede pour l'amelioration de l'efficacite et de la consommation memoire d'un systeme informatique |
ATE534960T1 (de) * | 2004-05-21 | 2011-12-15 | Computer Ass Think Inc | Verfahren zur auswahl eines prozessors für die ausführung einer suchanfrage |
US20050261857A1 (en) * | 2004-05-21 | 2005-11-24 | Clark Jones | System and method for linking and loading compiled pattern data |
US7574705B2 (en) | 2004-06-29 | 2009-08-11 | Sun Microsystems, Inc. | Method and apparatus for efficiently resolving symbolic references in a virtual machine |
KR100597413B1 (ko) * | 2004-09-24 | 2006-07-05 | 삼성전자주식회사 | 자바 바이트코드 변환 방법 및 상기 변환을 수행하는 자바인터프리터 |
US20060075394A1 (en) * | 2004-10-01 | 2006-04-06 | Tatsuya Iwamoto | Dynamic loading and unloading for processing unit |
US7444629B2 (en) * | 2004-11-12 | 2008-10-28 | International Business Machines Corporation | Autonomic self-healing of java resources |
US20060123397A1 (en) * | 2004-12-08 | 2006-06-08 | Mcguire James B | Apparatus and method for optimization of virtual machine operation |
US7801925B2 (en) | 2004-12-22 | 2010-09-21 | United States Postal Service | System and method for electronically processing address information |
FR2883390A1 (fr) * | 2005-03-15 | 2006-09-22 | Gemplus Sa | Gestion du placement de structure de donnees en memoire basee sur une langage de programmation dedie |
US8165909B2 (en) | 2005-05-17 | 2012-04-24 | The United States Postal Service | System and method for automated management of an address database |
US20060288336A1 (en) * | 2005-06-21 | 2006-12-21 | Microsoft Corporation | Module initialization |
US7698685B2 (en) * | 2005-10-12 | 2010-04-13 | Microsoft Corporation | Discovery, qualification, and activation of software add-in components |
US8042103B2 (en) * | 2005-11-29 | 2011-10-18 | International Business Machines Corporation | Pre-translated files used in a virtual machine |
US20070169028A1 (en) * | 2005-12-15 | 2007-07-19 | Glenn Kasten | Partitioning of non-volatile memories for vectorization |
US7873952B2 (en) * | 2006-03-09 | 2011-01-18 | Oracle America, Inc. | Code transformation to optimize fragments that implement constant loading |
US8250559B2 (en) * | 2006-04-12 | 2012-08-21 | Oracle America, Inc. | Supporting per-program classpaths with class sharing in a multi-tasking virtual machine |
US7882198B2 (en) | 2007-07-02 | 2011-02-01 | Oracle America, Inc. | Shared JAVA JAR files |
US20090070752A1 (en) * | 2007-09-06 | 2009-03-12 | International Business Machines Corporation | Method and system for optimization of an application |
US8719196B2 (en) | 2011-12-19 | 2014-05-06 | Go Daddy Operating Company, LLC | Methods for monitoring computer resources using a first and second matrix, and a feature relationship tree |
US8600915B2 (en) | 2011-12-19 | 2013-12-03 | Go Daddy Operating Company, LLC | Systems for monitoring computer resources |
US9507613B2 (en) * | 2012-03-30 | 2016-11-29 | Oracle International Corporation | Methods and apparatus for dynamically preloading classes |
US8910138B2 (en) * | 2012-05-23 | 2014-12-09 | Oracle International Corporation | Hot pluggable extensions for access management system |
US9383448B2 (en) | 2012-07-05 | 2016-07-05 | Deca System Co., Ltd. | Golf GPS device with automatic hole recognition and playing hole selection |
US9740500B2 (en) * | 2012-08-30 | 2017-08-22 | Microsoft Technology Licensing, Llc | Layout system for operating systems using BPRAM |
US9952879B2 (en) * | 2012-08-30 | 2018-04-24 | Microsoft Technology Licensing, Llc | Application pre-layout in byte-addressable persistent random access memory |
US8938796B2 (en) | 2012-09-20 | 2015-01-20 | Paul Case, SR. | Case secure computer architecture |
CN103473089A (zh) * | 2013-09-02 | 2013-12-25 | 深圳市华傲数据技术有限公司 | 一种分布式java程序运行方法、装置和系统 |
US10217254B2 (en) | 2015-09-24 | 2019-02-26 | Oracle International Corporation | Graphical editing of memory layout rules for software programs |
US10127136B2 (en) | 2015-09-24 | 2018-11-13 | Oracle International Corporation | Identifying and visualizing suboptimal memory layouts in software programs |
US10489130B2 (en) * | 2015-09-24 | 2019-11-26 | Oracle International Corporation | Configurable memory layouts for software programs |
KR102484262B1 (ko) | 2016-03-14 | 2023-01-04 | 삼성전자주식회사 | 컴퓨팅 시스템, 이의 구동 방법 및 컴파일 방법 |
US10394528B2 (en) * | 2016-03-30 | 2019-08-27 | Oracle International Corporation | Returning a runtime type loaded from an archive in a module system |
US10191753B2 (en) | 2016-03-30 | 2019-01-29 | Oracle International Corporation | Generating verification metadata and verifying a runtime type based on verification metadata |
CN112559073A (zh) * | 2020-12-16 | 2021-03-26 | 北京百度网讯科技有限公司 | 程序启动方法、类间关系构建方法及装置、移动终端 |
US11809839B2 (en) | 2022-01-18 | 2023-11-07 | Robert Lyden | Computer language and code for application development and electronic and optical communication |
CN117234590B (zh) * | 2023-08-02 | 2024-03-29 | 北京握奇数据股份有限公司 | 指令集生成方法、装置、介质及设备 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5051893A (en) * | 1988-07-11 | 1991-09-24 | Digital Equipment Corporation | System for processing data to facilitate the creation of executable images |
US5355489A (en) * | 1989-08-25 | 1994-10-11 | International Business Machines Corp. | Bios load for a personal computer system having a removable processor card |
EP0429252B1 (en) * | 1989-11-17 | 1998-01-14 | Digital Equipment Corporation | System and method for storing firmware in relocatable format |
GB2242293A (en) * | 1990-01-05 | 1991-09-25 | Apple Computer | Apparatus and method for dynamic linking of computer software components |
US5594903A (en) * | 1991-02-26 | 1997-01-14 | Lynx Real-Time Systems, Inc. | Operating System architecture with reserved memory space resident program code identified in file system name space |
FR2675602B1 (fr) * | 1991-04-16 | 1995-04-14 | Hewlett Packard Co | Procede et dispositif de protection d'un systeme informatique. |
US5369766A (en) * | 1993-03-25 | 1994-11-29 | Taligent, Inc. | Object-oriented loader system with support for different load formats |
US5450489A (en) * | 1993-10-29 | 1995-09-12 | Time Warner Entertainment Co., L.P. | System and method for authenticating software carriers |
US5574915A (en) * | 1993-12-21 | 1996-11-12 | Taligent | Object-oriented booting framework |
JPH07311752A (ja) * | 1994-05-11 | 1995-11-28 | Internatl Business Mach Corp <Ibm> | 分散データ処理システム及び初期プログラムロード方法 |
US5613120A (en) * | 1994-10-20 | 1997-03-18 | Silicon Graphics, Inc. | System and method for enabling, without recompilation, modification of class definitions and implementations in an object-oriented computer program |
US5671413A (en) * | 1994-10-31 | 1997-09-23 | Intel Corporation | Method and apparatus for providing basic input/output services in a computer |
US5664128A (en) * | 1995-02-23 | 1997-09-02 | Apple Computer, Inc. | Object storage apparatus for use with data sets in computer applications |
JP3234850B2 (ja) * | 1995-03-20 | 2001-12-04 | アルプス電気株式会社 | 記録再生装置の立ち上げ方法 |
US5815718A (en) * | 1996-05-30 | 1998-09-29 | Sun Microsystems, Inc. | Method and system for loading classes in read-only memory |
-
1996
- 1996-05-30 US US08/655,474 patent/US5815718A/en not_active Expired - Lifetime
-
1997
- 1997-05-22 EP EP97303505A patent/EP0810522B1/en not_active Expired - Lifetime
- 1997-05-22 EP EP01200729A patent/EP1098247B1/en not_active Expired - Lifetime
- 1997-05-22 DE DE69738504T patent/DE69738504D1/de not_active Expired - Lifetime
- 1997-05-22 DE DE69707752T patent/DE69707752T2/de not_active Expired - Lifetime
- 1997-05-23 SG SG1997001693A patent/SG76513A1/en unknown
- 1997-05-29 CN CN97112905A patent/CN1114155C/zh not_active Expired - Lifetime
- 1997-05-30 JP JP14079397A patent/JP4021520B2/ja not_active Expired - Lifetime
- 1997-05-30 KR KR1019970022986A patent/KR100450312B1/ko active IP Right Grant
- 1997-06-16 TW TW086107577A patent/TW363167B/zh active
-
1998
- 1998-08-10 US US09/131,686 patent/US5966542A/en not_active Expired - Lifetime
-
1999
- 1999-10-12 US US09/416,285 patent/US6223346B1/en not_active Expired - Lifetime
-
2001
- 2001-04-23 US US09/840,733 patent/US7159213B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP1098247A3 (en) | 2004-11-03 |
CN1172303A (zh) | 1998-02-04 |
KR970076313A (ko) | 1997-12-12 |
US6223346B1 (en) | 2001-04-24 |
EP1098247B1 (en) | 2008-02-06 |
JPH10198570A (ja) | 1998-07-31 |
US5815718A (en) | 1998-09-29 |
US7159213B2 (en) | 2007-01-02 |
KR100450312B1 (ko) | 2004-12-09 |
DE69738504D1 (de) | 2008-03-20 |
EP0810522B1 (en) | 2001-10-31 |
US5966542A (en) | 1999-10-12 |
DE69707752D1 (de) | 2001-12-06 |
DE69707752T2 (de) | 2002-08-01 |
EP0810522A2 (en) | 1997-12-03 |
TW363167B (en) | 1999-07-01 |
EP0810522A3 (en) | 1998-04-15 |
EP1098247A2 (en) | 2001-05-09 |
US20010047513A1 (en) | 2001-11-29 |
CN1114155C (zh) | 2003-07-09 |
SG76513A1 (en) | 2000-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4021520B2 (ja) | 読み出し専用メモリにクラスをロードする方法及びシステム | |
US5999732A (en) | Techniques for reducing the cost of dynamic class initialization checks in compiled code | |
US6654954B1 (en) | Computer system, program product and method utilizing executable file with alternate program code attached as a file attribute | |
US6973646B1 (en) | Method for compiling program components in a mixed static and dynamic environment | |
US5481713A (en) | Method and apparatus for patching code residing on a read only memory device | |
US5613120A (en) | System and method for enabling, without recompilation, modification of class definitions and implementations in an object-oriented computer program | |
US7793272B2 (en) | Method and apparatus for combined execution of native code and target code during program code conversion | |
US5546586A (en) | Method and apparatus for vectorizing the contents of a read only memory device without modifying underlying source code | |
US7412710B2 (en) | System, method, and medium for efficiently obtaining the addresses of thread-local variables | |
US8438468B2 (en) | Annotation management | |
EP0945792A2 (en) | Techniques for implementing a framework for extensible applications | |
US20050060695A1 (en) | Lazy compilation of template-generated classes in dynamic compilation execution environments | |
US20080005719A1 (en) | Methods, systems, and computer program products for providing a program execution environment | |
JP2000047874A (ja) | プレロ―ドクラスのフットプリント低減装置及び方法 | |
US20080005728A1 (en) | Methods, systems, and computer program products for enabling cross language access to an addressable entity in an execution environment | |
US20080022265A1 (en) | Methods, systems, and computer program products for generating and using object modules | |
US7774770B2 (en) | Method and system for dynamically loading data structures into memory with global constant pool | |
US6813762B1 (en) | Method for processing program files in a programming language capable of dynamic loading | |
US20080005727A1 (en) | Methods, systems, and computer program products for enabling cross language access to an addressable entity | |
US6810519B1 (en) | Achieving tight binding for dynamically loaded software modules via intermodule copying | |
US8606766B2 (en) | Method and system to handle java class versioning | |
US6934726B2 (en) | Storing and retrieving of field descriptors in Java computing environments | |
US11243876B2 (en) | Techniques for accessing off-heap memory | |
Townsend et al. | Configuring the Source Code for Version 9 of Icon | |
Schoettner et al. | Linking and Loading in a Persistent DSM Operating System “ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040531 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060724 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061024 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061120 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070220 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070903 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070927 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101005 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111005 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121005 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131005 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |