JP2003509761A - オブジェクト指向コンピュータプログラムのロード - Google Patents

オブジェクト指向コンピュータプログラムのロード

Info

Publication number
JP2003509761A
JP2003509761A JP2001522815A JP2001522815A JP2003509761A JP 2003509761 A JP2003509761 A JP 2003509761A JP 2001522815 A JP2001522815 A JP 2001522815A JP 2001522815 A JP2001522815 A JP 2001522815A JP 2003509761 A JP2003509761 A JP 2003509761A
Authority
JP
Japan
Prior art keywords
code
class
methods
execution environment
program
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.)
Pending
Application number
JP2001522815A
Other languages
English (en)
Inventor
ルナフ ティモシー
Original Assignee
タオ グループ リミテッド
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=10860897&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP2003509761(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by タオ グループ リミテッド filed Critical タオ グループ リミテッド
Publication of JP2003509761A publication Critical patent/JP2003509761A/ja
Pending legal-status Critical Current

Links

Classifications

    • 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/44594Unloading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • 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
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 オブジェクト指向コンピュータプログラムをロードする方法は、元のプログラムコードを必ずしも保持することなく実行環境ですぐに実行できるように、プログラムをコンパイル済みコードに変換し、そのコードを保持するステップを含む。好ましい実施形態としては、プログラムを実行する前に元のクラスファイルをメモリから破棄する。本発明は、特に、通常使用可能なメモリが限られている携帯電話などの複数のクライアントデバイスで構成される無線通信ネットワークに応用することができる。本発明を使用すると、コンパイル後元のクラスファイルは破棄され、クライアントデバイスのメモリ内に保持する必要がない。

Description

【発明の詳細な説明】
【0001】 本発明は、一般的に、オブジェクト指向コンピュータプログラムをロードする
方法とそのためのコンピュータシステムに関するものである。具体的には、本発
明はコードがクラスファイル形式で提供され、各々が複数の方法を含むオブジェ
クト指向プログラムに関するものであるが、ただしそれに限るわけではない。
【0002】 オブジェクト指向プログラミング言語のよく知られている例として「Java
(登録商標)」(Sun Microsystems Incの商標)がある。
「Java(登録商標)実装」とは、1つまたは複数のクラスファイルからなる
ソフトウェアアプリケーションを実行できるソフトウェアシステムのことである
。これらのクラスファイルは、Sun Microsystems Inc.が
発行しているJava(登録商標) Virtual Machine Spe
cificationのあるバージョンに適合している必要がある。クラスファ
イルは、特定のクラスに必要なデータおよびプログラムコードを定義する。
【0003】 ある程度対話操作はあるが、Java(登録商標)実装は概念に関して以下の
2つの部分に分けられる。 ・ Java(登録商標) Virtual Machine(JVM)。
クラスファイルを読み込んで、そこに記述されている命令をSunのJava(
登録商標) Virtual Machine Specificationの
あるバージョンに従って実行する。クラスに含まれる命令のうち一部は、他のク
ラスのデータまたはプログラムコードを参照する場合があり、JVMはさらに、
クラス間のそのような関係も管理する。 ・ Java(登録商標) Class Library。 これはデータと
プログラムコードを含む定義済みクラスの集合であり、SunのJava(登録
商標) Class Library Specificationに従って動
作する。これらのライブラリクラスは、実際のクラスファイルと異なる方法、た
とえば、Cまたはアセンブラプログラミング言語を使用して実装することも可能
であり、その場合、JVMではそのデータおよびプログラムコードへの参照が実
際のクラスファイルから派生したクラスの参照と同じように機能することを保証
していなければならない。
【0004】 クラスファイル内のプログラムコードは、Java(登録商標)バイトコード
(JBC)または単にバイトコードと呼ばれる命令形式である。クラス内の各メ
ソッドは、バイトコードの固有の並びを持つ。メソッドのバイトコードは、JB
C命令の並びである。
【0005】 JVMがバイトコードの実行に使用する方式は次の2種類がある。 ・ インタプリタ。 この方式では、JVMは、各JBC命令を順番に見てデ
コードし、その命令が要求するアクションを実行することによりバイトコードを
実行するプログラムコード断片であるインタプリタを内蔵している。この方式は
実装が最も簡単であるが、欠点は、単一のJBC命令を解釈するのにインタプリ
タプログラムの多数のステップを必要とするため、他の方法に比べて遅いという
点である。 ・ コンパイラ。 この方式では、実行を開始する前に、JVMは、バイトコ
ードのJBC命令を稼動しているCPUが理解できるマシンコード命令(ネイテ
ィブマシンコード(native machine code))に変換する。
次に、メソッドのプログラムコードを実行する際に、代わりにコンパイルされた
マシンコードが実行される。JBC命令からマシンコード命令に最初にコンパイ
ルするのに時間がかかるというオーバーヘッドがあるが、アプリケーションを起
動するときではなくアプリケーションを準備しているとき、この作業を実行でき
る。コンパイルの実行が完了すると、メソッドのプログラムコードの実行が高速
化され、Cなど他の従来のコンパイル型言語に匹敵する速度が得られる。コンパ
イラ方式の特別なケースとして、ジャストインタイムコンパイラ(just−i
n−time compiler)(JIT)があり、クラスのバイトコードを
最初に使用する直前にコンパイルする方法である。
【0006】 一部のJVMでは、この2つの方式を組み合わせて使用し、何回も実行される
プログラムコードのみをコンパイルし、残りをインタプリタで解釈実行する。
【0007】 リンクというのは、あるクラスC1から他のクラスC2(またはC2内のデー
タまたはメソッド)への参照を解決するプロセスである。C2がすでにロードさ
れていなければ、ロードし、コンパイラ方式を使用している場合にはコンパイル
し、自動的にリンクする。次に、C1からC2(またはC2内のデータまたはメ
ソッドの何らかのアイテム)への参照を修正し、C2内の参照されているものへ
の直接ポインタとなるようにする。
【0008】 SunのJava(登録商標) Virtual Machine Spec
ificationでは、次のようないくつかのリンク方式が可能である。 ・ スタティックリンク(Static linking):アプリケーショ
ンのすべてのクラスのロードおよびリンクは、アプリケーションの準備で実行さ
れる。この方式は通常、アプリケーションがデバイス内に永久的に埋め込まれる
とき使用される。 ・ ロード時ダイナミックリンク(Dynamic load time l
inking):クラスC2は、C2(またはC2内の何らかのデータアイテム
またはメソッド)を参照している他のクラスを初めてロードするときにロードさ
れる。 ・ 遅延ダイナミックバインディング(Dynamic late bind
ing):クラスC2は、C2(またはC2内の何らかのデータアイテムまたは
メソッド)を参照しているJBC命令(またはそのコンパイルされた等価物)が
初めて実行されるときにロードされる。
【0009】 動作中、特定のクラスの特定のメソッドが呼び出されたときに、必要とされる
特定のクラスがJVM内のすでに常駐している場合も常駐していない場合もある
。必要なクラスが常駐していない場合、そのクラスのクラスファイルをまずJV
M外から(たとえば、ディスクまたはネットワークから)ロードし、リンクし、
初期化してJVM内に配置する必要がある。次に、必要なメソッドを見つけるた
めに、そのクラスについてメソッドのリストを検索する。必要なメソッドが見つ
かったら、そのメソッドのJava(登録商標)バイトコードを実行し、ret
urn命令が出現したら、そこでそのメソッドを終了し、制御をそのメソッドの
呼び出し元に返す。メソッドの呼び出しは、メソッドで捕らえられない例外が投
げられた場合も終了する。
【0010】 図1は、JVMでJITコンパイラを使用する代表的な従来技術による実装を
示している。JITコンパイラ120は、使用する直前にクラスバイトコード1
10を取り出し、特定のプロセッサ上で実行できるようにネイティブコード13
0に変換する。クラス140の残り(または場合によってはクラス全体)は、実
行中にネイティブコード130がそれを参照する必要があればメモリ内に利用で
きる形で配置されたままになる。通常、参照する必要があると考えられるクラス
の残りとしては、データフィールドのテーブルや定数プールなどがある。スタテ
ィックリンクを使用する場合、アプリケーションの準備が行われているときにロ
ードと場合によってはコンパイルの一部または全部が実行される。またしても、
ネイティブコードでデータフィールドのテーブルおよび定数プールを参照できる
ように元のクラスファイル(またはその一部)がメモリ内に留まる必要がある。
【0011】 図3は、マルチプロセッサ環境の代表的な従来技術によるJVM実装を示して
いる。サーバ210は、クライアントプロセッサ230、240で必要になるさ
まざまなクラスのバイトコードを保持するためクラスストア(class st
ore)220を維持する。クラスストア220内には、中に複数の個別メソッ
ド212を含む代表的なJava(登録商標)クラス211が示されている。
【0012】 サーバ210は、250で一般に示されている通信ネットワーク上で必要に応
じてクラスファイル211をクライアント230、240に送る。この例では、
プロセッサ230、240は2つの異なるタイプ、つまりそれぞれクライアント
タイプ1とクライアントタイプ2である。クライアントはそれぞれ独自のJIT
、それぞれ231、241を維持し、受け取ったクラスファイル211をコンパ
イルしてネイティブコード233、243のそれぞれの独自のバージョンにし、
それを独自のネイティブコードストア232、242に保存することができる。
さらに、図1を参照してすでに説明したように、ローカルプロセッサ上で実行さ
れている間にネイティブコード233、243で参照する必要がある場合、クラ
スファイル211の残り(または場合によってはクラスファイル全体)が、23
4、244で一般的に示されているように、ローカルメモリ内に留まることにな
る。
【0013】 他の従来技術の配置(図には示されていない)では、クライアントのJIT
231、241はサーバ210上に維持することができ、ネイティブコードへの
変換はクライアント230、240ではなくそこで実行される。
【0014】 従来技術の配置にはいくつかの欠点がある。
【0015】 まず、それぞれの場合に、クライアントごとに大きな実行環境が必要になると
いう点である。さらに、Java(登録商標)クラスファイル211またはネイ
ティブバージョン233、243のいずれかがクラスファイルの残り234、2
44とともに、通信ネットワーク250上で送信され、クライアントメモリ内に
留まる必要がある。実際に、いずれの方式も満足なものではなく、特に、クラス
ファイルは通常大きいので携帯電話ネットワークなどの無線クライアントネット
ワークが利用される状況では不十分である。
【0016】 本発明の第1の態様によれば、それぞれが複数のメソッドを含むクラスの形で
提供されるプログラムコードからなるオブジェクト指向コンピュータプログラム
をロードする方法を提供し、前記複数のメソッドは必ずしも前記クラスのプログ
ラムコードを保持しない実行環境ですぐに実行できるようにクラスのメソッドを
コンパイル済みコードにコンパルするステップとそのコードを保持するステップ
を備える。通常、必ずというわけではないが、それぞれのクラスは個々のクラス
ファイルにより定義され、その場合、本発明では、実行環境が必ずしも元のクラ
スファイルを保持する必要がないと規定する。
【0017】 元のクラスおよび/またはクラスファイルを表すプログラムコードは本発明で
は、コンパイル済みコードを実行環境で実行するためには必要でない。
【0018】 好ましい実施形態では、コンパイルは2つのステップからなるプロセスで進行
する。第1のステップで、プログラムコード(たとえば、クラスのバイトコード
)が、仮想プロセッサの命令セットを使用する仮想プロセッサコードに変換され
る。第2のステップで、仮想プロセッサコードは、実際の物理的プロセッサの命
令セットを使用するネイティブコードに変換される。
【0019】 本発明の様々な態様では、万一実行アプリケーションによって必要とされる場
合に備えて元のクラスファイルをメモリに保持しておく必要がないためメモリ利
用度が改善される。上述の2段階変換プロセスを使用することにより、アプリケ
ーションプログラマは、高級プログラム言語(Java(登録商標)など)でプ
ログラムを設計することができ、しかも、通常大きいJava(登録商標)クラ
スファイルのサイズを気にせずに済む。本発明の好ましい実施形態では、アプリ
ケーションをJava(登録商標)などのメモリ集約的な高級プログラミング言
語で書くことができるが、それと同時に、できあがったプログラムを極わずかな
メモリ内で実行することができる。これは、アプリケーションを、たとえば携帯
電話、携帯型コンピュータ、ゲームコンソールなどの組み込み型システムで使用
する際に特に有用である。
【0020】 本発明は、多数の異なるリンク方式、たとえばスタティックリンク、ロード時
ダイナミックリンク、および遅延ダイナミックバインディングなどとともに使用
できる。
【0021】 本発明の他の態様によれば、それぞれが複数のメソッドを含むクラスの形で提
供されるコードからなるオブジェクト指向コンピュータプログラムをロードする
コンピュータシステムを提供し、前記システムは実行環境を定義し、さらに必ず
しも前記クラスのプログラムコードを保持しない実行環境ですぐに実行できるよ
うにクラスのメソッドをコンパイル済みコードにコンパルしそのコンパイル済み
コードを保持する動作が可能である。
【0022】 本発明の他の態様によれば、伝送手段を介して複数のクライアントデバイスと
通信するサーバーを備える分散コンピュータシステムを提供し、それぞれのクラ
イアントデバイスは、複数のメソッドをそれぞれが含むクラスの形で提供される
プログラムコードを含むオブジェクト指向コンピュータプログラムを実行するた
めのそれぞれの実行環境を持ち、前記システムは、 (a)プログラムコードをコンパイル済みコードにコンパイルする手段と、 (b)クライアントデバイスの1つで実行するためにいずれかのクラスのメソ
ッドのうちから1つ選択する手段と、 (c)選択したクラスのプログラムコードを必ずしも送信することなく、コン
パイル済みコードをサーバから前記クライアントデバイスに送信する手段を備え
る。
【0023】 本発明の他の態様によれば、複数のメソッドをそれぞれが含むクラスの形で提
供されるプログラムコードを含むオブジェクト指向コンピュータプログラムを複
数のクライアントデバイスにロードするためのコンピュータシステムを提供し、
前記各デバイスはそれぞれの実行環境を備え、前記システムは、 (a)選択したクラスの選択したメソッドをコンパイル済みコードにコンパイ
ルする手段と、 (b)プログラムコードを実行環境に必ずしもロードすることなく、実行可状
態にあるコンパイル済みコードをそれぞれの実行環境にロードする手段を備える
【0024】 本発明のこの態様では、アプリケーションプログラムを複数の個別クライアン
トデバイス、たとえば携帯電話に多重アップロードすることができる。コンパイ
ル済みコードを電話のメモリにアップロードするが、元のクラスファイルまたは
プログラムコードをアップロードする必要はない。
【0025】 本発明の他の態様によれば、複数のメソッドをそれぞれが含むクラスの形で提
供されるコードを含むオブジェクト指向コンピュータプログラムをロードする方
法を提供し、前記方法は、 (a)実行するためいずれかのクラスのメソッドのうちから1つ選択するステ
ップと、 (b)選択したクラス全体を実行環境に必ずしもロードすることなく、選択し
たメソッドを実行環境にロードするステップを含む。
【0026】 本発明の方法は、Java(登録商標)仮想マシン(JVM)の動的機能すべ
てを実装するが、従来の方式に比べて使用メモリが非常に低減されている。
【0027】 本発明の好ましい実施形態では、通信ネットワーク間でのバインド/リンク、
ロード、コンパイル、および送信を細かな粒度で制御できる。より具体的には、
粒度は、従来のオブジェクト指向システムの場合のようなクラスレベルではなく
メソッド/ツールレベルである。本発明は、Java(登録商標)仮想マシン(
JVM)環境に特に適用できるが、それに限るわけではない。本発明は、全部の
JVMリンク方式、つまりスタティックリンク、ロード時ダイナミックリンク、
および遅延ダイナミックバインディングに対応する。本発明の好ましい実施形態
の具体的応用分野として、無線通信(無線クライアントネットワーク)、および
特にただしそれに限るわけではないが携帯電話ネットワークがある。本発明は、
さらに、他の組み込みデバイス、好ましくはネットワーク接続デバイス、たとえ
ば(これに限るわけではないが)携帯型コンピュータ、ゲームコンソール、カメ
ラ、さらには他のどのようなタイプのネットワーク接続またはネットワーク接続
可能デバイスにも適用できる。一実施形態では、システムは無線ネットワークか
らなる、あるいは無線ネットワークを含むが、他の実施形態では、プライベート
またはパブリック固定ネットワークまたはインターネットを含むことができる。
クライアントデバイスが無線通信を利用できない場合、必要に応じてインターネ
ットに結合する手段を備えることもできる(たとえば、標準モデムやISDNリ
ンクを介して)。このような方法で、本発明は、さまざまな組み込みデバイス、
たとえば、カメラ、テレビ、洗濯機、自動車、さらに事実上考え得るどのような
タイプのコンピュータ操作デバイスにも適用可能と思われる。
【0028】 本発明の一利点は、無線クライアントネットワークに適用したときに、(メソ
ッド/ツールの)個々の送信の時間が、クラスファイル全部をダウンロードする
必要のある従来のシステムに比べて著しく短縮されるという点である。つまり、
ネットワークプロバイダは、ネットワークの仮想回線を長時間開いたままにする
必要がないということである。送信する小さな各メソッド/ツールは、必要なら
ば、別のルートに送ることもできる。さらに、送信する異なるデータチャンクの
サイズが小さいため、冗長性および誤り訂正が少なくて済む。したがって、ネッ
トワーク上の負荷は、単にデータ転送速度を考慮して期待した以上に軽減される
場合がある。
【0029】 本発明の好ましい実施形態は、実行前に(解釈実行するのではなく)コンパイ
ルするオブジェクト指向コンピュータプログラムでの使用に特に適用できる。本
発明を分散コンピュータシステムのコンテキストで使用する場合、個々のメソッ
ドをネットワーク経由でクライアントデバイスに送信する前または後にコンパイ
ルすることができる。
【0030】 本発明は仮想プロセッサの命令セットを使用する複数の仮想プロセッサツール
にクラスを変換する予備的なステップを含むのが好ましい。次に、実行のためメ
ソッドの1つを選択するステップに、仮想プロセッサツールの1つを選択するス
テップを含めることができる。ネットワーク接続されたシステムのコンテキスト
で使用する場合、仮想プロセッサツールをネットワーク上で個別にクライアント
デバイスに送信するか、またはそれとは別に、個の仮想プロセッサツールをまず
最初にコンパイルし、それからネイティブのコンパイル済みコードをネットワー
クで送信することができる。
【0031】 本発明はさらに、前述のメソッドを実行するように改造したコンピュータシス
テムにも拡大適用される。
【0032】 本発明はさらに、それぞれが複数のメソッドを含むクラスの形で提供されるコ
ードを含むオブジェクト指向コンピュータプログラムをロードかつ/または実行
するコンピュータシステムに拡大適用され、前記システムは実行環境を定義し、
実行のためいずれかのクラスのメソッドの1つを選択し、選択したクラスの全体
を実行環境に必ずしもロードせずに、選択したメソッドを実行環境にロードする
ように動作が可能である。
【0033】 本発明の他の態様によれば、伝送手段を介して複数のクライアントデバイスと
通信するサーバーを備える分散コンピュータシステムを提供し、それぞれのクラ
イアントデバイスは、複数のメソッドをそれぞれが含むクラスの形で提供される
コードを含むオブジェクト指向コンピュータプログラムを実行するためのそれぞ
れの実行環境を持ち、前記システムは、 (a)クライアントデバイスの1つで実行するためにいずれかのクラスのメソ
ッドのうちから1つ選択する手段と、 (b)選択したクラス全体を前記実行環境に必ずしもロードせずに、選択した
メソッドを前記クライアントデバイス内の実行環境にロードする手段を備える。
【0034】 本発明は、オブジェクト指向コンピュータプログラムの方法と装置に拡大適用
されるだけでなく、そのようなプログラムのコンパイル、そのようなプログラム
の結合、そのようなプログラムの実行、およびそのようなプログラムの送信を通
信ネットワーク上で実行するための方法と装置にも拡大適用される。
【0035】 最後に、本発明はさらに、データキャリア上で実装されているいないに関係な
く、説明したメソッドのいずれかを実装するコンピュータプログラムにも拡大適
用される。さらに、説明したメソッドを実行するコンピュータプログラムを表す
データストリームにも拡大適用される。
【0036】 「コード」という単語を説明と請求項で使用している場合、これはデータがプ
ログラム自体の一部であるデータを含むことは理解されるであろう。したがって
、制限することなく、「コード」という表現は定数、変数名および型、フラグ、
ポインタ、オブジェクト名などを含む。
【0037】 本発明は、さまざまな方法で実施することができ、また添付図面を参照しなが
ら例を用いて特定の一実施形態を説明する。
【0038】 図面の簡単な説明で説明されている図1は、JVM内のJITコンパイラがプ
ロセッサ独立のバイトコードからプロセッサ依存のネイティブコードに変換し、
特定のプロセッサ上で実行する方法を示している。このような従来技術の方式で
は、クラス140の残り(または場合によってはクラス全体)を、実行中にネイ
ティブコード130がそれを参照する必要があればメモリ内に保持する必要があ
る。図7に概略が示されている本発明の好ましい実施形態は、別の方式をとる。
ここで、クラスバイトコード710は、コンパイラ720によりネイティブコー
ド730に変換される。コンパイラは、定数プール内のデータを含めて、元のク
ラスバイトコードファイルの必要な部分すべてをネイティブに変換する。ネイテ
ィブコード730は、それ自体完結しており、実行時に元のクラスの一部を参照
する必要はない。したがって、コンパイラ720は、矢印740で概略が示され
ているようにメモリからクラス全体(つまり、元のクラスファイルの全体)を破
棄することができる。
【0039】 コンパイラ720は、スタティックリンク、ロード時ダイナミックリンク、ま
たは遅延ダイナミックバインドを実行するように配列することができる。クラス
を直接ネイティブコードに変換したり、それとは別に、以下で説明するように、
2段階で変換を実行することができる。
【0040】 本発明では、バイトコードからネイティブコードへの変換は次のように2つの
異なる段階に分けて実行するのが好ましい。 1.クラスファイルを中間プロセッサ独立形式に変換するステップ。これは仮
想プロセッサまたはVPコードと呼ばれる。コンバータ自体は、好ましい実装で
は「jcodeトランスレータ」と呼ばれている。 2.中間VP形式からネイティブマシンコードに変換するステップ。コンバー
タはここでは、「ネイティブトランスレータ」と呼ばれる。
【0041】 図2は、クラスバイトコードからネイティブコードへの変換を詳細に示す。ク
ラスバイトコード210は、クラスベリファイヤ(class verifie
r)211により最初に妥当性の確認が行われる。これは、個々のバイト自体を
チェックするだけでなく、有効な外部および内部参照もチェックする。クラスベ
リファイヤは、必要ならば、追加クラスをロードし、外部参照をチェックする。
【0042】 コードは、チェックが済むと、jcodeトランスレータ212に渡され、そ
こで、以下に詳述するように、VPコード213に変換される。VPコード21
3は、ネイティブトランスレータ214によってネイティブコード230に変換
される。
【0043】 クラスベリファイヤ211、jcodeトランスレータ212、VPコード2
13がすべてプロセッサ独立であることを理解することが重要であり、これはネ
イティブトランスレータ214のみであり、もちろんプロセッサ固有の最終ネイ
ティブコード230である。
【0044】 図2の右側には、変換プロセスで操作されているオブジェクトの概略表現が示
されている。プロセスは、複数の個別メソッド202を含むJava(登録商標
)クラスファイル201の形のクラスバイトコードから始まる。jcodeトラ
ンスレータは、クラスファイルを複数の個々の仮想プロセッサツール203に変
換する。実行するアプリケーションに応じて、必要な仮想プロセッサツール20
3を選択し、それらの選択したツール(およびそれらのツールのみ)がネイティ
ブトランスレータによって個々のネイティブメソッド204に変換される。元の
クラスファイル全体201が必ずしもネイティブトランスレータ214に渡され
るわけではなく、実際にアプリケーションによって必要とされる仮想プロセッサ
ツール203のみが変換され、最終的にクライアント上で実行できるように格納
されることを理解することが重要である。変換プロセスが完了したら、クラスフ
ァイル201全体だけでなくVPツール203もメモリから破棄される。個々の
ネイティブメソッド204のみが残るため、メモリ利用効率が非常に高い。
【0045】 図4は、異機種マルチプロセッサ環境内で好ましい実施形態を使用する状況の
概略を示す。これは、図3に示されている対応する従来技術の方式と比較すべき
である。
【0046】 図4では、サーバ410が2つのクライアント430、440(異なるプロセ
ッサを持つ)に通信ネットワーク450を介してサービスを提供している。プロ
セッサ独立計算はすべてサーバ上で実行され、特に、サーバはクラスストア42
0、クラスベリファイヤ421、jcodeトランスレータ422、およびVP
ストア423を保持する。複数のメソッド481を含む初期Java(登録商標
)クラスファイル480は、前述の2段階プロセスを介して、複数のVPツール
482に変換され、VPストア423内に格納される。VP(プロセッサ独立)
ツールは必要に応じて、ネットワーク450を介して個々のクライアントで利用
できる。VPツールは、個々のクライアントトランスレータ424、425によ
ってネイティブメソッド483、484に変換され、それぞれのプロセッサにつ
いて最適化される。これらのネイティブメソッドは、格納されたそれぞれのネイ
ティブコード432、442内に収められる。
【0047】 図4に示されているように、サーバ上でVPを使用すると、クラスファイルの
検証とコンパイルの第1段階(VPへの変換)をサーバで1回だけ実行できる。
次に、実行前に(プロセッサタイプにより異なる)ネイティブ変換のみをクライ
アントデバイスで実行する必要がある。このような配列により、サーバで更新さ
れたクラスを簡単に供給することができ、しかも、それらのクラスを使用しよう
としている特定のクライアントの詳細をいっさい知る必要がない。更新されたク
ラスは、クラスバイトコード内で1回だけ修正する必要があり、その後、1回だ
けVPに変換する。VPは、必要に応じて、クライアントデバイスに送信され、
エンドユーザに対しまったく透過的な方法でクライアントでネイティブコードへ
の最終変換を実行できる。さらに、新しいタイプのクライアントが異なるネイテ
ィブコードを必要とする市場に出回った場合も、サーバやVPコードへの修正は
必要ない。クライアントメーカーは単に、適切なネイティブトランスレータをク
ライアントに提供するだけであり、デバイスはサーバで人手が介在することなく
動作する。
【0048】 説明した方式では、ネットワークで、Java(登録商標)クラスファイル4
80をダウンロードする必要も、また個々のメソッド481をすべてダウンロー
ドする必要もない。個々のクライアントアプリケーションで実際に必要とするV
Pツールのみをネットワークで送信するればよい。必要なVPツールは、オンデ
マンドでダウンロードしたり(たとえば、クライアントからサーバに返される制
御信号を使って)、あるいはそれとは別に、サーバ側で必要と判断したときに送
信することができる。一実施形態では、たとえば、サーバは更新されたVPツー
ルをネットワークで送信し、クライアント上で実行されているアプリケーション
プログラムを更新することができる。これは、リアルタイムで、エンドユーザに
まったく透過的に実行することもできる。それとは別に、あるいはそれに加えて
、個々の送信されたVPツールは「アド−イン」、つまりユーザがクライアント
上で実行するアプリケーションプログラムに追加しようとする追加機能を表すこ
とができる。1つの特に便利な方式では、クライアントでコードを使用できない
アプリケーションプログラムにおいて機能を使用しようとしたときに、クライア
ントは自動的に、必要なVPツールをダウンロードすることを要求するサーバに
信号を送信する。サーバは、ローカルネイティブトランスレータ424、425
によってネイティブ形式に変換された要求VPツールを送信することにより応答
する。
【0049】 クラスファイル480が適切なVPツール482に変換されると、クラスファ
イルをサーバメモリから破棄できる。同様に、それぞれのクライアントで、ダウ
ンロードされたVPツールがネイティブメソッド483、484に変換された後
、VPツールをクライアントメモリから破棄できる。
【0050】 図4aは、個々のネイティブトランスレータがサーバ上に保持される他の実施
形態を示している。図4aでは、参照番号は図4で使用されているのと同じ意味
を持つ。
【0051】 この実施形態の一バージョンでは、クライアントプロセッサのそれぞれのネイ
ティブメソッドの完全な集まりがサーバ上のそれぞれのネイティブコードストア
432′、442′内に格納される。必ずしも前もってどのメソッドが個々のク
ライアントに必要なのかを判断できないため、VPツール482全体をそれぞれ
のネイティブトランスレータ424、425に渡し、ネイティブメソッド483
、484の包括的選択を行うことが好ましい。クライアントによって特定の新し
いメソッドまたは更新されたメソッドが呼ばれると、あるいはサーバによって送
信が要求されると、通信ネットワーク450を介して適切な個々のネイティブメ
ソッドが送信される。前のように、個々のメソッドのみが送信され、クラス全体
もまた元のクラスから作成されたネイティブメソッドすべても送信されない。
【0052】 この実施形態では、ネイティブメソッド483、484が構築されたら、クラ
スファイル480の全体と個々のVPツール482の両方をサーバメモリから破
棄できる。クラスファイルの一部も、またVPツールも、ネットワーク経由でダ
ウンロードされないことに注意されたい。同様に、クラスファイルの一部も、ま
たVPツールも、クライアントメモリ内に存在しない。これにより、クライアン
トメモリの利用効率が特に改善する。
【0053】 さらに他の方法では、サーバは可能なクライアントプロセッサごとに予め変換
されたメソッドの完全な集合体を保持する必要はない。その代わりに、特定のV
Pツールが必要になったときに、オンザフライで、適切なネイティブトランスレ
ータ424、425により変換し、そのネイティブメソッドを即座にクライアン
トに送信する。
【0054】 図5に示されている特定の実装が携帯電話ネットワークのそれであるとする。
ネットワークを使用する個々の携帯電話530、550はそれぞれ、ネイティブ
トランスレータ524、525とネイティブコードストア532、542を備え
る。電話の機能をアップグレードする必要がある場合、更新されたVPコードは
、中央サーバ520のVPストア523から供給される。更新されたVPコード
は地上通信網511を介して無線送信機512に送信される。その後、コードを
パケット化し、無線リンク513で個々の電話に送信する。受信したVPコード
は、自動的にネイティブコードに変換され、ネイティブコードストアに格納され
る。プロセス全体を携帯電話ユーザに透過的にすることができ、またはそれとは
別に、更新されたコードを無線リンク513を介して電話ユーザからの特定の要
求を受け取ったときに送信できる。
【0055】 この方法で携帯電話ネットワーク(または実際には他のタイプの無線クライア
ントネットワーク)を実装すると、クライアントは、クラス全体(たとえば1M
B)をダウンロードする代わりに個々のメソッド(それぞれの長さはたとえば1
00バイト)をダウンロードすることができる。この方法で個々のメソッドを送
信すると、大きなファイルを送信しているときに仮想回路を長時間開いたままに
する必要がないため無線ネットワークプロバイダには都合がよい。それぞれの小
さな個々のメソッドを別のルートで送ることもできる。また、小さなデータチャ
ンクを送信するので、冗長性および誤り訂正の手法の必要性も減じ、それにより
ネットワーク容量の増加が生データ転送速度と単に比較して期待される以上とな
る。元のクラスファイルの一部もVPツールもクライアントメモリ内に残ってい
る必要がないという事実は、そのメモリ全体をネイティブメソッドの格納とネイ
ティブコードでのアプリケーションの実行専用にできることを意味している。
【0056】 完全を期すため、クラスファイルをVPに変換し、VPツールをネイティブに
変換する好ましい方法について詳述することにする。これは単なる例に過ぎない
こと、また本発明は、最初のバイトコードからVPに、次にVPからネイティブ
に変換する2段階変換がある実施形態に制限されないことは理解されるであろう
【0057】 図2に戻り、クラスバイトコード210からネイティブコード230への好ま
しい2段階変換について詳述する。すでに述べたように、クラスベリファイヤ2
11はクラスバイトコードが有効かどうかをチェックする。クラスベリファイヤ
は、いくつかの実施形態では、jcodeトランスレータ内に組み込むことがで
き、そのクラスでは、クラスバイトコード210が矢印240で示されているよ
うにまっすぐjcodeトランスレータ212に渡される。
【0058】 実装されるJVMおよびバイトコード命令はスタックベースであり、オペラン
ド(数値、オブジェクトへのポインタ)はスタック上に保持され、押し込まれた
最後のアイテムが最初に取り出される仕組みをとる。バイトコード命令は通常、
スタックから1つまたは複数のオペランドを取り出して、ある種のアクションを
実行し、結果オペランド(もしあれば)をスタックに押し戻す。他方、VPはレ
ジスタベースであり、VP命令により直接アドレス指定される一組のレジスタを
持つ。命令は通常、命令で指定したレジスタからオペランドを取り、ある種のア
クションを実行し、結果オペランド(もしあれば)を命令で指定されている他の
レジスタに入れる。このレジスタベースのアーキテクチャは、VPは非常に多く
のレジスタを備え、VPへの変換を行ういずれかのシステムがレジスタの本数を
気にしなくて済むだけの数を有する以外に、大半の実際のプロセッサによく似て
いる。
【0059】 VP命令は式に基づく。単一の命令は通常、1つまたは2つのオペランドを持
ち、各オペランドには定数、レジスタ、または式を使用できる。式は、1つまた
は2つのオペランドを持ち、それぞれは定数、レジスタ、または式を使用できる
。この方式で、どのように複雑な命令でも作成できる。
【0060】 次に、クラスファイルの各部がどのように変換されるかを詳述する。説明では
、「フィックスアップ」という用語を使用するが、これはコンパイラの出力コー
ドまたはデータ内の特定の位置にアタッチされたデータの小さなアイテムであり
、その位置にあるコードまたはデータを使用する前に何らかの方法で修正する必
要があることをJVMに指示するものである。フィックスアップは、ネイティブ
コードが他のクラスまたはその中のフィールドやメソッドへの直接参照を取得で
きるように、ネイティブ命令またはデータアイテムを変更する場合に使用される
【0061】 Java(登録商標)クラスファイルは以下の部分で構成される。 ・ 名前の代わりにクラスファイルの他の部分の定数値および名前を格納し、
ここに格納される名前への参照がある定数プール。 ・ このクラス、スーパークラス、および直接スーパーインタフェースの名前
などの情報。 ・ お互いに関する情報を含むフィールドのリスト。 ・ お互いに関する情報を含むメソッドのリスト。この情報には、コードセク
ションが含まれる。そのため、メソッドごとに1つずつ、複数のコードセクショ
ンがある。
【0062】 Java(登録商標)クラスファイルは次のようにVPツールに変換される。 ・ データツール。その名前と異なり、クラスで使用するデータとはまったく
関係ない。その代わりに、名前、パラメータ、すべてのコンストラクタの型、フ
ィールド、メソッド、およびクラスのAPIを構成する他のエンティティなどを
含み、これらには限定されないクラスに関する情報を含む。これの代表的な用途
は、リフレクション(つまり、Java(登録商標)ライブラリ内のjava(
登録商標).lang.reflectの機能)である。リフレクションは、プ
ログラマがコンストラクタ、フィールド、メソッド、およびクラスに属するその
他のエンティティを列挙し、操作するためのプログラムインタフェースである。
データツールはさらに、クラスファイルが使用できなかったり、クラスファイル
がすでに変換されている状況で、検証するjcodeトランスレータによっても
使用される。クラスがVPで書かれている場合には、とにかくクラスファイルは
ない。
【0063】 ・ クラスツール。これには、JVMで使用するある種のハウスキーピング情
報(割り当てるオブジェクトのサイズ、クラスのスタティックデータがあればそ
のデータ、スーパークラスおよびスーパーインタフェースなど)、と非スタティ
ックメソッドの一部または全部のコードが含まれる。 ・ 0個またはそれ以上のメソッドツール。クラスに現れないメソッドはそれ
独自の個別ツールを持つ。メソッドをそのメソッドのツール内に置くかどうかの
決定は、メソッドのサイズなどpの多数の要因に基づく。 ・ フィックスアップツール。フィックスアップツールは通常、特定のフィー
ルドのオブジェクト内のオフセットを決定するために使用されるフィックスアッ
プ定数値を返す。このツールは、オフセットを提供するためにフィックスアップ
時に呼び出され、バインダ/リンカは、オフセットを使用しようとするコード内
にそのオフセットを当てる。これを使って、「フィールドを取得する」と「フィ
ールドを置く」の両方をバイトコードで実装する。より一般的には、フィックス
アップツールは、フィックスアップに使用するデータを返す。これは、フィック
スアップ時にのみ決定でき、コンパイル時には決定できない。データには、クラ
スインスタンスのサイズおよびフィールドのクラスインスタンス内のオフセット
などが含まれる。 データツールは、Java(登録商標)アプリケーションがいくつかの機能(
大半はリフレクション)を使用しないことがわかっている場合に破棄することが
でき、またフィックスアップツールは、他のJava(登録商標)クラスを動的
にロードしないデバイスにJava(登録商標)アプリケーションを埋め込む場
合に破棄することができる。
【0064】 jcodeトランスレータは、スタック上のアイテムごとにVPレジスタを使
用する。
【0065】 VPコードで直接、バイトコード内から他のクラス、メソッド、またはフィー
ルドにアクセスするためのクラスファイルのメカニズムを実装するわけではない
。バイトコードには、メソッドを呼び出す(この場合、他のクラス)、フィール
ドの内容を取得する(この場合、このクラスまたは他のクラス)、値をスタック
にプッシュする、値をスタックからポップする、フィールドの内容を設定するな
どの命令がある。jcodeトランスレータは、これらを以下のいずれかの操作
を実行できるVP命令に変換する(網羅してはいない)。 ・ クラス内の非スタティックメソッド(つまり、オブジェクトポインタの渡
し先)を呼び出す。VPには、メソッドを持つクラスという概念があり、これを
使用してJava(登録商標)クラスを実装する。このようなメソッドの呼び出
しは、仮想的に(呼び出される実際のメソッドはポインタが渡されるオブジェク
トのクラスによって決まる)または非仮想的に(呼び出されるメソッドは呼び出
しで指定されたクラス内にある)行うことができる。 ・ サブルーチンを呼び出す。これは、スタティックメソッド(つまり、オブ
ジェクトポインタが渡されないメソッド)および場合によっては非スタティック
メソッドのバイトコードの呼び出しを実装するために使用される。 ・ フィックスアップツールから定数フィックスアップの値を取得する。
【0066】 クラスファイル内の定数プールは次のように変換される。 ・ 定数値(整数または浮動小数点数)を含む定数プールエントリは定数値を
参照するJBC命令のコンパイル済みバージョンに組み込まれる。 ・ JBC命令によって直接使用される文字列データを含む定数プールエント
リは、コンパイラの出力コードにアタッチされたデータにコピーされる。 ・ 文字列データを含む他の定数プールエントリは直接には使用されないが、
以下の定数プールタイプまたはクラスファイルの他の部分によって参照されると
きに使用される。 ・ クラスCを参照する定数プールエントリにより、クラスC(またはJVM
のクラスの内部名)を参照するフィックスアップがコンパイラの出力コード/デ
ータにアタッチされ、これにより、この定数プールエントリを使用してCを参照
するJBC命令がネイティブコードシーケンスにコンパイルされ、フィックスア
ップを適用した後、このシーケンスでクラスCのコードおよびデータへのアクセ
スが可能になる。 ・ クラスC内のフィールドFを参照する定数プールエントリにより、C内の
F(またはJVMのC内のFの内部名)を参照するフィックスアップがコンパイ
ラの出力コード/データにアタッチされ、これにより、この定数プールエントリ
を使用してFを参照するJBC命令がネイティブコードシーケンスにコンパイル
され、フィックスアップを適用した後、このシーケンスでフィールドFのアクセ
スが可能になる。 ・ クラスC内のメソッドMを参照する定数プールエントリにより、C内のM
(またはJVMのC内のMの内部名)を参照するフィックスアップがコンパイラ
の出力コード/データにアタッチされ、これにより、この定数プールエントリを
使用してMを参照するJBC命令がネイティブコードシーケンスにコンパイルさ
れ、フィックスアップを適用した後、このシーケンスでメソッドMのアクセスが
可能になる。 ・ フィールドまたはメソッドの名前および型を与える定数プールエントリは
直接には使用されないが、他の定数プールエントリ型またはクラスファイルの他
の部分により参照されるときに使用される。
【0067】 クラスファイル内のコードセクションは次のように変換される。 ・ 純粋に数値だけの計算を実行するコード(つまり、外部メソッドへの参照
がない)は、バイトコードからVP内の対応するツールに直接変換される。 ・ 図6に示されているように、バイトコード600にはフィールドへの参照
610が含まれており、これは呼び出し611によりフィックスアップ時にフィ
ックスアップツールに変換される。フィックスアップツールへの呼び出しは、フ
ィールドの場所を参照する値を返す。したがって、命令が実行されるまでに正し
いオフセットを含むようにパッチを当てる必要がある。 ・ スタティックメソッド620は、対応するVPツールに変換されるが、フ
ィックスアップコード621の追加がある。 ・ 非スタティックメソッド630はメソッドの呼び出しのフィックスアップ
(つまり、メソッド名への参照)をそれに追加している。これは結局、最後のネ
イティブコード内のアトムになる。
【0068】 呼び出し規則は、バイトコードとVPとでかなり異なる。Java(登録商標
)バイトコードなどの従来のバイトコードでは、サブルーチンに渡すパラメータ
はスタックに置かれ、その後に呼び出すメソッドへの参照が置かれる。次にメソ
ッドを呼び出すバイトコード命令が実行されてスタックからそのメソッド参照が
取り出され、その参照が解決され、スタックから取り出したパラメータ付きで新
しいメソッドの実行が開始する。return命令が実行されると、制御権が元
のメソッドに戻される。これはVPに変換され、宛先メソッドを指すようにフィ
ックスアップされた(このフィックスアップは静的または動的に見つけることが
できる)gos(goto subroutine)命令を実行する前にすべて
のパラメータをVPレジスタにロードする。実行権がサブルーチンに渡され、「
ret」命令が実行されると戻る。
【0069】 ファイルの他の部分は次のように変換される。 ・ クラスの名前により、コンパイラが出力したコードおよびデータを参照す
るために、JVMで使用される名前を決定する。 ・ スーパークラスの名前が、コンパイラによって出力されたコードおよびデ
ータ内のスーパークラスへの何らかの参照となる。好ましい形態では、リンク後
、ポインタがスーパークラスのコードおよびデータを指すように、フィックスア
ップがアタッチされたポインタが出力データに含まれる。 ・ 各インタフェースの名前が、出力されたコードおよびデータ内のインタフ
ェースへの何らかの参照となる。好ましい実装では、リンク後、ポインタがイン
タフェースのコードおよびデータを指すように、フィックスアップがアタッチさ
れた各インタフェースのポインタが出力データに含まれる。 ・ 各メソッドにアタッチされたデバッグ情報(およびクラスファイルに格納
されているソースファイル名)が、もしあれば、JVMが稼動する環境に適した
形式に変換される。好ましい実装では、デバッグ情報は、システムの非Java
(登録商標)部分に使用されるのと同じ形態に変換される。
【0070】 最後のVPクラスは、1つまたは複数の名前付きツールを備え、通常これは、
少なくともデータツール、クラスツール、フィックスアップツール、および0個
またはそれ以上のメソッドツールを含む。ツール名は、jcodeトランスレー
タによって自動的に生成され、それぞれの名前がクラスの名前と、そのクラスの
実装内の各ツールの機能に関連付けられる。
【0071】 図2に再び戻り、VPコードをネイティブコードに変換するネイティブトラン
スレータについて詳述する。もちろん、VPコードはそれ自体実行中アプリケー
ション内で決して直接実行されるわけではなく、常に、プロセッサ依存のネイテ
ィブトランスレータによって、コードを実行するプロセッサに適したネイティブ
コードに変換される。
【0072】 ネイティブトランスレータ214は、組み込みシステム内のメモリに簡単に格
納できるように、きわめて小さなコード断片(プロセッサにもよるが150Kバ
イト程度)である。トランスレータ214は、VPレジスタを使用されている特
定のプロセッサのレジスタにマッピングする。トランスレータは、実際のプロセ
ッサのレジスタアーキテクチャの知識を利用して、出力ネイティブコード内の各
位置でどのVPレジスタを実際のプロセッサのレジスタにマッピングし、どれを
メモリ内に保持するか(アクセスするのに遅い)を決定する。トランスレータは
さらに、マシン依存の命令最適化も実行する。ネイティブコードがバインドされ
るまで、そのままふつうにフィックスアップコードのセクションを含む。バイン
ド後(あるいはときには実行時に)、フィックスアップコードは適切なマシン依
存命令で置き換えられる。たとえば、非スタティックメソッドのフィックスアッ
プは、ネイティブコード内のアトムに変換される。
【0073】 jcodeトランスレータとネイティブトランスレータは両方とも、それ自体
、VPコードで書くのが好ましく、目的のプラットフォーム上で実行するように
変換できる(ネイティブトランスレータ自体を使用して)。その初期VPコード
から、両方のトランスレータのコンパイル済みバージョンをネイティブコードに
し、トランスレータを実行する特定のプロセッサについて最適化することができ
る。jcodeトランスレータ用にVPコードをコンパイルするには、そのコー
ドをネイティブトランスレータに通す。ネイティブトランスレータ用にVPコー
ドをコンパイルするには、そのコードをネイティブトランスレータそれ自体に渡
す。
【0074】 好ましい実施形態では、Java(登録商標)仮想マシンを使用するが、本発
明の全体的な概念はもっと一般的であり、JVMを使用することも、あるいは実
際にJava(登録商標)を使用することもまったく本質的でない。ただし、J
ava(登録商標)を使用する場合、説明した本発明を利用すると、Java(
登録商標)を使ってアプリケーションを作成するのに慣れているプログラマであ
ればVPコードに関して理解していなくてもまたさらにはVPコードについて何
も知らなくても自分が好む言語でプログラムを開発できる。
【図面の簡単な説明】
【図1】 JVM内の従来のJITコンパイラの動作を示す図である。
【図2】 本発明の好ましい実施形態の2段階変換プロセスを示す図である。
【図3】 代表的な従来技術のクライアント/サーバシステムの図である。
【図4】 クライアント/サーバシステム内の本発明の好ましい実施形態の動作を示す図
である。
【図4a】 図4に示されている実施形態の一変種の図である。
【図5】 無線ネットワーク内の本発明の動作を示す図である。
【図6】 本発明の好ましい実施形態により、バイトコードから中間仮想プロセッサコー
ドに変換するいくつかの態様を示す図である。
【図7】 本発明の好ましい動作の概略図である。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SL,SZ,TZ,UG,ZW ),EA(AM,AZ,BY,KG,KZ,MD,RU, TJ,TM),AE,AL,AM,AT,AU,AZ, BA,BB,BG,BR,BY,CA,CH,CN,C R,CU,CZ,DE,DK,DM,EE,ES,FI ,GB,GD,GE,GH,GM,HR,HU,ID, IL,IN,IS,JP,KE,KG,KP,KR,K Z,LC,LK,LR,LS,LT,LU,LV,MA ,MD,MG,MK,MN,MW,MX,NO,NZ, PL,PT,RO,RU,SD,SE,SG,SI,S K,SL,TJ,TM,TR,TT,TZ,UA,UG ,US,UZ,VN,YU,ZA,ZW

Claims (29)

    【特許請求の範囲】
  1. 【請求項1】 それぞれが複数のメソッドを含むクラスの形で提供されるプ
    ログラムコードからなるオブジェクト指向コンピュータプログラムをロードする
    方法であって、 前記複数のメソッドは、前記クラスのプログラムコードを必ずしも保持しない
    実行環境ですぐに実行できるように、クラスのメソッドをコンパイル済みコード
    にコンパルするステップと、 前記コードを保持するステップと を具えたことを特徴とする方法。
  2. 【請求項2】 前記プログラムコードは、前記実行環境にロードされないこ
    とを特徴とする請求項1記載の方法。
  3. 【請求項3】 前記プログラムコードは、前記実行環境にロードされ、その
    後破棄されることを特徴とする請求項1記載の方法。
  4. 【請求項4】 前記メソッドをコンパイルするステップは、 前記メソッドを、仮想プロセッサの命令セットを使用する仮想プロセッサコー
    ドに変換し、その後前記仮想プロセッサコードをネイティブコードに変換するス
    テップを具えたことを特徴とする請求項1記載の方法。
  5. 【請求項5】 前記仮想プロセッサコードは、前記実行環境にロードされな
    いことを特徴とする請求項4記載の方法。
  6. 【請求項6】 前記仮想プロセッサコードは、前記実行環境にロードされ、
    その後破棄されることを特徴とする請求項4記載の方法。
  7. 【請求項7】 前記実行環境は、クライアントデバイスに常駐し、 前記コンパイル済みコードは、通信ネットワークを介して前記クライアントデ
    バイスに送信され、 前記プログラムコードは、必ずしも送信されないことを特徴とする請求項1記
    載の方法。
  8. 【請求項8】 前記実行環境は、クライアントデバイスに常駐し、 前記仮想プロセッサコードは、通信ネットワークを介して前記クライアントデ
    バイスに送信され、 前記プログラムコードは、必ずしも送信されないことを特徴とする請求項4記
    載の方法。
  9. 【請求項9】 前記実行環境は、クライアントデバイスに常駐し、 前記ネイティブコードは、通信ネットワークを介して前記クライアントデバイ
    スに送信され、 前記プログラムコードは、必ずしも送信されないことを特徴とする請求項4記
    載の方法。
  10. 【請求項10】 クラスの複数のメソッドをコンパイルして前記メソッドを
    スタティックリンクするステップを含むことを特徴とする請求項1記載の方法。
  11. 【請求項11】 前記コンパイル済みコードを前記実行環境にロードする際
    に、クラスの複数のメソッドを結合し、前記メソッドをダイナミックリンクする
    ステップを含むことを特徴とする請求項1記載の方法。
  12. 【請求項12】 前記コンパイル済みコードを前記実行環境で実行する際に
    、クラスの複数のメソッドをコンパイルし、前記メソッドをダイナミックバイン
    ドするステップを含むことを特徴とする請求項1記載の方法。
  13. 【請求項13】 前記クラスは、Java(登録商標)クラスであることを
    特徴とする請求項1記載の方法。
  14. 【請求項14】 前記請求項1ないし13のいずれかに記載のプログラムを
    ロードするステップを含むコンピュータプログラムを実行するステップと、 前記実行環境で前記プログラムを実行するステップと を具えたことを特徴とする方法。
  15. 【請求項15】 前記請求項1ないし14のいずれかに記載の方法を実行す
    るように手直しされたことを特徴とするコンピュータプログラム。
  16. 【請求項16】 それぞれが複数のメソッドを含むクラスの形で提供される
    コードからなるオブジェクト指向コンピュータプログラムをロードするコンピュ
    ータシステムであって、 前記システムは、実行環境を定義し、前記実行環境ですぐに実行できるように
    クラスのメソッドをコンパイル済みコードにコンパルし、該コンパイル済みコー
    ドを保持する動作が可能であり、 前記実行環境は、さらに前記クラスのプログラムコードを必ずしも保持しない
    ことを特徴とするコンピュータシステム。
  17. 【請求項17】 伝送手段を介して複数のクライアントデバイスと通信する
    サーバーを具えた分散コンピュータシステムであって、 それぞれのクライアントデバイスは、複数のメソッドをそれぞれが含むクラス
    の形で提供されるプログラムコードを含むオブジェクト指向コンピュータプログ
    ラムを実行するためのそれぞれの実行環境を有し、 (a)プログラムコードをコンパイル済みコードにコンパイルする手段と、 (b)クライアントデバイスの1つで実行するためにいずれかのクラスのメソ
    ッドのうちから1つ選択する手段と、 (c)コンパイル済みコードをサーバから前記クライアントデバイスに送信す
    るが、必ずしも選択したクラスのプログラムコードを送信しない手段と を具えたことを特徴とする分散コンピュータシステム。
  18. 【請求項18】 前記プログラムコードをコンパイルする手段は、前記プロ
    グラムコードを、仮想プロセッサの命令セットを使用する仮想プロセッサコード
    に変換する手段と、 仮想プロセッサコードをネイティブコードに変換する手段と を具えたことを特徴とする請求項17記載のコンピュータシステム。
  19. 【請求項19】 前記コンパイル済みコードを送信する手段は、前記仮想プ
    ロセッサコードを前記サーバから前記クライアントデバイスに送信する手段 を具えたことを特徴とする請求項18記載のコンピュータシステム。
  20. 【請求項20】 前記コンパイル済みコードを送信する手段は、前記ネイテ
    ィブコードを前記サーバから前記クライアントデバイスに送信する手段 を具えたことを特徴とする請求項18記載のコンピュータシステム。
  21. 【請求項21】 前記送信手段は、無線ネットワークで構成されるか、また
    は、無線ネットワークを含むことを特徴とする請求項17から20のいずれかに
    記載のコンピュータシステム。
  22. 【請求項22】 前記クライアントデバイスは、携帯電話であることを特徴
    とする請求項21記載のコンピュータシステム。
  23. 【請求項23】 前記クライアントデバイスは、ゲームコンソールであるこ
    とを特徴とする請求項21記載のコンピュータシステム。
  24. 【請求項24】 前記クライアントデバイスは、携帯型コンピュータである
    ことを特徴とする請求項21記載のコンピュータシステム。
  25. 【請求項25】 複数のメソッドをそれぞれが含むクラスの形で提供される
    プログラムコードを含むオブジェクト指向コンピュータプログラムを複数のクラ
    イアントデバイスにロードするためのコンピュータシステムであって、 前記各デバイスは、それぞれの実行環境を具え、 (a)選択したクラスの選択したメソッドをコンパイル済みコードにコンパイ
    ルする手段と、 (b)前記プログラムコードを実行環境に必ずしもロードすることなく、実行
    可状態にあるコンパイル済みコードをそれぞれの実行環境にロードする手段と を具えたことを特徴とするコンピュータシステム。
  26. 【請求項26】 それぞれの前記実行環境で選択されたメソッドをスタティ
    ックリンクするように配列されていることを特徴とする請求項25記載のコンピ
    ュータシステム。
  27. 【請求項27】 請求項1ないし14のいずれかに記載の方法を実行するよ
    うに手直しされたことを特徴とするコンピュータプログラム。
  28. 【請求項28】 請求項1ないし14のいずれか記載の方法を実行するよう
    に手直しされたコンピュータプログラムを伝送することを特徴とするデータキャ
    リア。
  29. 【請求項29】 請求項1ないし14のいずれかに記載の方法を実行するよ
    うに手直しされたコンピュータプログラムを表すことを特徴とするデータストリ
    ーム。
JP2001522815A 1999-09-14 1999-12-23 オブジェクト指向コンピュータプログラムのロード Pending JP2003509761A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB9921720.0A GB9921720D0 (en) 1999-09-14 1999-09-14 Loading object-oriented computer programs
GB9921720.0 1999-09-14
PCT/GB1999/004415 WO2001019159A2 (en) 1999-09-14 1999-12-23 Loading object-oriented computer programs

Publications (1)

Publication Number Publication Date
JP2003509761A true JP2003509761A (ja) 2003-03-11

Family

ID=10860897

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001522815A Pending JP2003509761A (ja) 1999-09-14 1999-12-23 オブジェクト指向コンピュータプログラムのロード

Country Status (9)

Country Link
US (2) US7191434B2 (ja)
EP (2) EP1416378A3 (ja)
JP (1) JP2003509761A (ja)
KR (1) KR20020085876A (ja)
AU (1) AU776957B2 (ja)
CA (1) CA2381779A1 (ja)
GB (1) GB9921720D0 (ja)
HK (1) HK1048525A1 (ja)
WO (1) WO2001019159A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008502968A (ja) * 2004-06-15 2008-01-31 ジェムプリュス 中間オブジェクト指向言語を備えるソフトウェアをポータブル・デバイスにロードするための方法

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20020087958A1 (en) * 2000-04-20 2002-07-04 International Business Machines Corporation Method and apparatus of transforming a class
WO2001084303A1 (fr) * 2000-05-04 2001-11-08 Access Co.,Ltd. Procede et systeme de traitement d'informations
US7082597B2 (en) * 2001-06-20 2006-07-25 Sun Microsystems, Inc. Representation of objects in a Java programming environment
US7036120B2 (en) * 2001-07-31 2006-04-25 Sun Microsystems, Inc. Two tier clusters for representation of objects in Java programming environments
JP3808755B2 (ja) * 2001-11-07 2006-08-16 富士通株式会社 Jitコンパイラを備えた仮想計算機
ES2198198B1 (es) * 2002-01-29 2005-05-01 Airtel Movil, S.A. Sistema de personalizacion de las aplicaciones de una tarjeta sim o usim de un terminal movil.
US7340730B2 (en) * 2002-03-18 2008-03-04 Sun Microsystems, Inc. On demand, network accessible, run time compile server
US6988099B2 (en) * 2002-06-27 2006-01-17 Bea Systems, Inc. Systems and methods for maintaining transactional persistence
US20040225747A1 (en) * 2003-05-09 2004-11-11 Zafer Kadi Providing compiled bytecode applications to a wireless device
US7219329B2 (en) * 2003-06-13 2007-05-15 Microsoft Corporation Systems and methods providing lightweight runtime code generation
GB0316531D0 (en) * 2003-07-15 2003-08-20 Transitive Ltd Method and apparatus for performing native binding
US7356814B1 (en) * 2003-12-15 2008-04-08 Electronic Data Systems Corporation System, method, and computer program product for communicating with an LDAP server
US7904893B2 (en) * 2004-03-17 2011-03-08 Marvell International Ltd. Power and/or energy optimized compile/execution
US7844665B2 (en) 2004-04-23 2010-11-30 Waratek Pty Ltd. Modified computer architecture having coordinated deletion of corresponding replicated memory locations among plural computers
DE102004058882A1 (de) * 2004-12-06 2006-06-08 Giesecke & Devrient Gmbh Erzeugen von Programmcode in einem Ladeformat und Bereitstellen von ausführbarem Programmcode
US8028299B2 (en) 2005-04-21 2011-09-27 Waratek Pty, Ltd. Computer architecture and method of operation for multi-computer distributed processing with finalization of objects
US7389500B2 (en) * 2005-07-08 2008-06-17 Microsoft Corporation Selective pre-compilation of virtual code to enhance boot time emulator performance
US20080016504A1 (en) * 2006-07-14 2008-01-17 Wesley Homer Cheng Dynamically programmable electronic data collection system combining declarative programming and native coding
KR101407629B1 (ko) * 2007-06-04 2014-06-13 더 보드 오브 리젠츠 오브 더 유니버시티 오브 텍사스 시스템 자바 변환 가속 장치 및 방법
US8752056B2 (en) * 2007-12-03 2014-06-10 International Business Machines Corporation Running native code across single or multi-core hybrid processor achitecture
US8539464B2 (en) * 2008-10-30 2013-09-17 International Business Machines Corporation Distributed just-in-time compilation
DE102009006882A1 (de) * 2009-01-30 2010-08-05 Advanced Micro Devices, Inc., Sunnyvale Anwendung plattformabhängiger Routinen in virtuellen Maschinen durch Einbetten einer nativen Codierung in Klassendateien
US9454391B2 (en) 2010-02-03 2016-09-27 Rtx A/S Programming of a DECT/CAT-iq communication device
WO2013132767A1 (ja) * 2012-03-09 2013-09-12 パナソニック株式会社 プロセッサ、マルチプロセッサシステム、コンパイラ、ソフトウェアシステム、メモリ制御システムおよびコンピュータシステム
US9529610B2 (en) * 2013-12-30 2016-12-27 Unisys Corporation Updating compiled native instruction paths

Family Cites Families (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155847A (en) * 1988-08-03 1992-10-13 Minicom Data Corporation Method and apparatus for updating software at remote locations
US5005152A (en) * 1989-04-05 1991-04-02 Allen-Bradley Company Industrial controller with decompilable user program
CA2019603A1 (en) 1989-06-30 1990-12-31 William M. Mckeeman Incremental compiler for source-code development system
JP2582956B2 (ja) * 1991-05-07 1997-02-19 三菱電機株式会社 プログラマブル制御装置
SE469956B (sv) * 1991-11-27 1993-10-11 Icl Systems Ab Förfarande och arrangemang för att minska mängden information som krävs vid enhetlig revidering av programvara i ett flertal användarenheter i ett datorsystem
JPH05257664A (ja) 1991-12-12 1993-10-08 Internatl Business Mach Corp <Ibm> バージョン独立のオブジェクト指向アプリケーション・プログラムを生成するシステム及び方法
DE69330691T2 (de) * 1992-06-03 2002-07-04 Sun Microsystems Inc Dynamisch konfigurierbares Kernsystem
EP0582738A1 (en) * 1992-08-12 1994-02-16 International Business Machines Corporation Language compiler
DE9300562U1 (ja) * 1992-08-27 1993-03-04 Siemens Ag, 8000 Muenchen, De
US5367685A (en) * 1992-12-22 1994-11-22 Firstperson, Inc. Method and apparatus for resolving data references in generated code
ATE176953T1 (de) * 1993-01-18 1999-03-15 Siemens Ag Realzeit-steuerungssystem
US5615400A (en) * 1993-06-30 1997-03-25 Apple Computer, Inc. System for object oriented dynamic linking based upon a catalog of registered function set or class identifiers
DE4413451A1 (de) * 1994-04-18 1995-12-14 Rolf Brugger Vorrichtung zum Vertrieb von Musikinformationen in digitaler Form
US5560013A (en) * 1994-12-06 1996-09-24 International Business Machines Corporation Method of using a target processor to execute programs of a source architecture that uses multiple address spaces
US5815708A (en) * 1995-10-06 1998-09-29 Sun Microsystems, Inc. Method and apparatus for dynamically loading method call exception code in response to a software method exception generated in a client/server computer system
US6219045B1 (en) * 1995-11-13 2001-04-17 Worlds, Inc. Scalable virtual world chat client-server system
US6151618A (en) * 1995-12-04 2000-11-21 Microsoft Corporation Safe general purpose virtual machine computing system
US5727147A (en) * 1995-12-08 1998-03-10 Sun Microsystems, Inc. System and method for resolving symbolic references to externally located program files
GB9600823D0 (en) * 1996-01-16 1996-03-20 British Telecomm Distributed processing
US5848274A (en) 1996-02-29 1998-12-08 Supercede, Inc. Incremental byte code compilation system
US5764989A (en) * 1996-02-29 1998-06-09 Supercede, Inc. Interactive software development system
IL126909A0 (en) * 1996-05-07 1999-09-22 Webline Communications Corp Method and apparatus for coordinating internet multi-media content with telephone and audio communications
US6151703A (en) * 1996-05-20 2000-11-21 Inprise Corporation Development system with methods for just-in-time compilation of programs
DE19620888A1 (de) 1996-05-23 1997-11-27 Siemens Ag Verfahren zur Aktualisierung eines Teils eines Programmcodes, wobei der Programmcode in einer Interpreter-Programmiersprache vorliegt, während der Ausführung des Programmcodes, durch einen Rechner
US5815718A (en) * 1996-05-30 1998-09-29 Sun Microsystems, Inc. Method and system for loading classes in read-only memory
US5859982A (en) 1996-06-05 1999-01-12 Sun Microsystems, Inc. Computer system and method for executing methods of downloaded programs with reduced run-time memory space requirements
US5794049A (en) * 1996-06-05 1998-08-11 Sun Microsystems, Inc. Computer system and method for executing architecture specific code with reduced run-time memory space requirements
TW359800B (en) * 1996-08-19 1999-06-01 Ibm Device independent and transfer optimised interactive client-server dialog system and method for performing interactive applications therein
DE19637883B4 (de) 1996-09-17 2005-06-16 Fujitsu Siemens Computers Gmbh Datenverarbeitungsanlage zur Ausführung großer Programmsysteme
US5838978A (en) * 1996-10-09 1998-11-17 Hewlett-Packard Company System and method of using annotations to optimize dynamically translated code in the presence of signals
BR9713267A (pt) 1996-10-25 2004-06-15 Schlumberger Systems & Service Cartão de circuito integrado para uso com um terminal, processo para uso com o mesmo, microcontrolador e processo para sua programação
DE69723286T2 (de) * 1996-11-13 2004-05-13 Paran, Arik, Sunnyvale Echtzeitprogramm-sprachbeschleuniger
WO1998037486A1 (en) * 1997-02-18 1998-08-27 International Business Machines Corporation Method for lookup of packages and classes in java, and devices making use of this method
US5920720A (en) * 1997-02-25 1999-07-06 Microsoft Corporation Efficient computer based virtual machine object structure
US5978585A (en) * 1997-03-27 1999-11-02 Inprise Corporation Development system with improved methods for recompiling dependent code modules
US5943496A (en) 1997-05-17 1999-08-24 Intertop Corporation Methods for developing and instantiating object classes using a java virtual machine extension
US6139199A (en) * 1997-06-11 2000-10-31 Sun Microsystems, Inc. Fast just-in-time (JIT) scheduler
US6078744A (en) * 1997-08-01 2000-06-20 Sun Microsystems Method and apparatus for improving compiler performance during subsequent compilations of a source program
US6442753B1 (en) * 1997-08-28 2002-08-27 International Business Machines Corporation Apparatus and method for checking dependencies among classes in an object-oriented program
US5966702A (en) * 1997-10-31 1999-10-12 Sun Microsystems, Inc. Method and apparatus for pre-processing and packaging class files
US6081665A (en) * 1997-12-19 2000-06-27 Newmonics Inc. Method for efficient soft real-time execution of portable byte code computer programs
US6295645B1 (en) 1997-12-22 2001-09-25 Texas Instruments Incorporated Method and apparatus for providing downloadable functionality to an embedded coprocessor
US6219787B1 (en) * 1997-12-22 2001-04-17 Texas Instruments Incorporated Method and apparatus for extending security model to native code
US6110226A (en) * 1998-02-19 2000-08-29 Cygnus Solutions Java development environment using optimizing ahead-of-time compiler
FR2775375A1 (fr) * 1998-02-23 1999-08-27 Solaic Sa Chargement de programmes informatiques en blocs
EP0943990A3 (en) * 1998-02-27 2004-12-22 Texas Instruments Incorporated Method and system of providing dynamic optimization information in a code interpretive runtime environment
US6330709B1 (en) * 1998-03-30 2001-12-11 International Business Machines Corporation Virtual machine implementation for shared persistent objects
US6158048A (en) * 1998-05-29 2000-12-05 Intel Corporation Method for eliminating common subexpressions from java byte codes
US6093216A (en) * 1998-05-29 2000-07-25 Intel Corporation Method of run-time tracking of object references in Java programs
US6493575B1 (en) * 1998-06-04 2002-12-10 Randy J. Kesten Fluoroscopic tracking enhanced intraventricular catheter system
EP1002398A1 (en) * 1998-06-08 2000-05-24 Gatespace AB Application and communication platform for connectivity based services
US7076765B1 (en) * 1998-06-24 2006-07-11 Kabushiki Kaisha Toshiba System for hiding runtime environment dependent part
US6092120A (en) * 1998-06-26 2000-07-18 Sun Microsystems, Inc. Method and apparatus for timely delivery of a byte code and serialized objects stream
US6760907B2 (en) * 1998-06-30 2004-07-06 Sun Microsystems, Inc. Code generation for a bytecode compiler
US6141794A (en) * 1998-10-16 2000-10-31 Sun Microsystems, Inc. System and method for synchronizing access to shared variables in a virtual machine in a digital computer system
GB2343021A (en) * 1998-10-19 2000-04-26 Ibm Class loading model for object oriented programming
JP4130713B2 (ja) * 1998-10-21 2008-08-06 松下電器産業株式会社 プログラム変換装置
US6298477B1 (en) * 1998-10-30 2001-10-02 Sun Microsystems, Inc. Method and apparatus for selecting ways to compile at runtime
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6115719A (en) * 1998-11-20 2000-09-05 Revsoft Corporation Java compatible object oriented component data structure
US6530075B1 (en) * 1998-12-03 2003-03-04 International Business Machines Corporation JIT/compiler Java language extensions to enable field performance and serviceability
US6637025B1 (en) * 1998-12-03 2003-10-21 International Business Machines Corporation Dynamic selection/definition of which class/methods should or should not be jit'ed using information stored in a jar file
US6338160B1 (en) * 1998-12-08 2002-01-08 Nazomi Communications, Inc. Constant pool reference resolution method
US6523171B1 (en) * 1998-12-29 2003-02-18 International Business Machines Corporation Enhanced source code translator from procedural programming language (PPL) to an object oriented programming language (OOPL)
US6631521B1 (en) * 1999-03-29 2003-10-07 International Business Machines Corporation System, method, and program for performing program specific operations during the uninstallation of a computer program from a computer system
US6748588B1 (en) * 1999-03-31 2004-06-08 Microsoft Corporation One-pass greedy-pattern-matching finite-state-machine code generation
US6295642B1 (en) * 1999-04-29 2001-09-25 International Business Machines Corporation Method and apparatus for partial just in time compiling in a data processing system
US6584612B1 (en) * 1999-07-15 2003-06-24 International Business Machines Corporation Transparent loading of resources from read-only memory for an application program
US6745385B1 (en) * 1999-09-01 2004-06-01 Microsoft Corporation Fixing incompatible applications by providing stubs for APIs
US6996829B2 (en) * 2000-02-25 2006-02-07 Oracle International Corporation Handling callouts made by a multi-threaded virtual machine to a single threaded environment
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
GB0013132D0 (en) * 2000-05-31 2000-07-19 Ibm Virtual machine with reiitialisation
US6973646B1 (en) * 2000-07-21 2005-12-06 International Business Machines Corporation Method for compiling program components in a mixed static and dynamic environment
US6704926B1 (en) * 2000-09-28 2004-03-09 International Business Machines Corporation Bimodal Java just-in-time complier
JP2002169696A (ja) * 2000-12-04 2002-06-14 Mitsubishi Electric Corp データ処理装置
US6851111B2 (en) * 2000-12-15 2005-02-01 International Business Machines Corporation System and method for class loader constraint checking
US6691306B1 (en) * 2000-12-22 2004-02-10 Lsi Logic Corporation Use of limited program space of general purpose processor for unlimited sequence of translated instructions
US6915511B2 (en) * 2001-05-22 2005-07-05 Sun Microsystems, Inc. Dynamic class reloading mechanism
US7051323B2 (en) * 2002-10-08 2006-05-23 Sun Microsystems, Inc. Method and apparatus for initializing romized system classes at virtual machine build time
US7031990B2 (en) * 2002-12-06 2006-04-18 Sun Microsystems, Inc. Combining external and intragenerational reference-processing in a garbage collector based on the train algorithm
US7143398B2 (en) * 2003-03-13 2006-11-28 Che-An Chang Application infa operating system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008502968A (ja) * 2004-06-15 2008-01-31 ジェムプリュス 中間オブジェクト指向言語を備えるソフトウェアをポータブル・デバイスにロードするための方法
US7913265B2 (en) 2004-06-15 2011-03-22 Gemalto Sa Method of loading software with an intermediate object oriented language in a portable device

Also Published As

Publication number Publication date
EP1416378A3 (en) 2006-10-25
AU1880800A (en) 2001-04-17
WO2001019159A3 (en) 2001-12-06
KR20020085876A (ko) 2002-11-16
HK1048525A1 (zh) 2003-04-04
CA2381779A1 (en) 2001-03-22
US20050240907A1 (en) 2005-10-27
WO2001019159A2 (en) 2001-03-22
US7191434B2 (en) 2007-03-13
AU776957B2 (en) 2004-09-30
EP1416378A2 (en) 2004-05-06
EP1214649A2 (en) 2002-06-19
US20040015914A1 (en) 2004-01-22
GB9921720D0 (en) 1999-11-17

Similar Documents

Publication Publication Date Title
JP2003509761A (ja) オブジェクト指向コンピュータプログラムのロード
AU777773B2 (en) Translating and executing object-oriented computer programs
US6484309B2 (en) Enabling software designed for one operating system to operate on another operating system
EP0737919B1 (en) Method and system for providing interoperability among processes written to execute on different operating systems
US8402460B2 (en) Installing and updating interpreted programming language applications using a designated virtual machine
EP0620522A2 (en) High performance dynamic linking through caching
EP0924612B1 (en) Mobile communication system
US20160011982A1 (en) Variable handles
JP2002508544A (ja) 変更定数プールを備えたJavaランタイム・システム
JP5845221B2 (ja) 高速パッチベースメソッドコール
EP1724683A2 (en) System and method for reducing execution time of bytecode in a java virtual machine
JP2003509767A (ja) オブジェクト指向コンピュータプログラムのロード
US11243876B2 (en) Techniques for accessing off-heap memory
US11803487B2 (en) Transitioning between thread-confined memory segment views and shared memory segment views
Azencott et al. Association of adaptative smoothing and markovian models for detection of valley bottoms on strongly noisy images (nondestructive testing)

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051128

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20051128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081205

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090428