JP2005509194A - プレインターナライズ済プログラムファイルの作成及び使用のための方法並びに装置 - Google Patents
プレインターナライズ済プログラムファイルの作成及び使用のための方法並びに装置 Download PDFInfo
- Publication number
- JP2005509194A JP2005509194A JP2002571993A JP2002571993A JP2005509194A JP 2005509194 A JP2005509194 A JP 2005509194A JP 2002571993 A JP2002571993 A JP 2002571993A JP 2002571993 A JP2002571993 A JP 2002571993A JP 2005509194 A JP2005509194 A JP 2005509194A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- image
- internalized
- program file
- virtual machine
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44557—Code layout in executable memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
装置(45)は、新しいプログラムファイル(46)を受け取り、プレインターナライズ済イメージを使用して、このプログラムが実行されるたびにプログラムファイルのインターナライズが行なわれることのないようにする。一実施形態においては、同装置にあるソフトウェアバーチャルマシン(50)は、プレインターナライズ化を実行する機能を担う。プログラムファイルがひとたびプレインターナライズされて、装置の固定メモリ(56)に格納されるイメージが生成されると、その後プレインターナライズ化処理を行なわなくても、イメージを実行できるようになる。さらに、後続のプログラム実行に必要な動的メモリ(52)の使用量が低減し、新しいプログラムファイルの実行時間が短縮される。
Description
本発明は一般に、高級言語で記述されたプログラムファイルの処理に関し、より詳細には、動的ロードに対応した高級プログラミング言語で記述されたプログラムファイルに関する。
ハンドヘルド型装置などの電子装置の普及に伴い、これらの装置で実行され、かつこれらの装置と接続するアプリケーションが増えると共に、ユーザーが求める柔軟性も向上し、特別なプログラムや機能を追加できるような高い柔軟性も求められるようになっている。この種の装置は、命令を実行するためのプロセッサ、特殊機能装置(special function unit)、所望の機能を提供するための命令を有しているため、「組み込み装置」と呼ばれている。組み込み装置は、典型的には、独自の電源を有するスタンドアロン型装置であるが、他のシステムと接続するための機能を備えていることが多い。例えば、携帯電話機、携帯無線呼出し器、個人情報端末(PDA)などの組み込み装置は、典型的に、装置に記憶されているコンピュータプログラムを実行するための中央処理装置(CPU)と、持ち運びできるようにするバッテリとを有する。組み込み装置を製造した後に、特殊な機能又はアプリケーションを追加することによって、装置をカスタマイズすることを、各ユーザーが求めることがある。ユーザーが提供するアプリケーションを後から容易にインストールできるようにする高級プログラミング言語で記述されたコンピュータプログラムすなわちコードを使用することが望ましい。このような高級プログラミング言語の例に、サンマイクロシステム社が開発したJava(登録商標)言語がある。Javaは、プラットフォームに依存しない、すなわち1種類のオペレーティングシステム又はハードウェア構成のみに特化していないため特に魅力的である。
組み込み装置向けのコードを開発する際の1つの制約に、装置のメモリの量が少ないという点があり、これによって、装置に記憶させることのできるコードの量が限られると共に、装置の演算能力が低下する。組み込み装置向けのコードを設計するうえでの重要な目標は、メモリ効率とインストールされたアプリケーションの実行速度とを最大限に向上させることにある。目下、組み込みアプリケーションのメモリ効率を向上させる方法がいくつか存在するが、これらの方法は一般に、ユーザーによって後からインストールされた追加アプリケーションには適用できない。
Javaは、より詳細には、オブジェクト指向のプログラミング言語であり、移植性が高く、プログラムがしやすく、アーキテクチャに依存しない。オブジェクト指向設計では、「オブジェクト」と呼ばれるデータのほか、オブジェクトへのインターフェイスに主眼を置いている。Javaプログラムは、様々な処理装置及びオペレーティングシステムのアーキテクチャを含め、ネットワーク内のどこでも実行することができる。
Javaプログラムに対し、コンパイル及び解釈の両方が行なわれる。コンパイルは一度だけ実行され、コンパイルされたJavaプログラミングコードは「Javaバイトコード」(JBC)と呼ばれる。JBCは、アーキテクチャに依存しない、すなわちプラットフォームに依存しない中間言語である。Javaインタプリタが、プロセッサでJBC命令をパース及び実行する。解釈は、プログラムが実行されるたびに行なわれる。クラスファイルと呼ばれるJavaバイナリファイルは、所定のプログラム用のJBCのほかに、シンボルデータなどの支援情報をも含んでいる。クラスファイル、すなわちプログラムファイルは、「アイテム」すなわちクラスに関する情報(フィールド、メソッド、JBC
配列、シンボル参照テーブルなど)を含む。詳細には、Javaプログラムは、少なくとも1つのJavaファイルからなり、このファイルをコンパイルすることによって少なくとも1つのクラスファイルが生成される。
配列、シンボル参照テーブルなど)を含む。詳細には、Javaプログラムは、少なくとも1つのJavaファイルからなり、このファイルをコンパイルすることによって少なくとも1つのクラスファイルが生成される。
実際には、JBCは、「Javaバーチャルマシン」(Java VM)用の機械コード命令のことである。Java開発環境やJava対応ウェブブラウザなどのJavaインタプリタは、全てJava VMのインプリメンテーションを使用している。この種のツールは、システムに既にインストールされているJava VMを使用するか、又はJava VMに付属しているかである。また、Java VMはハードウェアに組み込むことも可能である。このように、プログラムは、Javaコンパイラを備えた装置であればどのような装置でもコンパイルすることができ、生成されたJBCは、Java VMのどのインプリメンテーションでも実行することができる。
Javaで記述されたアプリケーションを移植可能にするために、多くのシンボル情報が維持管理される。JBCのJava VMが普通に実行されている間、Java VMによってシンボルデータが使用されて、動的結合が実行され、参照された構造を実際に指しているポインタが取得される。例えば、各関数に対する参照は、シンボル情報(クラス名、関数名及びシグネチャ)によって表現されている。クラス名は、メソッドの宣言を含むクラスオブジェクトを識別している。メソッドは、そのクラスで使用可能なさまざまな関数を識別しており、JBC配列は、メソッドを実現するために実行されるプログラムである。関数名とシグネチャとが相まって、クラス内で特定の関数を識別している。シグネチャは、関数に渡される引数とその型、関数によって返される引数とその型を示している。シンボル情報のため、Javaバイナリファイルのサイズが大きくなり、これによってメモリ格納に関する問題が生ずる。実行時に、JBCとシンボル情報とは、2つのコピーが維持管理される。このうち、一方のコピーは固定メモリに格納される。もう一方のコピーは、Java VMが処理し易いフォーマットで動的メモリに格納される。携帯無線呼出し器、携帯電話機、PDAなどの小型の組み込み装置では、動的メモリが非常に少ない。このため、動的メモリの使用量を低減させることが望ましい。また、シンボル参照を処理するため、コストのかかるテーブル参照を使用することによって実行速度が低下するという問題もある。
上記の問題に対応するために、Javaクラスファイルのサイズ縮小及びフォーマットを行ない、メモリ使用の効率を向上させることができるツールが登場している。「プレインターナライズ化(pre−internalization)」とは、Javaクラスファイル情報を、メモリに格納されたときにクラスオブジェクトを表すようなフォーマットに再変換する処理を指す。インターナライズ化とは、クラスファイルのロード時に行なわれ、クラスファイルからクラス情報を抽出し、この情報を動的メモリにある構造に格納する処理を指す。プレインターナライズ化処理は、シンボル参照とクラスのロードとを不用とし、必要な動的メモリの記憶領域を低減させて、アプリケーションの実行速度を向上させる。プレインターナライズ済ファイルのフォーマットは、Java VMインプリメンテーションごとに異なる。
プレインターナライズ化は、コンパイルが行なわれてから、JBCが正常にロードされて実行されるまでの間に行なわれる。プレインターナライズされたクラスオブジェクトは、動的メモリに格納させる必要がないように再構築されており、固定メモリに維持管理することができる。このため、実行時に動的オブジェクトの生成に使用できる動的メモリが増える。状態を維持管理している情報及び構造、並びに動的オブジェクトは「Javaヒープ」と呼ばれる領域に格納される。プレインターナライズ化の問題点として、クラス情報は固定メモリ内に格納されるため、実行時に更新できないという問題がある。
現在、目的の装置にクラスをインストールする前に、全シンボル参照を解決するように求めることによって、動的メモリにシンボル情報を保存しないという解決策が取られている。参照を解決する際には、参照を、参照された項目が存在する場所(すなわちアドレス)によって置き換える。一連のクラスファイル(すなわち「クラスファイルユニット」)をプレインターナライズする際の問題点として、装置に既にインストールされており、参照されている項目の場所がわからないか、わかっていても正しくないクラスが参照されている点がある。参照されているクラス情報の重複を避けるには、インストールされているクラスを装置から削除して、新しいファイルと共に再パッケージングする必要がある。
図1に、プログラムファイル(クラスファイルとも呼ばれる)を処理するための従来技術による処理6を示す。「クラス1」、「クラス2」、「クラス3」と記載されたプログラムファイル8が、プリプロセッサ10によってロードされる。プリプロセッサ10は、フォーマット済のクラスファイル情報12を生成する。フォーマット処理では、各プログラムファイル(クラス1、クラス2、クラス3)が、実行時に使用されるクラスオブジェクトに変換される。このクラスオブジェクトは、使用するJVMインプリメンテーションごとに固有である。プリプロセッサ10は、ソフトウェア又はハードウェアに組み込まれたツールであり得る。フォーマット済クラスファイル情報12は、目的の装置に格納できるように構造化されており、目的の装置は動的メモリと固定メモリとを有する。コンパイラ及びリンカ16は、フォーマット済クラスファイル情報12とJava VMソースコード14とを結合する。Java VMソースコード14は、目的の装置に組み込まれているJava VMに特有のものである。コンパイラ及びリンカ16は、Java VMイメージ18を出力する。このイメージ18は、Java VM 19を格納している部分と、プリロード済クラス情報20を格納している部分の2つの部分を有する。プリロード済クラス情報20は、フォーマット済クラスファイル情報をコンパイルしたものである。
この時点で、Java VMイメージ18が、目的の装置の装置メモリ22に格納される。本例においては、装置メモリ22は、動的メモリ26と固定メモリ24とを含む。一実施形態においては、動的メモリ26にはRAMが使用され、固定メモリ24にはROM及びフラッシュメモリの少なくともいずれかが使用される。動的メモリ26は、実行時に中間値及び変数を記憶するために使用される。固定メモリ24は、クラスローダーを格納する第1部分28、JBCインタプリタを格納する第2部分30、及びプリロード済クラス情報20を格納する第3部分32、の複数の部分を含む。部分28のクラスローダーは、Java VMが使用できるように、バイナリクラス情報をフォーマットするために用いられ、プリプロセッシング及びコンパイル中にフォーマットされているため、クラスローダーには必要ではない。装置メモリ22に記憶されたJava VMイメージ18は、プログラムファイル8のJavaプログラムファイル(クラス1、クラス2、クラス3)を実行するために使用される。装置メモリ22は、装置(ハンドヘルド装置)やその他のアプリケーションで実行される。
装置の製造業者が処理6を実行した後に、固定メモリ24からプログラムファイルを削除することが求められることがよくある。しかし、ひとたびクラスファイル8が固定メモリ24に格納されると、ユーザーは、装置の製造業者に依頼しない限り、格納されているプログラムファイルを削除できないことがある。この場合、装置を製造業者に送り返すか、製造業者から処理6に使用するツール一式を支給してもらう。製造業者は、著作権を有するこの種のツールを、ユーザーに支給するかライセンス供与することを好まない。
さらに、装置メモリ22にあるJava VMイメージに、プログラムファイルを追加することが求められることがよくある。プログラムファイル8はアプリケーションの基本機能を記述していることが多く、ユーザーは、補助機能(ユーザー独自又はアプリケーシ
ョン独自の追加機能であって、装置の性能を向上させるものなど)を自由に追加することができる。プログラムファイルを追加するには、幾つかの方法がある。公知の方法の1つに、追加プログラムファイルをプログラムファイル8に追加して、処理6を再度実行する方法がある。生成されたJava VMイメージ18には、全プログラムファイル(プログラムファイル8と追加プログラム)のプリロード済クラス情報が含まれる。ユーザーが装置を製造業者に返送して、新しいプログラムファイルを追加してもらうか、又は製造業者がプログラムファイル8をユーザーに提供して、ユーザーがこの処理を実行できるようにしなければならないため、この方法は柔軟性に富んだものとはいえない。図2に示す従来技術による第2の方法では、「クラス4」、「クラス5」、「クラス6」と記載されたプログラムファイルを含む追加プログラムファイル42を、追加の固定メモリ40(フラッシュメモリなど)に格納する。プログラムファイル42は、実行時に、固定メモリ24の部分28に格納されているクラスローダーによって動的メモリ26にロードされる。ロードしたプログラムファイル(クラス4、クラス5及びクラス6)を動的メモリ26に格納する必要があるため、Javaヒープ空間に利用できる空間が少なくなる。動的メモリ空間が減少したことによって、たとえ全ての追加プログラムファイル42を動的メモリ26に格納できたとしても、動的メモリ空間が不足し、実行時に変数を記憶できず、この結果、プログラムを実行できなくなる。通常、動的メモリ空間は小さいため、多くのアプリケーシィンにおいては、Javaヒープ内で利用可能な空間を最大限に広げることが非常に重要となる。
ョン独自の追加機能であって、装置の性能を向上させるものなど)を自由に追加することができる。プログラムファイルを追加するには、幾つかの方法がある。公知の方法の1つに、追加プログラムファイルをプログラムファイル8に追加して、処理6を再度実行する方法がある。生成されたJava VMイメージ18には、全プログラムファイル(プログラムファイル8と追加プログラム)のプリロード済クラス情報が含まれる。ユーザーが装置を製造業者に返送して、新しいプログラムファイルを追加してもらうか、又は製造業者がプログラムファイル8をユーザーに提供して、ユーザーがこの処理を実行できるようにしなければならないため、この方法は柔軟性に富んだものとはいえない。図2に示す従来技術による第2の方法では、「クラス4」、「クラス5」、「クラス6」と記載されたプログラムファイルを含む追加プログラムファイル42を、追加の固定メモリ40(フラッシュメモリなど)に格納する。プログラムファイル42は、実行時に、固定メモリ24の部分28に格納されているクラスローダーによって動的メモリ26にロードされる。ロードしたプログラムファイル(クラス4、クラス5及びクラス6)を動的メモリ26に格納する必要があるため、Javaヒープ空間に利用できる空間が少なくなる。動的メモリ空間が減少したことによって、たとえ全ての追加プログラムファイル42を動的メモリ26に格納できたとしても、動的メモリ空間が不足し、実行時に変数を記憶できず、この結果、プログラムを実行できなくなる。通常、動的メモリ空間は小さいため、多くのアプリケーシィンにおいては、Javaヒープ内で利用可能な空間を最大限に広げることが非常に重要となる。
さらに、クラスのロード又は追加プログラムファイル42のインターナライズは、追加プログラムファイルを実行するたびに行なう必要がある。換言すれば、このプログラムファイルは、恒久的にインターナライズされることはない。このようなアプリケーションは、「一時アプリケーション」と呼ばれることがある。インターナライズが繰り返し行なわれると、プログラムの実行速度が極端に低下する。実行時ローダーによるインターナライズ処理は、Javaプログラミング環境だけに限ったものではない。
本発明は例示的に説明し、添付の図面に限定されるものではない。添付の図面においては、同一の参照符号は同じ要素を示す。
当業者は、説明の簡潔を記し説明をわかりやすくするために、図面に記載の要素は必ずしも実寸どおりに記載されていないことを理解する。例えば、本発明の種々の実施形態をよりよく理解できるように、一部の要素の寸法は、他の要素に比して強調されている。
当業者は、説明の簡潔を記し説明をわかりやすくするために、図面に記載の要素は必ずしも実寸どおりに記載されていないことを理解する。例えば、本発明の種々の実施形態をよりよく理解できるように、一部の要素の寸法は、他の要素に比して強調されている。
説明をわかりやすくするために、Javaプログラミング言語を例に採り上げる。しかし、本発明はその他のプログラミング言語にも適用することができる。組み込みJavaプログラムを有するシステムに関して、本明細書中で複数の用語が使用されている。メモリは、読み出し専用メモリ(ROM)、書込み可能メモリ、及び読込み可能−書込み可能メモリを指す。読込み可能−書込み可能メモリは、ランダムアクセスメモリ(RAM)、電気消去可能プログラマブルメモリ(EEPROM)、プログラマブルメモリ(PROM)であり得る、消去不可能PROM(OTPROM)、消去可能PROM(EPROM)、フラッシュメモリなどを含む。「動的メモリ」との用語は、RAMなど、動的に割当可能であって、装置に通電が行なわれなくなったときに、格納している情報又はデータを保持しないメモリを指す。「固定メモリ」との用語は、ROMなど、実行時に読み出し専用として扱われ、装置に通電が行なわれなくなったときにも格納している情報又はデータを保持するメモリを指す。
本発明は、動的ロードに対応した高級言語で記述されたプレインターナライズ済プログラムファイルを作成及び使用するための方法又は処理を提供する。本明細書においては、「方法」及び「処理」は、同義語として使われる。追加プログラムファイルののちの実行
速度を向上させるために、実行に使用できる動的メモリを減少させることなく、ユーザー独自のプログラムファイルの追加又は削除が可能になるプログラムファイルの処理方法が求められている。
速度を向上させるために、実行に使用できる動的メモリを減少させることなく、ユーザー独自のプログラムファイルの追加又は削除が可能になるプログラムファイルの処理方法が求められている。
図3に、装置45と追加プログラムファイル46とを有する例示的なプログラミング環境44を示す。追加プログラムファイル46には、任意の数n(nは整数)のクラスファイルが存在する。各クラスファイルは、任意のサイズを有し、ユーザーが装置45に追加しようとしているプログラムファイルの集まりのうちの1つに対応している。装置45の正規の製造業者は、図面に記載の追加プログラムファイル46によって装置45をプログラムしていない。
装置45は、アプリケーションマネージャ48を介して追加プログラムファイル46に結合されている。アプリケーションマネージャ48には、動的メモリ52、固定メモリ56及びバーチャルマシン(VM)50が双方向的に結合されている。動的メモリ52の一例として、ランダムアクセスメモリ(RAM)があり、固定メモリ56はフラッシュメモリであり得る。固定メモリ56は、追加ファイル46のプレインターナライズ済イメージを格納している。図中の例においては、バーチャルマシン50は、動的メモリ52及び固定メモリ56の各々と別個に結合されている。バーチャルマシン50に応答して、装置45内の情報が、図面に記載されていない導体を介して、動的メモリ52と固定メモリ56との間で移動される。図面の例においては、バーチャルマシン50は、クラスローダー61、クラスリゾルバ62、クラスベリファイヤ63、資源マネージャ64、動的メモリマネージャ65、バイトコードインタプリタ66、プレインターナライザ67及び複数のプリロード済アプリケーション及びライブラリ68を有し、これらは全て固定メモリ69に存在している。また、バーチャルマシン50はJavaヒープ54をも有し、これは動的メモリ70に存在する。
動作を記載すると、装置45は、元々は製造業者によってプログラムされており、所定のプログラムファイルがプリロード済アプリケーション及びライブラリ68に格納されている。このようなプリロード済アプリケーションが実行されるときは、バーチャルマシン50は第1モード(通常モード)で実行されて、固定メモリ69のアプリケーションを処理する。ここで、装置45のユーザーが、装置45の外部の任意の供給源から追加ファイル46を追加しようとしていると仮定する。アプリケーションマネージャ48は、動的メモリ52又は固定メモリ56のいずれかに追加ファイル46を配置することを支援する。いずれのメモリが使用されるかは、アプリケーションに特有であり、本発明と密接な関係があるわけではない。アプリケーションマネージャ48は、バーチャルマシンの本来のメモリ構造にプログラムファイルをプレインターナライズする第2モード(プレインターナライズ化モード)でバーチャルマシン50を起動する。わかりやすくするために、本明細書中において「本来の(native)メモリ構造」との用語は、動作が、特定のバーチャルマシンに特有であるものを指し、その他のバーチャルマシンには該当しないものを指す。本来のメモリ構造は、そのバーチャルマシンが、当該装置のバーチャルマシンの特定のインスタンス生成(instantiation)である特定のバーチャルマシンを指す。プレインターナライズ化モードの結果は、プログラムファイルのプレインターナライズ済イメージであり、これは後で固定メモリ56に格納される。プレインターナライズ済イメージは固定メモリに存在しているため、再利用可能な実行可能イメージである。新たに導入されたアプリケーションの実行がその後必要となった場合、プレインターナライズ化を繰り返す必要がない。さらに、動的メモリ52又は固定メモリ56に配置された追加ファイル46の元のコピーを削除することもでき、これによってメモリを大幅に節約することができる。
バーチャルマシン50は標準バーチャルマシンであり、プレインターナライズ化機能を
実行できるように変更されている。従来のバーチャルマシンは、プレインターナライズ化を実行しない。クラスローダー61及びクラスリゾルバ62は、通常モードかプレインターナライズ化モードかのいずれかで実行するように変更されている。さらに、クラスローダー61は、プレインターナライズ済クラスを認識するように機能拡張されている。バイトコードインタプリタ66は、プレインターナライザ67によって生成された新しいバイトコードを扱えるように機能拡張されている。
実行できるように変更されている。従来のバーチャルマシンは、プレインターナライズ化を実行しない。クラスローダー61及びクラスリゾルバ62は、通常モードかプレインターナライズ化モードかのいずれかで実行するように変更されている。さらに、クラスローダー61は、プレインターナライズ済クラスを認識するように機能拡張されている。バイトコードインタプリタ66は、プレインターナライザ67によって生成された新しいバイトコードを扱えるように機能拡張されている。
わかりやすくするために、プレインターナライズ化処理では、クラスファイルの処理が行なわれる。まず、クラスは、クラスローダー61によってバーチャルマシン50に導入される。クラスローダー61は、追加プログラムファイル46にある全てのクラスに関連するバーチャルマシン特有のデータ構造を生成する。通常モードにおいては、クラスは、アプリケーションの使用法(usage)に応じて、クラスローダー61によって読み込まれる。プレインターナライズ化の間、バーチャルマシン特有のデータ構造がスキャンされて、追加クラスの実行中に参照されるほかのクラスが、追加ファイルに含まれているか、外部に存在するかを問わずに特定される。通常モードにおいては、クラスの初期化方法を実行する必要があるため、クラスのロード中にバイトコードインタプリタ66の呼び出しが必要となることがある。バイトコードインタプリタ66は、所定のクラスに特有の任意の初期化を実行する。この種のクラスには、例えば、静的なイニシャライザがある。プレインターナライズ化の際には、インストールを目的として、静的なイニシャライザの実行が行なわれることはない。静的なイニシャライザの実行は、アプリケーションが実行されようとしているときにのみ行なわれる。バーチャルマシン50のクラスリゾルバ62が使用されて、公開されているJava参照プラットフォームに準拠した従来の方法によって、クラスの定数プールにあるエントリが解決される。解決が完了すると、解決された参照(アドレスポインタを介して)を指すようにJavaバイトコード(JBC)が更新される。さらに、プレインターナライズ化中に、クラスがバーチャルマシン50のクラスベリファイヤによって従来の方法で検証される。追加ファイルが今後実行されるときに、クラスの検証が行なわることはない。検証は、Javaプログラミング言語が従来から有する機能であって、これについては本明細書でさらに詳細に記載しない。資源マネージャ64は追加ファイルに関連する資源を格納し、これによって、資源が追加プログラムファイルに関連付けられる。動的メモリマネージャ65は、この処理の全体にわたって使用されて、クラスに関連するデータ構造を動的メモリに作成する。このように生成されたデータ構造は、総称的にインターナライズ済イメージと呼ばれる。次に、最終的なイメージが固定メモリ56に書き込まれる。以上まとめると、プレインターナライザ67とは、バーチャルマシン50のコンポーネントに、プレインターナライズ化ステップを実行するように指示するコードの集まりのことである。
図4に、2つのプログラムファイルをプレインターナライズした後の、図3の固定メモリをさらに詳細に示す。プログラムファイルの第3の集合74を含む複数のプログラムファイル73が、Javaアプリケーションマネージャ(JAM)76に結合されている。JAM 76は、固定メモリ92内に、動的にプレインターナライズされたアプリケーションのリストを維持管理している。プレインターナライズ済のアプリケーションは、バーチャルマシンの製造・販売後にバーチャルマシンに追加されるため、「動的(dynamic)」であると呼ばれる。
JAM 76は、図3のバーチャルマシン50と同じ構成要素を有するバーチャルマシン72に結合されている。説明をわかりやすくするために、バーチャルマシンの全ての構成要素を図4に記載する。バーチャルマシン72は、VMが実行の第1モード(通常モード)であるときに使用されるバイトコードインタプリタ79と、VMが実行の第2モード(プレインターナライズ化モード)であるときに使用されるプレインターナライザ80と、プログラムファイルのプリロード済クラス81とを有する。バーチャルマシン72は、
プログラムファイルの第1の集合のプレインターナライズ済イメージ86、プログラムファイルの第2の集合のプレインターナライズ済イメージ88、及び今後のプログラムファイル用の空間90を含む固定メモリ84に結合されている。
プログラムファイルの第1の集合のプレインターナライズ済イメージ86、プログラムファイルの第2の集合のプレインターナライズ済イメージ88、及び今後のプログラムファイル用の空間90を含む固定メモリ84に結合されている。
動作を記載すると、バイトコードインタプリタ79を主に使用する第1モード(通常モード)で動作しているときに、JAM 76は、プリロード済クラス81、プレインターナライズ済イメージ86、プレインターナライズ済イメージ88の少なくともいずれかを実行するようにバーチャルマシン72に指示を出す。JAM 76は、プレインターナライザ80を主に使用することによって、プログラムファイルの第3の集合74をプレインターナライズするようにバーチャルマシン72に指示を出す。プレインターナライザ80は、図3のプレインターナライザ67に関して上記した方法と同じ方法によって、プログラムファイルの第3の集合74のプレインターナライズ化を行なう。プレインターナライザ80は、プログラムファイルの第3の集合74のためのイメージを生成して、今後のプログラムファイル用の空間90に格納する。さらに、JAM 76は、固定メモリ84からプログラムファイルの第2の集合88を削除するようにバーチャルマシン72に指示を出す。JAM 76は、固定メモリ92に記憶された動的にプレインターナライズ済アプリケーションのリストを使用して、プレインターナライズ済イメージに関する情報を維持管理している。JAM 76は、プログラムファイルの集合をプレインターナライズする前に、第2モードで動作しているバーチャルマシン72から、今後のプログラムファイル用の空間90の大きさを取得する。これによって、JAM 76は、プログラムファイルの集合をプレインターナライズできるかどうかを判定する。また、第2モードで動作しているバーチャルマシン72は、プログラムファイル74の組を追加するように求める要求、又は既にプレインターナライズ済みのイメージ88を削除するように求める要求ののちに、成功又は失敗を示す情報をJAM 76に返す。
図3,4のいずれの実施形態においても、バーチャルマシンの主要コンポーネントが、第2モード(プレインターナライズ化モード)によって再使用されている。この結果、本発明において、既にメモリ資源アドレスに完全に変換されているイメージの格納が可能となるように、バーチャルマシンが拡張されている。
図5に、バーチャルマシンと連係したJavaアプリケーションマネージャのプログラムアプリケーションの実行の流れを示す処理100を示す。本処理はステップ101から開始する。ステップ103において、ユーザーか別の供給源のいずれかが、利用可能なプログラムファイルの集合からプログラムファイルを選択する。選択されたプログラムファイルは、プレインターナライズ済イメージの形で装置のメモリに存在していることもあれば、存在していないこともある。このプログラムファイルの集合には、プリロード済クラス、プレインターナライズ済イメージ、及びバーチャルマシンの外部のプログラムファイルの少なくともいずれかが含まれる。プリロード済クラスの処理の詳細は図5には記載しない。ステップ105において、プレインターナライズ済アプリケーションイメージが作成されているかどうかの判定が行なわれる。作成されている場合、イメージは、バーチャルマシンを格納している装置の固定メモリに存在することになる。ステップ105の判定結果が「YES」の場合、ステップ107で、(1)プログラムファイルを実行するか、又は(2)プログラムファイルを、固定メモリのプレインターナライズ化空間から削除するか、の2つの選択肢が提示される。一形態においては、どちらを選択するのかを示すユーザー要求をユーザーから受け取ってもよい。先に、ユーザー又は他の供給源がプログラムファイルの実行を選択したものと仮定する。プログラムファイルが固定メモリのプレインターナライズ化空間に存在しているため、ステップ109において、プレインターナライズ済イメージを実行するため、Javaアプリケーションマネージャによって通常モードであるバーチャルマシンが呼び出される。実行が完了すると、プログラムファイルの実行に対して最終ステップ100に到達する。ユーザー又は他の供給源が、バーチャルマシ
ンを格納している固定メモリからプログラムファイルを削除することを選択したと仮定する。ステップ112において、Javaアプリケーションマネージャは、プレインターナライズ済イメージを削除するために、第2モードであるバーチャルマシンを呼び出す。バーチャルマシンがプレインターナライズ化モードで動作している場合、プレインターナライズ済イメージの削除は、プレインターナライザの付加的な機能である。削除が行なわれると、最終ステップ113に到達する。また、Javaアプリケーションマネージャは、固定メモリにある、動的にプレインターナライズされたプログラムファイルのリストを更新する。
ンを格納している固定メモリからプログラムファイルを削除することを選択したと仮定する。ステップ112において、Javaアプリケーションマネージャは、プレインターナライズ済イメージを削除するために、第2モードであるバーチャルマシンを呼び出す。バーチャルマシンがプレインターナライズ化モードで動作している場合、プレインターナライズ済イメージの削除は、プレインターナライザの付加的な機能である。削除が行なわれると、最終ステップ113に到達する。また、Javaアプリケーションマネージャは、固定メモリにある、動的にプレインターナライズされたプログラムファイルのリストを更新する。
ステップ105に戻り、所望のプレインターナライズ済イメージが作成されていなかったと仮定する。ステップ105の判定結果が「NO」の場合、ステップ114は、(1)プログラムファイルを実行するか、又は(2)固定メモリのプレインターナライズ化空間にプログラムファイルを追加するか、の2つの選択肢を提示する。一実施形態においては、この選択は、ユーザーが、プログラムファイルを実行するか、又はプレインターナライズ化モードに入るかを選択することによって行なわれ得る。別の実施形態においては、自動実行ルーチンによって選択が行なわれ得る。ユーザー又は他の供給源が、プログラムファイルを実行するという選択を行なった場合、ステップ116が実行される。このステップ116は、図2の装置が行なう、プレインターナライズされていないプログラムファイルの実行に相当する。ステップ116は、第1のステップ118を含む。ステップ118では、プログラムファイルが、第1モード(通常モード)であるバーチャルマシンによってインターナライズされる。バーチャマシンのプレインターナライザは、このプレインターナライズ化機能では使用されない。これに代わって、バーチャルマシンは、プレインターナライズ化を実行するために、ベリファイヤ、リゾルバなどの種々の機能部分を使用する。ステップ118でインターナライズ化が完了したのちに、ステップ120において、バーチャルマシンはプログラムファイルを実行する。ステップ121において、このプログラムの実行が終了する。このプログラムはプレインターナライズ済イメージとして格納されていないため、プログラムファイルが選択されて実行されるたびに、ステップ118が実行される必要がある。ステップ114に戻って、ユーザー又は他の供給源が、プログラムファイルのプレインターナライズ化を実行することを選択した場合、ステップ116ではなくステップ124が実行される。ステップ124において、Javaアプリケーションマネージャは、図3に関して上記した方法によってプレインターナライズ済イメージを生成するために、第2モード(プレインターナライズ化モード)であるバーチャルマシンを呼び出す。プレインターナライズ済イメージが作成されると、このイメージは装置の固定メモリに格納される。ステップ105においてこのプログラムファイルを実行するように再度選択されても、ステップ107を実行するように処理が進むため、ステップ124を再度実行する必要はない。
図6に、別の実施形態である処理130を示す。処理130はステップ131から開始する。ステップ133において、ユーザー又は他の供給源は、利用可能なプログラムファイルから少なくとも1つのプログラムファイルを選択する。一実施形態においては、この選択を行なう「他の供給源」は、装置の外部にあるプログラムファイルサーバー又はその他の装置外の供給源であり得る。ステップ135において、プレインターナライズ済イメージが装置に既に作成されているかどうかが判定される。「装置に」という判定基準を追加したのは、本実施形態においては、装置の外部からプレインターナライズ済みのイメージを受け取る場合を想定しており、プレインターナライザがこの例を処理する方法を示すためである。判定結果が「YES」の場合、ステップ137,140,141,143,144は、図5のステップ107,109,100,112,113と全く同じになる。ステップ137は、実行と削除のいずれを行なうかを指示するユーザー要求に応答して決定され得る。判定結果が「NO」の場合、ステップ146において、この装置で使用可能な、プレインターナライズ済イメージが他の場所で既に作成されているかどうかが判定さ
れる。この判定結果が「NO」の場合、ステップ148,150,151,152,153,156,158は図5のステップ114,116,118,120,121,124,125と全く同じになる。ステップ148は、実行又はプレインターナライズ化処理のいずれかを指示するユーザー要求に応答して決定され得る。この判定の結果が「YES」の場合、ステップ157が実行される。ステップ157において、バーチャルマシンがJavaアプリケーションマネージャによって呼び出される。このとき、イメージをプレインターナライズするのではなく、装置の固定メモリ内の特定の場所にプレインターナライズ済イメージをコピー及びパッチする。ステップ157が完了すると、最終ステップ160に到達する。
れる。この判定結果が「NO」の場合、ステップ148,150,151,152,153,156,158は図5のステップ114,116,118,120,121,124,125と全く同じになる。ステップ148は、実行又はプレインターナライズ化処理のいずれかを指示するユーザー要求に応答して決定され得る。この判定の結果が「YES」の場合、ステップ157が実行される。ステップ157において、バーチャルマシンがJavaアプリケーションマネージャによって呼び出される。このとき、イメージをプレインターナライズするのではなく、装置の固定メモリ内の特定の場所にプレインターナライズ済イメージをコピー及びパッチする。ステップ157が完了すると、最終ステップ160に到達する。
図7に、装置の外部に存在する供給源から受け取ったイメージの処理を示す。本実施形態は、アプリケーションの実行時間を短縮することを求めるニーズに、プレインストール時間を大幅に短縮することによって応えるものである。換言すれば、本発明は、サーバーとして動作する装置で実現され得る。このため、既存の装置と類似した装置外部のサーバー又は装置外部のクライアント(ピア−ツー−ピア)で、Javaバーチャルマシン環境を実行することによる利点が得られる。装置の外にあるイメージと装置のバーチャルマシンによって作成されたイメージとは、イメージが装置のメモリ資源に保存されているかどうかという点で異なる。
システム180は一般に、第1クライアント装置182と、第2クライアント装置又はクライアント装置をシミュレートするサーバー181と、再利用可能な実行可能イメージの形では装置182に存在していないアプリケーション群(application suite)184とを有する。クライアント装置182は一般に、アプリケーションマネージャ204、動的メモリ206、固定メモリ220、及びバーチャルマシン210を有する。一実施形態においては、装置181,182は、図3の装置45と同じ構造を有する。別の実施形態を使用するか、或いは構造を変更しても、本明細書中に記載の機能を達成することができる。追加ファイルのプレインターナライズ済イメージを格納するために、装置182の外部にある固定メモリの光学的記憶装置200を使用し得る。
動作に関して記載すると、装置181,182の外部に存在する供給源によって追加ファイル184が作成される。追加ファイル184は、装置又はクライアント装置をシミュレートするサーバー181のアプリケーションマネージャ185によって、同装置又はサーバー181に転送される。追加ファイルは、第2モードで動作しているバーチャルマシン188によって、固定メモリ190にプレインターナライズされる。バーチャルマシン188は動的メモリ187を利用して、このモードを達成する。格納されたイメージは、装置181によって実行されることもあれば実行されないこともある。装置181がクライアント装置である場合は、装置181によってこのアプリケーションイメージが実行される可能性が高い。装置181がクライアント装置をシミュレートするサーバーである場合、装置181は、プレインターナライズ済イメージの生成にのみ使用される(すなわち、装置181はアプリケーションサーバーとして動作する)。装置181がクライアント装置をシミュレートするサーバーとして使用される場合、イメージは随意的に固定メモリ200に格納される。この固定メモリ200をどこに設けるかは、システムの設計的事項である。第1クライアント装置182のアプリケーションマネージャ204が、固定メモリ200又はアプリケーションマネージャ185からプレインターナライズ済イメージを受け取ったときに、実行が必要なプレインターナライズ化ステップは1ステップしかない。この最後のステップは、図6に示すプレインターナライズ済イメージを固定メモリ220にコピー及びパッチするステップ157である。このため、システム180によって、装置182が完全なプレインターナライズ化処理を実行することが回避される。低機能のクライアント装置は、スタンドアロン型装置と比較して処理能力が非常に低くかつ動的メモリが極めて少なく、本発明によって、低機能のクライアント装置が非常駐アプリケーシ
ョンを利用することが可能となる。さらに、従来の装置では、インターナライズされていないプログラムを実行するたびに全プレインターナライズ化処理を実行する必要があるが、本明細書中に記載の低機能のクライアント構成は高速に動作する。
ョンを利用することが可能となる。さらに、従来の装置では、インターナライズされていないプログラムを実行するたびに全プレインターナライズ化処理を実行する必要があるが、本明細書中に記載の低機能のクライアント構成は高速に動作する。
図8に、本発明を実現した装置300を示す。装置300は、プロセッサ302及びメモリ304を有する。メモリ304は、さまざまな構造を有するように構成し得るが、図8には上記の図面に関して記載したものと同様の構造を有するもののみを示す。I/Oは、プロセッサ302と双方向的に結合されているほか、双方向的に結合されたメモリ304とも双方向的に結合されている。図面の例においては、メモリ304は、Javaアプリケーションマネージャ310、バーチャルマシン312、動的メモリ314、及び固定メモリ316を有する。
動作に関して記載すると、プロセッサは所定の命令を実行する。メモリ304の第1部分は、命令及びデータをプロセッサに提供するように、プロセッサ302に結合されている。一実施形態においては、メモリ304の第1部分は、バーチャルマシン312である。メモリ304は、少なくとも1つの命令の第1、第2及び第3の集合を少なくとも有する。各命令の集合が1つの命令を含むか、或いは複数の命令を含むかの議論は、設計的事項及びプログラミング上の選択事項であり、必要とされるハードウェア機能とソフトウェア機能との比重によって決まる。下記においては、ハードウェアの性能をできるだけ抑えるために、複数の命令を含む命令機能(instruction functionality)を使用するものと仮定して説明する。しかし、本明細書に記載する命令機能は、必要であれば1つの命令を含むこともあり得る。第1の複数の命令は、第1プログラムファイルを受け取るための命令である。第2の複数の命令は、第1プログラムファイルをバーチャルマシンの本来のメモリ構造にプレインターナライズして、第1プログラムファイルの再利用可能な実行可能イメージを作成するための命令である。第3の複数の命令は、プレインターナライズ済プログラムファイルイメージ(再利用可能な実行可能イメージ)を、メモリ304内の第2メモリ部分に格納するための命令である。再利用可能な実行可能イメージは、実行前にインターナライズ化を実行しなくても、バーチャルマシン312が実行することができる。
図8のメモリ304は、再利用可能な実行可能イメージを受け取り、メモリに格納するための第4の複数の命令を有することがある。再利用可能な実行可能イメージが記憶されると、メモリポインタが内蔵の機能(built−in)によって更新されて、イメージをこの装置のメモリ内で移動させることができるようになる。このため、再利用可能な実行可能イメージを格納しているメモリは、動的メモリ調整(dynamic memory reconciliation)に対応しており、この結果、メモリが効率的に使用され、利用可能なアドレスを効率的に使用できるようにメモリが調整される。この処理によって、オブジェクトを装置に移動させて、別の再利用可能な実行可能イメージを作成できるようになる。再利用可能な実行可能イメージが装置に格納されたのち、現在のメモリアドレスの状態を示すように、再利用可能な実行可能イメージのメモリアドレスが更新される。また、メモリ304は、ユーザー要求を処理する際に実行される別の複数の命令を有することがあり、ユーザー要求に応答して、バーチャルマシンがプレインターナライズ化モードで実行する。装置の内部又は外部に存在する第2メモリから、プレインターナライズ済プログラムファイルイメージを転送するための別の複数の命令が、メモリ304に存在することもある。さらに別の複数の命令がメモリ304に存在し、プレインターナライズ済プログラムファイルをメモリから移動するか、或いは完全に削除することによって、ユーザー要求の処理を実行することもある。
プログラムファイルをバーチャルマシン312の本来のメモリ構造にプレインターナライズすることによって、再利用可能な実行可能イメージが以前に作成されている。本例は
、実行前に再利用可能な実行可能イメージをインターナライズすることなく、バーチャルマシン312は、再利用可能な実行可能イメージを実行することができる。メモリ304は、随意的に、再利用可能な実行可能イメージをメモリ内の別の場所に移動するための別の複数の命令を格納していてもよい。さらに、メモリ304は、再利用可能な実行可能イメージ(プレインターナライズ済プログラムファイルイメージ)の内部のメモリアドレスを更新するための別の命令の集合を格納していてもよい。また、メモリ304は、図5,6に記載した処理を実行するための命令を格納していてもよい。
、実行前に再利用可能な実行可能イメージをインターナライズすることなく、バーチャルマシン312は、再利用可能な実行可能イメージを実行することができる。メモリ304は、随意的に、再利用可能な実行可能イメージをメモリ内の別の場所に移動するための別の複数の命令を格納していてもよい。さらに、メモリ304は、再利用可能な実行可能イメージ(プレインターナライズ済プログラムファイルイメージ)の内部のメモリアドレスを更新するための別の命令の集合を格納していてもよい。また、メモリ304は、図5,6に記載した処理を実行するための命令を格納していてもよい。
本発明は、ポータブル無線装置において使用するうえで特に有利である。本発明を実現可能なポータブル装置の例に、電話機、インターネット機器(ポータブル型、ポータブル型)、個人情報端末(PDA)、携帯無線呼出し器、カメラ、カムコーダ(カメラ/レコーダ一体型)、ポータブルテレビ、及び様々な通信機能を組み合わせた装置などの幅広い機器が含まれる。
上記の明細書においては、本発明を、Javaプログラミング言語及び特定の実施形態に関して説明した。しかし、通常の知識を有する当業者は、添付の特許請求の範囲に記載されている本発明の範囲を逸脱することなく、本発明の様々な修正及び変更が可能であることを理解する。例えば、本発明は、動的ロードに対応した他の高級プログラミング言語にも適用することができる。また、本明細書中に記載のソフトウェア(例えば、図3のバーチャルマシン50のソフトウェアインプリメンテーション)は、少なくとも1つのコンピュータのハードディスク、フロッピディスク、3.5インチディスク、コンピュータストレージ用テープ、磁気ドラム、スタティックランダムアクセスメモリ(SRAM)セル、ダイナミックランダムアクセスメモリ(DRAM)セル、電気消去可能(EEPROM、EPROM、フラッシュ)セル、不揮発性セル、強誘電性又は強磁性メモリ、コンパクトディスク(CD)、レーザーディスク、オプティカルディスクなどのコンピュータ可読媒体に実現され得る。したがって、本明細書並びに図面は、限定的ではなく例示的なものと理解され、この種の変更は全て本発明の範囲に含まれることが意図される。
利点、その他の長所並びに問題に対する解決策を、特定の実施形態に関して上に記載した。しかし、想到される、或いはより明白となる利点、長所、問題に対する解決策及び利点、並びにいかなる利点、長所又は問題に対する解決策を生じ得る任意の要素は、特許請求の範囲の少なくとも一部にとって、重要、必須又は不可欠な特徴或いは要素であると解釈されない。本明細書に使用されているように、「からなる」、「を含む」との用語、或いはこれらのいかなる変形例は、非排他的な含有関係を意味することを意図する。このため、列記した要素を構成するプロセス、方法、物品又は装置は、これらの要素を含むだけではなく、明記されていない他の要素や、この種のプロセス、方法、物品又は装置に固有の他の要素をも含み得る。
Claims (7)
- 通常の動作モードとプレインターナライズされた動作モードとを有するバーチャルマシンを動作させるための処理であって、
選択されたプログラムファイルを特定するために利用可能なプログラムファイルの集合からプログラムファイルを選択するステップと、
実行前に前記選択されたプログラムファイルを後でインターナライズすることなく実行可能なイメージであって、前記選択されたプログラムファイルの再利用可能なプレインターナライズ済イメージが既に作成されているかどうかを判定するステップと、
前記選択されたプログラムファイルの再利用可能なプレインターナライズ済イメージが作成済みである場合、前記プレインターナライズ化モードで前記バーチャルマシンを選択的に動作させるステップとからなり、該ステップは、
前記選択されたプログラムファイルの再利用可能なプレインターナライズ済イメージを作成するステップと、
前記選択されたプログラムファイルの再利用可能なプレインターナライズ済イメージをメモリに格納するステップとからなる処理。 - 前記選択されたプログラムファイルの再利用可能なプレインターナライズ済イメージが作成済みである場合、前記プレインターナライズ化モードで前記バーチャルマシンを選択的に動作させる前記ステップは、ユーザー要求に応答して実行される、請求項1に記載の処理。
- 前記バーチャルマシンは第1装置で実行され、かつ前記処理は、
前記選択されたプログラムファイルの再利用可能なプレインターナライズ済イメージが前記第1装置で利用可能な場合、実行前に前記選択されたプログラムファイルをプレインターナライズすることなく前記選択されたプログラムファイルの再利用可能なプレインターナライズ済イメージを実行するステップと、
前記選択されたプログラムファイルの再利用可能なプレインターナライズ済イメージが前記第1装置とは別の第2装置で入手可能な場合、前記プレインターナライズ化モードに移行し、前記選択されたプログラムファイルの再利用可能なプレインターナライズ済イメージを前記第2装置から前記第1装置にコピーして、前記選択されたプログラムファイルの再利用可能なプレインターナライズ済イメージ内のメモリアドレスを更新するステップとをさらに備える、請求項1に記載の処理。 - 第1装置で前記バーチャルマシンを実行するステップと、
前記選択されたプログラムファイルの再利用可能なプレインターナライズ済イメージが前記第1装置で入手可能な場合、前記プレインターナライズ化モードに選択的に移行し、前記選択されたプログラムファイルの再利用可能なプレインターナライズ済イメージを削除するステップとをさらに備える、請求項1に記載の処理。 - 命令を実行するためのプロセッサと、
命令及びデータを前記プロセッサに提供するように前記プロセッサに結合された第1メモリと、前記第1メモリは、
前記プロセッサによって実行されたときに、プログラムファイルの受け取りを実現する少なくとも1つの命令の第1の集合と、
前記プロセッサによって実行されたときに、前記プログラムファイルの再利用可能な実行可能イメージを作成するため、バーチャルマシンの本来のメモリ構造へのプレインターナライズ化を実現する少なくとも1つの命令の第2の集合と、
前記プロセッサによって実行されたときに、実行前にインターナライズされることなく前記バーチャルマシンが実行することができる前記再利用可能な実行可能イメージの格
納を実現する少なくとも1つの命令の第3の集合とを有することとを備える装置。 - 前記装置は該装置に含まれているか又は前記装置の外部に存在する第2メモリをさらに有し、前記第1メモリ又は前記第2メモリのいずれかは、前記プロセッサによって実行されたときに、前記再利用可能な実行可能イメージ内部のメモリアドレスの更新を実現する第4の複数の命令を有する、請求項5に記載の装置。
- 前記装置は該装置に含まれているか又は前記装置の外部に存在する第2メモリをさらに有し、前記第1メモリ又は前記第2メモリのいずれかは、
前記プロセッサによって実行されたときに、前記再利用可能な実行可能イメージの前記第2メモリ内の別の場所への移動を実現する少なくとも1つの命令の第4の集合と、
前記プロセッサによって実行されたときに、前記再利用可能な実行可能イメージ内のメモリアドレスの更新を実現する少なくとも1つの命令の第5の集合とを有する、請求項5に記載の装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/800,935 US7080373B2 (en) | 2001-03-07 | 2001-03-07 | Method and device for creating and using pre-internalized program files |
PCT/US2001/049342 WO2002073401A2 (en) | 2001-03-07 | 2001-12-18 | Method and device for creating and using pre-internalized program files |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005509194A true JP2005509194A (ja) | 2005-04-07 |
Family
ID=25179757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002571993A Pending JP2005509194A (ja) | 2001-03-07 | 2001-12-18 | プレインターナライズ済プログラムファイルの作成及び使用のための方法並びに装置 |
Country Status (8)
Country | Link |
---|---|
US (2) | US7080373B2 (ja) |
EP (1) | EP1425658A2 (ja) |
JP (1) | JP2005509194A (ja) |
KR (1) | KR100864192B1 (ja) |
CN (1) | CN1306402C (ja) |
AU (1) | AU2002248212A1 (ja) |
TW (1) | TWI229269B (ja) |
WO (1) | WO2002073401A2 (ja) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7093086B1 (en) * | 2002-03-28 | 2006-08-15 | Veritas Operating Corporation | Disaster recovery and backup using virtual machines |
US7213246B1 (en) | 2002-03-28 | 2007-05-01 | Veritas Operating Corporation | Failing over a virtual machine |
US7603670B1 (en) | 2002-03-28 | 2009-10-13 | Symantec Operating Corporation | Virtual machine transfer between computer systems |
US6757778B1 (en) | 2002-05-07 | 2004-06-29 | Veritas Operating Corporation | Storage management system |
US20040015943A1 (en) * | 2002-07-17 | 2004-01-22 | Ying-Chou Chen | Embedded computer system equipped with an upgradeable software library |
KR100493893B1 (ko) * | 2003-02-07 | 2005-06-10 | 삼성전자주식회사 | 자바 프로그램에서 클래스 로딩 과정을 단축시키는 시스템및 방법 |
JP2004312711A (ja) * | 2003-03-25 | 2004-11-04 | Ricoh Co Ltd | 画像形成装置及び画像形成装置を遠隔のアプリケーションにより操作する方法 |
CN100388191C (zh) * | 2003-04-01 | 2008-05-14 | 松下电器产业株式会社 | 程序连接方法、装置以及终端装置 |
US7203944B1 (en) * | 2003-07-09 | 2007-04-10 | Veritas Operating Corporation | Migrating virtual machines among computer systems to balance load caused by virtual machines |
US20050028132A1 (en) * | 2003-07-31 | 2005-02-03 | Srinivasamurthy Venugopal K. | Application specific optimization of interpreters for embedded systems |
US7246200B1 (en) | 2003-11-12 | 2007-07-17 | Veritas Operating Corporation | Provisioning and snapshotting using copy on read/write and transient virtual machine technology |
US7124291B1 (en) * | 2003-12-22 | 2006-10-17 | Sun Microsystems, Inc | System and method for eliminating static initialization overhead by memory space cloning of a master runtime system process |
US7810092B1 (en) | 2004-03-02 | 2010-10-05 | Symantec Operating Corporation | Central administration and maintenance of workstations using virtual machines, network filesystems, and replication |
EP1622009A1 (en) * | 2004-07-27 | 2006-02-01 | Texas Instruments Incorporated | JSM architecture and systems |
KR100622820B1 (ko) | 2004-12-22 | 2006-09-19 | 엘지전자 주식회사 | 데이터 방송 콘텐츠에서 클래스 파일 분석을 통한 이미지처리 방법 및 그 장치 |
US20060184937A1 (en) * | 2005-02-11 | 2006-08-17 | Timothy Abels | System and method for centralized software management in virtual machines |
US8583770B2 (en) * | 2005-02-16 | 2013-11-12 | Red Hat, Inc. | System and method for creating and managing virtual services |
US9606846B2 (en) * | 2005-07-29 | 2017-03-28 | Sap Se | System and method for dynamic proxy generation |
US20070027877A1 (en) * | 2005-07-29 | 2007-02-01 | Droshev Mladen I | System and method for improving the efficiency of remote method invocations within a multi-tiered enterprise network |
JP2007164526A (ja) * | 2005-12-14 | 2007-06-28 | Canon Inc | 情報処理装置及び方法 |
US20070168509A1 (en) * | 2005-12-30 | 2007-07-19 | Droshev Mladen I | System and method for remote loading of classes |
CN100458700C (zh) * | 2006-03-22 | 2009-02-04 | 北京握奇数据系统有限公司 | 带有安全需求的应用程序的构建方法和装置 |
WO2007111208A1 (ja) * | 2006-03-24 | 2007-10-04 | Matsushita Electric Industrial Co., Ltd. | 再生装置、デバッグ装置、システムlsi、プログラム |
US8626557B2 (en) * | 2006-09-26 | 2014-01-07 | International Business Machines Corporation | System and method of providing snapshot to support approval of workflow changes |
US20090070752A1 (en) * | 2007-09-06 | 2009-03-12 | International Business Machines Corporation | Method and system for optimization of an application |
US8261254B2 (en) * | 2008-03-31 | 2012-09-04 | Symantec Corporation | Dynamic insertion and removal of virtual software sub-layers |
US8631397B2 (en) * | 2008-03-31 | 2014-01-14 | Microsoft Corporation | Virtualized application image patching |
US8577845B2 (en) * | 2008-06-13 | 2013-11-05 | Symantec Operating Corporation | Remote, granular restore from full virtual machine backup |
US8479178B2 (en) * | 2008-06-27 | 2013-07-02 | Microsoft Corporation | Compiler in a managed application context |
US9507613B2 (en) * | 2012-03-30 | 2016-11-29 | Oracle International Corporation | Methods and apparatus for dynamically preloading classes |
US9740500B2 (en) * | 2012-08-30 | 2017-08-22 | Microsoft Technology Licensing, Llc | Layout system for operating systems using BPRAM |
US9952879B2 (en) | 2012-08-30 | 2018-04-24 | Microsoft Technology Licensing, Llc | Application pre-layout in byte-addressable persistent random access memory |
US9753846B2 (en) * | 2012-09-06 | 2017-09-05 | Red Hat, Inc. | Adjusting the operating memory used by a virtual machine during runtime |
US11347498B2 (en) * | 2013-02-26 | 2022-05-31 | Red Hat, Inc. | Bytecode modification |
US9959106B2 (en) * | 2013-11-14 | 2018-05-01 | International Business Machines Corporation | Sharing of portable initialized objects between computing platforms |
KR20160019125A (ko) * | 2014-08-11 | 2016-02-19 | 동부대우전자 주식회사 | 냉장고 |
US9811367B2 (en) | 2014-11-13 | 2017-11-07 | Nsp Usa, Inc. | Method and apparatus for combined hardware/software VM migration |
US10303782B1 (en) | 2014-12-29 | 2019-05-28 | Veritas Technologies Llc | Method to allow multi-read access for exclusive access of virtual disks by using a virtualized copy of the disk |
US10394528B2 (en) | 2016-03-30 | 2019-08-27 | Oracle International Corporation | Returning a runtime type loaded from an archive in a module system |
US10191753B2 (en) | 2016-03-30 | 2019-01-29 | Oracle International Corporation | Generating verification metadata and verifying a runtime type based on verification metadata |
CN110806910A (zh) * | 2018-07-18 | 2020-02-18 | 深圳市鸿合创新信息技术有限责任公司 | 一种轮播图的优化方法及系统、电子设备 |
CN109241011B (zh) * | 2018-09-21 | 2023-01-06 | 联想(北京)有限公司 | 一种虚拟机文件处理方法及装置 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA226747A (en) * | 1922-12-05 | F. Exhart Charles | Lighting mixture | |
US4695950A (en) * | 1984-09-17 | 1987-09-22 | International Business Machines Corporation | Fast two-level dynamic address translation method and means |
JP3190042B2 (ja) | 1991-10-31 | 2001-07-16 | マトリテク インコーポレイテッド | 核マトリックス蛋白液アッセー |
US6400996B1 (en) * | 1999-02-01 | 2002-06-04 | Steven M. Hoffberg | Adaptive pattern recognition based control system and method |
US5581768A (en) * | 1995-02-27 | 1996-12-03 | Intel Corporation | Method and apparatus for executing applications in place from write once/seldom memories |
US5925123A (en) * | 1996-01-24 | 1999-07-20 | Sun Microsystems, Inc. | Processor for executing instruction sets received from a network or from a local memory |
US5838910A (en) | 1996-03-14 | 1998-11-17 | Domenikos; Steven D. | Systems and methods for executing application programs from a memory device linked to a server at an internet site |
US5815709A (en) | 1996-04-23 | 1998-09-29 | San Microsystems, Inc. | System and method for generating identifiers for uniquely identifying object types for objects used in processing of object-oriented programs and the like |
US5815718A (en) | 1996-05-30 | 1998-09-29 | Sun Microsystems, Inc. | Method and system for loading classes in read-only memory |
JP2000514584A (ja) | 1996-10-25 | 2000-10-31 | シュルンベルジェ システーム | 高級プログラミング言語を用いたマイクロコントローラ |
ATE244417T1 (de) * | 1996-11-13 | 2003-07-15 | Paran Arik | Echtzeitprogramm-sprachbeschleuniger |
GB2321981B (en) | 1997-02-06 | 2002-01-09 | Ibm | Hosted machine code installation |
US5920720A (en) | 1997-02-25 | 1999-07-06 | Microsoft Corporation | Efficient computer based virtual machine object structure |
US5943496A (en) * | 1997-05-17 | 1999-08-24 | Intertop Corporation | Methods for developing and instantiating object classes using a java virtual machine extension |
US6021273A (en) | 1997-06-30 | 2000-02-01 | Sun Microsystems, Inc. | Interpreter generation and implementation utilizing interpreter states and register caching |
US6349344B1 (en) * | 1997-12-16 | 2002-02-19 | Microsoft Corporation | Combining multiple java class files into a run-time image |
US6658492B1 (en) * | 1998-03-20 | 2003-12-02 | Sun Microsystems, Inc. | System and method for reducing the footprint of preloaded classes |
US6199196B1 (en) | 1998-03-20 | 2001-03-06 | Sun Microsystems, Inc. | Methods and apparatus for linking a program for remote execution |
US5999732A (en) | 1998-03-23 | 1999-12-07 | Sun Microsystems, Inc. | Techniques for reducing the cost of dynamic class initialization checks in compiled code |
US6061520A (en) * | 1998-04-07 | 2000-05-09 | Sun Microsystems, Inc. | Method and system for performing static initialization |
US6110227A (en) * | 1998-06-24 | 2000-08-29 | Microsoft Corporation | Systems and methods for pre-processing variable initializers |
US6438744B2 (en) | 1998-07-15 | 2002-08-20 | Microsoft Corporation | Dynamic mapping of component interfaces |
KR20010072477A (ko) * | 1998-08-13 | 2001-07-31 | 썬 마이크로시스템즈, 인코포레이티드 | 가상 머신 환경에서 네이티브 코드를 변환하고 실행하는방법 및 장치 |
US6336122B1 (en) | 1998-10-15 | 2002-01-01 | International Business Machines Corporation | Object oriented class archive file maker and method |
CA2255042C (en) * | 1998-11-30 | 2004-04-13 | Leonard W. Theivendra | Class loader |
US6272674B1 (en) * | 1998-12-14 | 2001-08-07 | Nortel Networks Limited | Method and apparatus for loading a Java application program |
CA2267477C (en) * | 1999-03-30 | 2003-10-14 | Object Technology International Inc. | Packaging memory image files |
US6763397B1 (en) * | 1999-05-27 | 2004-07-13 | Sun Microsystems, Inc. | Fully lazy linking |
US6460178B1 (en) | 1999-06-30 | 2002-10-01 | Microsoft Corporation | Shared library optimization for heterogeneous programs |
US6813762B1 (en) * | 2000-02-22 | 2004-11-02 | Freescale Semiconductor, Inc. | Method for processing program files in a programming language capable of dynamic loading |
US20020194293A1 (en) | 2001-06-13 | 2002-12-19 | Osman John H. | Communications system and method therefor |
-
2001
- 2001-03-07 US US09/800,935 patent/US7080373B2/en not_active Expired - Fee Related
- 2001-12-18 EP EP01997093A patent/EP1425658A2/en not_active Withdrawn
- 2001-12-18 KR KR1020037011692A patent/KR100864192B1/ko not_active IP Right Cessation
- 2001-12-18 CN CNB018229891A patent/CN1306402C/zh not_active Expired - Fee Related
- 2001-12-18 JP JP2002571993A patent/JP2005509194A/ja active Pending
- 2001-12-18 WO PCT/US2001/049342 patent/WO2002073401A2/en not_active Application Discontinuation
- 2001-12-18 AU AU2002248212A patent/AU2002248212A1/en not_active Abandoned
- 2001-12-27 TW TW090132510A patent/TWI229269B/zh not_active IP Right Cessation
-
2006
- 2006-06-05 US US11/422,230 patent/US8099729B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
KR20040004551A (ko) | 2004-01-13 |
WO2002073401A2 (en) | 2002-09-19 |
KR100864192B1 (ko) | 2008-10-20 |
AU2002248212A1 (en) | 2002-09-24 |
TWI229269B (en) | 2005-03-11 |
US8099729B2 (en) | 2012-01-17 |
WO2002073401A3 (en) | 2004-04-01 |
EP1425658A2 (en) | 2004-06-09 |
CN1306402C (zh) | 2007-03-21 |
US7080373B2 (en) | 2006-07-18 |
US20020129078A1 (en) | 2002-09-12 |
CN1524219A (zh) | 2004-08-25 |
US20060225059A1 (en) | 2006-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2005509194A (ja) | プレインターナライズ済プログラムファイルの作成及び使用のための方法並びに装置 | |
US8612930B2 (en) | Methods and apparatus for dynamic class reloading and versioning | |
US7644402B1 (en) | Method for sharing runtime representation of software components across component loaders | |
JP5518085B2 (ja) | ランタイムにおいて生成したコードのキャッシュへの格納 | |
US6112025A (en) | System and method for dynamic program linking | |
US7246346B2 (en) | System and method for persisting dynamically generated code in a directly addressable and executable storage medium | |
US6823509B2 (en) | Virtual machine with reinitialization | |
US20160232017A1 (en) | System and Method for Reloading Constructors | |
US20110154378A1 (en) | Api namespace virtualization | |
US8001518B2 (en) | Configuring a shared library to accommodate relocatable data in a pervasive device | |
JPH11327916A (ja) | コンパイル済コ―ドにおけるダイナミッククラス初期化チェックのコスト低減技術 | |
KR101059633B1 (ko) | 멀티태스킹 가상 머신을 위한 힙 구성 | |
US7406687B1 (en) | Sharing runtime representation of software component methods across component loaders | |
US6813762B1 (en) | Method for processing program files in a programming language capable of dynamic loading | |
KR101615295B1 (ko) | 클래스 파일 내에 네이티브 코드를 임베드시킴으로써 가상 머신에서의 플랫폼 의존성 루틴의 적용 | |
JP4961019B2 (ja) | Efiベースのファームウェアにおいてpeiモジュールについてグローバル変数を利用する方法 | |
US6996813B1 (en) | Frameworks for loading and execution of object-based programs | |
KR101140522B1 (ko) | 객체 관리 시스템 및 방법 | |
KR100478463B1 (ko) | 응용 프로그램의 동적링크 방법 | |
US6978456B1 (en) | Methods and apparatus for numeric constant value inlining in virtual machines | |
JP2003256209A (ja) | プログラム実行装置 | |
CN117992052A (zh) | 应用程序编译方法及装置 | |
WO2023154092A1 (en) | Dynamically overriding a function based on a capability set during load time | |
JP2013058270A (ja) | マルチタスク仮想マシンのためのヒープ組織 | |
KR20000003162A (ko) | 효율적인 플래시 메모리 운용 방법 |