JP2002508560A - マルチプル・クラスファイルのランタイムイメージへの結合 - Google Patents

マルチプル・クラスファイルのランタイムイメージへの結合

Info

Publication number
JP2002508560A
JP2002508560A JP2000539407A JP2000539407A JP2002508560A JP 2002508560 A JP2002508560 A JP 2002508560A JP 2000539407 A JP2000539407 A JP 2000539407A JP 2000539407 A JP2000539407 A JP 2000539407A JP 2002508560 A JP2002508560 A JP 2002508560A
Authority
JP
Japan
Prior art keywords
java
computer
file
class file
runtime image
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.)
Granted
Application number
JP2000539407A
Other languages
English (en)
Other versions
JP2002508560A5 (ja
JP4372348B2 (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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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=25537278&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP2002508560(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2002508560A publication Critical patent/JP2002508560A/ja
Publication of JP2002508560A5 publication Critical patent/JP2002508560A5/ja
Application granted granted Critical
Publication of JP4372348B2 publication Critical patent/JP4372348B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/44568Immediately runnable code
    • G06F9/44573Execute-in-place [XIP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)
  • Management Or Editing Of Information On Record Carriers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stereo-Broadcasting Methods (AREA)
  • Time-Division Multiplex Systems (AREA)

Abstract

(57)【要約】 マルチプルJavaクラスファイルをランタイムイメージに結合することを開示する。Javaクラスファイルのランタイムイメージは、クラスファイルが、Javaバーチャルマシン用に予めロードされ、予め分析された状態であることである。望ましくは、ランタイムイメージは、読取専用メモリ(ROM)にストアされたDLLファイルであり、非冗長データを含む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】
本発明は、全体的にJavaクラスファイルに関し、特に係るファイルのランタイ
ムイメージへの結合に関する。
【0002】
【従来の技術】
Javaは、比較的新しいオブジェクト指向プログラミング言語であり、多くのプ
ログラマの興味の対象となった。観念的には、Javaはニュートラルなアーキテク
チャであり、ポータブルな言語であり、プログラムのあるバージョンでは、修正
なしでいかなるプラットフォームでも稼働するという評判である、即ち、Micros
oft Windowsオペレーティングシステムのバージョンが稼働するコンピュータ、A
ppli MacOSオペレーティングシステムのバージョンが稼働するコンピュータ、UN
IXオペレーティングシステムのバージョンが稼働すコンピュータなどでは、同じ
バージョンのJavaプログラムを全て稼働させることが可能である。即ち、その称
するところでは、Java言語の仕様の「インプリメンテーション従属(implementa
tion-dependent)」態様はない。
【0003】 しかしながら、実際には、Javaで書かれたプログラムは、固有の制限及び与え
られたプラットフォームの特殊事情のために、異なるプラットフォームの間の差
を斟酌するような修正なしのプラットフォームでは現実的には稼働しない。例え
ば、Microsoft WindowsCEは、ハンドヘルドPCから特定の産業制御器及びカス タマ電子デバイスまで、非常に広範囲に埋め込まれた製品に使用されており、コ
ンパクトであり、有用であり、拡張可能なオペレーティングシステムである。Mi
crosoft WindowsCEを利用する多くのデバイスは、デバイスのコストを低くおさ え、寸法を小さくし、電力の使用を有効にするために、1メガバイトのような比
較的小さい容量のランダムアクセスメモリ(RAM)を必要とする傾向がある。
更に、Microsoft WindowsCEを利用するように設計されたデバイスは典型的には 、Microsoft WindowsNTのようなより強力なオペレーティングシステムを稼働さ せるように設計されたコンピュータに典型的にみられるようなものと比べて、強
力でないプロセッサを有する。
【0004】 しかしながら、Javaの特徴は、Microsoft WindowsCEのような環境において、J
avaで書かれたプログラムの稼働と必ずしも矛盾しない。Javaはコンパイル言語 及びインタプリタ言語の両方の側面を持つ。Javaソースコードは、Javaバイトコ
ード又はJ-codeと呼ばれる、より通常のマイクロプロセッサマシンコードのよう
な、簡単なバイナリ命令に変化する。しかしながら、C又はC++ソースコードは
、特定のプロセッサに関するネイティブな命令に精製されるのに対して、Javaソ
ースコードは、Javaバーチャルマシンとして知られる命令であるユニバーサルフ
ォーマットにコンパイルされる。
【0005】 従って、Javaバーチャルマシンは、Javaバイトコードを翻訳し、実行するため
のオペレーティングシステム内で稼働するネイティブプログラムである。Javaコ
ードの基本的なユニットは、クラスである。他のオブジェクト指向言語における
ように、クラスは、実行可能コード及びデータを保持するアプリケーションコン
ポーネントである。コンパイルされたJavaクラスは、Javaバイトコード及び他の
クラス情報を包含するユニバーサルバイナリフォーマットに分離される。クラス
は、分離されて維持され、ファイルにストアされ、ローカルシステム又はネット
ワークサーバにアーカイブする。典型的には、クラスは、それらがアプリケーシ
ョンによって必要とされるならば、ロードされ、ランタイムで動的に分析(pars
e)される。
【0006】 言い換えれば、Javaは、ランタイムシステムのソフトウエアインプリメンテー
ションが、バイトコードをオンザフライでネイティブマシンコードにコンパイル
することによってそれらの性能を最適化することができるように設計されている
。クラスファイルは、ランタイムで「ちょうどそのとき(just in time)」にコ
ンパイルされるように、ロードされ、分析される。従って、JavaプログラムがJa
vaバーチャルマシンによって稼働されるとき、プログラムの稼働の前に最初に存
在するバイトコードバージョンと、プログラムがJavaバーチャルマシンで最初に
稼働するとき、ロードされ分析されるバージョンとの2つのバージョンの必要な
クラスファイルが最終的にある。
【0007】 有効にかつコスト的に設計されたMicrosoft WindowsCEプラットフォームのよ うなプラットフォームのコンテキストにおけるJavaプログラミング言語のこの設
計に対しては種々の不利な点があり、従って、例えば、Microsoft WindowsNTが 稼働するデスクトップコンピュータよりも遅いプロセッサを有し、同じようなメ
モリを搭載できないという点が不利である。まず、典型的なJavaプログラムは、
多くのクラスファイルを使用し、これらのクラスファイルをランタイムでロード
し、分析するのに、より非力なプロセッサで長い時間を要する。例えば、簡単な
「Hello World(ハローワールド)」プログラム、即ち、スクリーンに「Hollo W
orld」という文字を表示させるプログラム、を稼働させるのに、ランタイムでク
ラスファイルの最初のロード及び分析のために、約40メガヘルツで稼働するプ
ロセッサを有するハンドヘルドデバイスで実行するのに9分以上要する。
【0008】 この最初のロード及び分析のある態様は、大きなendianフォーマットから小さ
なendianフォーマットまでJavaクラスファイルのバイトコードの翻訳をしばしば
行うことである。即ち、Javaクラスファイルのバイトコードは、バイトが最下位
から最上位にオーダされるような(即ち、0,1,2,3)大きなendianフォー
マットであるのに対して、多くのプラットフォームでは、小さなendianフォーマ
ットが使用され、そこではバイトは最上位から最下位にオーダされる(即ち、3
,2,1,0)。この最初のロード及び分析の別の態様は、Javaクラスファイル
フォーマットが、ネイティブナンバーファンクションの位置を指定しないことで
あり、その結果、バーチャルマシンは、所望のメソッドを見つけるためにプロセ
スにおいてロードされた全てのファイルを通して検索しなければならない。
【0009】 第2の明瞭な欠点は、各Javaクラスファイルがそのクラス、即ち、クラスが関
係するスーパークラスに関する情報のような、クラスを稼働するのに要求される
全てのデータのコピーを包含することに結びつく。このデータは、他のクラスフ
ァイルにしばしば複製され、その上、スペースを無駄に浪費する。このことは、
制限された容量のRAMを有するデバイスにおいて特に問題である。例えば、Ja
va1.1(特に、Java Development Kit 1.1又はJDK 1.1)では、簡単な「Hello Wo
rld(ハローワールド)」プログラムが、与えられたハンドヘルドデバイスでは 700キロバイト以上のランタイムメモリ・フットプリントを有することが分か
った。かかるハンドヘルドデバイスはまた、スクリーンを維持するために約30
0キロバイトのRAMを要し、簡単な「Hello World(ハローワールド)」プロ グラムよりもより複雑なプログラムがおそらくデバイスで少しも稼働しないこと
を意味する。
【0010】 第3に、関連するプログラムは、典型的なJavaランタイムシステムにおいて、
Javaクラスファイルがストレージにファイルされることをである。これは、RA
M又はリードオンリーメモリ(ROM)であってよい。Javaバーチャルマシーン
が実行のためにこれらのファイルを要求するとき、これらはRAMにロードされ
、分析され、その結果、結果として得られたデータが実行中にRAMにストアさ
れる。このことは、Javaプログラムの稼働中に、マシーンにストアされた実際に
2つのバージョンの必要なクラスファイルがあることを意味し、2つのバージョ
ンとは、ストレージ(RAM若しくはROM)にロードされず、分析されないJa
vaクラスファイルと、RAMにロードされ、解析されたJavaクラスファイルのこ
とである。メモリ制約デバイスに関しては、このことは厄介なことである。
【0011】 それ故、JavaバーチャルマシンによってランタイムでJavaクラスファイルをロ
ードし、分析することのこれらの欠点、短所を克服することを解決する必要があ
り、Javaプログラムは、Microsoft WindowsCEが稼働するハンドヘルドデバイス のようなメモリが制約され、より遅いプラットフォームで現実的に稼働させるこ
とを可能にさせるようにすることが必要である。
【0012】
【課題を解決するための手段】 上述の欠点、不利益及び問題が本発明により指摘され、以下の詳細な説明を読
み、勉強することにより理解することができるであろう。本発明は、マルチプル
Javaクラスファイルをランタイムイメージに結合することを記載する。Javaクラ
スファイルのランタイムイメージは、そのクラスファイルがJavaバーチャルマシ
ン用に予めロードされ、予め分析された状態にある。ランタイムイメージは、読
取専用メモリ(ROM)にストアされたDLLファイルであり、非冗長データを
包含するのが望ましい。
【0013】 ランタイムイメージは、Javaクラスファイルの与えられた訂正を予めロードし
、予め分析する個々のユーティリティによって生成されるのが望ましく、Javaバ
ーチャルマシンはランタイムでファイルをロードし、分析する必要がないが、そ
の代わり、ランタイムイメージ自身で信頼されることができ得る。望ましくは、
これは、Javaクラスファイルのバイトコードを大きなendianフォーマットから小
さなendianフォーマットに変換することを含み、また、ネイティブナンバーファ
ンクションデータ構造がそれに対してむいているインポートレコードを生成し、
より早いネイティブナンバーファンクション解決を可能にする。
【0014】 それ故、本発明は、従来技術で見いだされなかった利点を提供する。まず、Ja
vaクラスファイルがランタイムイメージで予めロードされ、予め分析されるので
、Javaバーチャルマシンがランタイムでそれらをロードし、分析しなければなら
ないことはないということは、Javaプログラムの実行がより高速に実行されると
いうことを意味する。例えば、簡単な「Hello World(ハローワールド)」プロ グラムを、約40メガヘルツで稼働するプロセッサを有するハンドヘルドデバイ
スで実行するのに1秒以下を要し、これと比較して、バーチャルマシンが必要な
クラスファイルを最初にロードし、分析しなければならないデバイスでは9分以
上要する。
【0015】 第2に、ロードされ、分析されたクラスファイルを単一のDLLファイルに結
合するとき、冗長データが除外されるのが望ましいので、メモリの不足がちなス
ペースを節約して使うことができる。例えば、Java 1.1.3(特に、Java Develop
ment Kit 1.1.3又はJDK 1.1.3)では、従来技術のランタイムでのクラスファイ ルのロード及び分析と比較して、ある例では、ランタイムイメージファイルのサ
イズを30パーセント低減させることを達成できることを見いだした。
【0016】 第3に、ランタイムイメージは、与えられたデバイス内で必要であるJavaクラ
スファイルのバージョンだけがある。更に、このバージョンだけが、ランダムア
クセスメモリ(RAM)ではなく、ROMにストアされるのが望ましい。従って
、従来技術の2つのバージョンのクラスファイルが存在する場合では、最初は、
ロードされておらず、分析されていない状態であり、次いで、ランタイムでロー
ドされ、分析された状態であり、しばしば、これらの2つのバージョンのクラス
ファイルは圧縮されてともにRAMに存在し、本発明下では、クラスファイルの
1つだけのバージョン(ロードされ、分析されたバージョン)があり、ROMに
あるのが望ましい。これは、不足がちなRAMを節約する。
【0017】 本発明は、デバイス、コンピュータ、コンピュータ読取可能媒体、及び、範囲
を変更するシステムを記載する。ここで記載された本発明の態様及び利点に加え
て、本発明の更なる態様及び利点を、図面を参照して、以下の詳細な説明を読む
ことにより明らかになるであろう。
【0018】
【発明の実施の形態】
本発明の例示的な実施形態の詳細な説明の記載では、発明を実施する特定の例
示的な実施形態を例示的に図示したこの書類の一部を形成する添付図面を参照す
る。これらの実施形態は当業者が実施することができるように十分詳細に記載さ
れており、他の実施形態を利用することができ、本発明の精神又は範囲から逸脱
することなく、論理的、機械的、電気的及び他の変更をすることができる。それ
ゆえ、以下の詳細な記載は、意味を限定するように解してはならず、本発明の範
囲は特許請求の範囲のみで定義される。
【0019】 詳細な説明は、4つのセクションに分けられる。第1のセクションは、本発明
の実施形態が実施されれうるハードウェア及び作動環境が記載されている。第2
のセクションでは、本発明の一つの実施形態のシステムレベルの記載を従来のシ
ステムと比較して示す。第3のセクションでは、本発明の実施形態に関する方法
を提供する。第4のセクションでは、詳細な説明のまとめを記載する。
【0020】 ハードウェア及び動作環境 図1に、本発明の実施形態が実施されうるハードウェア及び動作環境を示す。
図1の記載は、本発明が実施されうる適当なコンピュータハードウェア及び適当
な計算環境を簡単に、一般的に提供するようにしたものである。要求されていな
いけれども、本発明は、パーソナルコンピュータのようなコンピュータによって
実行されるプログラムモジュールのようなコンピュータ実行可能な命令の一般的
なコンテキストで記載される。一般的には、プログラムモジュールは、特定のタ
スクを実行し、特定のアブストラクトデータタイプを実施する、ルーチン、プロ
グラム、オブジェクト、コンポーネント、データ構造などを含む。
【0021】 更に、当業者は、本発明が、Microsoft WindowsCEが稼働するようなハンドヘ ルドデバイス、マルチプロセッサシステム、マイクロプロセッサベース又はプロ
グラマブル・コンシューマ・エレクトロニクス、ネットワークPC、ミニコンピ
ュータ、メインフレームコンピュータ、Microsoft WindowsNTのようなものが稼 働するPCを包含するたのコンピュータシステムで実施されうることを認識する
であろう。本発明はまた、タスクが、通信ネットワークを介してリンクされたリ
モートプロセッシングデバイスによって実行される分離された計算環境でも実施
される。分離された計算環境では、プログラムモジュールは、ローカル及びリモ
ートの両方のメモリストレージデバイスに配置されうる。
【0022】 本発明を実施するための図1のハードウェア及び作動環境は、演算ユニット2
1、システムメモリ22、システムメモリを含む種々のコンポーネントを演算ユ
ニット21に対して機能的に結合するシステムバス23を含むコンピュータ20
の形態の汎用的な計算デバイスを含む。一つだけ、又は、1つ以上の演算ユニッ
トがあってよく、コンピュータ20のプロセッサは、単一中央演算処理装置(C
PU)、若しくは、一般に並列処理環境と呼ばれる、複数の演算ユニットを有し
ている。コンピュータ20は、従来のコンピュータ、分離されたコンピュータ、
又は、他のタイプのコンピュータであってよく、本発明は限定されない。
【0023】 システムバス23は、メモリバス又はメモリコントローラ、物理バス、及び、
種々のバスアーキテクチャを使用するローカルバスを包含する。システムメモリ
はまた、単にメモリとも呼ばれ、読み取り専用メモリ(ROM)24及びランダ
ムアクセスメモリ(RAM)25を含む。起動中のようなコンピュータ20内の
エレメントの間で情報を転送するのを助ける基本的なルーチンを包含する基本的
な入力/出力システム(BIOS)26はROM24にストアされる。コンピュ
ータ20は更に、(図示しない)ハードディスクから読み込むため、及びハード
ディスクに書き込むためのハードディスクドライブ27と、リムーバブル磁気デ
ィスク29から読み出し、又は書き込むための磁気ディスクドライブ28と、C
D−ROM又は他の光学媒体のようなリムーバブル光ディスク31から読み出す
ため、又は書き込むための光ディスクドライブ30とを含む。
【0024】 ハードディスクドライブ27、磁気ディスクドライブ28、及び光ディスクド
ライブ30は、ハードディスクドライブインターフェース32、磁気ディスクド
ライブインターフェース33及び光ディスクドライブインターフェース34によ
ってそれぞれシステムバス23に接続される。ドライブおよびそれらに関するコ
ンピュータ読み取り可能媒体は、コンピュータ読み取り可能命令、データ構造、
プログラムモジュール、及び、コンピュータ20に関する他のデータの不揮発性
ストレージを提供する。当業者は、磁気カセット、フラッシュメモリカード、デ
ィジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ(
RAM)、リードオンリーメモリ(ROM)などのような、コンピュータによっ
てアクセス可能なデータをストアすることができるいかなるタイプのコンピュー
タ読み取り可能媒体を、例示的な作動環境で使用しうることを認識すべきである
【0025】 オペレーティングシステム35、1又はそれ以上のアプリケーションプログラ
ム36、他のプログラムモジュール37、及び、プログラムデータ38を含む多
数のプログラムモジュールが、ハードディスク29,光ディスク31,ROM2
4、又はRAM25にストアされうる。ユーザは、キーボード40及びポインテ
ィングデバイス42のような入力デバイスを介してパーソナルコンピュータ20
にコマンド及び情報を入力しうる。他の入力デバイス(図示せず)は、マイク、
ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ、スキャナのよ
うなものを含みうる。これらの及び他の入力デバイスは、システムバスに接続さ
れるシリアルポートインターフェース46を介して演算ユニット21にしばしば
接続されるが、パラレルポート、ゲームポート、又は、ユニバーサルシリアルバ
ス(USB)のような他のインターフェースによって接続されてもよい。モニタ
47又は他のタイプの表示装置はまた、ビデオアダプタ48のようなインターフ
ェースを介してシステムバス23に接続される。モニタに加え、パーソナルコン
ピュータは典型的には、スピーカ及びプリンタのような他の周辺出力デバイス(
図示せず)を含みうる。
【0026】 コンピュータ20は、リモートコンピュータ49のような1又はそれ以上のリ
モートコンピュータとの論理的な接続を使用したネットワーク環境で作動しても
良い。これらの論理的な接続は、コンピュータ20又は、コンピュータ20の一
部に接続された通信デバイスによって達成され、本発明は特定のタイプの通信デ
バイスに制限されない。メモリストレージデバイス50のみが図1に図示されて
いるけれども、リモートコンピュータ49は、他のコンピュータ、サーバ、ルー
タ、ネットワークPC、クライアント、ピア・デバイス、若しくは他の一般的な
ネットワークノードであってよく、典型的には、コンピュータ20に関して記載
された多くの又は全ての要素を含む。図1に示した論理的接続は、ローカルエリ
アネットワーク(LAN)51及びワイドエリアネットワーク(WAN)52j
を含む。かかるネットワーク環境は、ありふれた、オフィスネットワーク、企業
用広域コンピュータネットワーク、イントラネット、及びインターネットという
全てのタイプのネットワークである。
【0027】 LANネットワーク環境で使用するときは、コンピュータ20は通信デバイス
の一つのタイプであるネットワークインターフェース又はアダプタ53を介して
ローカルネットワーク51に接続される。WANネットワーク環境で使用すると
きは、コンピュータ20は典型的には、通信デバイスの一つのタイプであるモデ
ム54、又は、インターネットのようなワイドエリアネットワーク52にわたっ
て通信を確立するための他のいかなるタイプの通信デバイスを包含する。内蔵又
は外付けであってもよいモデム54は、シリアルポートインターフェース46を
介してシステムバス23に接続される。ネットワーク環境では、パーソナルコン
ピュータ20又はその一部に関して表したプログラムモジュールは、リモートメ
モリ記憶装置にストアされうる。示されたネットワーク接続は、例示的なもので
あり、コンピュータの間の通信リンクを確立するための他の手段及び通信デバイ
スであってもよい。
【0028】 本発明の実施形態が実施されうるハードウェア及び動作環境を記載してきた。
本発明の実施形態が実施されうるコンピュータは、在来のコンピュータ、分離さ
れたコンピュータ、又は、他のいかなるタイプのコンピュータであってよく、本
発明は制限されない。かかるコンピュータは、典型的には、そのプロセッサとし
て1またはそれ以上の演算ユニットと、メモリのようなコンピュータ読み取り可
能媒体を包含する。コンピュータはまた、ネットワークアダプタ又はモデムのよ
うな通信デバイスを包含し、それにより他のコンピュータと通信可能に接続する
ことができる。
【0029】 システムレベルの記載 従来のシステムのオペレーションと比較して、本発明の実施形態のオペレーシ
ョンのシステムレベルの記載を、図2(a)乃至2(b)を参照して示す。従来
技術として知られており、JavaバーチャルマシンがJavaクラスファイルをランダ
ムアクセスメモリ(RAM)内にロードし、分析するシステムのダイアグラムを
図2(a)に示し、本発明の一つの実施形態によって、Javaプログラムを稼働す
るとき、Javaバーチャルマシンによって信頼するために、Javaクラスファイルが
リードオンリーメモリ(ROM)のランタイムイメージ内に予め分析され、予め
ロードされるシステムのダイアグラムを図2(b)に示す。
【0030】 まず、従来技術による図2(a)を参照すると、ランタイムで、Javaバーチャ
ルマシン200はJavaクラスファイル202をRAM204にロードし、分析す
る。Javaクラスファイル202は、与えられたJavaプログラムの実行のために必
要なそれらの含むそれらのクラスファイルである。一般的には、Java 1.1及びそ
の後のバージョン(即ち、Java Development Kit 1.1又はJDK 1.1)のリリース により、かかるJavaクラスファイルの少なくとも約160から190のアップワ
ードが、「Hello World(ハローワールド)」プログラムのような簡単なプログ ラムさえ実行するのに要求されることが判断された。Javaクラスファイル202
は、(分析され、ロードされたJavaクラスファイルがストアされたRAM204
とは異なる)RAM、リードオンリーメモリ(ROM)、又は、ハードディスク
ドライブのような記憶装置のようなストレージにストアされる。
【0031】 Javaクラスファイルの構造は、従来の技術の項で全体的に記載した:かかるク
ラスファイルの構造及びフォーマットは従来技術で知られている。特に、各Java
クラスファイルは典型的には、.classサフィックス指示によって示され、バイト
コードによってコンパイルされる。各Javaファイルは、別々に転送され、Javaア
プレット又はアプリケーションに使用される全てのクラスがそれら自身の別々の
クラスファイルに属する。クラスファイルは一連の8バイトである。16及び3
2ビット値が、2又は4のそれらのバイトを読み、それらを一緒に結合すること
によって形成される。各クラスファイルは、マジック定数、メジャー及びマイナ
ーなバージョン情報、コンスタントプール、クラスに関する情報、クラスにおけ
るメソッド及びフィールドの各々に関する情報、及び、デバッギング情報を包含
する。コンスタントプールは、クラスに関する種々のコンスタント情報がストア
される仕方であり、ユニコードストリング、クラス又はインターフェース名、フ
ィールド又はメソッドに対するリファレンス、数値、又は、一定のストリング値
であってよい。Javaクラスファイルに関する更なる情報は、reference [name]、
1053〜1059ページに記載されており、リファレンスとしてここに組み入れる。
【0032】 Javaバーチャルマシン200は、前にJavaバイトコードにコンパイルされてい
るJavaプログラムを翻訳し、実行するために、Microsoft WindowsCEのようなオ ペレーティングシステムで稼働するネイティブプログラムである。Javaバーチャ
ルマシンはまた、Javaランタイムインタプリタとも呼ばれる。Javaプログラムの
ランタイムの実行では、Javaバーチャルマシン200は、Javaクラスファイル2
02をロードし、分析し、ロードされ、分析されたJavaクラスファイルをRAM
204にストアする。従来の技術の項で記載したように、かくして、Javaクラス
ファイルの従来技術の2つのバージョンが存在し、2つのバージョンとは、Java
クラスファイル202によって示されるようなオリジナルのJavaクラスファイル
と、RAM204にストアされた分析され、ロードされたバージョンである。Ja
vaクラスファイルのロード及び分析は従来技術で知られていた。Javaに関する情
報は、David Flanagan著「Java in a Nutshell: A Desktop Quick Reference」 (第2版、1997年)(ISBN 1-56592-262-X)にリファレンスとして記載され
ており、リファレンスとしてここに組み入れる。
【0033】 次いで、図2(b)を参照すると、本発明のある実施形態に関して、コンバー
タ250は、Javaクラスファイル252をファイル254にロードし、分析し、
次いで、ROMイメージャ258によってランタイムイメージ(好ましくは、D
LLファイル)としてROM256に好ましくは焼きつけられる。従って、Java
バーチャルマシン260は、いかなるJavaクラスファイル252をもロードし、
分析しなければならないわけではないが、その代わりに、ROM256にランタ
イムイメージとしてストアされたクラスファイルの分析され、ロードされたバー
ジョンを直ちに使用することができる。これは、RAM262が維持されること
を意味し、また、より少ないオーバーヘッドがランタイムで実行されるのに必要
なので、Javaプログラムがより早く実行することをも意味する。
【0034】 コンバータ250及びROMイメージャ258は通常は、コンピュータの一部
であり、コンピュータ化システム、即ちコンピュータより分離されたデバイス、
又は、コンピュータ化システム、即ちJavaバーチャルマシン260が稼働するデ
バイスである。例えば、Microsoft WindowsNTワークステーションは、コンバー タ250及びROMイメージャ258をそこで稼働することができ、コンバータ
250は(ワークステーションのハードディスクドライブのようなストレージに
ストアされるような)入力としてJavaクラスファイル252を使用し、結果とし
てのファイル254を出力し、次いで、ROM256に焼き付けるための入力と
してROMイメージャ258によって使用される。このROM256は次いで、
Javaバーチャルマシン260及びRAM262を包含するMicrosoft WindowsCE ハンドヘルドデバイスのようなデバイスに挿入するためのハードウェアカードに
セットされうる。
【0035】 Javaクラスファイル252は、前に記載したJavaクラスファイル202と同じ
ものであり、即ち、Javaクラスファイル252は、与えられたJavaプログラムの
実行のために必要なそれらを含むそれらのクラスファイルである。与えられたJa
vaプログラムに関する必要なJavaクラスファイルの全てが、Javaクラスファイル
252の一部ではないことに注意すべきであり、他のJavaクラスファイルが、図
2(a)に記載されたようなJavaバーチャルマシン260によってランタイムで
ストレージからRAM262にロードされ、分析されうる。しかしながら、与え
られたJavaプログラムに関する全ての必要なクラスファイルが、最適な実行有効
性によるJavaクラスファイル252の一部であるのが望ましい。
【0036】 コンバータ250は、単一のDLLファイルにクラスファイルの結合を提供す
るソフトウェアツール(即ち、コンピュータプログラム)であるのが望ましく、
ここでDLLファイルは従来技術で知られているポータブル実行可能(PE:po
rtable executable)フォーマットである。ツールは、包含するために個々のク ラスファイルの仕様を提供し(即ち、Javaクラスファイル252)、当業者が理
解できるように、特定のパスに沿って全ての独立したクラスファイルに関して検
索する。望ましくは、ネイティブコードDLLファイルはまた、ネイティブメソ
ッドに関して検索をするために特定され得る。
【0037】 コンバータ250は、従来技術で知られているようなJavaバーチャルマシンと
同じ方法でクラスファイルをロードし、分析する。しかしながら、当業者が理解
できるように、コンバータが特定のヒープにおける全ての関連したデータ構造を
割り当てというような例外があるのが望ましく、これらのデータ構造内の全ての
ポインタがトラックされる。更に、コンバータは、全てのストリングを単一のス
トリングテーブル内に配置し、ネイティブナンバーファンクションが特定のDL
Lファイルに適合されるのが好ましい(即ち、DLLファイルがネイティブナン
バーファンクションに関して検索され得るように特定され、あるものがDLLフ
ァイルに適合したとき、インポートレコードは、結果として生じるDLLファイ
ルに生成され、ネイティブナンバーファンクションデータ構造はこのレコードを
指し、ネイティブナンバーファンクションの特定の、高速な解決をすることがで
きる)。バイトコードはまた、大きなendianから小さなendianフォーマットにフ
リップされる。
【0038】 コンバータがあるセッションにおける数値クラスファイルを予めロードし、予
め分析するので、望ましくは、1つのクラスファイルよりも大きくなるまで信頼
されるデータの一つのコピーだけを包含することができ、その結果、DLLファ
イル254内には冗長データはない。例えば、2つのクラスファイルは、従来技
術で知られるような同じスーパークラスを参照し、その結果、このスーパークラ
スに関する完全な情報が各クラスファイルにある。コンバータはこの完全な情報
の1つのコピーのみを包含するのが望ましく、その結果各クラスは、スーパーク
ラスに関する同じ完全な情報を参照する。これは、従来技術を越える本発明の利
点であり、クラスファイルのロードをすることにより、他のクラスファイルから
の他の情報を備えて冗長であると否とをとわず、そこに包含された全ての情報を
ロードすることができる。
【0039】 PEフォーマットで結果として生じたDLLファイル254は、全てのクラス
ファイル252からのヒープを包含し、ネイティブナンバーファンクションは、
記載してきたようなインポートレコードとして参照する。当業者が理解できるよ
うに、これらのセクション内の全てのポインタは、適当なロードタイム・リロケ
ーションレコードを有する。ファイル254は、コンバータ250によって予め
ロードされ、予め分析されるように、Javaクラスファイル252のランタイムイ
メージを作るためにROM256(又は、たの不揮発性記憶装置)に焼き付けら
れるのが好ましい。ROMに焼き付けることは、従来技術で知られているROM
イメージャ258によって達成される。例えば、WindowsCE OAKツールである、t
ool romimageを利用することができる。DLLファイルがロードされるとき、R
OMイメージに対するポインタは、第2のコピーがもはやロードされないように
得られる。
【0040】 Javaバーチャルマシン260は、メモリのようなコンピュータ読み取り可能媒
体からプロセッサによって実行可能なソフトウェアであることが望ましい。従来
技術で知られているJavaバーチャルマシンは、コア・コマンド・ライン・アーギ
ュメントを受け入れる。このアーギュメントは、信頼された(即ち、安全な)コ
アクラスDLLファイルを名付け、jcls.dllをデフォルトとする。ランタイムで
は、関連したデータ構造に対するポインタを得るためにLoadLibrary call及びGe
tProcAddress callを行い、Javaバーチャルマシンに存在するデータ構造を備え るこれを統合する。従って、信頼されたコアクラスDLLファイルは、ROM2
56にストアされたJavaクラスファイル252のランタイムイメージであるのが
望ましい。新しいクラスがJavaプログラムによって要求されるので、コアクラス
DLLファイルにおけるクラスのリストは検索され、新しいクラスが見つかった
ならば、クラス・イニシャライザが実行される。これらのクラスは、初期化され
たときにマークされ、実行は維持する。このことにより、従来技術で生じたよう
な、ランタイムでのクラスファイルをロードし、分析するタイム消費プロシージ
ャを迂回する。新しいクラスが見つからなかったならば、次いで、クラスファイ
ルに関する通常の検索がファイルシステムで始まり、見つかったならば、クラス
は従来技術のようにロードされ、分析される。
【0041】 本発明の実施形態のオペレーションのシステムレベルの概観を従来技術と比較
して記載してきた。コンバータプログラムによってJavaクラスファイルを予めロ
ードし、予め分析することは、クラスファイルをロードし、分析することがJava
プログラムをより効率的に稼働させることができるように、ランタイムでJavaバ
ーチャルマシンによって生じなければならないことはないということを意味する
。更に、ROMにストアされたランタイムイメージ内にJavaクラスファイルを予
めロードし、予め分析することは、従来技術における(あるものはストレージに
、あるものはRAMにある)2つのバージョンとは反対に、Javaクラスファイルの たった一つだけのバージョンが存在するということを意味する。これは、重んじ
られて、Javaバーチャルマシンを有するデバイスのRAMと会話する。
【0042】 本発明の実施形態のメソッド 前のセクションでは、本発明の実施形態のオペレーションのシステムレベルの
記載を記述した。このセクションでは、コンバータが存在するような実施形態の
コンピュータによって実行されるメソッドを、一連のフローチャートを参照して
記載する。実行されるべきメソッドは、コンピュータ実行可能命令からなるコン
ピュータプログラムを構成する。フローチャートを参照することによりメソッド
を記述することにより、当業者は、適当なコンピュータ(コンピュータ読み取り
可能媒体からの命令を実行するコンピュータのプロセッサ)でメソッドを実行す
るための命令を含むプログラムを開発することができる。
【0043】 まず図3(a)を参照すると、本発明の実施形態によるコンピュータ化された
メソッドのフローチャートを示す。このメソッドは、少なくとも1つのJavaクラ
スファイルを、ROMのような不揮発性記憶装置にストアされたランタイムイメ
ージに予めロードし、予め分析するためにコンピュータのようなデバイスによっ
てなされるように要求されるステップ又は行為を含む。ステップ300では、ク
ラスファイルは、図2(b)と関係して記載したように予めロードされ、予め分
析され、それはまた図3(b)と関係して記載されうる。ステップ302では、
ランタイムイメージファイルが、図2(b)と関係して記載されたように、PE
フォーマットでのDLLであるのが望ましく、予めロードされ、予め分析された
クラスファイルを生成する。最後に、ステップ304では、ランタイムイメージ
、即ちDLLファイル、は図2(b)にも関連して記載したように、ROMのよ
うな不揮発性記憶装置に焼き付けられる。従って、コンピュータ化されたメソッ
ドは、クラスファイルを予めロードし、予め分析することと、ランタイムイメー
ジファイルを生成することと、ランタイムイメージファイルを不揮発性記憶装置
に焼き付けることという、主に3つのステップ又は行為を有する。
【0044】 次に図3(b)を参照すると、本発明の実施形態による他のコンピュータ化さ
れたメソッドのフローチャートを示す。このメソッドは、一つのJavaクラスファ
イルを予めロードし、予め分析するためのコンピュータのようなデバイスによっ
てなされうるように要求されたステップ又は行為を含む。即ち、図3(b)のメ
ソッドは、Javaクラスファイルの各々で、図3(a)のステップ300が実行さ
れるひとつのメソッドである。当業者は、図3(b)のメソッドが従来技術で知
られたJavaバーチャルマシンによって実行されるロード及び分析の方法論と実質
的に同じであるということを認識するであろう。従って、図3(b)のメソッド
の記載を、当業者が本発明を使用することができるように十分詳細に提供する。
【0045】 ステップ350では、クラスファイルからのクラスがロードされ、クラスがス
テップ352で分析される。このことは、コンスタントプールを分析すること、
メソッドを分析すること、フィールドを分析すること、インターフェースを分析
すること、クラスの属性を分析することを含む。クラスプールからのクラスリフ
ァレンスは、ステップ354でロードするクラスのリストに加えられる。次いで
、ステップ356では、クラスをロードすることは、クラスのリストが空になる
まで続けられる。最後に、ステップ358では、リロケーション情報がDLLフ
ァイルに書き込まれる(コンスタントプール内のいかなるエラーも修正すること
を含みうる)。
【0046】 各クラスファイルが図3(b)のメソッドによって処理されるので、以前に処
理されたクラスファイルにストアされているものを備えて冗長になっているクラ
スファイルで遭遇するデータは再びストアされない。むしろ、リファレンスは以
前にストアされたデータに作られ、結果として生じたランタイムイメージは非冗
長データだけを含む。更に、Javaクラスファイルは典型的には、記載してきたよ
うに、大きなendianフォーマットのデータを包含するので、図3(b)の予めロ
ードし、予め分析するプロセスは、大きなendianフォーマットのデータを小さな
endianフォーマットのデータに変換することである。
【0047】 本発明のひとつの実施形態によるメソッドを記載してきた。メソッドは、クラ
スファイルが、予めロードされ、予め分析され、ランタイムイメージにアセンブ
リされ、ROMにストアされることによるメソッドを含む。メソッドは、実際に
クラスファイルを予めロードし、予め分析するための本発明のひとつの実施形態
で必要なステップ又は行為を特定の図示した方法を含み、ランタイムでクラスフ
ァイルをロードするときに、Javaバーチャルマシンによって実行されるステップ
と実質的に等しい。
【0048】 まとめ マルチプルJavaクラスファイルをランタイムイメージに結合することを記載し
てきた。特定の実施形態をここでに図示し、記載してきたけれども、同じ目的を
達成するために計算されるどんな変形も、示した特定の実施形態と置換すること
ができうることは当業者にとって明らかであろう。この出願は、本発明のいなか
る翻案、変形をもカバーするものである。例えば、クラスファイルが、予めロー
ドされたDLLファイルの生成中に分析される間に、Javaバイトコードがまたネ
イティブコードにコンパイルされること、このネイティブコードがまたDLLフ
ァイルにストアされることなどである。これは、典型的なJavaバーチャルマシン
に処理されたジャストインタイム(JIT)翻訳と匹敵するが、それよりも、コ
ードを予め翻訳する効果を有し、ランタイムでJIT翻訳を処理した後に時間が
浪費されない。従って、本発明が特許請求の範囲及びその均等の範囲によっての
み限定されることは明白である。
【図面の簡単な説明】
【図1】 本発明の実施形態が実施されうるハードウェア及び動作環境のダイアグラムで
ある。
【図2(a)】 本発明の実施形態によるシステムを従来技術のシステムと比較して図示したダ
イヤグラムである。
【図2(b)】 本発明の実施形態によるシステムを従来技術のシステムと比較して図示したダ
イヤグラムである。
【図3(a)】 本発明の実施形態に関するメソッドのフローチャートである。
【図3(b)】 本発明の実施形態に関するメソッドのフローチャートである。
【手続補正書】特許協力条約第34条補正の翻訳文提出書
【提出日】平成11年12月6日(1999.12.6)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正内容】
【特許請求の範囲】
───────────────────────────────────────────────────── フロントページの続き (72)発明者 マークリー マイケル イー アメリカ合衆国 ワシントン州 98053 レッドモンド トゥーハンドレッドアンド セヴンティサード アベニュー ノースイ ースト 3014 Fターム(参考) 5B076 AB04 AB10 BA04 BA05

Claims (24)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータ化されたデバイスであって、 Javaバーチャルマシンと、 少なくとも1つのJavaクラスファイルがJavaバーチャルマシンに関して予めロ
    ードされ、予め分析された状態であるような、少なくとも1つのJavaクラスファ
    イルのランタイムイメージと、 を有することを特徴とする、コンピュータ化されたデバイス。
  2. 【請求項2】 Javaバーチャルマシンが、コンピュータ読み取り可能媒体からプロセッサによ
    って実行されるソフトウェアを有する、ことを特徴とする請求項1に記載のコン
    ピュータ化されたデバイス。
  3. 【請求項3】 ランタイムイメージが不揮発性記憶装置にストアされる、ことを特徴とする請
    求項1に記載のコンピュータ化されたデバイス。
  4. 【請求項4】 ランタイムイメージが読取専用メモリ(ROM)にストアされる、ことを特徴
    とする請求項1に記載のコンピュータ化されたデバイス。
  5. 【請求項5】 予めロードされた状態にある少なくとも1つのJavaクラスファイルがPEフォ
    ーマットであることを特徴とする請求項1に記載のコンピュータ化されたデバイ
    ス。
  6. 【請求項6】 少なくとも1つのJavaクラスファイルのランタイムイメージが非冗長データを
    包含する、ことを特徴とする請求項1に記載のコンピュータ化されたデバイス。
  7. 【請求項7】 ランタイムイメージが単一のDLLファイルを包含する、ことを特徴とする請
    求項1に記載のコンピュータ化されたデバイス。
  8. 【請求項8】 デバイスが、WindowsCEオペレーティングシステムコンパチブルである、こと を特徴とする請求項1に記載のコンピュータ化されたデバイス。
  9. 【請求項9】 プロセッサと、 該プロセッサによって実行可能なJavaバーチャルマシンと、 少なくとも1つのJavaクラスファイルのランタイムイメージをストアする不揮
    発性記憶装置と、を有し、 少なくとも1つのJavaクラスファイルがJavaバーチャルマシンに関して予めロ
    ードされ、予め分析された状態である、ことを特徴とするコンピュータ。
  10. 【請求項10】 更にコンピュータ読み取り可能媒体を有し、 Javaバーチャルマシンが媒体からプロセッサによって実行されるソフトウェア
    を包含する、ことを特徴とする請求項9に記載のコンピュータ。
  11. 【請求項11】 不揮発性記憶装置が読み取り専用メモリ(ROM)を包含する、ことを特徴と
    する請求項9に記載のコンピュータ。
  12. 【請求項12】 少なくとも1つのJavaクラスファイルがPEフォーマットである、ことを特徴
    とする請求項9に記載のコンピュータ。
  13. 【請求項13】 ランタイムイメージが単一のDLLファイルを包含する、ことを特徴とする請
    求項9に記載のコンピュータ。
  14. 【請求項14】 コンピュータがWindowsNTオペレーティングシステムコンパチブルである、こ とを特徴とする請求項9に記載のコンピュータ。
  15. 【請求項15】 1)少なくとも1つのJavaクラスファイルの各々に関して、各クラスファイルが
    クラスを有し、 a)クラスをロードし、 b)コンスタントプールを分析し、該プールは少なくとも1つのスーパークラス
    を有し、 c)各スーパークラスをロードし、 d)クラスから少なくとも1つのメソッドを分析し、 e)クラスから少なくとも1つの属性を分析し、 2)少なくとも1つのJavaクラスファイルの予めロードされ、予め分析されたラ
    ンタイムイメージをアセンブリする、 ステップを有するメソッドを適当に装備されたコンピュータで実行させることが
    できるコンピュータプログラムをストアするコンピュータ読取可能記録媒体。
  16. 【請求項16】 請求項15において、上記ステップe)の後に、 f)コンスタントプールでエラーを訂正する、 ステップを更に有することを特徴とする、請求項15に記載のコンピュータ読取
    可能記録媒体。
  17. 【請求項17】 予めロードされ、予め分析された少なくとも1つのJavaクラスファイルのラン
    タイムイメージは、非冗長データのみを有する、ことを特徴とする請求項15に
    記載のコンピュータ読取可能記録媒体。
  18. 【請求項18】 少なくとも1つのJavaクラスファイルが、大きなendianフォーマットのデータ
    を包含し、予めロードされ、予め分析されたランタイムイメージが小さなendian
    フォーマットのデータを包含する、ことを特徴とする請求項15に記載のコンピ
    ュータ読取可能記録媒体。
  19. 【請求項19】 3)予めロードされ、予め分析されたランタイムイメージをDLLファイルとし
    てストアする、 ステップを更に有する、ことを特徴とする請求項15に記載のコンピュータ読取
    可能記録媒体。
  20. 【請求項20】 3)予めロードされ、予め分析されたランタイムイメージをDLLファイルとし
    て読取専用メモリ(ROM)にストアする、 ステップを更に有する、ことを特徴とする請求項15に記載のコンピュータ読取
    可能記録媒体。
  21. 【請求項21】 ランタイムイメージがPEフォーマットである、ことを特徴とする請求項15
    に記載のコンピュータ読取可能記録媒体。
  22. 【請求項22】 Javaプログラムを稼働するための手段と、 少なくとも1つのJavaクラスファイルをストアするための手段と、 を有し、 少なくとも1つのJavaクラスファイルが予めロードされ、予め分析された状態
    である、ことを特徴とするコンピュータ化されたシステム。
  23. 【請求項23】 Javaプログラムを稼働するための手段がJavaバーチャルマシンであることを特
    徴とする請求項22に記載のコンピュータ化されたシステム。
  24. 【請求項24】 少なくともJavaクラスファイルが予めロードされ、予め分析された状態である
    、少なくとも1つのJavaクラスファイルをストアするための手段が、読取専用メ
    モリ(ROM)にストアされたDLLファイルの状態でランタイムイメージを包
    含することを特徴とする請求項22に記載のコンピュータ化されたシステム。
JP2000539407A 1997-12-16 1998-12-16 マルチプル・クラスファイルのランタイムイメージへの結合 Expired - Lifetime JP4372348B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/991,500 1997-12-16
US08/991,500 US6349344B1 (en) 1997-12-16 1997-12-16 Combining multiple java class files into a run-time image
PCT/US1998/026753 WO1999031576A1 (en) 1997-12-16 1998-12-16 Combining multiple class files into run-time image

Publications (3)

Publication Number Publication Date
JP2002508560A true JP2002508560A (ja) 2002-03-19
JP2002508560A5 JP2002508560A5 (ja) 2006-01-26
JP4372348B2 JP4372348B2 (ja) 2009-11-25

Family

ID=25537278

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000539407A Expired - Lifetime JP4372348B2 (ja) 1997-12-16 1998-12-16 マルチプル・クラスファイルのランタイムイメージへの結合

Country Status (7)

Country Link
US (1) US6349344B1 (ja)
EP (1) EP1040409B1 (ja)
JP (1) JP4372348B2 (ja)
AT (1) ATE237836T1 (ja)
CA (1) CA2306118C (ja)
DE (1) DE69813618T2 (ja)
WO (1) WO1999031576A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003107186A1 (ja) * 2002-06-18 2003-12-24 松下電器産業株式会社 プログラム実行処理端末装置、プログラム実行処理方法及びプログラム
JP2008502968A (ja) * 2004-06-15 2008-01-31 ジェムプリュス 中間オブジェクト指向言語を備えるソフトウェアをポータブル・デバイスにロードするための方法
JP2009099185A (ja) * 2007-10-16 2009-05-07 Dainippon Printing Co Ltd メモリをリフレッシュする機能を備えたストレージデバイス

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966702A (en) * 1997-10-31 1999-10-12 Sun Microsystems, Inc. Method and apparatus for pre-processing and packaging class files
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
JP2000122876A (ja) * 1998-10-16 2000-04-28 Matsushita Electric Ind Co Ltd 情報処理装置
US6880155B2 (en) 1999-02-02 2005-04-12 Sun Microsystems, Inc. Token-based linking
US7200842B1 (en) 1999-02-02 2007-04-03 Sun Microsystems, Inc. Object-oriented instruction set for resource-constrained devices
US6848111B1 (en) 1999-02-02 2005-01-25 Sun Microsystems, Inc. Zero overhead exception handling
CA2267477C (en) * 1999-03-30 2003-10-14 Object Technology International Inc. Packaging memory image files
US7017159B1 (en) * 1999-06-15 2006-03-21 Sun Microsystems, Inc. Smart bookmarks for small footprint device applications
US6584612B1 (en) * 1999-07-15 2003-06-24 International Business Machines Corporation Transparent loading of resources from read-only memory for an application program
GB9920676D0 (en) * 1999-09-01 1999-11-03 Tao Group Ltd Translating and executing object-oriented computer programs
US6829761B1 (en) * 1999-10-21 2004-12-07 Oracle International Corporation Method and apparatus for managing shared memory in a run-time environment
GB9925510D0 (en) * 1999-10-29 1999-12-29 Ibm Incorporating native code in java archive files
US7158993B1 (en) 1999-11-12 2007-01-02 Sun Microsystems, Inc. API representation enabling submerged hierarchy
KR100319755B1 (ko) * 1999-12-02 2002-01-05 오길록 내장형 자바가상머신을 위한 바이트코드 압축 방법
US20010042241A1 (en) * 2000-01-21 2001-11-15 Fujitsu Limited Apparatus and method for executing program using just-in time-compiler system
US7032216B1 (en) * 2000-02-25 2006-04-18 Oracle International Corporation Native compilation and safe deployment of virtual machine code
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 インタプリタ型言語によるプログラムの実行方法およびその方法を用いた情報処理装置
US6986132B1 (en) 2000-04-28 2006-01-10 Sun Microsytems, Inc. Remote incremental program binary compatibility verification using API definitions
US6651186B1 (en) * 2000-04-28 2003-11-18 Sun Microsystems, Inc. Remote incremental program verification using API definitions
US6883163B1 (en) 2000-04-28 2005-04-19 Sun Microsystems, Inc. Populating resource-constrained devices with content verified using API definitions
US6978448B1 (en) * 2000-06-12 2005-12-20 Sun Microsystems, Inc. Method and apparatus for rewriting bytecodes to minimize runtime checks
US6918106B1 (en) * 2000-07-31 2005-07-12 Sun Microsystems, Inc. Method and apparatus for collocating dynamically loaded program files
US6981245B1 (en) 2000-09-14 2005-12-27 Sun Microsystems, Inc. Populating binary compatible resource-constrained devices with content verified using API definitions
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
US7506175B2 (en) * 2000-11-06 2009-03-17 International Business Machines Corporation File language verification
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
US7020874B2 (en) 2001-03-26 2006-03-28 Sun Microsystems, Inc. Techniques for loading class files into virtual machines
US7096466B2 (en) 2001-03-26 2006-08-22 Sun Microsystems, Inc. Loading attribute for partial loading of class files into virtual machines
US7543288B2 (en) 2001-03-27 2009-06-02 Sun Microsystems, Inc. Reduced instruction set for Java virtual machines
US6959430B2 (en) * 2001-05-09 2005-10-25 Sun Microsystems, Inc. Specialized heaps for creation of objects in object-oriented environments
US7389515B1 (en) 2001-05-21 2008-06-17 Microsoft Corporation Application deflation system and method
US7243346B1 (en) * 2001-05-21 2007-07-10 Microsoft Corporation Customized library management system
CN100337198C (zh) * 2001-05-30 2007-09-12 捷讯研究有限公司 一种移动通信设备应用程序处理系统
US6986148B2 (en) * 2001-07-17 2006-01-10 Appforge, Inc. Methods and systems for providing platform-independent shared software components for mobile devices
US7228533B2 (en) 2001-08-24 2007-06-05 Sun Microsystems, Inc. Frameworks for generation of Java macro instructions for performing programming loops
US6988261B2 (en) 2001-08-24 2006-01-17 Sun Microsystems, Inc. Frameworks for generation of Java macro instructions in Java computing environments
US7058934B2 (en) 2001-08-24 2006-06-06 Sun Microsystems, Inc. Frameworks for generation of Java macro instructions for instantiating Java objects
US7039904B2 (en) 2001-08-24 2006-05-02 Sun Microsystems, Inc. Frameworks for generation of Java macro instructions for storing values into local variables
GB0125176D0 (en) * 2001-10-19 2001-12-12 Koninkl Philips Electronics Nv A method of compiling bytecode to native code
NL1019876C2 (nl) * 2002-01-31 2003-08-04 Chess Embedded Technology B V Systeem en werkwijze voor het laden van een programmacode in een inrichting alsmede een werkwijze voor het voeden van een programmacode aan een inrichting.
US7010783B2 (en) * 2002-03-18 2006-03-07 Sun Microsystems, Inc. Method and apparatus for deployment of high integrity software using reduced dynamic memory allocation
US6912633B2 (en) * 2002-03-18 2005-06-28 Sun Microsystems, Inc. Enhanced memory management for portable devices
US7181737B2 (en) * 2002-03-18 2007-02-20 Sun Microsystems, Inc. Method and apparatus for deployment of high integrity software using static procedure return addresses
US6996802B2 (en) * 2002-03-18 2006-02-07 Sun Microsystems, Inc. Method and apparatus for deployment of high integrity software using initialization order and calling order constraints
US6947955B2 (en) * 2002-09-23 2005-09-20 International Business Machines Corporation Run-time augmentation of object code to facilitate object data caching in an application server
US7051323B2 (en) * 2002-10-08 2006-05-23 Sun Microsystems, Inc. Method and apparatus for initializing romized system classes at virtual machine build time
US7055145B2 (en) * 2002-10-30 2006-05-30 Intel Corporation Dynamic management of execute in place applications
KR100493893B1 (ko) * 2003-02-07 2005-06-10 삼성전자주식회사 자바 프로그램에서 클래스 로딩 과정을 단축시키는 시스템및 방법
US7478408B2 (en) * 2003-04-04 2009-01-13 Sesma Systems, Inc. System and method for accessing objects in a platform dependent environment from a platform independent environment
US7490332B2 (en) * 2003-04-04 2009-02-10 Sesma Systems, Inc. System and method for accessing ActiveX objects in a platform dependent environment from objects in a platform independent environment
WO2004095266A2 (en) * 2003-04-24 2004-11-04 International Business Machines Corporation Executable file creation
CA2638965A1 (en) * 2003-05-15 2004-11-15 Ibm Canada Limited - Ibm Canada Limitee Accessing a platform independent input method editor from an underlying operating system
KR100643268B1 (ko) * 2004-01-17 2006-11-10 삼성전자주식회사 자바 가상 머신의 성능을 향상시키는 방법 및 상기 방법에의해 동작되는 시스템
US7555746B2 (en) * 2004-12-09 2009-06-30 Sap Ag System and method for registering native libraries with non-native enterprise program code
US7593930B2 (en) * 2004-12-14 2009-09-22 Sap Ag Fast channel architecture
US7580915B2 (en) * 2004-12-14 2009-08-25 Sap Ag Socket-like communication API for C
US7600217B2 (en) * 2004-12-14 2009-10-06 Sap Ag Socket-like communication API for Java
US7552153B2 (en) 2004-12-28 2009-06-23 Sap Ag Virtual machine monitoring using shared memory
KR100749664B1 (ko) 2005-01-03 2007-08-14 에스케이 텔레콤주식회사 클래스 파일 롬 이미지화 방법 및 그 롬 이미지화된클래스 파일 실행 방법
US20060184937A1 (en) * 2005-02-11 2006-08-17 Timothy Abels System and method for centralized software management in virtual machines
US8250559B2 (en) * 2006-04-12 2012-08-21 Oracle America, Inc. Supporting per-program classpaths with class sharing in a multi-tasking virtual machine
US9183011B2 (en) * 2006-10-31 2015-11-10 Oracle America Inc. Method and system for runtime environment emulation
CN101339511B (zh) * 2007-07-02 2011-06-15 国际商业机器公司 用于监控和自适应地预载入关键动态连接库的方法和系统
US8732236B2 (en) * 2008-12-05 2014-05-20 Social Communications Company Managing network communications between network nodes and stream transport protocol
US8352509B2 (en) * 2007-12-19 2013-01-08 International Business Machines Corporation Methods, systems, and computer program products for accessing a multi-format data object
US8589788B2 (en) * 2007-12-19 2013-11-19 International Business Machines Corporation Methods, systems, and computer program products for automatic parsing of markup language documents
US8813041B2 (en) * 2008-02-14 2014-08-19 Yahoo! Inc. Efficient compression of applications
KR20130010911A (ko) * 2008-12-05 2013-01-29 소우셜 커뮤니케이션즈 컴퍼니 실시간 커널
US9069851B2 (en) 2009-01-15 2015-06-30 Social Communications Company Client application integrating web browsing and network data stream processing for realtime communications
KR101249739B1 (ko) * 2010-07-13 2013-04-03 주식회사 인프라웨어테크놀러지 달빅 가상머신이 탑재된 단말기에서 자바 클래스 로딩 방법, 그리고 이를 수행하는 프로그램을 기록한 컴퓨터로 판독가능한 기록매체
CN107193629A (zh) * 2017-04-07 2017-09-22 上海交通大学 基于非易失性内存与Java虚拟机的新型数据管理方法
US11809839B2 (en) 2022-01-18 2023-11-07 Robert Lyden Computer language and code for application development and electronic and optical communication

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5748964A (en) * 1994-12-20 1998-05-05 Sun Microsystems, Inc. Bytecode program interpreter apparatus and method with pre-verification of data type restrictions
US5734910A (en) * 1995-12-22 1998-03-31 International Business Machines Corporation Integrating multi-modal synchronous interrupt handlers for computer system
US5815718A (en) * 1996-05-30 1998-09-29 Sun Microsystems, Inc. Method and system for loading classes in read-only memory
US5892904A (en) * 1996-12-06 1999-04-06 Microsoft Corporation Code certification for network transmission
US6112304A (en) * 1997-08-27 2000-08-29 Zipsoft, Inc. Distributed computing architecture
US5966702A (en) * 1997-10-31 1999-10-12 Sun Microsystems, Inc. Method and apparatus for pre-processing and packaging class files

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003107186A1 (ja) * 2002-06-18 2003-12-24 松下電器産業株式会社 プログラム実行処理端末装置、プログラム実行処理方法及びプログラム
US7506323B2 (en) 2002-06-18 2009-03-17 Panasonic Corporation Program execution processing terminal device, program execution processing method, and program
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
JP2009099185A (ja) * 2007-10-16 2009-05-07 Dainippon Printing Co Ltd メモリをリフレッシュする機能を備えたストレージデバイス

Also Published As

Publication number Publication date
WO1999031576A1 (en) 1999-06-24
EP1040409A1 (en) 2000-10-04
DE69813618T2 (de) 2003-10-23
DE69813618D1 (de) 2003-05-22
CA2306118A1 (en) 1999-06-24
JP4372348B2 (ja) 2009-11-25
ATE237836T1 (de) 2003-05-15
US6349344B1 (en) 2002-02-19
CA2306118C (en) 2009-09-01
EP1040409B1 (en) 2003-04-16

Similar Documents

Publication Publication Date Title
JP2002508560A (ja) マルチプル・クラスファイルのランタイムイメージへの結合
US7380242B2 (en) Compiler and software product for compiling intermediate language bytecodes into Java bytecodes
EP1486870B1 (en) Systems and Methods for Employing Tagged Dataypes in a Dynamic Runtime Environment
US6381737B1 (en) Automatic adapter/stub generator
CN1134731C (zh) 在计算机系统中编译指令的方法
US7263689B1 (en) Application program interface for dynamic instrumentation of a heterogeneous program in a distributed environment
US6003095A (en) Apparatus and method for demand loading a dynamic link library
JP4562918B2 (ja) インタプリティブ・ランタイム環境のためのコンパイル・プログラムの生成
US5870587A (en) Information-handling system, method, and article of manufacture including a mechanism for providing an improved application binary interface
US8438468B2 (en) Annotation management
US20040003377A1 (en) Converting byte code instructions to a new instruction set
US6314445B1 (en) Native function calling
US7512938B2 (en) Typed intermediate representation for object-oriented languages
US7020874B2 (en) Techniques for loading class files into virtual machines
US20040083467A1 (en) System and method for executing intermediate code
US6901591B1 (en) Frameworks for invoking methods in virtual machines
US6996813B1 (en) Frameworks for loading and execution of object-based programs
EP1481320B1 (en) Two tier clusters for representation of objects in java programming environments
US7181724B2 (en) Representation of Java® data types in virtual machines
Wille Presenting C
US6978456B1 (en) Methods and apparatus for numeric constant value inlining in virtual machines
EP1310866A2 (en) The representation of Java data types in a virtual machine
Almajed et al. Binary transformation of applications to run on bare PCs
Powell et al. C# and the. NET framework: the C++ perspective
Orr Application of meta-protocols to improve OS services

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051128

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070806

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071106

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080916

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081216

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: 20090806

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090902

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120911

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: 20130911

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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