(57)【要約】  本発明は、ポータブル・デジタル・デバイス（５）の不揮発性メモリにロード可能ないくつかのモジュール（７）を備えるソフトウェアをロードするための方法に関し、少なくとも１つのモジュールのロードは、不揮発性メモリ（６）内の当該モジュールに関連付けられたデータ構造の有無をテストし、必要であれば、空であるとして示される当該データ構造（６２）を作成するステップと、内部要素の完全性についてリンクを解決するステップと、その後、当該構造をロード済み（６２１）としてマーク付けするステップと、ロード可能モジュール内で参照された互いのモジュールについて関連付けられたデータ構造の有無をテストし、必要であれば、前記構造を作成してこれを空であるとして示すステップとを含む。当該発明は、モジュールのロード時にオンボード・ソフトウェアによって占有されるスペースを削減することができる。【選択図】      図２
2008502968.tif 000002
【特許請求の範囲】
【請求項１】
中間オブジェクト指向言語にコンパイルされ、仮想実行計算機を備えるポータブル・デジタル・デバイス（５）の不揮発性メモリにロードするためのいくつかのモジュール（７）を備えるソフトウェアをロードするための方法であって、これらのモジュール（７）は、前記仮想計算機のインタプリタにより実行できる形でロードする必要があり、少なくとも１つの前記モジュールのロードは、
不揮発性メモリ（６）内の前記モジュールに関連付けられたデータ構造の有無をチェックするステップと、
前記データ構造が存在しない場合、前記モジュールに関連付けられたデータ構造（６２）を前記不揮発性メモリ内に作成し、前記データ構造を未ロードとしてマーク付けするステップと、
前記データ構造内の前記モジュールのすべての内部要素に関するリンクを解決し、次に前記データ構造をロード済み（６２１）としてマーク付けするステップと、
ロードされるモジュール内で参照されたあらゆる他のモジュールについて、前記他のモジュールに関連付けられたデータ構造の有無をチェックするステップと、
前記他のモジュールに関連付けられたデータ構造が存在しない場合、前記他のモジュールに関連付けられたデータ構造（６６）を前記不揮発性メモリ内に作成し、前記データ構造を未ロードとしてマーク付けするステップとを含むことを特徴とする方法。
【請求項２】
ロードされるモジュールに関連付けられた前記データ構造を作成するステップは、ロードされる前記モジュール内に含まれるロードされる前記モジュールの記述子の前記データ構造内への格納を含むことを特徴とする、請求項１に記載の方法。
【請求項３】
前記リンク解決ステップが、
各内部要素に関連付けられたデータ構造の有無を検証するステップと、
前記データ構造が存在しない場合、前記内部要素に関連付けられたデータ構造（６４，６５）を前記不揮発性メモリ内に作成するステップと、
ロードされる前記モジュール内で言及された各外部要素について、
前記外部要素に関連付けられたデータ構造の有無を検証するステップと、
前記データ構造が存在しない場合、前記外部要素に関連付けられたデータ構造を前記不揮発性メモリ内に作成するステップとを含むことを特徴とする、請求項１または２に記載の方法。
【請求項４】
前記モジュールのロードは、リンクの解決後、言及したすべての外部モジュールがロード済みとしてマーク付けされた場合、前記モジュールをリンク済みとしてマーク付けするステップをさらに含むことを特徴とする、請求項１乃至３のいずれか１項に記載の方法。
【請求項５】
データ構造の有無のチェックは、存在する場合は前記データ構造と、ロードされる前記モジュール内のその参照との間の一致テスト、および一致チェック情報の格納を含み、
前記モジュールがリンク済みとしてマーク付けされた場合、前記参照の一致チェック情報は削除されることを特徴とする、請求項４に記載の方法。
【請求項６】
リンク済みとしてマーク付けされた前記モジュールの静的データを初期設定するステップと、
前記モジュールを使用可能状態としてマーク付けするステップとをさらに含むことを特徴とする、請求項４または５に記載の方法。
【請求項７】
前記デジタル・デバイスに格納され、静的データを初期設定することを意図するコードは、前記モジュールが使用可能状態としてマーク付けされた場合、削除されることを特徴とする、請求項６に記載の方法。
【請求項８】
ロードされる前記モジュールはコンパイル済みＪａｖａ．（登録商標）ｃｌａｓｓファイルであることを特徴とする、請求項１乃至７のいずれか１項に記載の方法。
【請求項９】
前記データ構造は、前記仮想計算機により処理することができるデータ構造であることを特徴とする、請求項８に記載の方法。
【請求項１０】
前記デジタル・デバイス（５）は、埋め込み型Ｊａｖａ（登録商標）またはＤｏｔＮｅｔ仮想計算機を備えるチップ・カードであることを特徴とする、請求項８または９に記載の方法。
【請求項１１】
前記モジュールのロードは、すべてのプログラム・モジュールに対して実行されることを特徴とする、請求項１乃至１０のいずれか１項に記載の方法。
【請求項１２】
モジュールが使用不可能な場合、前記モジュールの可用度がチェックされ、前記ポータブル・デバイスによって前記モジュールが自動的にロードされることを特徴とする、請求項１乃至１１のいずれか１項に記載の方法。
【請求項１３】
ポータブル・デジタル・デバイス内にロードされるいくつかのモジュールを含む中間オブジェクト指向言語にコンパイル済みのプログラム向けローダ（８）であって、前記デバイスの不揮発性メモリに格納することと、ソース・デバイス上に格納されたモジュールにアクセスすることと、請求項１乃至１２のいずれか１項に記載の方法を実施することとが可能であることを特徴とする、ローダ。
【請求項１４】
請求項１乃至１２のいずれか１項に記載の方法によって、ポータブル・デバイスにロードされるプログラム。
【請求項１５】
請求項１３に記載のローダを格納する不揮発性メモリを備えるポータブル・デジタル・デバイス。
【請求項１６】
前記不揮発性メモリが請求項１４に記載のプログラムを格納することを特徴とする、請求項１５に記載のデバイス。
【請求項１７】
前記デバイスがチップ・カードであることを特徴とする、請求項１５または１６に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ポータブル・デバイスに埋め込まれたソフトウェアおよび実行環境に関し、特に、こうしたソフトウェアをポータブル・デバイスにロードするための方法に関する。
【背景技術】
【０００２】
中間オブジェクト指向プログラミング言語が開発されてきた。これらの言語の主な目的は、それらのプログラムを、実行されなければならないハードウェアから独立させることである。それ故、プログラマは、一般に、特定のハードウェアにリンクした制約から解放される。異なるハードウェア用に同じバージョンのプログラムを配布することも可能である。従って、結果的に、Ｊａｖａ（登録商標）ソース言語のコンパイルによって得られる（バイトコードにちなんで命名された）Ｊａｖａ（登録商標）擬似コードなどの中間オブジェクト指向言語の人気が高まってきている。
【０００３】
通常、デスクトップ・コンピュータ向けのＪａｖａ（登録商標）プログラムは、．ｃｌａｓｓファイルで構成されたモジュール・セットの形で配布される。これらのファイルは、ソフトウェアのコンパイル済みの形に対応する。各コンパイル済みファイルは、クラス・データ構造に対応するため、このクラスでの情報、すなわち、クラス要素の記述（その定数、フィールド、メソッド）、そのクラスによって使用される他のクラスで定義された要素の記述（フィールドおよびメソッド）、Ｊａｖａ（登録商標）仮想計算機インタプリタによる解釈が可能な命令（擬似コード）の形のクラス・メソッドに関するコードを有する。．ｃｌａｓｓファイルでは、クラス要素およびクラスによって使用される要素の記述が、主に数値記号（定数プール（ｃｏｎｓｔａｎｔ  ｐｏｏｌ）内のエントリ番号）を要素記述に関連付ける参照テーブル（定数プール）内にまとめられる。それ故、解釈可能な命令（擬似コード）の間で、クラス要素およびクラスによって使用される要素への参照は、参照テーブル（定数プール）内のそれらのエントリ番号によって「参照」される。例えば、．ｃｌａｓｓファイルは、以下のような構造とすることができる。
【０００４】
ＣｌａｓｓＦｉｌｅ｛
Ｉｄ＿ｉｎｆｏ；              ／／バージョン番号
Ｃｏｎｓｔａｎｔ＿ｐｏｏｌ；  ／／クラス要素およびクラスによって使用される要素へのすべての参照を格納
Ｂａｓｅ＿ｉｎｆｏ；          ／／アクセス・フラグ、クラス名、およびスーパークラス
Ｉｎｔｅｒｆａｃｅ＿ｌｉｓｔ；／／クラスによって実装されるインタフェース
Ｆｉｅｌｄ＿ｌｉｓｔ；        ／／クラス・フィールドの記述
Ｍｅｔｈｏｄ＿ｌｉｓｔ；      ／／このクラスでのメソッド（それらの擬似コード、すなわち、仮想計算機のインタプリタによる解釈が可能な命令を含む）
Ａｔｔｒｉｂｕｔｅ＿ｌｉｓｔ  ／／属性（例えば、デバッグ情報など）
｝
【０００５】
コンパイル済みプログラム・ファイルは、コンピュータ上の大容量メモリ・デバイス、例えばハード・ディスク上に格納される。Ｊａｖａ（登録商標）ソフトウェアは、コンピュータにインストールされたＪａｖａ仮想計算機によって実行される。この仮想計算機は、ＣｌａｓｓＦｉｌｅ情報をロードし、仮想計算機特有であり、この仮想計算機がプログラムを実行できるようにする作業メモリ内のデータ構造に変換する。
【０００６】
Ｊａｖａソフトウェアのこのロード（および変換）段階は、かなり多くのランダム・アクセス・メモリ（ＲＡＭ）およびプロセッサ・リソースを備える大部分のデスクトップ・コンピュータ上で実行することができる。デスクトップ・コンピュータは、これらのリソースによって、仮想計算機の内部データ構造を実行中またＲＡＭ内に作成することにより、プログラムを効果的にロードすることが可能であり、次に、ＲＡＭ内でプログラムを実行させることができる。実行に先立つこのロード段階には、主に、作成されたデータ構造内のクラスの内部および外部要素への参照が、こうして作成されたデータ構造のメモリ・アドレスに置き換えられるリンク編集段階が含まれる。
【０００７】
しかし、Ｊａｖａソフトウェアを実行しなければならないある種のシステムは、さらに容量が限定されているため、このタイプの実行を妨げる。従って、小型化の制約により、チップ・カードは、通常、１から４キロバイトの間のＲＡＭ（作業メモリとして使用される）、３２から６４キロバイトの間の書き換え可能な不揮発性メモリ（大容量メモリおよび作業メモリとして使用される）、および約２５６キロバイトの読み取り専用メモリ（実行環境コードの格納に使用される）を備える。従って、こうしたチップ・カードは、．ｃｌａｓｓファイルを不揮発性メモリに格納すること、および実行のたびに揮発性メモリへのこのロード段階を実行することを含むこのタイプの機能には適さない。さらに、カード上のクラス・データは、不揮発性メモリの．ｃｌａｓｓファイル内のデータと揮発性メモリのデータ構造形式のデータというように重複することになる。
【０００８】
第１の解決方法は、チップ・カード上の仮想計算機の仕様によって定義されたデータ構造をチップ・カードの不揮発性メモリに直接格納することからなる。この場合、カード上の仮想計算機は、クラス・データをデータ構造形式、すなわちすぐに実行できる形式で受け取ることから、ロード操作を実行する必要がなくなる。
【０００９】
こうしたロード技法は、文書ＵＳ２００３／０２８６８６に記載されている。それ故、．ｃｌａｓｓファイルは、ロード計算機上でＪａｖａ（登録商標）  Ｃａｒｄ形式の．ｃａｐファイルに変換され、このファイルは、製造プロセス中またはその後の使用時にチップ・カードにロードされる。．ｃａｐファイルは、特に、ヘッダと、参照テーブルと、メソッド記述子と、外部要素記述子とを有する。ロード計算機は、生成済み．ｃａｐファイルに関連付けられたＥｘｐｏｒｔＦｉｌｅと呼ばれるファイルも生成する。このＥｘｐｏｒｔＦｉｌｅファイルは、例えば、他の別々のアプリケーションがその要素を使用することができるように、．ｃａｐファイル内で公開要素を宣言させることが可能である。
【００１０】
しかし、この解決方法の使用には欠点もある。Ｊａｖａ  Ｃａｒｄは、Ｊａｖａ（登録商標）に比べて命令セットが少ない。とりわけ、Ｊａｖａ  Ｃａｒｄは動的クラス・ロードをサポートしていない。動的リンク編集は、．ｃａｐファイルがチップ・カードにロードされた後に限られる。Ｊａｖａ  Ｃａｒｄでサポートされていない命令を使用する．ｃｌａｓｓファイルからロード済み．ｃａｐファイルを生成することは容易でない。さらに、変換段階は、各チップ・カード・タイプに特定の変換を提供しなければならないため（すでにカードにロードされたプログラムに関して、および変換中は対応するＥｘｐｏｒｔＦｉｌｅが存在しなければならないため）、プログラマのタスクを複雑にする。また、プログラムは、チップ・カードに一度にロードしなければならない。伝送時に何らかの割込みがあると、ロード・プロセスを最初から再開することになってしまう。最後に、この解決方法の２つの他の欠点は、カード（．ｃａｐ）特有のクラス配布ファイル形式を使用すること、および仮想計算機の内部データ構造の標準化が必要なことであり、これらはこのようにして定義された新しい．ｃａｐファイルに記述される。
【００１１】
第２の解決方法には、インストール時に．ｃｌａｓｓファイルをチップ・カードのネイティブ言語にコンパイルすることが含まれる。チップ・カードの作業メモリは、もはや仮想計算機に付き合う必要はなくなり、実行時間は大幅に減少する。ロードおよびリンク編集プロセスは必然的に実行される。このようにして生成されたネイティブ・コードには、解釈済みコードよりもかなり多くのメモリを使用するという欠点がある。さらに、コンパイルは、チップ・カード特有でなければならないため、複雑かつコストのかかるものである。また、ネイティブ・マシン・コードにコンパイルされたプログラムはカードの仕組みに関するデータを提供することができるため、チップ・カードのセキュリティは脆弱化する。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明は、これらの欠点のうちの１つまたは複数を解決することを目的とする。
【課題を解決するための手段】
【００１３】
それ故、本発明の目的は、中間オブジェクト指向言語にコンパイルされ、仮想実行計算機を備えるポータブル・デジタル・デバイスの不揮発性メモリにロードするためのいくつかのモジュールを備えるソフトウェアをロードするための方法を提供することであり、これらのモジュールは、当該仮想計算機のインタプリタにより実行できる形でロードする必要があり、少なくとも１つのこれらのモジュールのロードは、
−不揮発性メモリ内のこのモジュールに関連付けられたデータ構造の有無をチェックするステップと、
−このデータ構造が存在しない場合、このモジュールに関連付けられたデータ構造を不揮発性メモリ内に作成し、このデータ構造を未ロード（ｎｏｔ  ｌｏａｄｅｄ）としてマーク付けするステップと、
−このデータ構造内のこのモジュールのすべての内部要素に関するリンクを解決し、次にこのデータ構造をロード済み（ｌｏａｄｅｄ）としてマーク付けするステップと、
−ロードされるモジュール内で参照されたあらゆる他のモジュールについて、この他のモジュールに関連付けられたデータ構造の有無をチェックするステップと、
−この他のモジュールに関連付けられたデータ構造が存在しない場合、この他のモジュールに関連付けられたデータ構造を不揮発性メモリ内に作成し、このデータ構造を未ロードとしてマーク付けするステップと、
を含む。
【００１４】
本発明の代替実施形態によれば、ロードされるモジュールに関連付けられたデータ構造を作成するステップは、ロードされるこのモジュール内に含まれるロードされるこのモジュールの記述子のこのデータ構造内への格納を含む。
【００１５】
本発明の他の代替実施形態によれば、リンク解決ステップは、
−各内部要素に関連付けられたデータ構造の有無を検証するステップと、
−このデータ構造が存在しない場合、この内部要素に関連付けられたデータ構造を不揮発性メモリ内に作成するステップと、
−ロードされるモジュール内で言及された各外部要素について、
−この外部要素に関連付けられたデータ構造の有無を検証するステップと、
−このデータ構造が存在しない場合、この外部要素に関連付けられたデータ構造を不揮発性メモリ内に作成するステップと、
を含む。
【００１６】
本発明の他の代替実施形態によれば、当該モジュールのロードは、また、リンクの解決後、言及したすべての外部モジュールがロード済みとしてマーク付けされた場合、このモジュールをリンク済みとしてマーク付けするステップを含む。
データ構造の有無のチェックは、存在する場合はこのデータ構造と、ロードされるモジュール内のその参照との間の一致テスト、および一致チェック情報の格納を含むことができ、モジュールがリンク済みとしてマーク付けされた場合、参照の一致チェック情報は削除される。
【００１７】
上記方法は、
−リンク済みとしてマーク付けされたモジュールの静的データを初期設定するステップと、
−このモジュールを使用可能状態としてマーク付けするステップと、
を含むことができる。
【００１８】
次に、デジタル・デバイスに格納され、静的データを初期設定することを意図するコードは、モジュールが使用可能状態としてマーク付けされた場合、削除することができる。
【００１９】
本発明の代替実施形態によれば、ロードされるモジュールはコンパイル済みＪａｖａ．（登録商標）ｃｌａｓｓファイルである。このデータ構造は、仮想計算機により処理することができるデータ構造である。デジタル・デバイスは、埋め込み型ＪａｖａまたはＤｏｔＮｅｔ仮想計算機を備えるチップ・カードである。
【００２０】
こうしたモジュールのロードは、すべてのプログラム・モジュールに対して実行することが可能である。
モジュールが使用不可能な場合、ポータブル・デバイスによってモジュールを自動的にロードすることができるように、このモジュールの可用度をチェックすることができる。
【００２１】
本発明は、ポータブル・デジタル・デバイス内にロードされるいくつかのモジュールを備える中間オブジェクト指向言語にコンパイル済みのプログラム向けローダにも関し、このローダは、デバイスの不揮発性メモリに格納すること、ソース・デバイス上に格納されたモジュールにアクセスすること、および上記で概説した方法を実施することが可能である。
【００２２】
本発明は、また、上記方法に従って、ポータブル・デバイスにロードされるプログラムにも関する。
さらに本発明は、前述のローダを格納する不揮発性メモリを備えるポータブル・デジタル・デバイスにも関する。代替の実施形態によれば、不揮発性メモリは前述のプログラムを格納する。
本発明の他の代替実施形態によれば、このデバイスはチップ・カードである。
本発明の他の特別な特徴および利点は、添付の図面に関して非限定的な形で一例として提供された説明を読めば明らかとなろう。
【発明を実施するための最良の形態】
【００２３】
以下では、ポータブル・コンピュータなどのポータブル・デバイス、ならびにプロセッサおよびメモリ・デバイスを有するマイクロプロセッサを備える任意の他の電子デバイスを指すために、ポータブル電子デバイスを使用する。
【００２４】
本発明は、ロード時に最初に言及された要素のデータ構造を作成することによって、ポータブル・デバイスにプログラム・モジュールをロードすることを提案する。この方法では、ポータブル・デバイスの仮想計算機によって実行されることが意図されたデータ構造は、その一時表現を格納することなく、ロード時にモジュールの外部要素によって直接作成される。実行する必要のない要素は、ロード、リンク編集、および最適化のステップがプログラム・モジュール・ローダによって実行される際に、非ポータブル・デバイスの不揮発性メモリから削除される。
【００２５】
図１は、この例ではポータブル・デバイスを構成するチップ・カード５に、コンパイル済みプログラムをロードするために実施される手段の一例を示す。コンピュータ１にはチップ・カード・リーダ２が備えられ、これにチップ・カード５が挿入される。コンピュータ１は、コンピュータ・ネットワーク４によって、例えば、サーバ３に接続される。コンパイル済みプログラム・モジュールは、サーバ３上で（例えば、Ｊａｖａでコンパイルされたプログラム用の．ｃｌａｓｓファイルのセットの形で）ホストされる。チップ・カード５には、ロードされたプログラムを実行するための仮想計算機が備えられる。
【００２６】
次に、Ｊａｖａでコンパイルされたプログラムとの特別な関連において本発明を詳細に説明するが、本発明は、．ＮＥＴ（登録商標）などの他の中間オブジェクト指向言語にコンパイルされたプログラムにも適用することができる。
【００２７】
図２は、チップ・カード５のメモリ６に格納されたデータを示し、モジュール７はローダ８によってロードされる。ローダ８は、例えば、チップ・カード５の読み取り専用メモリに格納されたアプリケーションである。ローダ８は、Ｃｌａｓｓ１という名前の、ロードされる第１のモジュールにアクセスする。ローダ８は、Ｃｌａｓｓ１のすべてまたは一部を作業メモリ６１内に配置する。
【００２８】
ローダは、．ｃｌａｓｓファイルが使用可能であるかどうかを確かめるために、予備チェックを実行する（動的にロードされるクラスの．ｃｌａｓｓファイルを、例えば、ＵＲＬアドレスに関連付けることができる）。ローダは、また、不揮発性メモリ内のＣｌａｓｓ１に関連付けられたデータ構造６１の有無もチェックする。実際、本発明のロード方法によれば、このデータ構造は他のモジュールをロードする間に事前に作成されている場合がある。Ｃｌａｓｓ１に関連付けられたデータ構造６２が存在しない場合、このデータ構造はカード５の不揮発性メモリ内に作成される。構造６２は、ロード状態マーカ６２１を備える。データ構造が作成される場合、マーカ６２１は「未ロード」状態に置かれる。図３に、様々なマーカ状態およびそれらを分けるステップを示す。
【００２９】
ローダ８が、データ構造６２が存在し、「未ロード」状態であることを確認すると、ローダは、Ｃｌａｓｓ１内に参照が見つかったすべての内部要素に関するリンクを解決する。次に、ローダは、プログラムまたはＣｌａｓｓ１モジュールの実行に必要でないパラメータ（例えば、行番号付けテーブル、ソース・ファイル、デバッグ情報など）を削除する。これによって、カードの不揮発性メモリ内に格納されたデータによって使用されるスペースが大幅に削減される。
【００３０】
１つのモジュールに１つのデータ構造のみを作成すること、およびこのモジュールの内部要素のすべてのデータをその関連付けられたデータ構造に含めることも可能である。有利なことに、データ構造は、ロードされるモジュール内で参照される各要素について不揮発性メモリ内に作成される。従って、データ構造は、特に、続くリンク編集または最適化を必要としなくなった参照済み要素の削除を可能にすることなどをより速くより簡単に処理することができる。
【００３１】
この例では、内部リンク解決は、仮想計算機により処理することができるデータ構造６３、６４、および６５の作成を示唆する。これらのデータ構造は、他のモジュールの前のロード時（以下で詳細に説明する外部リンク解決時）に作成されるか、またはローダ８によって、この内部リンク解決時に存在しないと判定される。データ構造６３および６４は、それぞれが内部フィールドとＣｌａｓｓ１に参照が現れるメソッドとを一覧表示するテーブルである。データ構造６５は、データ構造６３に一覧表示されたフィールドの記述子に対応する。この方法では、データ構造をそれぞれの内部要素または内部要素のそれぞれのリストに関連付けることができる。
【００３２】
データ構造は、それらに関係する要素が実際にロードされるように完成される。従って、上記ロードによって、実行に必要な要素のみをこれらのデータ構造に格納させることが可能であり、いくつかの他の要素から参照される要素の冗長が自動的に削除される。
【００３３】
このリンク解決が実行されると、マーカ６２１は「ロード済み」状態となる。このリンク解決ステップは、有利には、モジュールのデバッグを実行するために使用される。従って、このリンク編集ステップは、障害があると判明する可能性のある内部リンクを容易に特定できるようにする。
【００３４】
ロードに続いて、デバイスの不揮発性メモリ内で可能な最小のスペースを使用するために、ある程度のデータを削除することができる。特に、．ｃｌａｓｓファイル参照テーブルが、実行時ではなくモジュールのロード・プロセス時にのみ使用される多くのエントリを含むことに留意されたい。それ故、リンクの編集時に使用されるメタ情報を削除することができる。リンク編集が．ｃｌａｓｓファイル向けに実行された場合、ある種のメソッド記述子も削除することができる。例えば、内部リンク編集が実行された場合、モジュールの専用内部モジュールのテキスト記述を削除することが可能であり、この記述は、このリンクの編集にのみ有用であって、二度と使用されることはない。
【００３５】
さらに、ある種の（他のモジュールによって読み取られることが意図された）公開内部要素の記述も、他のモジュールがそれらを参照できるようにはならないであろうと予想された場合に、削除することができる。これは主に、ポータブル・デバイスをフリーズさせるために、今後のモジュールのロードがすべて禁止される場合にあてはまる。デバイスは主に、ローダ８を無効にすること、またはローダ８のコードが不揮発性メモリ内に格納されている場合はこれを削除することによって、フリーズさせることができる。
【００３６】
内部リンク解決ステップに続いて、ローダ８は、ロードされるＣｌａｓｓ１モジュール内で参照された外部要素に関するリンクの解決を実行する。それ故、Ｃｌａｓｓ１で参照された各外部モジュールについて、関連付けられたデータ構造の有無がチェックされる。これが存在しない場合、関連付けられたデータ構造が作成され、そのマーカは「未ロード」状態になる。この例では、Ｃｌａｓｓ１は外部モジュールＣｌａｓｓ２を指す。Ｃｌａｓｓ１のロード以前には、Ｃｌａｓｓ２に関するデータ構造は存在しないため、Ｃｌａｓｓ１に関する外部リンク解決のステップは、データ構造６６の作成を示唆する。
【００３７】
モジュール内のあらゆる要素についてデータ構造を作成しなければならない場合、ロードされるモジュール内の外部要素へのあらゆる参照を解決しなければならない。同様に、テストの結果、関連付けられたデータ構造がもはや存在しないと判定された場合、各外部要素についてデータ構造が作成される。
【００３８】
有利には、外部要素に関するリンクの解決時に、存在の有無のテストには、見つかったデータ構造と、現在ロードされるモジュール内のその参照との間の一致のテストが含まれる。この一致テストの結果が否定的であった場合、ロード失敗メッセージが生成される。この一致テストは、追加のデバッグ手段を供給する。
【００３９】
このように、モジュールのロードによって、できる限り早急に、ロードされる他のモジュールについてのデータ構造をポータブル・デバイスの不揮発性メモリ内に作成することができるようになる。さらに、マーカは、このロードが中断された可能性のある時点からロードを再開できるようにする。こうしたロードにより、関連付けられたモジュールが使用可能となる前に、あるモジュールのみをロードできるようにする。従って、本発明は、モジュールがロードされる際に、そのデータ構造を動的に修正できるようにする。
ロードされるモジュールのすべての外部参照のリンクが解決されると、そのデータ構造のマーカは、「リンク済み」状態になる。
【００４０】
次に、このリンク済みモジュールの静的データが初期設定される。次に、そのデータ構造のマーカは、「使用可能（ｒｅａｄｙ）」状態になる。次に、このモジュールは、ポータブル・デバイスの不揮発性メモリ内に置かれ、使用可能となる。ポータブル・デバイスに格納され、静的データを初期設定することが意図されたコードは、使用されるメモリ・スペースを低減するために、データ構造が「使用可能」状態になると削除される。データ構造のマーカが「使用可能」状態になると、デジタル・デバイス内のスペースを解放するために、作業メモリ内に配置されたモジュールの要素を削除することができる。
【００４１】
当業者であれば、コンパイル済みプログラムの連続モジュールの好適なロード・シーケンスを定義する方法がわかるであろう。具体的に言えば、ローダ８は、データ構造が作成された未ロードのモジュールを格納し、次にそれらを順次ロードすることができる。ローダ８は、実行依頼されたモジュールのみをロードすることもできる。
ロードされるモジュールが使用不能な場合、ローダは可用性について繰り返しチェックし、できる限り早急にこのモジュールを自動的にロードすることもできる。
【００４２】
不揮発性メモリのスペースが解放されることにより、．ｃｌａｓｓファイルのロードが可能な標準Ｊａｖａ仮想計算機をチップ・カードに格納することができる。次に、開発者は、同じプログラムをポータブル・デバイスおよびデスクトップ・コンピュータ向けに配布することができる。開発者は、自分の選択したライブラリ要素にもアクセスできるようになる。Ｊａｖａ  Ｃａｒｄプログラミングの場合とは異なり、開発者が事前にＥｘｐｏｒｔＦｉｌｅファイルを回復する必要はない。
【図面の簡単な説明】
【００４３】
【図１】チップ・カードにロードするために実施されるコンピュータ・システムの一例を示す図である。
【図２】ロード時にチップ・カードの不揮発性メモリに格納されたデータを示す図である。
【図３】ロード時に実行されるステップに関するデータ構造マーカの状態の展開を示す図である。
【図１】
2008502968.tif 000003
【図２】
2008502968.tif 000004
【図３】
2008502968.tif 000005
【国際調査報告】
2008502968.tif 000006
2008502968.tif 000007
2008502968.tif 000008
2008502968.tif 000009
2008502968.tif 000010
2008502968.tif 000011