JP3632598B2 - 変更定数プールを備えたJavaランタイム・システム - Google Patents

変更定数プールを備えたJavaランタイム・システム Download PDF

Info

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
Application number
JP2000538296A
Other languages
English (en)
Other versions
JP2002508544A (ja
Inventor
ベンチュ、ミハエル
ブーラー、ペーター
エストライヒャー、マルクス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=8231635&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP3632598(B2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2002508544A publication Critical patent/JP2002508544A/ja
Application granted granted Critical
Publication of JP3632598B2 publication Critical patent/JP3632598B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract 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

【0001】
【発明の属する技術分野】
本発明は、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言語様の宣言として示す。これはわかりやすいようにここに指定したもので、最適な形ではない。
Figure 0003632598
Figure 0003632598
Figure 0003632598
Figure 0003632598
Figure 0003632598
Figure 0003632598

【図面の簡単な説明】
【図1】JavaSoft提案のキャップ・ファイル・フォーマットを備えたリンキングを示す図である。
【図2】本明細書で提案するファイル・フォーマットを備えた、オフセットによるリンキングを示す図である。
【図3】本明細書で提案するファイル・フォーマットを備えた、名前によるリンキングを示す図である。

Claims (6)

  1. クラス構造を反映するバイトコードを含むプログラムを実行するスタック・ベースのインタープリタを備え、さらにリンク時にのみ使用される内部情報とレイト・コード・バインディングのため外部情報とを含む変更定数プールを備え、前記内部情報がリンク後に前記変更定数プールから除去されるJavaランタイム・システム。
  2. 前記Javaランタイム・システムが、JavaCardである請求項1に記載のJavaランタイム・システム。
  3. クラス構造を反映するバイトコードを含むパッケージを実行するためのスタック・ベースのインタープリタを備えるJavaランタイム・システムに新しいコードを導入する方法であって、
    前記システムが、前記システム内に存在する前記パッケージに前記新しいコードをリンク(内部リンク)し、それにより前記新しいコードのそれ自体に対するオフセットをリンク時にのみ使用される参照で置き換え、
    前記システムが、それにより前記パッケージの定数プールに含まれる記号情報(名前)を使用して外部リンクを解決し、
    前記システムが、少なくともリンク時にのみ使用される前記参照による置換えのために使用される情報を、前記定数プールから除去する方法。
  4. 外部パッケージにリンクするために使用される情報も、前記定数プールから除去される請求項3に記載の方法。
  5. 前記定数プール中の情報のうち前記除去によって除去されなかった残りの情報により、後でダウンロードされる他のパッケージおよびアプレットが、前記新しいコードにアクセスできるようになる(レイト・コード・バインディング)請求項3に記載の方法。
  6. 前記Javaランタイム・システムが、JavaCardである請求項3に記載の方法。
JP2000538296A 1998-03-23 1998-11-12 変更定数プールを備えたJavaランタイム・システム Expired - Lifetime JP3632598B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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