JP4021520B2 - 読み出し専用メモリにクラスをロードする方法及びシステム - Google Patents

読み出し専用メモリにクラスをロードする方法及びシステム Download PDF

Info

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
Application number
JP14079397A
Other languages
English (en)
Other versions
JPH10198570A (ja
Inventor
ディー トック シアロン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH10198570A publication Critical patent/JPH10198570A/ja
Application granted granted Critical
Publication of JP4021520B2 publication Critical patent/JP4021520B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44557Code layout in executable memory
    • G06F9/44563Sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44573Execute-in-place [XIP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-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

【0001】
【産業上の利用分野】
本発明は、一般に、ランタイムに動的にロードされるクラスを有しているオブジェクト指向型コンピュータ・システムに関し、特に、読み出し専用メモリにクラスのサブセットをプリロードするシステム及び方法に関する。
【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. コンピュータ・システムを動作させる方法において、
    プロセッサにより、第1のサブモジュール及び第2のサブモジュールに分割されたブラウザ・モジュールを読み出し専用メモリ・デバイスにプリロードすることにより記憶する段階であって、
    各サブモジュールは、複数の命令及びデータを含み、
    前記第2のサブモジュールは、前記命令のサブセット及び前記データのサブセットを有し、
    前記命令のサブセット及び前記データのサブセットは、前記複数の命令の実行中に変更可能である命令及びデータを含む段階と;
    前記プロセッサにより、前記コンピュータ・システムの起動により、ランダム・アクセス・メモリ・デバイスに前記第2のサブモジュールを記憶する段階と;
    内容情報データ及びコンピュータ−実行可能モジュールをインポートすべく前記ブラウザ・モジュールを実行する段階であって、
    前記インポートされたデータ及び前記コンピュータ−実行可能モジュールは、前記ランダム・アクセス・メモリ・デバイスに記憶される段階と、を具備することを特徴とする方法。
  3. 通信リンクによって接続された複数のコンピュータを有する分散型データ処理システムにおける、一つの該コンピュータにおいて、
    複数のクラスを記憶するメモリであって、
    各前記クラスは、複数のデータ及び少なくとも一つのメソッドを含み、各前記メソッドは、複数のバイトコードを含み、
    前記バイトコードの第1のセットは、前記メモリに記憶されたメソッドを参照し、
    前記バイトコードの第2のセットは、前記通信リンクによってアクセス可能なメソッドを参照するメモリと;
    各前記クラスに対して、前記クラスのデータが前記クラスのメソッドの一つによって変更可能であるときに前記クラスのデータに特別のインジケータを挿入することによってフラグを立て、かつ各前記クラスの各前記メソッドに対して、前記メソッドのバイトコードの一つが前記メモリに記憶されていないメソッドへの記号参照を含むときに前記メソッドに特別のインジケータを挿入することによってフラグを立てるオフライン・クラス・ローダーと;
    第1の部分及び第2の部分を有する実行可能モジュールを生成するリンカであって、
    前記第1の部分は、前記オフライン・ローダーによってフラグが立てられた前記データ及び前記クラスのメソッドのそれぞれを含み、かつ
    前記第2の部分は、前記第1の部分にない前記データ及び前記クラスのメソッドのそれぞれを含むリンカと、
    を備えていることを特徴とするコンピュータ。
  4. 前記実行可能モジュールの前記第1の部分は、前記実行可能モジュールが実行されるときに読み取り及び書き込み許可媒体に記憶されている状態となるように構成され、かつ前記第2の部分は、前記実行可能モジュールが実行されるときに読み取り専用記憶媒体に記憶されている状態となるように構成されることを特徴とする請求項3に記載のコンピュータ。
JP14079397A 1996-05-30 1997-05-30 読み出し専用メモリにクラスをロードする方法及びシステム Expired - Lifetime JP4021520B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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