JP2003513353A - Java(登録商標)プログラムのプラットフォームに特定的な効率性を高めるための方法及びソフトウエア製品 - Google Patents

Java(登録商標)プログラムのプラットフォームに特定的な効率性を高めるための方法及びソフトウエア製品

Info

Publication number
JP2003513353A
JP2003513353A JP2001533509A JP2001533509A JP2003513353A JP 2003513353 A JP2003513353 A JP 2003513353A JP 2001533509 A JP2001533509 A JP 2001533509A JP 2001533509 A JP2001533509 A JP 2001533509A JP 2003513353 A JP2003513353 A JP 2003513353A
Authority
JP
Japan
Prior art keywords
java
platform
class
program
cross
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2001533509A
Other languages
English (en)
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.)
Koninklijke Philips NV
Original Assignee
Philips Electronics NV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Philips Electronics NV filed Critical Philips Electronics NV
Publication of JP2003513353A publication Critical patent/JP2003513353A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 Javaプログラムを特定のハードウエアプラットフォーム上でより効率的に動作するよう最適化し高めるための方法は、Javaプログラムがその機能のために最終的に必要とする実行パフォーマンスを高めること及びメモリの量の削減に注目して、Javaプログラムに関連付けられる既存のクラスを識別し変更するために定数及び特化関数を定義する新しいクラスを使用する段階を含む。方法は定数の評価及び解析を用い、このような評価及び解析の結果によりどの種類のコード特化が生ずるかが決定される。任意の段階として、生じたプラットフォームの高められたJavaクラスは元のJavaクラスを上書きし、これによりJavaプログラムが将来に動作しているときに、同じJavaプログラム又は同じハードウエアプラットフォーム上で動作している他のJavaプログラムによって変更されたクラスが使用されることが可能とな。ソフトウエア製品もまた記載されている。

Description

【発明の詳細な説明】
【0001】 本発明は、種々のハードウエアプラットフォーム上でJavaプログラムの動
作を改善し向上する方法に関連する。更に特定的には、本発明は、得られるJa
va実行可能コードのサイズを減少させると共にJava実行可能コードが実行
されたときにパフォーマンスを改善させるために一組の新しい特定プラットフォ
ーム用Javaクラスを使用する方法に関する。ソフトウエア製品もまた開示さ
れている。
【0002】 C及びC++プログラミング言語で開発されたプログラムのような、コンパイ
ル及び実行モデルによりプラットフォームを認識するプログラムの開発者は、言
語プリプロセッサを利用しうる。C言語といった言語用のプリプロセッサは、開
発者が(例えば#define命令を用いて)定義を行い、一定の定数を使用す
ることを用いることを可能とする。このような定数は、本質的にプラットフォー
ムに特定のものである場合が多い。言語プロセッサはまた、条件付き命令(例え
ば#ifdef又は#if)を含むことを許し、これらの条件付き命令は続くコ
ンパイル処理中に包含されるべき又は排除されるべき特定の変形されたコードを
選択するために使用され、コンパイル処理はコンパイラによって生成される実行
可能ファイルに対して影響を与える。このような定数及び命令を使用することに
より、開発者及び言語コンパイラソフトウエアは、より良い空間及びパフォーマ
ンス効率の機械特定コードを生成し実行するために、プログラムコンパイル処理
の出力をより良く適合させることが可能となる。これは、新しいカテゴリの情報
機器の中にある埋め込み装置のためのソフトウエアを開発するときに特に興味深
い。
【0003】 Javaは、完全にオブジェクト指向な、プラットフォーム独立プログラミン
グ言語であり、ソースコードをソースコード自体の中間表現へコンパイルするこ
とによって構造的な独立性を達成している。Javaソースコードは、通常の機
械コードへコンパイルされるのではなく、Javaの特徴をサポートするよう特
に設計された仮想機械のためのコード、即ちバイトコードへ翻訳される。Jav
aインタプリタ又はJava対応ブラウザは、翻訳されたコードを実行する。J
avaソースコードはコンパイルされねばならないが、Javaインタプリタは
実行時に翻訳されたコードを動的にリンクするためリンク段階は必要ではない。
Javaプログラムは、通常は、Javaインタープリタ上で実行されるアプリ
ケーション又はJava対応ブラウザ上で実行されるアプレットとして分類され
る。これについては、ここに参照として組み入れられる米国特許第5,933,
144号を参照のこと。
【0004】 JavaBeansは、Javaベースのソフトウエアコンポーネントを構築
し使用するためのコンポーネントモデルである。「bean」は、単に追加的な
命令情報を含むJavaクラスであり、オブジェクトリンク・埋め込み(OLE
)型ライブラリの概念に似ている。しかしながら、beanは、OLEライブラ
リとは異なり、通常は自己記述型であり、クラスの記号情報及びメソッド署名を
含みbeanについての情報を収集するために開発ツールによってスキャンされ
うるファイルを含む。パブリックなメソッドを有する全てのJavaクラスはb
eanであると考えられるが、beanは一般的にはメソッドだけでなくプロパ
ティ及びイベントを有する。
【0005】 Javaは、グラフィック・ユーザ環境又はオブジェクト指向インタフェース
での実施に適している。Java抽象ウィンドウツールキット(AWT)は、グ
ラフィック・ユーザ・インタフェース(GUI)オブジェクトが、プログラムが
実行されているシステムとは関係なく包括的に取り扱われることを可能する。こ
の特徴は、プラットフォーム独立性の特徴と組み合わされ、Javaを用いたイ
ンターネット及びプラットフォーム間共通ソフトウエアの迅速な開発を促進する
【0006】 このように、非常に移植性の高いプラットフォーム独立プログラミング言語で
あるJavaは、他の言語のために利用な可能なプリプロセス能力を与えるもの
ではない。換言すれば、より小さいコードサイズとより良い特定プラットフォー
ム用パフォーマンスが明らかに必要とされているのにも関わらず、Javaは特
定のプラットフォームに対して最適化されるための内在的な能力又は可能性を有
していない。JavaBeansは適合可能であるよう設計されているが、be
ansは実行時間及びメモリ使用の効率性を犠牲した場合にのみ適合可能性があ
る。このような犠牲は、Javaの移植性についての既に分かっている効率性の
犠牲を更に悪化させる。更に、Javaは、種々の情報機器及びJavaネット
ワークコンピュータといった小さい計算装置のためのプログラミングの開発にお
いて急速に優勢な言語となっているため、当該の装置についての或るプログラミ
ングをカスタマイズする能力がないということは、プログラムサイズ及び効率の
点で大きな欠点である。
【0007】 Javaソフトウエアはコンパイルされたクラスファイル形式で配布されてい
るため、C言語及びC++言語に共通のプリプロセッサ技術は、Javaでは動
作しないことが分かる。従って、プリプロセッサがC及びC++で達成する効率
性の増加を達成するために使用されるがJavaの移植性のあるコンパイルされ
たクラスファイル構造と互換性のある他の方法が必要とされる。
【0008】 また、JustInTime(JIT)コンパイラといったJavaランタイ
ム最適化ツールが存在することが知られている。しかしながら、Javaプログ
ラムの初期の又は継続中の使用中に選択的なコードの包含/排除による最適化が
選択的なプロセスとして生ずることを可能とするツールはない。例えば、IBM
の国際特許出願WO98/37486号は、オンデマンドでJavaクラスファ
イルをロードすることを開示しているが、これはプラットフォームに特定的な最
適化及び実行について扱うものではなく、Java特定メモリページング技術の
問題について扱うものである。更に、SunMicrosystemsの欧州特
許出願EP0913769A2は、メモリの使用効率を高めるため重複データを
除去するためにクラスファイルをプリプロセスしパッケージ化する方法について
記載している。しかしながら、EP’769号明細書の方法は、条件付き制御フ
ロー命令を処理する能力を有する言語プリプロセッサのようには動作しない。上
述のいずれの文献も、ここに参照として組み入れられる。
【0009】 Javaアプリケーションをプラットフォームに特定的な方法で最適化する方
法が必要とされる。更に、Cプリプロセッサといったツールのプラットフォーム
に特定的な利点が利用可能なJavaアプリケーションを最適化する方法が必要
とされる。結果として得られる実行可能なプログラム命令セットを最適化するた
めに、方法が定数及び条件付き論理の両方を使用するものであれば有利である。
最後に、例えばJava言語で、移植性があり、アーキテクチャ独立であり、且
つ安全であるように書かれたJavaプログラムが特定のハードウエアプラット
フォームのためにそれ自体を自己設定することを可能とするJavaアプリケー
ション最適化方法が必要とされる。
【0010】 [発明の概要] 以上のことより、現在、上述の問題点を軽減する方法が必要とされていること
が認められる。本発明は、現在利用可能な技術の欠点及び問題点を解決すること
を動機付けとしてなされたものであり、従って従来技術において必要とされたこ
とを達成するものである。
【0011】 本発明は、Javaプログラムの効率性を、特に多数のハードウエアプラット
フォーム上での実行に関して、高めるための方法及び対応するソフトウエア製品
に関する。
【0012】 1つの面では、本発明は、プラットフォーム間共通Javaアプリケーション
からの特定プラットフォーム用Javaアプリケーションを作成する方法であっ
て、プラットフォーム間共通Javaアプリケーションに関連づけられる少なく
とも1つの変数を定数であると宣言する段階と、プラットフォーム間共通Jav
aアプリケーションから使用されていない関数及び関連する変数を取り除き、そ
れにより特定プラットフォーム用Javaアプリケーションを生成する段階とを
含む方法を提供する。少なくとも1つの変数は第1のクラス中で一定であると宣
言され、使用されていないクラス及び関連する変数を取り除くための命令は第2
のクラスで与えられる。
【0013】 他の面では、本発明は、プラットフォーム間共通Javaプログラムから特定
プラットフォーム用Javaプログラムを作成する方法を提供する。望ましくは
、方法は、プラットフォーム間共通Javaプログラムに関連付けられる選択さ
れた変数を定数として宣言するためにConstantクラスを定義する段階と
、プラットフォーム間共通Javaプログラムに関連付けられるクラスを宣言さ
れた定数に対して特化させる関数を与えるようSpecializeクラスを定
義する段階と、宣言された定数を用いてJavaランタイム環境においてプラッ
トフォーム間共通Javaプログラムを評価する段階と、プラットフォーム間共
通Javaプログラムに関連付けられる少なくとも1つのクラスを変更し、それ
により特定プラットフォーム用Javaプログラムの範囲を定めるクラスを生成
する段階とを含む。
【0014】 望ましくは、変更段階は、 プラットフォーム間共通Javaプログラムに関連付けられる少なくとも1つ
のクラスから使用されていない変数及び関連付けられる関数を取り除き、それに
より少なくとも1つの第1の変更されたクラスを生成する段階と、 プラットフォーム間共通Javaプログラムに関連付けられる少なくとも1つ
のクラスの既存の関数を新しい関数と置き換え、それにより少なくとも1つの第
2の変更されたクラスを生成する段階と、 プラットフォーム間共通Javaプログラムに関連付けられる少なくとも1つ
のクラスに追加的な関数を挿入し、それにより少なくとも1つの変更されたクラ
スを生成する段階と、 のうちの1つ以上を含む。
【0015】 異なる面では、本発明は、所望のプラットフォームに特定的な結果を与えるよ
う相互作用する追加的なJavaクラスの作成及び実施を可能とする方法を提供
する。更に特定的には、本発明は、プラットフォーム間共通Javaプログラム
から特定プラットフォーム用Javaプログラムを作成する方法を提供する。望
ましくは、方法は、 (a)定数を宣言する可能性を与える第1のJavaクラスを定義する段階と
、 (b)第1のJavaクラス中の宣言された定数に対して他のクラスを特化さ
せる関数を与える第2のJavaクラスを定義する段階と、 (c)所望のプラットフォームサポート能力に関する特定の定数を宣言するた
めに第1のJavaクラスを使用する段階と、 (d)所望のプラットフォームサポート能力を与える特化関数を登録するため
に第2のJavaクラスを使用する段階と、 (e)第1のJavaクラス中の定数に関するJavaアプリケーションの実
行を解析する段階と、 (f)定数の解析結果に基づいて、第2のJavaクラスによって指定される
登録された特化関数を使用して適切な所望のコードの無視、発生、及び供給のう
ちの少なくとも1つを含む結果としてのアクションを実行する段階とを含む。
【0016】 更なる面では、本発明は、プラットフォーム間共通Javaアプリケーション
からの特定プラットフォーム用Javaアプリケーションを作成するための命令
のコンピュータ読取り可能な媒体中のコンピュータプログラム製品であって、プ
ラットフォーム間共通Javaアプリケーションに関連づけられる少なくとも1
つの変数を定数であると宣言するためのコンピュータ読取り可能な媒体中の命令
と、プラットフォーム間共通Javaアプリケーションから使用されていない関
数及び関連する変数を取り除き、それにより特定プラットフォーム用Javaア
プリケーションを生成するためのコンピュータ読取り可能な媒体中の命令とを含
むコンピュータプログラム製品を提供する。
【0017】 更なる面では、本発明は、プラットフォーム間共通Javaプログラムからの
特定プラットフォーム用Javaプログラムを作成するための命令のコンピュー
タ読取り可能な媒体中のコンピュータプログラム製品を提供する。望ましくは、
命令は、プラットフォーム間共通Javaプログラムに関連付けられる選択され
た変数を定数として宣言するためにConstantクラスを定義するためのコ
ンピュータ読取り可能な媒体中の第1の命令と、プラットフォーム間共通Jav
aプログラムに関連付けられるクラスを宣言された定数に対して特化させる関数
を与えるようSpecializeクラスを定義するためのコンピュータ読取り
可能な媒体中の第2の命令と、宣言された定数を用いてJavaランタイム環境
においてプラットフォーム間共通Javaプログラムを評価するためのコンピュ
ータ読取り可能な媒体中の第3の命令と、プラットフォーム間共通Javaプロ
グラムに関連付けられる少なくとも1つのクラスを変更し、それにより特定プラ
ットフォーム用Javaプログラムの範囲を定めるためのコンピュータ読取り可
能な媒体中の第4の命令とを含む。
【0018】 [望ましい実施例の詳細な説明] 本発明の上述及び様々な他の特徴は、添付の図面を参照して以下の詳細な説明
から明らかとなろう。以下、本発明の有利な点を開示するために添付の図面を参
照して例としての実施例及び典型的な適用について説明する。
【0019】 本願では、特定の適用のための例としての実施例を参照して本発明について説
明するが、本発明はこれらの例に限られないことが理解されるべきである。従来
技術を熟知しており本願で示されている事項を知りうる者は、本発明の範囲内で
、本発明が主に使用される更なる分野において、更なる変更、適用、及び実施例
が可能であることを認識するであろう。
【0020】 本発明は、条件付き実行、ハードウエアの包含及び排除、並びに、装置に特定
的なJavaコードのための基礎を与えるため、追加された多数の新しいJav
aクラスを用いる。
【0021】 本発明の1つの典型的な実施例では、本発明の方法は2つの新しいJavaク
ラスを使用する。第1のクラスは、Javaプログラムの条件付き処理のために
使用される定数の定義及び登録のために用いられる。第2のクラスは、メモリ消
費及びパフォーマンスに関してより高い効率を必要とする既存のJavaクラス
を置き換えるため又は補足するためにプラットフォームに特定の又は特殊なコー
ドの定義のために用いられる。Javaクラスに関する更なる情報については、
ここに参照として組み入れられるJames Gosling及びHenry McGiltonによる「The
Java Language Environment, 白書」(1996年Sun Microsystems社)の文献
を参照のこと。
【0022】 上記の白書からわかるように、Javaオブジェクト、従って、Javaクラ
スは、メソッドから構築されることがわかる。しかしながら、これは本発明のメ
ソッドとJavaオブジェクトメソッドについての混同を招く可能性が高いため
、以下、Javaオブジェクトメソッドを関数と称するものとする。
【0023】 更に特定的には、例としての実施例は、2つの新しいクラスオブジェクトと、
これらを使用するための方法とを提供する。これらの2つの新しいオブジェクト
は、Constantクラス及びSpecializeクラスである。これらの
両方のクラスについて以下詳述するものとし、これらの新しいクラスを用いる方
法についてはその後に説明する。
【0024】 第1の新しいクラスは、Constantクラスであり、登録時以降は一定で
あるよう変数を登録するために使用されうる。本実施例におけるConstan
tクラスの特に有利な効果は、以前に登録された定数を変更しようとした場合に
ランタイムエラーを生じさせうることである。定数は一旦形成されると変更され
ないはずであるため、この特徴は、ソフトウエアを開発しているプログラマに対
してこのようなエラー状態が生じたことについての必要なフィードバックを与え
ることが認められよう。
【0025】 ここで、最終的にはConstantであると宣言される変数は、実行されて
いるJavaプログラムの現在のランタイム環境に存在する資源制約に基づいて
設定されうることに留意すべきである。また、一定であると宣言された変数は、
初期時のユーザの好み又はインストール時のユーザの好みのいずれかに対応する
ことが有利であることに留意すべきである。この定数の宣言は、所定のプログラ
マによる設定等によっても呼び起こされうる。
【0026】 上述のように、第2のクラスはSpecializeクラスであり、定数に対
してクラスを「特化」する関数を有利に提供する。更に特定的には、クラスを特
化させることは、Specializeクラスの定義された関数が定義されたC
onstantの値に基づいて評価及び解析を行うことを意味する。これらの評
価及び解析は、 (1)定数の切換の導出演繹 (2)一定の条件によるコンピュータ「if」ステートメントの評価、及び (3)定数のみを含む表現の計算 を含むことが望ましいと認められる。
【0027】 換言すれば、Specializeクラスは、Javaランタイム環境にロー
ドされたクラスをより効率的なものと置き換える。任意に、特化された後、結果
としての得られた最適化されたクラスは、既に予め最適化されたクラスとして後
に使用されるべく、ファイルに書き込まれうる。結果として、Constant
クラスとSpecializeクラスの組合せは、標準クラスからオーバヘッド
コードが追い出されることを可能とする。
【0028】 図1は、この特定的な実施例において使用されるアプリケーション・プログラ
ミング・インタフェース(API)である。以下、図1を参照して新しいクラス
について夫々説明し、図2を参照してこれらのクラスの適用について説明する。
【0029】 クラスConstantは、2つのコンストラクタと2つのクラス関数を含む
ものと定義される。第1のコンストラクタは、特定のクラスの変数が定数として
登録される選択的登録を可能とする。第2のコンストラクタは、指定されたクラ
スの全ての変数が定数として登録することを可能とする。
【0030】 更に、2つのクラス関数は、ランタイムエラーのチェックとそれに関連するエ
ラー報告を無効としたり有効としたりするために使用される。ランタイムエラー
のチェックは、実行中に余剰のクロックサイクルを使うことが認識されよう。ア
プリケーションの開発中、ランタイムエラーのチェックは、通常はデバッグのた
めに可能とされる。しかしながら、一旦Javaプログラムがよくテストされ正
常であると見なされると、実行パフォーマンスを改善させるためにエラーチェッ
クは有利にオフとされうる。
【0031】 やはり図1を参照するに、クラスSpecializeは、3つのクラス関数
を特徴付けるものとして定義される。第1のクラス関数specializeF
orは、引数としてクラスの配列と定数の配列を取り、与えられた定数を用いて
入力クラスを「特化」させるためにこれらの引数を使用する。尚、これらの引数
は、順に、クラスと上述のConstantクラスを介して定数として登録され
た変数との組合せでありうる。この第1のクラス関数は、入力クラスと定数に基
づいてプログラムされた評価又は解析を行いうる。解析は単に、パラメータとし
て渡された全てのクラス及び定数に適用される単一の関数からなるものでありう
ることが認識されよう。これに対して、入力クラス及び定数の各組合せに対して
は異なる評価プロシジャが与えられうる。
【0032】 尚、specializeFor関数は、単に単一のステップであるだけでな
く、プログラマ又はプログラム生成者が開発又は追加する、定数に対して与えら
れる単純なBoolean演算から多数の定数に基づく複雑な計算までの範囲の
任意のレベルの複雑さを有しうる。評価の結果に基づき、specialize
For関数は、通常の又は包括的なクラスのためのコードを、特化されたコード
で置き換えうる。例えば、specializeFor関数は、従来のJava
Beanへの呼出しを、プラットフォームに特定的なJavaクラスへの呼出し
又はリンクで置き換えうる。更に、specializeFor関数は、クラス
の通常の又は包括的なコードを補足するために追加的なコードのシーケンスを実
行しうる。
【0033】 第2及び第3のSpecialize関数は、disable()関数及びe
nable()関数であり、これらはspecializeFor機能を付加又
は可能とするために使用されうる。disable()関数は、特化コードをデ
バッグするときに特に有用である。換言すれば、包括的なJavaランタイムク
ラスは(遅いが)通常通り動作し、SPecializeFor関数は命令に応
じて無効とされうるため、これらの結果は互いに比較されうる。尚、speci
alizeForによって与えられる特化機能は、Specialize.en
able()関数への呼出しによって可能とされる。
【0034】 図2は、これらの2つの新しいクラスを例としてのアプリケーションにおいて
使用する方法を示すフローチャートである。例としてのアプリケーションは、開
発中のJavaアプリケーションではなく、完成したJavaアプリケーション
であると想定される。
【0035】 ステップ100及び110において、図1中のAPIに示されるConsta
ntクラス及びSpecializeクラスが定義される。尚、これらのステッ
プは特定の順序で実行されるかのように図示されているが、ユーザに都合の良い
任意の順序で実行されうる。ステップ120において、ユーザはConstan
tクラスを1回以上利用することにより変数をConstantとして定義又は
登録する。尚、Constantクラスへの呼出しは、幾つのパラメータが与え
られているかに基づいて、適当なコンストラクタ関数を呼出す。ここで、変数は
Javaプログラムを実行する前にコマンドラインオプションによって有利に設
定されうる。或いは、変数はハードコードされるか、下層のハードウエアプラッ
トフォームのアイデンティティを決定するよう設計された決定プロセスの一部と
して発見的に発生されうる。更に、変数は実行時にプログラムのユーザによって
入力されてもよく、即ち、Javaプログラムがユーザのコンピュータにインス
トールされているときにユーザはダイアログボックスを通じてこれらの変数を与
えるよう指示される。次に、ステップ130において、specializeF
or関数の内容が定義され、即ち、ブロック120中で設定された定数に基づい
て種々のクラスに対して取られるべきアクションが定義される。
【0036】 ステップ140において、新しい定数及び特化関数を含むJavaアプリケー
ションがコンパイルされる。コンパイル後の或る時点において、結果として得ら
れたプログラムが実行され、動作し始める。Javaアプリケーションの実行中
、ステップ150においてアプリケーションはspecializeFor関数
を実行させる。Javaアプリケーションは、実行中に、定義された定数に基づ
いて幾つかのクラスを更新及び変更し、即ち、変更又は更新されたクラスは残る
実行時間中に使用される。これらの変更及び更新されたクラスは、アプリケーシ
ョンの全ての将来の実行中に特定のプラットフォーム上に置かれるJavaアプ
リケーションと恒久的に関連付けられる。
【0037】 尚、ここで、全ての変更及び更新が定義された定数の評価に基づいているため
、評価には幾つかの結果があることに留意されたい。3つの最も一般的な評価結
果は以下の通りである。
【0038】 (1)とりあえず特化を無視し、プログラムの実行を続け(ステップ160)
、これはステップ150を繰り返し実行する間に定数が更に評価されることに関
連しうる。
【0039】 (2)当該のクラスを特化されたコードで置き換え(ステップ170)、ステ
ップ160においてプログラムの実行を続け、これはステップ150を繰り返し
実行する間に定数が更に評価されることに関連しうる。
【0040】 (3)当該のクラスに更なるコードを追加し、これにより現在のクラスコード
をより高められた形式のコードで置き換えることができ(ステップ180)、ス
テップ160に亘りプログラムの実行を続け、これは定数の追加的な評価、即ち
ステップ160の繰り返しの実行を引き起こしうる。
【0041】 又は、 (4)特化されたコードはこのJavaアプリケーションが動作している間は
使用されないことが実質的に確かであるため、特化されたコードを完全に廃棄し
(ステップ190)、プログラムの実行を続け(ステップ160)、これはやは
り、ステップ150の繰り返される実行中に更なる定数の評価を引き起こしうる
【0042】 他のオプションは、上述のSpecializeクラスの第2及び第3の関数
を介してspecializeFor関数を有効又は無効とすることを含みうる
。更に、当業者によれば、図示はされていないが、定数を何らかの数学的な方法
で組み合わせた数値的な結果といった実質的に無数の可能な評価結果があること
が認識されよう。重要なことは、結果が、SpecializeクラスのSpe
cializeFor関数の中に与えられるコードを用いた関数の使用を介して
生ずることである。
【0043】 Javaアプリケーションの実行中又は実行後に、(ステップ200中に)ア
プリケーションは有利に変更されたクラスを書き込むことが可能であることに留
意されたい。望ましくは、出力された変更されたクラスはSpecialize
クラスに定義された全ての特化を組み込み、それにより、同じJavaアプリケ
ーションの将来の実行、又は、同じハードウエアプラットフォーム上で動作し同
じクラスを呼び出す他のJavaアプリケーションの将来の実行は、変更された
クラスを使用するであろう。このように、Specializeクラスによって
変更されたクラスを呼び出す全てのJavaアプリケーションは、各ラン中に、
又は、各Javaアプリケーションに対して特化努力を再び行う必要なしに、初
期の特化努力から利益を受けうる。Specializeクラスを単一のJav
aアプリケーションと共に使用することにより、変更されたクラスを呼び出す全
てのJavaアプリケーションに対する劇的な実行オーバヘッドを生じさせうる
【0044】 図3は、コンピュータシステム、処理制御システム、又はJava仮想機械を
例化させることが可能なプロセッサ及び関連するメモリを使用する他のシステム
でありうる中央プロセッサに基づくシステム700を示す上位ブロック図である
。システム700は、バス720を介してRAM712及びI/O装置708と
通信する中央処理装置(CPU)702、例えばマイクロプロセッサを含む。尚
、バス720は、プロセッサに基づくシステムにおいて共通に使用される一連の
バス及びブリッジでありうるが、便宜上、バス720は単一のバスとして示され
ている。第2のI/O装置710が図示されているがこれは任意である。プロセ
ッサに基づくシステム700はまた、読出し専用メモリ(ROM)714を含み
、周知のように、やはりバス720を介してPCU702と通信する周辺機器、
例えば、フロッピー(登録商標)ディスクドライブ又はハードディスクドライブ
といったディスクドライブ704やコンパクトディスク(CD)ROMドライブ
705を含みうる。上述のConstantクラス及びSpecializeク
ラスに対応するコンピュータ読取り可能なコードは、有利にRAM712及びデ
ィスクドライブ704のうちの1つに格納されうる。
【0045】 概説するに、本発明は、Javaプログラムに条件付きで包含されるセクショ
ン又は排除されるセクションを有するという可能性を与える方法及び対応するソ
フトウエア製品である。これは、限られたメモリ資源を有する小さい計算装置に
おけるより良いメモリ利用のために実行可能なコードサイズを減少させることを
容易とする。
【0046】 更に、本発明の望ましい実施例は、Java言語の簡単な言語プロセッサプロ
グラムと同様の機能を与える。この機能は、定数を定義し、定義された定数に対
する部分的な評価を行い、このような評価の前進的な結果に基づいてアクション
が取られることを可能とする可能性を含む、有利には、本発明では、元のJav
aプログラムの移植性は、新しい機能を含むよう変更されても元通りに維持され
る。上述のように、本発明による方法及び対応するソフトウエア製品は、Jav
aランタイム環境におけるクラスをより効率的なクラスで置き換えることを可能
とする。この置き換えは、既存のクラス及び置き換えられた最適化されたクラス
の組合せによってクラスを書き換えること及び/又は変更することによって恒久
的なものとされうる。
【0047】 本発明は、上述のオブジェクトのうちの1つ以上を含む方法及びソフトウエア
に限られるものではなく、即ち、そのうちの幾つかのみが特に説明されており全
てについて説明されているわけではないため、列挙されたオブジェクトはいずれ
も請求の範囲によって定義される本発明に実際に含まれる必要はない。本発明に
よれば請求の範囲に定義される多数の他のオブジェクトが本発明の精神及び範囲
を逸脱することなく提供されうる。
【0048】 本発明の現在望ましい実施例について上述したが、当業者によれば、本発明の
基本的な概念の多くの変形及び/又は変更が請求の範囲に定義されるような本発
明の精神及び範囲を逸脱しないことが明らかに理解されよう。
【図面の簡単な説明】
【図1】 本発明の典型的な実施例のための例としてのアプリケーション・プログラミン
グ・インタフェース(API)を示す図である。
【図2】 本発明が典型的な実施例として説明されるようにどのように動作するかを理解
するのに役立つ上位フローチャートを示す図である。
【図2】 図2の方法に従ってJavaプログラムの実行により専用コンピュータへ有利
に変換されうる汎用コンピュータの上位フローチャートを示す図である。

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 プラットフォーム間共通Javaアプリケーションからの特
    定プラットフォーム用Javaアプリケーションを作成する方法であって、 上記プラットフォーム間共通Javaアプリケーションに関連づけられる少な
    くとも1つの変数を定数であると宣言する段階と、 上記プラットフォーム間共通Javaアプリケーションから使用されていない
    関数及び関連する変数を取り除き、それにより特定プラットフォーム用Java
    アプリケーションを生成する段階とを含む方法。
  2. 【請求項2】 上記少なくとも1つの変数は第1のクラス中で一定であると
    宣言される、請求項1記載の方法。
  3. 【請求項3】 プラットフォーム間共通Javaプログラムから特定プラッ
    トフォーム用Javaプログラムを作成する方法であって、 プラットフォーム間共通Javaプログラムに関連付けられる選択された変数
    を定数として宣言するためにConstantクラスを定義する段階と、 上記プラットフォーム間共通Javaプログラムに関連付けられるクラスを上
    記宣言された定数に対して特化させる関数を与えるようSpecializeク
    ラスを定義する段階と、 上記宣言された定数を用いてJavaランタイム環境において上記プラットフ
    ォーム間共通Javaプログラムを評価する段階と、 上記プラットフォーム間共通Javaプログラムに関連付けられる少なくとも
    1つのクラスを変更し、それにより上記特定プラットフォーム用Javaプログ
    ラムの範囲を定めるクラスを生成する段階とを含む方法。
  4. 【請求項4】 上記変更段階は、上記プラットフォーム間共通Javaプロ
    グラムに関連付けられるクラスのうちの1つから使用されていない変数及び関連
    付けられる関数を取り除き、それにより特定プラットフォーム用Javaプログ
    ラムの範囲を定めるクラスを生成する段階を含む請求項3記載の方法。
  5. 【請求項5】 上記変更段階は、上記プラットフォーム間共通Javaプロ
    グラムに関連付けられるクラスのうちの1つの中の既存の関数を新しい関数と置
    き換え、それにより特定プラットフォーム用Javaプログラムの範囲を定める
    変更されたクラスを生成する段階を含む、請求項1記載の方法。
  6. 【請求項6】 プラットフォーム間共通Javaアプリケーションからの特
    定プラットフォーム用Javaアプリケーションを作成するための命令のコンピ
    ュータ読取り可能な媒体中のコンピュータプログラム製品であって、 上記プラットフォーム間共通Javaアプリケーションに関連づけられる少な
    くとも1つの変数を定数であると宣言するためのコンピュータ読取り可能な媒体
    中の命令と、 上記プラットフォーム間共通Javaアプリケーションから使用されていない
    関数及び関連する変数を取り除き、それにより特定プラットフォーム用Java
    アプリケーションを生成するためのコンピュータ読取り可能な媒体中の命令とを
    含むコンピュータプログラム製品。
  7. 【請求項7】 使用されていない関数及び関連付けられる変数を取り除くた
    めの命令はSpecializeクラスの中に与えられる、請求項6記載のコン
    ピュータプログラム製品。
  8. 【請求項8】 プラットフォーム間共通Javaプログラムからの特定プラ
    ットフォーム用Javaプログラムを作成するための命令のコンピュータ読取り
    可能な媒体中のコンピュータプログラム製品であって、 プラットフォーム間共通Javaプログラムに関連付けられる選択された変数
    を定数として宣言するためにConstantクラスを定義するためのコンピュ
    ータ読取り可能な媒体中の第1の命令と、 上記プラットフォーム間共通Javaプログラムに関連付けられるクラスを上
    記宣言された定数に対して特化させる関数を与えるようSpecializeク
    ラスを定義するためのコンピュータ読取り可能な媒体中の第2の命令と、 上記宣言された定数を用いてJavaランタイム環境において上記プラットフ
    ォーム間共通Javaプログラムを評価するためのコンピュータ読取り可能な媒
    体中の第3の命令と、 上記プラットフォーム間共通Javaプログラムに関連付けられる少なくとも
    1つのクラスを変更し、それにより上記特定プラットフォーム用Javaプログ
    ラムの範囲を定めるためのコンピュータ読取り可能な媒体中の第4の命令とを含
    むコンピュータプログラム製品。
  9. 【請求項9】 上記第4の命令は、上記プラットフォーム間共通Javaプ
    ログラムに関連付けられるクラスのうちの1つの中の既存の関数を新しい関数と
    置き換え、それにより特定プラットフォーム用Javaプログラムの範囲を定め
    る変更されたクラスを生成するためのコンピュータ読取り可能な媒体中の命令を
    含む、請求項8記載のコンピュータプログラム製品。
  10. 【請求項10】 上記第4の命令は、上記プラットフォーム間共通Java
    プログラムに関連付けられるクラスのうちの1つに追加的な関数を挿入し、それ
    により上記特定プラットフォーム用Javaプログラムの範囲を定める変更され
    たクラスを生成するためのコンピュータ読取り可能な媒体中の命令を含む、請求
    項8記載のコンピュータプログラム製品。
JP2001533509A 1999-10-28 2000-10-09 Java(登録商標)プログラムのプラットフォームに特定的な効率性を高めるための方法及びソフトウエア製品 Pending JP2003513353A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/428,766 1999-10-28
US09/428,766 US6634022B1 (en) 1999-10-28 1999-10-28 Method for platform specific efficiency enhancement of java programs and software product therefor
PCT/EP2000/009956 WO2001031438A2 (en) 1999-10-28 2000-10-09 Method for platform specific efficiency enhancement of java programs and software product therefor

Publications (1)

Publication Number Publication Date
JP2003513353A true JP2003513353A (ja) 2003-04-08

Family

ID=23700315

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001533509A Pending JP2003513353A (ja) 1999-10-28 2000-10-09 Java(登録商標)プログラムのプラットフォームに特定的な効率性を高めるための方法及びソフトウエア製品

Country Status (5)

Country Link
US (1) US6634022B1 (ja)
EP (1) EP1208428A2 (ja)
JP (1) JP2003513353A (ja)
KR (1) KR20010086159A (ja)
WO (1) WO2001031438A2 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7013455B1 (en) * 2000-10-19 2006-03-14 International Business Machines Corporation System for automatically altering environment variable to run proper executable file by removing references to all except one duplicate file in the path sequence
US6986129B2 (en) * 2001-05-16 2006-01-10 Sun Microsystems, Inc. System and method for java preprocessor
US20020174579A1 (en) * 2001-05-22 2002-11-28 Corry Arthur A. Artificial log burning fireplace assembly
US7571389B2 (en) * 2001-05-31 2009-08-04 International Business Machines Corporation System, computer-readable storage device, and method for combining the functionality of multiple text controls in a graphical user interface
US20020191018A1 (en) * 2001-05-31 2002-12-19 International Business Machines Corporation System and method for implementing a graphical user interface across dissimilar platforms yet retaining similar look and feel
US7562306B2 (en) * 2001-05-31 2009-07-14 International Business Machines Corporation System and method for reducing memory use associated with the graphical representation of a list control
US6789254B2 (en) * 2001-06-21 2004-09-07 International Business Machines Corp. Java classes comprising an application program interface for platform integration derived from a common codebase
US6938241B1 (en) * 2001-12-10 2005-08-30 Lsi Logic Corporation Compiler independent bit-field macros
US6856994B2 (en) * 2002-05-30 2005-02-15 Hewlett-Packard Development Company, L.P. System and method for condensing application software
US7000221B2 (en) * 2002-07-31 2006-02-14 International Business Machines Corporation Script evaluator
US7188339B2 (en) * 2003-10-24 2007-03-06 Hewlett-Packard Development Company, L.P. ACPI preprocessor
US7581216B2 (en) * 2005-01-21 2009-08-25 International Business Machines Corporation Preserving platform independence with native accelerators for performance critical program objects
US8042103B2 (en) * 2005-11-29 2011-10-18 International Business Machines Corporation Pre-translated files used in a virtual machine
US8813041B2 (en) * 2008-02-14 2014-08-19 Yahoo! Inc. Efficient compression of applications
US8615744B2 (en) * 2011-02-09 2013-12-24 Beek Fund B.V. L.L.C. Methods and system for managing assets in programming code translation
US10365900B2 (en) * 2011-12-23 2019-07-30 Dataware Ventures, Llc Broadening field specialization
US8843912B2 (en) 2012-02-20 2014-09-23 International Business Machines Corporation Optimization of an application to reduce local memory usage
US8966441B2 (en) * 2012-07-12 2015-02-24 Oracle International Corporation Dynamic scripts to extend static applications
US9276829B2 (en) * 2013-02-07 2016-03-01 International Business Machines Corporation Transparently tracking provenance information in distributed data systems
US9164740B2 (en) 2013-05-16 2015-10-20 Toshiba Global Commerce Solutions Holdings Corporation System and method for replacing java beans
KR101636124B1 (ko) * 2014-05-22 2016-07-20 박경란 다수의 이기종 컴퓨팅 플랫폼을 지원하며 타분야 간에 데이터 상호호환이 가능한 크로스 플랫폼 기반의 개방형 bim 시스템의 구축 방법
US10733099B2 (en) 2015-12-14 2020-08-04 Arizona Board Of Regents On Behalf Of The University Of Arizona Broadening field specialization
US10884764B1 (en) 2019-07-18 2021-01-05 International Business Machines Corporation Optimizing managed runtime applications for serverless environments

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5901319A (en) * 1996-06-14 1999-05-04 The Foxboro Company System and methods for generating operating system specific kernel level code from operating system independent data structures
US5884083A (en) 1996-09-20 1999-03-16 Royce; Robert Computer system to compile non-incremental computer source code to execute within an incremental type computer system
US5937193A (en) * 1996-11-27 1999-08-10 Vlsi Technology, Inc. Circuit arrangement for translating platform-independent instructions for execution on a hardware platform and method thereof
WO1998037486A1 (en) 1997-02-18 1998-08-27 International Business Machines Corporation Method for lookup of packages and classes in java, and devices making use of this method
US5943496A (en) 1997-05-17 1999-08-24 Intertop Corporation Methods for developing and instantiating object classes using a java virtual machine extension
US6115550A (en) * 1997-06-11 2000-09-05 Digital Equipment Corporation Loader conditionally replacing a code sequence with a functionally-alike code sequence in an executable program intended for execution in different run-time environments
US6320592B1 (en) * 1997-06-30 2001-11-20 Sun Microsystems, Inc. Method and apparatus for separating image data from a color system in image processing
US6317872B1 (en) * 1997-07-11 2001-11-13 Rockwell Collins, Inc. Real time processor optimized for executing JAVA programs
US6366876B1 (en) 1997-09-29 2002-04-02 Sun Microsystems, Inc. Method and apparatus for assessing compatibility between platforms and applications
US5966702A (en) 1997-10-31 1999-10-12 Sun Microsystems, Inc. Method and apparatus for pre-processing and packaging class files
US5933144A (en) 1997-11-12 1999-08-03 International Business Machines Corporation Utility for providing printing support to graphical Java applications
US6237135B1 (en) * 1998-06-18 2001-05-22 Borland Software Corporation Development system with visual design tools for creating and maintaining Java Beans components
US6128011A (en) * 1998-08-31 2000-10-03 Sony Corporation Of Japan Cross-platform digital signal processing designs using Java and C
US6295643B1 (en) * 1998-12-10 2001-09-25 International Business Machines Corporation Method and apparatus for improving java virtual machine performance using persistent execution information
US6332216B1 (en) * 1999-03-09 2001-12-18 Hewlett-Packard Company Hybrid just-in-time compiler that consumes minimal resource
US6269480B1 (en) * 1999-03-29 2001-07-31 International Business Machines Corporation Cross platform installer-with the ability to create platform independent variables of specific operating system variables from a scripting language

Also Published As

Publication number Publication date
WO2001031438A2 (en) 2001-05-03
US6634022B1 (en) 2003-10-14
WO2001031438A3 (en) 2002-02-28
EP1208428A2 (en) 2002-05-29
KR20010086159A (ko) 2001-09-08

Similar Documents

Publication Publication Date Title
US6634022B1 (en) Method for platform specific efficiency enhancement of java programs and software product therefor
Schultz et al. Automatic program specialization for Java
US5978585A (en) Development system with improved methods for recompiling dependent code modules
Benton et al. Compiling standard ML to Java bytecodes
US7305666B2 (en) Description language for an extensible compiler and tools infrastructure
US7725883B1 (en) Program interpreter
Krall et al. CACAO—A 64‐bit JavaVM just‐in‐time compiler
US6289506B1 (en) Method for optimizing Java performance using precompiled code
US8453128B2 (en) Method and system for implementing a just-in-time compiler
US6233733B1 (en) Method for generating a Java bytecode data flow graph
US7840950B2 (en) Programmatic compiler optimization of glacial constants
US6311324B1 (en) Software profiler which has the ability to display performance data on a computer screen
US20040230958A1 (en) Compiler and software product for compiling intermediate language bytecodes into Java bytecodes
US20070226698A1 (en) Method for improving performance of executable code
US6874140B1 (en) Debug annotations
JP2002527811A (ja) オンスタックリプレースメントを伴うことなくバーチャルコールを直接にインライン化する方法
US20160246622A1 (en) Method and system for implementing invocation stubs for the application programming interfaces embedding with function overload resolution for dynamic computer programming languages
US7665076B2 (en) Method and apparatus for activating/deactivating run-time determined software routines in Java compiled bytecode applications
US8762974B1 (en) Context-sensitive compiler directives
Fog Optimizing software in C++
WO2022172025A1 (en) Optimising computer program code
Erhardt et al. Exploiting static application knowledge in a Java compiler for embedded systems: A case study
Sogaro MicroJIT: a lightweight just-in-time compiler to improve startup times
US20020073133A1 (en) Register allocation method and software development method for various execution environments and LSI for executing developed software
Wehrmeister et al. Optimizing the generation of object-oriented real-time embedded applications based on the real-time specification for Java