JP3632598B2 - 変更定数プールを備えたJavaランタイム・システム - Google Patents
変更定数プールを備えたJavaランタイム・システム Download PDFInfo
- Publication number
- JP3632598B2 JP3632598B2 JP2000538296A JP2000538296A JP3632598B2 JP 3632598 B2 JP3632598 B2 JP 3632598B2 JP 2000538296 A JP2000538296 A JP 2000538296A JP 2000538296 A JP2000538296 A JP 2000538296A JP 3632598 B2 JP3632598 B2 JP 3632598B2
- Authority
- JP
- Japan
- Prior art keywords
- constant pool
- information
- package
- java runtime
- offset
- 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
Links
- 238000000034 method Methods 0.000 claims description 39
- 230000003068 static effect Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
-
- 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/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- 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/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- 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)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Description
【発明の属する技術分野】
本発明は、JavaCardなどの資源制約Javaランタイム環境におけるダイナミック・コード・ダウン・ロードおよびリンキングに関する。
【0002】
【従来の技術】
従来のJava・システムにおいては、クラス構造(内部および外部)への参照は、いわゆる定数プールを介する間接名前ルックアップを使って解決される。このような手法は、処理能力および内部資源の点で十分な資源を提供するシステムでしか使用できない。
【0003】
資源制約ランタイム・システム(例えば、JavaCard)においては、この手法は、有望ではない。その代わりに、解決されたクラス構造への参照を使用して、間接指示(indirection)を回避し、定数プールの維持を避けることができる。
【0004】
【発明が解決しようとする課題】
参照(リンキング)を解決することが、本発明の主題である。
【0005】
本発明の一目的は、資源制約Javaランタイム環境において効率的リンキングを実現することである。
【0006】
本発明の一目的は、資源制約Javaランタイム環境においてスペースおよびランタイムの効率的リンキングを実現することである。
【0007】
【課題を解決するための手段】
本発明では上記課題を解決するために、バイトコードとクラス構造を含むプログラムを実行するスタック・ベースのインタープリタを備え、さらにリンク時にのみ使用される内部情報とレイト・コード・バインディングのために予約された外部情報とを含む変更定数プールを備え、前記内部情報がリンク後に前記変更定数プールから除去されるJavaランタイム・システムを実現する。
【0008】
【発明の実施の形態】
以下に本発明の概要を示し、実施の諸態様を取り上げる。Javaは、米国94043−1100カリフォルニア州マウンテン・ビュー、ガルシア・アベニュー2550のサン・マイクロシステムズ社が開発したプログラミング言語および環境である。用語「Java」は、同社の商標である。
【0009】
この説明では実施の詳細も扱うので、当技術分野の技術者は、Java仮想計算機およびその実施の基本的機構に精通しているものと想定する。Java言語の包括的な提示とJVMの実施は、J.ゴスリン(Goslin)、B.ジョイ(Joy)およびG.テル(Tele)の「The Java Language Specification」、ならびにT.リンドホルム(Lindholm)およびF.エリン(Yellin)の「The Java Virtual Machine Specification」、共にAddison−Wesley Publishing Co.、1996年刊、に開示されている。しかし、本明細書でJavaCardVMと呼ぶJavaCard仮想計算機は、サブセットと追加バイトコードだけが使用されるため、いくつかの面で異なっている。
【0010】
1.0 JavaSoft CAPファイル・フォーマットの提案
JavaSoftが提案するCAPファイル・フォーマットでは、キャップ・ファイルをいくつかのセクションに分ける。キャップ・ファイルは基本的に、テキスト・セクションとデータ・セクションを含んでいる。テキスト・セクションは、クラス構造、メソッド構造およびバイトコード命令を含んでいる。データ・セクションは、カードレットの静的フィールドを含んでいる。
【0011】
テキスト・セクションは、リンク時以前にはその実際のアドレスが知られていない全ての記号(クラス、メソッドなど)を、定数プールへのオフセットを介して参照する。あらゆるこのような記号について、定数プールは、ターゲット・パッケージのAID、およびターゲット・パッケージ(すなわち、リンクされる対象となるパッケージ)中でのその記号のオフセットを含んでいる。定数プールは、インポートされた全ての記号(他のパッケージ中で定義される記号)、およびエキスポートされた全ての記号(ロードされるカードレット内で定義されアクセスされる記号)に対するこうしたオフセットを提供する。
【0012】
テキスト・セクション、データ・セクションおよび定数プールの編成は、カードレットを実行するのに十分な情報を提供する。カードレットのロード後、リンカは、定数プール中をステッピングし、ターゲット・パッケージへの記号のオフセットをその実アドレスで置き換える。リンカは、所与のAIDによって特定のパッケージをルックアップし、その開始アドレスを記号のオフセットに加え、この情報を定数プールに戻して記憶するだけでよい。そうすると、JavaCardVMは、解釈のため定数プールにおけるこれらのアドレスを使用することができる。しかし、定数プール自体は、ランタイムには必要でない。実際、解釈中に記号のアドレスを見つけるには、追加の不必要な1つの間接指示が必要となる。さらに、定数プールは、不必要にカードのスペースを占める。したがって、JavaSoftキャップ・ファイル・フォーマットでは、リンク後に、定数プールの必要をなくすため、個々のセクション用のフィックスアップ・テーブルを使用する。フィックスアップ・テーブルは、再配置を行うべきテキスト・セクション中の全ての位置を含んでいる。リンカは、フィックスアップ・テーブル中を移動し、その位置における定数プールへのオフセットを取る。次いで、その記号のアドレスを解決し、それをテキスト・セクションの元の位置に格納する。そうすると、インタープリタは、ランタイムにこれらのアドレスを直接使用することができ、したがって、定数プールはリンク・プロセス後に除去することができる。リンク・プロセス後にカード上に残るセクションは、テキスト・セクションとデータ・セクションだけである。
【0013】
カードレットを、ターゲット・パッケージへの予め計算されハードコードされたオフセットとリンクすると、コンパクトなシステムが可能になる。しかし、システム・クラスの異なる実施および異なるカード上での指定された拡張を可能とするのに十分なフレキシビリティは得られない。例えば、IBMのシステム・クラスおよびJavaSoftの拡張に対して変換されたカードレットは、JavaSoftからのシステム・カードレットおよびIBMからの拡張カードレットを備えるカード上では稼動しないと思われる。その主な理由は、個々のクラス、メソッドのオフセットとインスタンスのフィールド・オフセットが実施ごとに異なっているからである。
【0014】
本発明は、現在のJavaSoftのアイデアを拡張し、追加の軽くてフレキシブルな記号リンク機構によってその機能を強化するものである。
【0015】
2.0 本発明のCAPファイル・フォーマット
本発明によるキャップ・ファイル・フォーマットでも、キャップ・ファイルを異なるセクションに分ける。テキスト・セクションは、クラス構造、メソッド構造、およびバイトコード命令を含んでおり、データ・セクションはやはり、静的フィールドを含んでいる。キャップ・ファイルはまた、必要な再配置情報をフィックスアップ・テーブルに維持する。カードレットがリンクされるあらゆるパッケージ(すなわち、ターゲット・パッケージ)に対して1つのフィックスアップ・テーブルがある。
【0016】
フィックスアップ・テーブルはやはり、テキスト・セクションまたはデータ・セクション中の再配置を行うべき位置を含んでいる。簡単なケースでは、これらの場所も、信頼されるよく知られたターゲット・パッケージへの予め計算されたオフセットによって再配置される。この場合、リンカは、所与のターゲットAIDによってパッケージの開始アドレスをルックアップし、ターゲット・パッケージへのオフセットを加え、テキスト・セクションの元の位置にその値を格納する。ターゲット・パッケージへのオフセットは、フィックスアップ・テーブルに保持することができ、またフィックスアップ・テーブルを小さくしておくためにテキスト・セクションの再配置アドレスに保持することもできる。オフセットによる再配置は、ロードされたカードレット自体内の大部分の参照に対して常に使用することができる。コンバータは、互換性を壊すことなく、これらのオフセットを予め計算することができる。
【0017】
システムの保全性の理由から、他の外部パッケージへの参照は、予め計算されたオフセットによってリンクすべきではない。その代わりに、名前または識別子を、リンク・プロセス中に、他のパッケージへの参照に使用すべきである。これらの名前とそれに関連する値だけを、複数のアプレットの間で共用されるパッケージのカードに格納しなければならない。名前/値の対のこれらのテーブルはできるだけ小さくなければならないため、このキャップ・ファイル・フォーマットでは、クラス・ファイル要素の命名には制限があるが、それでも様々な仕様をベンダ特有に実施する可能性が与えられる。
【0018】
・ 公用クラス:命名しなければならず、エキスポート可能でなければならない。
【0019】
・ 公用静的メソッドおよびコンストラクタ:同上。
【0020】
・ 公用静的フィールド:同上。
【0021】
・ 仮想メソッド:
インタープリタは、仮想メソッド・テーブルへのインデックスにより、仮想メソッドを見つけ出す。これらのインデックスと仮想メソッド・テーブルは、JavaCard環境が仮想メソッドの標準Javaレイト・コード・バインディングをサポートしようとする場合、カード上で解決する必要がある。メソッド・テーブルの構築中に、リンカは、あるメソッドが、メソッド・テーブル中の他のメソッドを継承するかどうかを判断しなければならない。これらのメソッドは異なるカードレット中で定義されている可能性があるため、2つのメソッドが同じタイプを有しているかどうかを判断するのに、メソッドに対する大域命名方式を導入しなければならない。仮想メソッド・コールに対するレイト(late)・コード・バインディング(ダイナミック・リンキングとも言う)では、仮想メソッドを解決し命名するために、大域命名方式、およびカード上の追加資源を必要とするが、本発明のキャップ・ファイル・フォーマットは、これをサポートしない。しかし、この制限があっても、コア・パッケージおよび拡張のベンダ特有の実施のための十分な余地が残る。プログラマは自由に、私用または静的メソッドおよびクラスを追加することができる。非私用インスタンス・メソッドが継承されず、最終的なものと宣言されていない場合、プログラマは、非私用インスタンス・メソッドも追加することができる。コンバータは次いで、これらのメソッドに対するコールを直接呼出しで置き換えることができる。
【0022】
・ インスタンス・フィールド:
あるクラスにおけるインスタンス・フィールドの数およびタイプは通常、仕様で定義されず、異なるベンダの実施ごとに変わるものである。したがって、フィールド・オフセットのバインドは、CAPファイル・フォーマットの提案で対処しなければならない。リンク・プロセスに関するフィールドの使用法は、以下の3つのカテゴリに分けられる。
【0023】
・ 予め計算されたフィールド・オフセット
ゲット/プット・フィールド命令は、そのクラスと全てのスーパークラスが、格納用(containing)カードレット内で定義されているフィールドを参照付け(reference)する。そうすると、このフィールドのオフセットは、コンバータによって予め計算でき、ロード・プロセス中にリンクする必要はない。オブジェクト・クラスが何らフィールド宣言を含んでいないという取り決めがある場合、多くのフィールド・アクセスが、このカテゴリに属する。
【0024】
・ 何らかのカードレット外部のスーパークラスによるカードレット内部のクラスのフィールドに対するアクセス
別々のパッケージ内で定義されるクラスのサブクラス分けを可能にするために、このケースを、キャップ・ファイル・フォーマットでサポートしなければならない。コンバータは、カードレット外部のスーパークラスのインスタンス・サイズに対するフィールドのオフセットを計算し、この値をキャップ・ファイルに格納することができる。リンク・プロセス中に、フィールドの実際のオフセットを、ベース・クラスのサイズに基づいて再計算しなければならない。カードレット内部クラスのインスタンス・サイズの要素についても同じことを行うことができる。
【0025】
・ カードレット外部のスーパークラスまたは何らかの外部クラスにおけるフィールドに対するアクセス
インスタンス・フィールドが公用であると宣言されることはほとんどないが、保護されていると宣言されることはしばしばある。保護されたフィールドへのアクセスは常に、保護されたセット/ゲット・フィールト・メソッドを指定することによって許可されるが、提案されるキャップ・ファイル・フォーマットでもこのような保護された、または公用と宣言されたフィールドへの直接アクセスが可能である。保護されたまたは公用のインスタンス・フィールドをエキスポートするパッケージは、記号リンクを可能にするために、このようなフィールドに対する名前とオフセットを含んでいなければならない。
【0026】
クラス、メソッドまたはフィールドをエキスポートするパッケージは、その項目がその記号のタイプ(クラスなど)、名前および値を含んでいる定数プールを含んでいる。キャップ・ファイル・フォーマットが大域命名方式をサポートする必要がないので、関連する記号の名前は簡単に指定できる。記号は、0からnまでの番号を付け、アプリケーション・プログラミング・インターフェース(API)の仕様と共に配布することができる。このような仕様の実施者は、n+1で始まる新しい名前を選ぶことにより、なお追加のクラスなどをエキスポートすることができる。
【0027】
図3は、ターゲット・パッケージに対するアプレットの記号バインドを示す。フィックスアップ・テーブルの項目は、再配置のタイプ(下記参照)、再配置先のテキスト・セクションへのオフセット、および記号の名前(スペースの効率のため、再配置される位置に格納することもできる)を含んでいる。この提案された命名方式を用いると、名前をターゲット・パッケージの定数プールへのインデックスとして使用することができる。定数プールの項目は、項目のタイプ、名前および関連する値を含んでいる。リンカは、項目のタイプに応じてフィックスアップ・テーブルの項目を再配置する。
【0028】
・ メソッドを再配置しなければならない:
所与の名前をもつターゲット・パッケージの定数プールの項は、メソッド・タイプでなければならない。その値は、そのメソッドが定義されているターゲット・パッケージへのオフセットでなければならない。リンカはメソッドのアドレスを計算し、テキスト・セクションを所与のオフセットに固定(fix)する。
【0029】
・ クラスを再配置しなければならない:
記号インデックスと名前を含む定数プールの項がクラス・タイプでなければならない点を除き、上記と同じである。
【0030】
・ 静的フィールドを再配置しなければならない:
記号インデックスと名前を含む定数プールの項が静的フィールド・タイプでなければならず、その値がパッケージのデータ・セクションへのオフセットである点を除き、上記と同じである。
【0031】
・ 相対インスタンス・フィールドのオフセットまたは相対クラス・インスタンス・サイズ値を再配置しなければならない:
所与の名前をもつターゲット・パッケージの定数プールの項は、クラス・タイプでなければならない。リンカはターゲット・クラスのアドレスを計算し、そのクラスのインスタンス・サイズを取得する(後者はクラス構造の要素である)。リンカはインスタンス・サイズをテキスト・セクションのオフセットで与えられる値に加え、後者をその合計で置き換える。
【0032】
・ 未定義のクラスに対する絶対フィールド・アクセス:
所与の名前をもつターゲット・パッケージの定数プールの項は、インスタンス・フィールド・タイプでなければならない。この項の値は、そのクラスのインスタンスにおけるそのフィールドの絶対オフセットである。
【0033】
ロードされたカードレットが共用パッケージであり、保護されたまたは公用のフィールドをエキスポートする場合、リンカは定数プールにおけるその項目も再配置する。その実際のオフセットは、相対インスタンス・フィールドのオフセットと同様に再配置される。
【0034】
リンク・プロセスが完了した後、フィックスアップ・テーブルを除去することができる。アプレットは、定数プールを必要とせず、複数のアプレットの間で共有できるパッケージだけが、将来使用するために定数プールを必要とする。定数プールのサイズは、エキスポートされる項の数および項のサイズによって決まる。現在のJavaCardシステム・クラス用の定数プールは、現在約160項を占める。定数プールの項は、タイプ・フィールドと名前と値を含み、4バイトで格納することができる(提案された命名方式を用いると、これは3バイトにまで減らすことができる)。この結果、全てのシステム・クラスに対しての定数プールのサイズは720バイトになる。
【0035】
JavaSoftの提案との違い:
・ JavaSoftの定数プールでは現在、内部で定義された項と外部で定義された項を区別しない。このため、内部で定義される項をカバーする定数プールの項を除去するのが難しい。
【0036】
・ ゲット/プット・フィールド命令におけるフィールド・オフセット、およびクラス構造におけるインスタンス・サイズ・フィールドは8ビット幅に過ぎない。このため、リンク・プロセス中にフィールドのオフセットをバインドするための情報が格納できる、定数プールへのインデックスとしてこの値を使用することは現在不可能である。
【0037】
これら2つの制限により、現在のJavaSoftの提案では、必要とされる(本明細書で提案するような)軽い命名方式を可能とするために、強化機能が必要である。
【0038】
3.0 付録
3.1 微小な拡張
ある種の環境においては、カード上にどんな記号情報も全く必要でなく、またそのためのスペースもない、たとえばリンク・プロセス中に予め計算されたオフセットだけを使用するだけで十分である。本発明によるキャップ・ファイル・フォーマットは、この方向に安全に拡張することができる。
【0039】
・ パッケージまたはアプレットは、バージョン番号だけでなく、ベンダid(または、実施id)も含んでいる。
【0040】
・ 定数プールの項を参照付けするフィックスアップ・テーブルの項目は、変換時にコンバータが計算できるオフセットをも含んでいる。
【0041】
・ ダウンロード・プロセスの開始時に、ローダは、アプレットが必要とするパッケージがカードに現在インストールされているものと同じベンダからのもの(すなわち、同じ実施)かどうかをチェックする。そうである場合、ローダは、リンク・プロセス中にアプレットのキャップ・ファイルにおけるオフセットを使用する。そうでない場合、ダウンロード・プロセスは、失敗する。
【0042】
3.2 参照されたキャップ・ファイル・フォーマット項に関する指定
この詳細な説明の目的は、キャップ・ファイルの内容を厳密に指定することではない。その代わりに、JavaSoftの提案から始めて、キャップ・ファイルがどういうものであるべきか、どうでなければならないかについて詳細な議論を行う。とはいえ、この説明で言及したキャップ・ファイル・フォーマットの項のより正式な仕様を、C言語様の宣言として示す。これはわかりやすいようにここに指定したもので、最適な形ではない。
【図面の簡単な説明】
【図1】JavaSoft提案のキャップ・ファイル・フォーマットを備えたリンキングを示す図である。
【図2】本明細書で提案するファイル・フォーマットを備えた、オフセットによるリンキングを示す図である。
【図3】本明細書で提案するファイル・フォーマットを備えた、名前によるリンキングを示す図である。
Claims (6)
- クラス構造を反映するバイトコードを含むプログラムを実行するスタック・ベースのインタープリタを備え、さらにリンク時にのみ使用される内部情報とレイト・コード・バインディングのための外部情報とを含む変更定数プールを備え、前記内部情報がリンク後に前記変更定数プールから除去されるJavaランタイム・システム。
- 前記Javaランタイム・システムが、JavaCardである請求項1に記載のJavaランタイム・システム。
- クラス構造を反映するバイトコードを含むパッケージを実行するためのスタック・ベースのインタープリタを備えるJavaランタイム・システムに新しいコードを導入する方法であって、
前記システムが、前記システム内に存在する前記パッケージに前記新しいコードをリンク(内部リンク)し、それにより前記新しいコードのそれ自体に対するオフセットをリンク時にのみ使用される参照で置き換え、
前記システムが、それにより前記パッケージの定数プールに含まれる記号情報(名前)を使用して外部リンクを解決し、
前記システムが、少なくともリンク時にのみ使用される前記参照による置換えのために使用される情報を、前記定数プールから除去する方法。 - 外部パッケージにリンクするために使用される情報も、前記定数プールから除去される請求項3に記載の方法。
- 前記定数プール中の情報のうち前記除去によって除去されなかった残りの情報により、後でダウンロードされる他のパッケージおよびアプレットが、前記新しいコードにアクセスできるようになる(レイト・コード・バインディング)請求項3に記載の方法。
- 前記Javaランタイム・システムが、JavaCardである請求項3に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP98105179.0 | 1998-03-23 | ||
EP98105179 | 1998-03-23 | ||
PCT/IB1998/001799 WO1999049392A1 (en) | 1998-03-23 | 1998-11-12 | Java runtime system with modified constant pool |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002508544A JP2002508544A (ja) | 2002-03-19 |
JP3632598B2 true JP3632598B2 (ja) | 2005-03-23 |
Family
ID=8231635
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000538296A Expired - Lifetime JP3632598B2 (ja) | 1998-03-23 | 1998-11-12 | 変更定数プールを備えたJavaランタイム・システム |
Country Status (13)
Country | Link |
---|---|
US (1) | US6792612B1 (ja) |
EP (1) | EP1066562B1 (ja) |
JP (1) | JP3632598B2 (ja) |
KR (1) | KR100404785B1 (ja) |
CN (1) | CN1109971C (ja) |
CA (1) | CA2322686A1 (ja) |
CZ (1) | CZ20003437A3 (ja) |
DE (1) | DE69814174T2 (ja) |
HK (1) | HK1033700A1 (ja) |
HU (1) | HUP0101368A3 (ja) |
MY (1) | MY124662A (ja) |
PL (1) | PL193009B1 (ja) |
WO (1) | WO1999049392A1 (ja) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6581206B2 (en) * | 1999-11-12 | 2003-06-17 | Sun Microsystems, Inc. | Computer program language subset validation |
US6968549B1 (en) * | 1999-07-02 | 2005-11-22 | Beryl Technical Assays Llc | Method and system for dynamically loading data structures into memory with global constant pool |
US7150005B2 (en) * | 1999-07-02 | 2006-12-12 | Beryl Technical Assays, Llc | Method and system for global constant management for memory |
KR100319755B1 (ko) * | 1999-12-02 | 2002-01-05 | 오길록 | 내장형 자바가상머신을 위한 바이트코드 압축 방법 |
US20010007146A1 (en) * | 1999-12-23 | 2001-07-05 | Uwe Hansmann | Method for providing a set of software components |
US7080359B2 (en) | 2002-01-16 | 2006-07-18 | International Business Machines Corporation | Stack unique signatures for program procedures and methods |
EP1128263B1 (en) * | 2000-02-21 | 2010-05-19 | Panasonic Corporation | Linking of Java class files for embedded devices |
FR2815801B1 (fr) * | 2000-10-20 | 2004-10-29 | Trusted Logic | Protocole de transmission d'une pluralite de flux logiques d'echange multiple de couples de commande/reponse sur un canal physique unique d'echange entre maitre et esclave et systeme de suivi et de controle d'execution d'appliquettes |
US6779732B2 (en) | 2001-08-31 | 2004-08-24 | Schulumberger Malco, Inc. | Method and apparatus for linking converted applet files |
FR2831684B1 (fr) * | 2001-10-31 | 2004-03-05 | Gemplus Card Int | Installation de programme compile notamment dans une carte a puce |
US7131121B2 (en) | 2001-11-14 | 2006-10-31 | Axalto, Inc. | Method and apparatus for linking converted applet files without relocation annotations |
US7114152B2 (en) | 2002-01-08 | 2006-09-26 | International Business Machines Corporation | Method, apparatus, and program to determine the mutability of an object at loading time |
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. |
US7272827B2 (en) | 2002-04-03 | 2007-09-18 | International Business Machines Corporation | Statically detecting externally referenced interfaces of a program |
AU2002347146A1 (en) | 2002-11-29 | 2004-06-23 | Research In Motion Limited | Method for generating interpretable code for storage in a device having limited storage |
FR2864650B1 (fr) * | 2003-12-24 | 2006-03-24 | Trusted Logic | Procede de mise a jour d'applications pour carte a puce |
KR100643268B1 (ko) * | 2004-01-17 | 2006-11-10 | 삼성전자주식회사 | 자바 가상 머신의 성능을 향상시키는 방법 및 상기 방법에의해 동작되는 시스템 |
US7886281B2 (en) * | 2004-03-30 | 2011-02-08 | Symantec Corporation | System and methods for cross-tier transaction tracing |
US7356811B2 (en) * | 2004-07-08 | 2008-04-08 | International Business Machines Corporation | Method and apparatus for referencing a constant pool in a java virtual machine |
DE102004058882A1 (de) * | 2004-12-06 | 2006-06-08 | Giesecke & Devrient Gmbh | Erzeugen von Programmcode in einem Ladeformat und Bereitstellen von ausführbarem Programmcode |
US8352925B2 (en) * | 2007-01-16 | 2013-01-08 | Oracle America, Inc. | Mechanism for enabling a set of code intended for a first platform to be executed on a second platform |
CA2889724C (en) | 2009-12-21 | 2021-06-08 | Kik Interactive Inc. | Systems and methods for accessing and controlling media stored remotely |
US9846631B2 (en) * | 2011-02-28 | 2017-12-19 | Typemock Ltd. | Methods, circuits, apparatus, systems and associated software modules for evaluating code behavior |
US9195568B2 (en) * | 2011-02-28 | 2015-11-24 | Typemock Ltd. | Methods, circuits, apparatus, systems and associated software modules for evaluating code behavior |
US9042266B2 (en) | 2011-12-21 | 2015-05-26 | Kik Interactive, Inc. | Methods and apparatus for initializing a network connection for an output device |
US9383448B2 (en) | 2012-07-05 | 2016-07-05 | Deca System Co., Ltd. | Golf GPS device with automatic hole recognition and playing hole selection |
CN103677778B (zh) * | 2012-09-18 | 2016-09-14 | 北京中电华大电子设计有限责任公司 | 一种CAP文件Classref常量的解析方法 |
US9223555B2 (en) * | 2013-11-07 | 2015-12-29 | Netronome Systems, Inc. | Hierarchical resource pools in a linker |
US10268465B2 (en) * | 2016-10-24 | 2019-04-23 | International Business Machines Corporation | Executing local function call site optimization |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5291601A (en) | 1989-06-01 | 1994-03-01 | Hewlett-Packard Company | Shared libraries implemented with linking program loader |
US5594903A (en) * | 1991-02-26 | 1997-01-14 | Lynx Real-Time Systems, Inc. | Operating System architecture with reserved memory space resident program code identified in file system name space |
US5581768A (en) | 1995-02-27 | 1996-12-03 | Intel Corporation | Method and apparatus for executing applications in place from write once/seldom memories |
US6112025A (en) * | 1996-03-25 | 2000-08-29 | Sun Microsystems, Inc. | System and method for dynamic program linking |
US5815718A (en) * | 1996-05-30 | 1998-09-29 | Sun Microsystems, Inc. | Method and system for loading classes in read-only memory |
CN1183449C (zh) * | 1996-10-25 | 2005-01-05 | 施卢默格系统公司 | 用微控制器使用高级程序设计语言 |
US6366876B1 (en) * | 1997-09-29 | 2002-04-02 | Sun Microsystems, Inc. | Method and apparatus for assessing compatibility between platforms and applications |
-
1998
- 1998-11-12 EP EP98950270A patent/EP1066562B1/en not_active Revoked
- 1998-11-12 CA CA002322686A patent/CA2322686A1/en not_active Abandoned
- 1998-11-12 WO PCT/IB1998/001799 patent/WO1999049392A1/en not_active Application Discontinuation
- 1998-11-12 KR KR10-2000-7009943A patent/KR100404785B1/ko not_active IP Right Cessation
- 1998-11-12 JP JP2000538296A patent/JP3632598B2/ja not_active Expired - Lifetime
- 1998-11-12 HU HU0101368A patent/HUP0101368A3/hu unknown
- 1998-11-12 US US09/646,720 patent/US6792612B1/en not_active Expired - Lifetime
- 1998-11-12 DE DE69814174T patent/DE69814174T2/de not_active Revoked
- 1998-11-12 CZ CZ20003437A patent/CZ20003437A3/cs unknown
- 1998-11-12 PL PL342994A patent/PL193009B1/pl not_active IP Right Cessation
- 1998-11-12 CN CN98813912A patent/CN1109971C/zh not_active Expired - Lifetime
-
1999
- 1999-02-23 MY MYPI99000623A patent/MY124662A/en unknown
-
2001
- 2001-05-12 HK HK01103313A patent/HK1033700A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
HUP0101368A2 (hu) | 2001-08-28 |
EP1066562B1 (en) | 2003-05-02 |
DE69814174T2 (de) | 2004-03-04 |
CZ20003437A3 (cs) | 2001-11-14 |
KR20010041716A (ko) | 2001-05-25 |
PL193009B1 (pl) | 2007-01-31 |
CN1286770A (zh) | 2001-03-07 |
WO1999049392A1 (en) | 1999-09-30 |
CN1109971C (zh) | 2003-05-28 |
EP1066562A1 (en) | 2001-01-10 |
HUP0101368A3 (en) | 2004-04-28 |
KR100404785B1 (ko) | 2003-11-07 |
CA2322686A1 (en) | 1999-09-30 |
HK1033700A1 (en) | 2001-09-14 |
JP2002508544A (ja) | 2002-03-19 |
MY124662A (en) | 2006-06-30 |
US6792612B1 (en) | 2004-09-14 |
DE69814174D1 (de) | 2003-06-05 |
PL342994A1 (en) | 2001-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3632598B2 (ja) | 変更定数プールを備えたJavaランタイム・システム | |
US11175896B2 (en) | Handling value types | |
AU2004202909B2 (en) | Token-based linking | |
US6799173B2 (en) | Method and apparatus for sharing code containing references to non-shared objects | |
JP4571710B2 (ja) | ディスパッチテーブル構造のための方法と装置 | |
JP3689368B2 (ja) | データ処理リソースを備えたマルチアプリケーション組込システムにアプリケーションをローディングする方法、対応するシステムおよび実行方法 | |
US6314445B1 (en) | Native function calling | |
US7003768B2 (en) | Method and apparatus for class intialization barriers and access to class variables in multitasking virtual machines | |
EP1214645A2 (en) | Translating and executing object-oriented computer programs | |
US6813762B1 (en) | Method for processing program files in a programming language capable of dynamic loading | |
WO2002091175A1 (en) | Specialized heaps for creation of objects in object-oriented environments | |
EP1481320B1 (en) | Two tier clusters for representation of objects in java programming environments | |
US7181724B2 (en) | Representation of Java® data types in virtual machines | |
US6934726B2 (en) | Storing and retrieving of field descriptors in Java computing environments | |
WO2002091173A2 (en) | Frameworks for efficient representation of string objects in java programming environments | |
WO2003019364A1 (en) | Frameworks for efficient representation of string objects in java programming environments | |
WO2002048864A2 (en) | System registers for an object-oriented processor | |
Yang et al. | A study on an efficient pre-resolution method for embedded java system | |
Thomas | Mite: a fast and flexible virtual machine | |
KR20010017727A (ko) | 내장형 자바가상머신에서 클래스파일참조를 위한 컨스턴트 풀의 자료구조 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040224 |
|
RD12 | Notification of acceptance of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7432 Effective date: 20040308 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20040308 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20040524 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20040607 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040824 |
|
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: 20041208 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20041208 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041213 |
|
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: 20080107 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090107 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100107 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100107 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110107 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120107 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130107 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140107 Year of fee payment: 9 |
|
EXPY | Cancellation because of completion of term |