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

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

Info

Publication number
JP4372348B2
JP4372348B2 JP2000539407A JP2000539407A JP4372348B2 JP 4372348 B2 JP4372348 B2 JP 4372348B2 JP 2000539407 A JP2000539407 A JP 2000539407A JP 2000539407 A JP2000539407 A JP 2000539407A JP 4372348 B2 JP4372348 B2 JP 4372348B2
Authority
JP
Japan
Prior art keywords
java
class
analyzed
loaded
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.)
Expired - Lifetime
Application number
JP2000539407A
Other languages
English (en)
Other versions
JP2002508560A5 (ja
JP2002508560A (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=JP4372348(B2) "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

Images

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)

Description

【0001】
【発明の属する技術分野】
本発明は、全体的にJavaクラスファイルに関し、特に係るファイルのランタイムイメージへの結合に関する。
【0002】
【従来の技術】
Javaは、比較的新しいオブジェクト指向プログラミング言語であり、多くのプログラマの興味の対象となった。観念的には、Javaはニュートラルなアーキテクチャであり、ポータブルな言語であり、プログラムのあるバージョンでは、修正なしでいかなるプラットフォームでも稼働するという評判である、即ち、Microsoft Windowsオペレーティングシステムのバージョンが稼働するコンピュータ、Appli MacOSオペレーティングシステムのバージョンが稼働するコンピュータ、UNIXオペレーティングシステムのバージョンが稼働すコンピュータなどでは、同じバージョンのJavaプログラムを全て稼働させることが可能である。即ち、その称するところでは、Java言語の仕様の「インプリメンテーション従属(implementation-dependent)」態様はない。
【0003】
しかしながら、実際には、Javaで書かれたプログラムは、固有の制限及び与えられたプラットフォームの特殊事情のために、異なるプラットフォームの間の差を斟酌するような修正なしのプラットフォームでは現実的には稼働しない。例えば、Microsoft WindowsCEは、ハンドヘルドPCから特定の産業制御器及びカスタマ電子デバイスまで、非常に広範囲に埋め込まれた製品に使用されており、コンパクトであり、有用であり、拡張可能なオペレーティングシステムである。Microsoft WindowsCEを利用する多くのデバイスは、デバイスのコストを低くおさえ、寸法を小さくし、電力の使用を有効にするために、1メガバイトのような比較的小さい容量のランダムアクセスメモリ(RAM)を必要とする傾向がある。更に、Microsoft WindowsCEを利用するように設計されたデバイスは典型的には、Microsoft WindowsNTのようなより強力なオペレーティングシステムを稼働させるように設計されたコンピュータに典型的にみられるようなものと比べて、強力でないプロセッサを有する。
【0004】
しかしながら、Javaの特徴は、Microsoft WindowsCEのような環境において、Javaで書かれたプログラムの稼働と必ずしも矛盾しない。Javaはコンパイル言語及びインタプリタ言語の両方の側面を持つ。Javaソースコードは、Javaバイトコード又はJ-codeと呼ばれる、より通常のマイクロプロセッサマシンコードのような、簡単なバイナリ命令に変化する。しかしながら、C又はC++ソースコードは、特定のプロセッサに関するネイティブな命令に精製されるのに対して、Javaソースコードは、Javaバーチャルマシンとして知られる命令であるユニバーサルフォーマットにコンパイルされる。
【0005】
従って、Javaバーチャルマシンは、Javaバイトコードを翻訳し、実行するためのオペレーティングシステム内で稼働するネイティブプログラムである。Javaコードの基本的なユニットは、クラスである。他のオブジェクト指向言語におけるように、クラスは、実行可能コード及びデータを保持するアプリケーションコンポーネントである。コンパイルされたJavaクラスは、Javaバイトコード及び他のクラス情報を包含するユニバーサルバイナリフォーマットに分離される。クラスは、分離されて維持され、ファイルにストアされ、ローカルシステム又はネットワークサーバにアーカイブする。典型的には、クラスは、それらがアプリケーションによって必要とされるならば、ロードされ、ランタイムで動的に分析(parse)される。
【0006】
言い換えれば、Javaは、ランタイムシステムのソフトウエアインプリメンテーションが、バイトコードをオンザフライでネイティブマシンコードにコンパイルすることによってそれらの性能を最適化することができるように設計されている。クラスファイルは、ランタイムで「ちょうどそのとき(just in time)」にコンパイルされるように、ロードされ、分析される。従って、JavaプログラムがJavaバーチャルマシンによって稼働されるとき、プログラムの稼働の前に最初に存在するバイトコードバージョンと、プログラムがJavaバーチャルマシンで最初に稼働するとき、ロードされ分析されるバージョンとの2つのバージョンの必要なクラスファイルが最終的にある。
【0007】
有効にかつコスト的に設計されたMicrosoft WindowsCEプラットフォームのようなプラットフォームのコンテキストにおけるJavaプログラミング言語のこの設計に対しては種々の不利な点があり、従って、例えば、Microsoft WindowsNTが稼働するデスクトップコンピュータよりも遅いプロセッサを有し、同じようなメモリを搭載できないという点が不利である。まず、典型的なJavaプログラムは、多くのクラスファイルを使用し、これらのクラスファイルをランタイムでロードし、分析するのに、より非力なプロセッサで長い時間を要する。例えば、簡単な「Hello World(ハローワールド)」プログラム、即ち、スクリーンに「Hollo World」という文字を表示させるプログラム、を稼働させるのに、ランタイムでクラスファイルの最初のロード及び分析のために、約40メガヘルツで稼働するプロセッサを有するハンドヘルドデバイスで実行するのに9分以上要する。
【0008】
この最初のロード及び分析のある態様は、大きなendianフォーマットから小さなendianフォーマットまでJavaクラスファイルのバイトコードの翻訳をしばしば行うことである。即ち、Javaクラスファイルのバイトコードは、バイトが最下位から最上位にオーダされるような(即ち、0,1,2,3)大きなendianフォーマットであるのに対して、多くのプラットフォームでは、小さなendianフォーマットが使用され、そこではバイトは最上位から最下位にオーダされる(即ち、3,2,1,0)。この最初のロード及び分析の別の態様は、Javaクラスファイルフォーマットが、ネイティブナンバーファンクションの位置を指定しないことであり、その結果、バーチャルマシンは、所望のメソッドを見つけるためにプロセスにおいてロードされた全てのファイルを通して検索しなければならない。
【0009】
第2の明瞭な欠点は、各Javaクラスファイルがそのクラス、即ち、クラスが関係するスーパークラスに関する情報のような、クラスを稼働するのに要求される全てのデータのコピーを包含することに結びつく。このデータは、他のクラスファイルにしばしば複製され、その上、スペースを無駄に浪費する。このことは、制限された容量のRAMを有するデバイスにおいて特に問題である。例えば、Java1.1(特に、Java Development Kit 1.1又はJDK 1.1)では、簡単な「Hello World(ハローワールド)」プログラムが、与えられたハンドヘルドデバイスでは700キロバイト以上のランタイムメモリ・フットプリントを有することが分かった。かかるハンドヘルドデバイスはまた、スクリーンを維持するために約300キロバイトのRAMを要し、簡単な「Hello World(ハローワールド)」プログラムよりもより複雑なプログラムがおそらくデバイスで少しも稼働しないことを意味する。
【0010】
第3に、関連するプログラムは、典型的なJavaランタイムシステムにおいて、Javaクラスファイルがストレージにファイルされることをである。これは、RAM又はリードオンリーメモリ(ROM)であってよい。Javaバーチャルマシーンが実行のためにこれらのファイルを要求するとき、これらはRAMにロードされ、分析され、その結果、結果として得られたデータが実行中にRAMにストアされる。このことは、Javaプログラムの稼働中に、マシーンにストアされた実際に2つのバージョンの必要なクラスファイルがあることを意味し、2つのバージョンとは、ストレージ(RAM若しくはROM)にロードされず、分析されないJavaクラスファイルと、RAMにロードされ、解析されたJavaクラスファイルのことである。メモリ制約デバイスに関しては、このことは厄介なことである。
【0011】
それ故、JavaバーチャルマシンによってランタイムでJavaクラスファイルをロードし、分析することのこれらの欠点、短所を克服することを解決する必要があり、Javaプログラムは、Microsoft WindowsCEが稼働するハンドヘルドデバイスのようなメモリが制約され、より遅いプラットフォームで現実的に稼働させることを可能にさせるようにすることが必要である。
【0012】
【課題を解決するための手段】
上述の欠点、不利益及び問題が本発明により指摘され、以下の詳細な説明を読み、勉強することにより理解することができるであろう。本発明は、マルチプルJavaクラスファイルをランタイムイメージに結合することを記載する。Javaクラスファイルのランタイムイメージは、そのクラスファイルがJavaバーチャルマシン用に予めロードされ、予め分析された状態にある。ランタイムイメージは、読取専用メモリ(ROM)にストアされたDLLファイルであり、非冗長データを包含するのが望ましい。
【0013】
ランタイムイメージは、Javaクラスファイルの与えられた訂正を予めロードし、予め分析する個々のユーティリティによって生成されるのが望ましく、Javaバーチャルマシンはランタイムでファイルをロードし、分析する必要がないが、その代わり、ランタイムイメージ自身で信頼されることができ得る。望ましくは、これは、Javaクラスファイルのバイトコードを大きなendianフォーマットから小さなendianフォーマットに変換することを含み、また、ネイティブナンバーファンクションデータ構造がそれに対してむいているインポートレコードを生成し、より早いネイティブナンバーファンクション解決を可能にする。
【0014】
それ故、本発明は、従来技術で見いだされなかった利点を提供する。まず、Javaクラスファイルがランタイムイメージで予めロードされ、予め分析されるので、Javaバーチャルマシンがランタイムでそれらをロードし、分析しなければならないことはないということは、Javaプログラムの実行がより高速に実行されるということを意味する。例えば、簡単な「Hello World(ハローワールド)」プログラムを、約40メガヘルツで稼働するプロセッサを有するハンドヘルドデバイスで実行するのに1秒以下を要し、これと比較して、バーチャルマシンが必要なクラスファイルを最初にロードし、分析しなければならないデバイスでは9分以上要する。
【0015】
第2に、ロードされ、分析されたクラスファイルを単一のDLLファイルに結合するとき、冗長データが除外されるのが望ましいので、メモリの不足がちなスペースを節約して使うことができる。例えば、Java 1.1.3(特に、Java Development 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のハードウェア及び作動環境は、演算ユニット21、システムメモリ22、システムメモリを含む種々のコンポーネントを演算ユニット21に対して機能的に結合するシステムバス23を含むコンピュータ20の形態の汎用的な計算デバイスを含む。一つだけ、又は、1つ以上の演算ユニットがあってよく、コンピュータ20のプロセッサは、単一中央演算処理装置(CPU)、若しくは、一般に並列処理環境と呼ばれる、複数の演算ユニットを有している。コンピュータ20は、従来のコンピュータ、分離されたコンピュータ、又は、他のタイプのコンピュータであってよく、本発明は限定されない。
【0023】
システムバス23は、メモリバス又はメモリコントローラ、物理バス、及び、種々のバスアーキテクチャを使用するローカルバスを包含する。システムメモリはまた、単にメモリとも呼ばれ、読み取り専用メモリ(ROM)24及びランダムアクセスメモリ(RAM)25を含む。起動中のようなコンピュータ20内のエレメントの間で情報を転送するのを助ける基本的なルーチンを包含する基本的な入力/出力システム(BIOS)26はROM24にストアされる。コンピュータ20は更に、(図示しない)ハードディスクから読み込むため、及びハードディスクに書き込むためのハードディスクドライブ27と、リムーバブル磁気ディスク29から読み出し、又は書き込むための磁気ディスクドライブ28と、CD−ROM又は他の光学媒体のようなリムーバブル光ディスク31から読み出すため、又は書き込むための光ディスクドライブ30とを含む。
【0024】
ハードディスクドライブ27、磁気ディスクドライブ28、及び光ディスクドライブ30は、ハードディスクドライブインターフェース32、磁気ディスクドライブインターフェース33及び光ディスクドライブインターフェース34によってそれぞれシステムバス23に接続される。ドライブおよびそれらに関するコンピュータ読み取り可能媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、及び、コンピュータ20に関する他のデータの不揮発性ストレージを提供する。当業者は、磁気カセット、フラッシュメモリカード、ディジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)などのような、コンピュータによってアクセス可能なデータをストアすることができるいかなるタイプのコンピュータ読み取り可能媒体を、例示的な作動環境で使用しうることを認識すべきである。
【0025】
オペレーティングシステム35、1又はそれ以上のアプリケーションプログラム36、他のプログラムモジュール37、及び、プログラムデータ38を含む多数のプログラムモジュールが、ハードディスク29,光ディスク31,ROM24、又は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及び32ビット値が、2又は4のそれらのバイトを読み、それらを一緒に結合することによって形成される。各クラスファイルは、マジック定数、メジャー及びマイナーなバージョン情報、コンスタントプール、クラスに関する情報、クラスにおけるメソッド及びフィールドの各々に関する情報、及び、デバッギング情報を包含する。コンスタントプールは、クラスに関する種々のコンスタント情報がストアされる仕方であり、ユニコードストリング、クラス又はインターフェース名、フィールド又はメソッドに対するリファレンス、数値、又は、一定のストリング値であってよい。Javaクラスファイルに関する更なる情報は、reference [name]、1053〜1059ページに記載されており、リファレンスとしてここに組み入れる。
【0032】
Javaバーチャルマシン200は、前にJavaバイトコードにコンパイルされているJavaプログラムを翻訳し、実行するために、Microsoft WindowsCEのようなオペレーティングシステムで稼働するネイティブプログラムである。Javaバーチャルマシンはまた、Javaランタイムインタプリタとも呼ばれる。Javaプログラムのランタイムの実行では、Javaバーチャルマシン200は、Javaクラスファイル202をロードし、分析し、ロードされ、分析されたJavaクラスファイルをRAM204にストアする。従来の技術の項で記載したように、かくして、Javaクラスファイルの従来技術の2つのバージョンが存在し、2つのバージョンとは、Javaクラスファイル202によって示されるようなオリジナルのJavaクラスファイルと、RAM204にストアされた分析され、ロードされたバージョンである。Javaクラスファイルのロード及び分析は従来技術で知られていた。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によってランタイムイメージ(好ましくは、DLLファイル)として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プログラムの実行のために必要なそれらを含むそれらのクラスファイルである。与えられたJavaプログラムに関する必要なJavaクラスファイルの全てが、Javaクラスファイル252の一部ではないことに注意すべきであり、他のJavaクラスファイルが、図2(a)に記載されたようなJavaバーチャルマシン260によってランタイムでストレージからRAM262にロードされ、分析されうる。しかしながら、与えられたJavaプログラムに関する全ての必要なクラスファイルが、最適な実行有効性によるJavaクラスファイル252の一部であるのが望ましい。
【0036】
コンバータ250は、単一のDLLファイルにクラスファイルの結合を提供するソフトウェアツール(即ち、コンピュータプログラム)であるのが望ましく、ここでDLLファイルは従来技術で知られているポータブル実行可能(PE:portable executable)フォーマットである。ツールは、包含するために個々のクラスファイルの仕様を提供し(即ち、Javaクラスファイル252)、当業者が理解できるように、特定のパスに沿って全ての独立したクラスファイルに関して検索する。望ましくは、ネイティブコードDLLファイルはまた、ネイティブメソッドに関して検索をするために特定され得る。
【0037】
コンバータ250は、従来技術で知られているようなJavaバーチャルマシンと同じ方法でクラスファイルをロードし、分析する。しかしながら、当業者が理解できるように、コンバータが特定のヒープにおける全ての関連したデータ構造を割り当てというような例外があるのが望ましく、これらのデータ構造内の全てのポインタがトラックされる。更に、コンバータは、全てのストリングを単一のストリングテーブル内に配置し、ネイティブナンバーファンクションが特定のDLLファイルに適合されるのが好ましい(即ち、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ツールである、tool romimageを利用することができる。DLLファイルがロードされるとき、ROMイメージに対するポインタは、第2のコピーがもはやロードされないように得られる。
【0040】
Javaバーチャルマシン260は、メモリのようなコンピュータ読み取り可能媒体からプロセッサによって実行可能なソフトウェアであることが望ましい。従来技術で知られているJavaバーチャルマシンは、コア・コマンド・ライン・アーギュメントを受け入れる。このアーギュメントは、信頼された(即ち、安全な)コアクラスDLLファイルを名付け、jcls.dllをデフォルトとする。ランタイムでは、関連したデータ構造に対するポインタを得るためにLoadLibrary call及びGetProcAddress callを行い、Javaバーチャルマシンに存在するデータ構造を備えるこれを統合する。従って、信頼されたコアクラスDLLファイルは、ROM256にストアされた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)】 本発明の実施形態に関するメソッドのフローチャートである。

Claims (18)

  1. 1又はそれ以上のJavaクラスに対するリファレンスを有するJavaアプリケーションを実行するための実行手段(21,260)を備えたコンピュータ装置であって、
    予めロードされ且つ予め分析された複数のJavaクラスのライブラリを備えるランタイムイメージ(256)を記憶する記憶手段(304)を有し、前記予めロードされ且つ予め分析された複数のJavaクラスにおける各Javaクラスは、同一のスーパークラスに関する全情報を含み、そして、
    前記記憶手段は、前記各Javaクラスが前記スーパークラスに関する同じ情報を参照するように、情報が冗長して記憶されていない単一のスーパークラス参照情報を記録するように構成され、
    前記実行手段が、前記ランタイムイメージ内で少なくとも1つの前記Javaクラスに直接アクセスするために、1以上のJavaクラスに対するリファレンスをもつ前記Javaアプリケーションを実行することを特徴とする、コンピュータ装置。
  2. 前記記憶手段(304)が、予めロードされ且つ予め分析されたJavaクラスのライブラリを備えるランタイムイメージ(256)を記憶する、ことを特徴とする請求項1に記載の装置。
  3. 前記実行手段(21,260)が、
    プロセッサ(21)と、
    前記プロセッサによって実行され、且つ1以上のJavaクラスに対するリファレンスをもつJavaアプリケーションを実行するよう作動するJavaバーチャルマシン(260)と、を備えた、請求項1又は2に記載の装置。
  4. コンピュータ読み取り可能媒体を読み出すための手段を更に有し、
    前記Javaバーチャルマシン(260)が、前記コンピュータ読み取り可能媒体からプロセッサによって実行可能なソフトウェアである、ことを特徴とする請求項3に記載の装置。
  5. 前記記憶手段(304)として不揮発性記憶装置を含む、請求項1〜4の何れか1項に記載の装置。
  6. 前記不揮発性記憶装置として読み取り専用メモリ(24)を含む請求項5に記載の装置。
  7. 前記記憶手段(304)が、ポータブル実行フォーマット(portable executable format)の予めロードされ且つ予め分析されたJavaクラスを記憶するよう作動する、請求項1〜6の何れか1項に記載の装置。
  8. 前記記憶手段(304)が、非冗長データを含む少なくとも1つのJavaクラスファイル(252)のランタイムイメージ(256)を記憶するよう作動する、請求項1〜7の何れか1項に記載の装置。
  9. 前記記憶手段(304)が、単一のダイナミックリンクライブラリファイルの形式でランタイムイメージ(256)を記憶するよう作動する、請求項1〜8の何れか1項に記載の装置。
  10. 1以上のJavaクラスに対するリファレンスをもつJavaアプリケーションを実行するコンピュータ装置で行われる方法であって、
    前記コンピュータ装置により、
    クラスを含む少なくとも1つのJavaクラスファイル(252)の予めロードされ且つ予め分析されたランタイムイメージ(256)を記憶するステップであって、当該ランタイムイメージは、予めロードされ且つ予め分析されたJavaクラスのライブラリを含み、かつ、各Javaクラスは同一のスーパークラスに関する全情報を含み、そして、前記各Javaクラスが前記スーパークラスに関する同じ情報を参照するように、情報が冗長して記憶されていない単一のスーパークラス参照情報を記録する当該記憶ステップと、
    ランタイム時に、1以上の要求されたJavaクラスに対するリファレンスをもつJavaアプリケーションを実行するステップであって、当該Javaアプリケーションが、前記予めロードされ且つ分析されたランタイムイメージ(256)内の前記Javaクラスをロードしたり又は分析することなく、前記予めロードされ且つ分析されたランタイムイメージの少なくとも1つの前記Javaクラスにアクセスする当該実行ステップとが行なわれる方法。
  11. 前記予めロードされ且つ分析されたランタイムイメージ(256)はランタイム時の前に生成され、そしてクラスを含む各Javaクラス(252)について前記予めロードされ且つ分析されたランタイムイメージ(256)を生成することが、
    i)前記クラスをロードすること(35)、
    ii)ユニコードストリング、クラス又はインターフェース名、フィールド又はメソッドに対するリファレンス、数値、又は一定のストリング値を含むコンスタント情報に関するコンスタント・プール(constant pool)を分析すること(352)、
    iii)クラスファイルからのクラスをロードすること(350)、
    iv)前記クラスから少なくとも1つのメソッドを分析すること(352)、
    v)前記クラスから少なくとも1つの属性を分析すること(352)、
    を含む請求項10に記載の方法。
  12. 前記予めロードされ且つ分析されたランタイムイメージ(256)を生成することが、更に、
    vi)前記コンスタント・プール(constant pool)内でエラーを訂正することを含む、請求項11に記載の方法。
  13. 前記少なくとも1つのJavaクラスファイル(252)の前記予めロードされ且つ分析されたランタイムイメージ(256)が、非冗長データのみを含む請求項10〜12の何れか1項に記載の方法。
  14. 前記予めロードされ且つ分析されたランタイムイメージ(256)を生成することが、複数のJavaクラスファイル(252)の予めロードされ且つ分析されたランタイムイメージ(256)を生成することを含み、そして前記複数のJavaクラスファイルが同じスーパークラスに対するリファレンスを含み、そして前記予めロードされ且つ分析されたランタイムイメージ(256)には前記スーパークラスに関する1つの情報だけを含む、請求項13に記載の方法。
  15. 前記少なくとも1つのJavaクラスファイル(252)がビッグエンディアン(big endian)フォーマットのデータを含み、前記予めロードされ且つ分析されたランタイムイメージ(256)がリトルエンディアン(little endian)フォーマットのデータを含む請求項10〜14の何れか1項に記載の方法。
  16. 前記予めロードされ且つ分析されたランタイムイメージ(256)を記憶するステップが、前記予めロードされ且つ分析されたランタイムイメージをダイナミックリンクライブラリファイルとして記憶することを含む請求項10〜15の何れか1項に記載の方法。
  17. 前記予めロードされ且つ分析されたランタイムイメージ(256)を記憶するステップが、予めロードされ且つ分析されたランタイムイメージをポータブル実行フォーマット(portable executable format)に記憶することを含む請求項10〜16の何れか1項に記載の方法。
  18. プログラム制御できるコンピュータに請求項10〜17の何れか1項に記載の方法を実行させるよう作動させるコンピュータプログラムを記憶したコンピュータ読み出し可能な記憶媒体。
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 JP2002508560A (ja) 2002-03-19
JP2002508560A5 JP2002508560A5 (ja) 2006-01-26
JP4372348B2 true 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)

Families Citing this family (81)

* 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
US7506323B2 (en) * 2002-06-18 2009-03-17 Panasonic Corporation Program execution processing terminal device, program execution processing method, and program
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 삼성전자주식회사 자바 가상 머신의 성능을 향상시키는 방법 및 상기 방법에의해 동작되는 시스템
FR2871590B1 (fr) * 2004-06-15 2006-08-04 Gemplus Sa Procede de chargement d'un logiciel en langage intermediaire oriente objet dans un appareil portatif.
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 国际商业机器公司 用于监控和自适应地预载入关键动态连接库的方法和系统
JP2009099185A (ja) * 2007-10-16 2009-05-07 Dainippon Printing Co Ltd メモリをリフレッシュする機能を備えたストレージデバイス
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

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
ATE237836T1 (de) 2003-05-15
US6349344B1 (en) 2002-02-19
CA2306118C (en) 2009-09-01
JP2002508560A (ja) 2002-03-19
EP1040409B1 (en) 2003-04-16

Similar Documents

Publication Publication Date Title
JP4372348B2 (ja) マルチプル・クラスファイルのランタイムイメージへの結合
JP4562918B2 (ja) インタプリティブ・ランタイム環境のためのコンパイル・プログラムの生成
US7380242B2 (en) Compiler and software product for compiling intermediate language bytecodes into Java bytecodes
US6381737B1 (en) Automatic adapter/stub generator
CA2255042C (en) Class loader
US6003095A (en) Apparatus and method for demand loading a dynamic link library
US6067577A (en) Dynamic method resolution for native methods in a dynamic object-oriented programming language
US7941802B2 (en) Reduced instruction set for java virtual machines
US20040255267A1 (en) Systems and methods for employing tagged types in a dynamic runtime environment
US8438468B2 (en) Annotation management
US20040003377A1 (en) Converting byte code instructions to a new instruction set
US6633892B1 (en) Archiving tool
JPH11110194A (ja) 外部ライブラリ関数との結合方法ならびに同方法がプログラムされ記録される記録媒体
US8042103B2 (en) Pre-translated files used in a virtual machine
US6799320B1 (en) Providing binding options for component interfaces
US6996813B1 (en) Frameworks for loading and execution of object-based programs
US6901591B1 (en) Frameworks for invoking methods in virtual machines
US6484311B2 (en) Coalescing properties, methods and events
US20030018679A1 (en) Enhanced virtual machine instructions
US7181724B2 (en) Representation of Java® data types in virtual machines
US6961933B2 (en) Representation of Java data types in virtual machines
Thiruvathukal Java at middle age: Enabling Java for computational science
US6978456B1 (en) Methods and apparatus for numeric constant value inlining in virtual machines
Almajed et al. Binary transformation of applications to run on bare PCs
US7314491B2 (en) Encapsulation of large native operating system functions as enhancements of the instruction set in an emulated central processor system

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