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

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

Info

Publication number
JP2002508544A
JP2002508544A JP2000538296A JP2000538296A JP2002508544A JP 2002508544 A JP2002508544 A JP 2002508544A JP 2000538296 A JP2000538296 A JP 2000538296A JP 2000538296 A JP2000538296 A JP 2000538296A JP 2002508544 A JP2002508544 A JP 2002508544A
Authority
JP
Japan
Prior art keywords
constant pool
offset
java runtime
runtime system
link
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.)
Granted
Application number
JP2000538296A
Other languages
English (en)
Other versions
JP3632598B2 (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=JP2002508544(A) "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

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)

Abstract

(57)【要約】 【課題】 資源制約Javaランタイム環境において効率的リンキングを提供すること。 【解決手段】 バイトコードおよびクラス構造を含むプログラムを実行するスタック・ベースのインタープリタを備えるJavaランタイム・システムを提案する。このシステムはさらに、リンク時中にだけ使用される内部情報と、レイト・コード・バインディング用に予約された外部情報とを含む変更定数プールを備えている。内部情報は、リンク後に変更定数プールから除去される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】
本発明は、JavaCardなどの資源制約Javaランタイム環境におけるダイナミック
・コード・ダウン・ロードおよびリンキングに関する。
【0002】
【従来の技術】
従来のJava・システムにおいては、クラス構造(内部および外部)への参照は
、いわゆる定数プールを介する間接名前ルックアップを使って解決される。この
ような手法は、処理能力および内部資源の点で十分な資源を提供するシステムで
しか使用できない。
【0003】 資源制約ランタイム・システム(例えば、JavaCard)においては、この手法は
、有望ではない。その代わりに、解決されたクラス構造への参照を使用して、間
接指示(indirection)を回避し、定数プールの維持を避けることができる。
【0004】
【発明が解決しようとする課題】
参照(リンキング)を解決することが、本発明の主題である。
【0005】 本発明の一目的は、資源制約Javaランタイム環境において効率的リンキングを
実現することである。
【0006】 本発明の一目的は、資源制約Javaランタイム環境においてスペースおよびラン
タイムの効率的リンキングを実現することである。
【0007】
【課題を解決するための手段】
本発明では上記課題を解決するために、バイトコードとクラス構造を含むプロ
グラムを実行するスタック・ベースのインタープリタを備え、さらにリンク時に
のみ使用される内部情報とレイト・コード・バインディングのために予約された
外部情報とを含む変更定数プールを備え、前記内部情報がリンク後に前記変更定
数プールから除去されるJavaランタイム・システムを実現する。
【0008】
【発明の実施の形態】
以下に本発明の概要を示し、実施の諸態様を取り上げる。Javaは、米国940
43−1100カリフォルニア州マウンテン・ビュー、ガルシア・アベニュー2
550のサン・マイクロシステムズ社が開発したプログラミング言語および環境
である。用語「Java」は、同社の商標である。
【0009】 この説明では実施の詳細も扱うので、当技術分野の技術者は、Java仮想計算機
およびその実施の基本的機構に精通しているものと想定する。Java言語の包括的
な提示とJVMの実施は、J.ゴスリン(Goslin)、B.ジョイ(Joy)および G.テル(Tele)の「The Java Language Specification」、ならびにT.リン ドホルム(Lindholm)およびF.エリン(Yellin)の「The Java Virtual Machi
ne 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】 フィックスアップ・テーブルはやはり、テキスト・セクションまたはデータ・
セクション中の再配置を行うべき位置を含んでいる。簡単なケースでは、これら
の場所も、信頼されるよく知られたターゲット・パッケージへの予め計算された
オフセットによって再配置される。この場合、リンカは、所与のターゲットAI
Dによってパッケージの開始アドレスをルックアップし、ターゲット・パッケー
ジへのオフセットを加え、テキスト・セクションの元の位置にその値を格納する
。ターゲット・パッケージへのオフセットは、フィックスアップ・テーブルに保
持することができ、またフィックスアップ・テーブルを小さくしておくためにテ
キスト・セクションの再配置アドレスに保持することもできる。オフセットによ
る再配置は、ロードされたカードレット自体内の大部分の参照に対して常に使用
することができる。コンバータは、互換性を壊すことなく、これらのオフセット
を予め計算することができる。
【0017】 システムの保全性の理由から、他の外部パッケージへの参照は、予め計算され
たオフセットによってリンクすべきではない。その代わりに、名前または識別子
を、リンク・プロセス中に、他のパッケージへの参照に使用すべきである。これ
らの名前とそれに関連する値だけを、複数のアプレットの間で共用されるパッケ
ージのカードに格納しなければならない。名前/値の対のこれらのテーブルはで
きるだけ小さくなければならないため、このキャップ・ファイル・フォーマット
では、クラス・ファイル要素の命名には制限があるが、それでも様々な仕様をベ
ンダ特有に実施する可能性が与えられる。
【0018】 ・ 公用クラス:命名しなければならず、エキスポート可能でなければならな
い。
【0019】 ・ 公用静的メソッドおよびコンストラクタ:同上。
【0020】 ・ 公用静的フィールド:同上。
【0021】 ・ 仮想メソッド: インタープリタは、仮想メソッド・テーブルへのインデックスにより、仮想メ
ソッドを見つけ出す。これらのインデックスと仮想メソッド・テーブルは、Java
Card環境が仮想メソッドの標準Javaレイト・コード・バインディングをサポート
しようとする場合、カード上で解決する必要がある。メソッド・テーブルの構築
中に、リンカは、あるメソッドが、メソッド・テーブル中の他のメソッドを継承
するかどうかを判断しなければならない。これらのメソッドは異なるカードレッ
ト中で定義されている可能性があるため、2つのメソッドが同じタイプを有して
いるかどうかを判断するのに、メソッドに対する大域命名方式を導入しなければ
ならない。仮想メソッド・コールに対するレイト(late)・コード・バインディ
ング(ダイナミック・リンキングとも言う)では、仮想メソッドを解決し命名す
るために、大域命名方式、およびカード上の追加資源を必要とするが、本発明の
キャップ・ファイル・フォーマットは、これをサポートしない。しかし、この制
限があっても、コア・パッケージおよび拡張のベンダ特有の実施のための十分な
余地が残る。プログラマは自由に、私用または静的メソッドおよびクラスを追加
することができる。非私用インスタンス・メソッドが継承されず、最終的なもの
と宣言されていない場合、プログラマは、非私用インスタンス・メソッドも追加
することができる。コンバータは次いで、これらのメソッドに対するコールを直
接呼出しで置き換えることができる。
【0022】 ・ インスタンス・フィールド: あるクラスにおけるインスタンス・フィールドの数およびタイプは通常、仕様
で定義されず、異なるベンダの実施ごとに変わるものである。したがって、フィ
ールド・オフセットのバインドは、CAPファイル・フォーマットの提案で対処
しなければならない。リンク・プロセスに関するフィールドの使用法は、以下の
3つのカテゴリに分けられる。
【0023】 ・ 予め計算されたフィールド・オフセット ゲット/プット・フィールド命令は、そのクラスと全てのスーパークラスが、
格納用(containing)カードレット内で定義されているフィールドを参照付け(
reference)する。そうすると、このフィールドのオフセットは、コンバータに よって予め計算でき、ロード・プロセス中にリンクする必要はない。オブジェク
ト・クラスが何らフィールド宣言を含んでいないという取り決めがある場合、多
くのフィールド・アクセスが、このカテゴリに属する。
【0024】 ・ 何らかのカードレット外部のスーパークラスによるカードレット内部のク
ラスのフィールドに対するアクセス 別々のパッケージ内で定義されるクラスのサブクラス分けを可能にするために
、このケースを、キャップ・ファイル・フォーマットでサポートしなければなら
ない。コンバータは、カードレット外部のスーパークラスのインスタンス・サイ
ズに対するフィールドのオフセットを計算し、この値をキャップ・ファイルに格
納することができる。リンク・プロセス中に、フィールドの実際のオフセットを
、ベース・クラスのサイズに基づいて再計算しなければならない。カードレット
内部クラスのインスタンス・サイズの要素についても同じことを行うことができ
る。
【0025】 ・ カードレット外部のスーパークラスまたは何らかの外部クラスにおけるフ
ィールドに対するアクセス インスタンス・フィールドが公用であると宣言されることはほとんどないが、
保護されていると宣言されることはしばしばある。保護されたフィールドへのア
クセスは常に、保護されたセット/ゲット・フィールト・メソッドを指定するこ
とによって許可されるが、提案されるキャップ・ファイル・フォーマットでもこ
のような保護された、または公用と宣言されたフィールドへの直接アクセスが可
能である。保護されたまたは公用のインスタンス・フィールドをエキスポートす
るパッケージは、記号リンクを可能にするために、このようなフィールドに対す
る名前とオフセットを含んでいなければならない。
【0026】 クラス、メソッドまたはフィールドをエキスポートするパッケージは、その項
目がその記号のタイプ(クラスなど)、名前および値を含んでいる定数プールを
含んでいる。キャップ・ファイル・フォーマットが大域命名方式をサポートする
必要がないので、関連する記号の名前は簡単に指定できる。記号は、0からnま
での番号を付け、アプリケーション・プログラミング・インターフェース(AP
I)の仕様と共に配布することができる。このような仕様の実施者は、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言語様の宣言として示す。これはわかりやすいようにここに指定
したもので、最適な形ではない。 // フィックスアップ・テーブルのフォーマット typedef struct_fixup_table{ u1 target_aid_cnt; u1 target_aid[]; u1 entries_cnt; fixup_entry_t entries[]; }; // フィックスアップ項目のレイアウト typedef struct_fixup_entry{ u1 type; u2 offset; // テキストまたはデータに対するオフセット union{ u2 target_offset;// ターゲット・パッケージに対するオフセット u2 symbol_name; // ターゲット定数プールに対する名前とインデックス }value; } fixup_entry_t; // 個々のフィックスアップ項目タイプ // テキスト・セクションまたはデータ・セクションにおける16ビットのアド レスをオフセットによって再配置する // これはクラス、メソッドなどのアドレスをカバーできる #define RELO_TEXT_16BIT_WITH_OFFSET #define RELO_TEXT_16BIT_WITH_OFFSET // 記号の値をテキスト・セクションに再配置する #define RELO_CLASS_BY_SYM #define RELO_METHOD_BY_SYM #define RELO_STATICFIELD_BY_SYM #define RELO_INSTANCEFIELD_BY_SYM // 定数プールのレイアウト typedef stuct_constant_pool{ u2 cnt; cp_item_t items[cnt]; }; // 定数プール項のレイアウト typedef struct_cp_item{ unsigned type:4 // 項のタイプ unsigned name:12; // 何か必要とされる場合には、名前 u2 offset; // オフセット }; // 定数プール項のタイプ #define CONSTPOOL_CLASS #define CONSTPOOL_METHOD #define CONSTPOOL_STATICFIELD #define CONSTPOOL_INSTANCEFIELD
【図面の簡単な説明】
【図1】 JavaSoft提案のキャップ・ファイル・フォーマットを備えたリンキングを示す
図である。
【図2】 本明細書で提案するファイル・フォーマットを備えた、オフセットによるリン
キングを示す図である。
【図3】 本明細書で提案するファイル・フォーマットを備えた、名前によるリンキング
を示す図である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ブーラー、ペーター スイス シー・エイチ8803 リュシリコン ミューレシュトラーセ 39 (72)発明者 エストライヒャー、マルクス スイス シー・エイチ8004 チューリヒ ケルンシュトラーセ 34 Fターム(参考) 5B076 AB04 AB16

Claims (6)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100643268B1 (ko) * 2004-01-17 2006-11-10 삼성전자주식회사 자바 가상 머신의 성능을 향상시키는 방법 및 상기 방법에의해 동작되는 시스템

Families Citing this family (28)

* 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
US7024657B2 (en) * 2000-02-21 2006-04-04 Matsushita Electric Industrial Co., Ltd. Program generation apparatus for program execution system, replaces variable name in each class file by assigned offset number so that same offset numbers are assigned to non-dependent variables with same variable name
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
US7761861B2 (en) * 2002-11-29 2010-07-20 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
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
AU2010335972B2 (en) 2009-12-21 2013-10-03 13079023 Canada Association Systems and methods for accessing and controlling media stored remotely
US9195568B2 (en) * 2011-02-28 2015-11-24 Typemock Ltd. Methods, circuits, apparatus, systems and associated software modules for evaluating code behavior
US9846631B2 (en) * 2011-02-28 2017-12-19 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
JP2000514584A (ja) * 1996-10-25 2000-10-31 シュルンベルジェ システーム 高級プログラミング言語を用いたマイクロコントローラ
US6366876B1 (en) * 1997-09-29 2002-04-02 Sun Microsystems, Inc. Method and apparatus for assessing compatibility between platforms and applications

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100643268B1 (ko) * 2004-01-17 2006-11-10 삼성전자주식회사 자바 가상 머신의 성능을 향상시키는 방법 및 상기 방법에의해 동작되는 시스템

Also Published As

Publication number Publication date
KR100404785B1 (ko) 2003-11-07
EP1066562B1 (en) 2003-05-02
HK1033700A1 (en) 2001-09-14
MY124662A (en) 2006-06-30
CN1109971C (zh) 2003-05-28
DE69814174T2 (de) 2004-03-04
CA2322686A1 (en) 1999-09-30
CZ20003437A3 (cs) 2001-11-14
EP1066562A1 (en) 2001-01-10
US6792612B1 (en) 2004-09-14
JP3632598B2 (ja) 2005-03-23
PL342994A1 (en) 2001-07-16
WO1999049392A1 (en) 1999-09-30
HUP0101368A3 (en) 2004-04-28
CN1286770A (zh) 2001-03-07
PL193009B1 (pl) 2007-01-31
DE69814174D1 (de) 2003-06-05
HUP0101368A2 (hu) 2001-08-28
KR20010041716A (ko) 2001-05-25

Similar Documents

Publication Publication Date Title
JP3632598B2 (ja) 変更定数プールを備えたJavaランタイム・システム
US6880155B2 (en) Token-based linking
US8434099B2 (en) Efficient linking and loading for late binding and platform retargeting
US6799173B2 (en) Method and apparatus for sharing code containing references to non-shared objects
US6760905B1 (en) Lazy compilation of template-generated classes in dynamic compilation execution environments
US7565665B2 (en) Efficient linking and loading for late binding and platform retargeting
EP1214645B1 (en) Method and system for distributing object-oriented computer programs
JPH10198570A (ja) 読み出し専用メモリにクラスをロードする方法及びシステム
JP2002536743A (ja) リソース制約デバイスのためのオブジェクト指向命令セット
KR19980079641A (ko) 비고유 바이트코드를 컴퓨터 시스템 내의 프로세서에 고유한 일단의 코드로 변환하기 위한 방법 및 시스템
US7003768B2 (en) Method and apparatus for class intialization barriers and access to class variables in multitasking virtual machines
EP1481320B1 (en) Two tier clusters for representation of objects in java programming environments
US7181724B2 (en) Representation of Java® data types in virtual machines
US20020198698A1 (en) Representation of objects in a Java programming environment
WO2003019364A1 (en) Frameworks for efficient representation of string objects in java programming environments
WO2002048864A2 (en) System registers for an object-oriented processor
Thomas Mite: a fast and flexible virtual machine

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