JP2005519376A - 構造化ソフトウェアオブジェクトについての反復式シリアライゼーションプロシージャ - Google Patents

構造化ソフトウェアオブジェクトについての反復式シリアライゼーションプロシージャ Download PDF

Info

Publication number
JP2005519376A
JP2005519376A JP2003572003A JP2003572003A JP2005519376A JP 2005519376 A JP2005519376 A JP 2005519376A JP 2003572003 A JP2003572003 A JP 2003572003A JP 2003572003 A JP2003572003 A JP 2003572003A JP 2005519376 A JP2005519376 A JP 2005519376A
Authority
JP
Japan
Prior art keywords
data
structured
agent
procedure
embedded platform
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
JP2003572003A
Other languages
English (en)
Inventor
フオンボン,オリビエ
フレイシーネ,アンドレ
ラクルト,セルジユ
Original Assignee
アクサルト・エス・アー
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 アクサルト・エス・アー filed Critical アクサルト・エス・アー
Publication of JP2005519376A publication Critical patent/JP2005519376A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/355Personalisation of cards for use
    • G06Q20/3552Downloading or loading of personalisation data
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Accounting & Taxation (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本発明は、埋め込み式コンピュータステーションのリソースなどの単純な通信リソースを用いた直接的な転送を提供するような構造化ソフトウェアオブジェクトの生データストリームへの変換およびこの逆の変換のため、ならびに前記ソフトウェアオブジェクトのリセットまたはこれらに割り当てられたメモリ空間の再利用のための反復式プロシージャに関する。本プロシージャは、線形データシーケンスの形式で端末と情報を交換することが可能な少なくとも1つのプロセッサを含んだ埋め込み式プラットフォーム2または携帯オブジェクトによって使用することができる。本プロシージャは、一方では線形データシーケンス配置と、他方ではオブジェクト指向のソフトウェアオブジェクトを記述または表現している構造化配置との間で、ある方向または他の方向でデータセットを変換するためのステップを含む。

Description

本発明は、埋め込み式コンピュータステーションの機能などの単純な通信機能を用いた直接的な転送を提供するような構造化ソフトウェアオブジェクトの生データフローへの変換およびこの逆の変換のため、ならびに前記ソフトウェアオブジェクトのリセットまたはこれらに割り当てられたメモリ空間の再利用のための反復式プロシージャに関する。
高級言語で、特にJava(登録商標)などの構造化言語またはオブジェクト指向言語でプログラムされたアプリケーション内において、使用または処理されるデータの大部分は単純なバイトのシーケンスと比べてより複雑な精密構造を有するソフトウェアオブジェクトの形態で組織化されかつ格納されている。こうしたオブジェクトは、多数の変数またはデータのグループを、たとえばキャラクタ(「char」タイプ)または整数(「int」タイプ)などの単純なタイプの形態、あるいは基本オブジェクトタイプまたはプログラマによって定義されたタイプ、キャラクタストリング(「string」タイプ)、または上で定義されたタイプの1つまたは複数の次元を有する配列(「array」タイプ)の形態で含むことが可能である。このタイプの構造化オブジェクトは、したがって、様々なタイプをもつ様々なオブジェクト自体をグループ分けしているツリー構造によって定義または表現することができ、この種の構造の組織化をオブジェクト組成グラフ(object composition graph)と呼ぶことがある)。オブジェクトタイプは別のタイプの定義(一般に、「スーパータイプ」と呼ぶ)から「継承によって(by inheritance)」定義することが可能であり、またすべてのタイプを継承グラフと呼ぶツリー構造の形態で表現することが可能である。
この特定のケースによれば、コンピュータアプリケーションが取り扱うソフトウェアオブジェクトに対する転送、作成または削除を、これらの機能が常には可能でないか現実的でないようなハードウェアまたはソフトウェア環境において可能とすることが有用となり得る。
たとえば、多数のコンピュータアプリケーションは、あるコンピュータ端末および多分あるコンピュータネットワークとを一方とし、銀行、電話加入またはヘルスケア管理スマートカード、あるいはコンピュータ化された識別、マーキングまたはトール(toll)デバイスなどのデータ処理能力を有する携帯オブジェクトまたは埋め込み式プラットフォームをもう一方とするこれらの間に通信を組み込んでいる。
こうした携帯オブジェクトは、特に、記憶デバイスと関連付けされており、少なくとも1つのアプリケーションプログラムを含んでおり、かつ1つまたは複数の端末との通信のための機能を備えたプロセッサを組み込んでいる。これらの通信機能は、たとえば電気的接触、無線アンテナ、発光式またはその他の送信形態などの異なるタイプのテクノロジを用いた電子的データの送信に基づいており、これによって同じ携帯オブジェクトにおいて多数の異なるタイプの送信を組み合わせることが可能となる。大きさのため、またいくつかの場合では歴史的理由のために、通常利用される通信機能は、スマートカードについての標準ISO7816に対するAPDUプロトコルなどの単純なプロトコルによって動作している。これらのプロトコルのうちのいくつかは、単純なタイプのオブジェクトの転送することのみを(整数または単純なキャラクタの形式で)、オブジェクトに送信された、あるいはオブジェクトから応答として受信された制御パラメータとして、または端末の主導のみによって、あるいはこれら両者によって、提供している。ISO7816標準の場合では、APDUプロトコルは生データの形式のタイプをもたないオブジェクトの転送のみを、コンピュータ式携帯オブジェクトに制御パラメータとして送られるバイトとして、またはオブジェクトから応答として取得されるバイトとして、および端末の主導のみによって、可能としている。
これらの発展の目下の状態では、JavaCard(登録商標)などこれらの携帯データ処理オブジェクトのうちのいくつかは、内部機能を組み込んでおり、これによってプログラムされたアプリケーションエレメントを高級言語やJava(登録商標)などのオブジェクト指向言語において直接これらを活用すること、ならびに拡張方式で通信している集中式または分散式アプリケーションにこれらを組み込むことが可能となる。このタイプの埋め込み式プラットフォームの内部に配置されたアプリケーションと通信するためには、こうしたアプリケーションのプログラマは、構造化ソフトウェアオブジェクトの使用を回避しなければならず、またケースバイケースで、これらのオブジェクトのこの埋め込み式プラットフォームへの転送およびこの埋め込み式プラットフォームからの転送に関して直接的な処理を提供しなければならない。
このタイプの携帯オブジェクトのプロセッサ内で実行させることが可能なアプリケーションをプログラムする際に、このタイプの言語のパフォーマンスおよびフレキシビリティを最大限に活用するには、したがって、そのアプリケーションがそのオブジェクトの外部にある別のアプリケーションと容易に通信できると有用である。したがって、このコンテキストでは、そのアプリケーションが自らが処理するオブジェクトを、これらのオブジェクトに関する組織化や構造をまったく失わずに、前記外部のアプリケーションとやり取りできると有用である。
Java(登録商標)などのプログラミング言語では、構造化オブジェクトのシリアライゼーション(serialisation)/デシリアライゼーション(deserialisation)のために使用されるプロシージャは、実質的ななハードウェアおよびソフトウェアリソースに依拠する可能性がある。これらのプロシージャは特に構造化オブジェクトを1つのファイルに保存するため、あるいは2つの異なる作業用メモリフィールドで実行される2つのプログラムプロセス間で構造化オブジェクトを送信するために使用される。
これらのプロシージャでは、しかしながら、特にJavacard(登録商標)を含むある種の埋め込み式プラットフォームでは利用可能でないようなソフトウェアおよびハードウェアリソースが必要となる。たとえば、従来のJava(登録商標)プラットフォームにより使用される基本クラスは、1MBを超えるメモリ空間(Java(登録商標) Developpement Kit:9MB)を占有するが、標準Javacard(登録商標)スマートカードが有するのはわずか16KBの記憶容量のみである。
従来のシリアライゼーションプロシージャは従来のJava(登録商標)環境リソースを利用しており、またそのアルゴリズムは、利用およびコンピュータ管理式メンテナンスを容易にすることを目的として設計されている。このためこれらは、そのような制限されたパフォーマンスを有する埋め込み式プラットフォームへの転置(transposition)を行うには、記憶容量ならびにプロセッサのパワーおよび速さに関して、さらに一層のメモリを必要としかつ複雑過ぎることになる。
さらに、たとえばJava(登録商標)では、シリアライゼーションプロシージャは、各ハードウェアプラットフォーム上で実行されているJava(登録商標)仮想マシン(VM)内で実現されるジェネリックなオブジェクトタイプマネージャを使用している。
埋め込み式プラットフォームに対する適応で必要となる簡潔性のために、目下のバージョンのJavacard(登録商標)環境はタイプマネージャを組み込んでいない。したがって、標準Java(登録商標)構成で使用されるようなシリアライゼーションプロシージャでは、APDUフォーマットで受信したデータからの復元のために構造化オブジェクトの構造を表す情報に対するアクセスを有することがない。
さらに、従来のコンピュータ環境では、メモリ装置は、Java(登録商標)などのオブジェクト指向のプログラミング言語で実行されるシリアライゼーションプロシージャがその送信しようとする構造化オブジェクトのサイズと無関係であるようなものとなっている。送信しようとするオブジェクトは、送信側によって宛先によるその受信と無関係にシリアライズされており、受信されたオブジェクトは、宛先によってその送信側やその送信時点と無関係にデシリアライズすることができる。次いで、このプログラミング環境の外部にあるソフトウェア機構によって線形データストリームが送信側と宛先の間で送信されかつ管理される。これらのストリームは、したがって、大容量のバッファを介して送信することができ、またたとえば、TCP/IPなどのプロトコルなどの別のソフトウェアレイヤによって管理される。
埋め込み式プラットフォームの場合には、外部とのデータ交換を可能とするために使用されるソフトウェア機構は、送信されるデータの完全性(integrity)および一貫性(continuity)を保証するストリーム管理機能を提供していない。さらにまた、埋め込み式プラットフォームの適度なメモリリソースは、送信および変換の際に線形ストリームの保存、すなわち、大きなオブジェクトの保存が不可能ともなる。
したがって、本発明の目的の1つは、送信側と受信機の間の通信機能がオブジェクトを構成する構造の転送が可能ではいがしかし転送できるのはより単純な形態のデータだけである場合や、その埋め込み式プラットフォームのソフトウェアおよびハードウェアリソースが従来のシリアライゼーションプロシージャの使用を可能にできるほど十分にない場合において、埋め込み式プラットフォームを使用するアプリケーションのプログラマに対して、このタイプの携帯オブジェクト内に保存されるか又は実行されるソフトウェアエージェントまたはアプリケーションエレメントに、別のコンピュータステーションに配置された別のエージェントから構造化ソフトウェアオブジェクトの形式に組織化されたデータを受け取ることや該エージェントに該データを送信することを可能にする、自動化ソフトウェアツールへのアクセスを可能にする、プロシージャを提供することである。
この目的は、1つまたは複数の線形データシーケンスの形式で端末との情報の交換が可能な、少なくとも1つのプロセッサ、記憶設備、および通信機能を組み込んだ携帯オブジェクトを備えた、コンピュータステーションまたは埋め込み式プラットフォームによって使用されることが可能なデータ変換プロシージャであって、一方で線形データシーケンス配置と、他方でオブジェクト指向のプログラミング言語の基準に従って構造化または階層化された1つまたは複数のソフトウェアオブジェクトを記述または表現している構造化配置との間で、ある方向または他の方向への、データセット変換のステップを組み込むことを特徴とするデータ変換プロシージャによって達成される。
本発明の独自性の1つによれば、そのプロシージャは、
オブジェクト指向のプログラミング言語の基準に従って構造化または階層化された1つまたは複数のソフトウェアオブジェクトを組み込むか表現している、送信される第1のデータセットを、このオブジェクトを記述または表現している構造化配置からこの第1のデータセットを表現している線形データシーケンスに変換またはシリアライゼーションするステップと、
埋め込み式プラットフォームから、少なくとも1つのホストへ、すなわちある端末または該端末に接続されたコンピュータステーションへ、又は、このホストから埋め込み式プラットフォームへ、通信機能を用いてこの線形データシーケンスを送信するステップと、
この線形データシーケンスを、第1のデータセットを再生するまたは表現する1つまたは複数の構造化ソフトウェアオブジェクトに配置されたデータセットに送信後変換するまたはデシリアライゼーションするステップと
を含んでいる。
本発明の独自性の1つによれば、そのホスト端末は埋め込み式プラットフォームに対して送信機能と呼ばれるソフトウェアエージェントを用いて情報を送信し、前記情報は埋め込み式プラットフォーム内に保存された少なくとも1つの宛先ソフトウェアエージェントによってこれらのデータの処理を起動することが可能でありかつ少なくとも1つのアプリケーションの一部を形成している応答機能によって埋め込み式プラットフォーム内で受信され、このプロシージャは、
前記宛先ソフトウェアエージェントについての応答機能によって受信された、線形データシーケンスに配置されているデータセットを、宛先エージェントの代わりに通信エージェントによって受信するステップと、
オブジェクト指向のプログラミング言語の基準に従って構造化または階層化された少なくとも1つのソフトウェアオブジェクトにこのデータセットを変換するステップと、
この構造化ソフトウェアオブジェクトを宛先エージェントに送信し、前記オブジェクトに従い、前記宛先エージェントによって処理を起動するステップと
を組み込んでいる。
本発明の独自性の1つによれば、そのプロシージャは、
応答機能によってホスト送信機能から、少なくとも1つの送信パラメータの形式の少なくとも1つのデータ項目を受信し、このパラメータを埋め込み式プラットフォーム内で保存されるか又は実行される通信エージェントに送信するステップと、
応答エージェントによって送信された少なくとも1つの送信パラメータを、通信エージェントによって、線形データシーケンスに配置されたデータセットに変換または連結し、これらのデータを埋め込み式プラットフォーム内の入力ストリーム内に保存するステップと、
埋め込み式プラットフォーム内で保存されるか又は実行されるシリアライゼーションエージェントによって、この入力ストリーム内に保存されたデータの少なくとも一部を、少なくとも1つの構造化ソフトウェアオブジェクトを備えるまたは表すデータセットに変換またはデシリアライゼーションするステップと、
この構造化ソフトウェアオブジェクトまたはその参照を宛先エージェントによって受信するステップと、
を組み込んでいる。
本発明の独自性の1つによれば、そのプロシージャは、
構造化ソフトウェアオブジェクトまたはその表現を、埋め込み式プラットフォーム内で実行されるか又は保存されるアプリケーションの一部を形成するソフトウェアエージェントから、前記埋め込み式プラットフォーム内で実行されるか又は保存されるシリアライゼーションエージェントに送信するステップと、
前記構造化ソフトウェアオブジェクトの前記シリアライゼーションエージェントによって線形データシーケンスに配置されたデータセットに変換またはシリアライゼーションし、これらのデータを埋め込み式プラットフォーム内の出力ストリーム内に保存するステップと、
埋め込み式プラットフォーム内で保存されるか又は実行される通信エージェントによって、この出力ストリーム内に保存されたデータの少なくとも一部を応答機能による送信に適した応答パラメータの組に変換するステップと、
それ自体の主導でまたはホスト端末の送信機能に応答して、応答機能によって、これらの応答パラメータを埋め込み式プラットフォームからホスト端末に送信するステップと、
を組み込んでいる。
本発明の独自性の1つによれば、入力ストリームまたは出力ストリーム内に保存された線形データシーケンスは、タグと呼ばれる1つまたは複数のデータ項目を用いて構造化または階層化された1つまたは複数のソフトウェアオブジェクトを表しており、その各々が前記線形データシーケンスのデシリアライゼーションに関して実行される所与のアクションを表している1つまたは複数の所与の値を有している。
本発明の独自性の1つによれば、少なくとも1つのタグは、
線形データシーケンスによって表された構造化オブジェクトの構造に新たなエレメントを追加するアクションと、
ソースオブジェクトと呼ばれるエレメントまたはオブジェクトを、構造化オブジェクトを構成するエレメントのすべてまたは一部分の値のソースとして参照するアクションと、
後続の1つまたは複数のデータ項目が構造化オブジェクトを構成するエレメントのコンテンツを表していることを指示するアクションと、
構造化オブジェクトを構成するエレメントにについてのコンテンツが存在しないことを指示するアクションと、
のうちの1つを表すように定義されている。
本発明の独自性の1つによれば、そのシリアライゼーションエージェントは、ソースオブジェクトと呼ばれる構造化オブジェクトを1つの線形データセットに、シリアライゼーションプロシージャと呼ばれるプロシージャに従って、シリアライゼーションし、この構造化ソースオブジェクトの構造またはツリー構造を構成するエレメントと呼ばれる、オブジェクトのうちの少なくとも1つを、
シリアライゼーションエージェントによって、前記構造化オブジェクトの構造またはツリー構造を構成するカレントオブジェクトと呼ばれるエレメントのタイプを検出するステップと、
新たなエレメントの追加を指示しているタグを表すデータ項目、続いてカレントオブジェクトのタイプを表すデータ項目を、出力ストリーム内に保存するステップと、
出力ストリーム内に、カレントオブジェクトのタイプと関連付けされたタイプの、シリアライゼーションエージェントによって、該ストリーム内にすでに存在するエレメントに続けて保存するステップであって、
構造化オブジェクトのすべてまたは一部分の値を表しているデータ項目によるか、
あるオブジェクトに対する参照を、構造化オブジェクトのすべてまたは一部分の値のソースとして指示するタグを表しているデータ項目であって、前記タグの後には前記ソースオブジェクトを特定しているデータ項目が続いているようなデータ項目によるか、
のいずれかによっている保存ステップと、
によって処理する。
本発明の独自性の1つによれば、そのシリアライゼーションプロシージャは構造化オブジェクトを出力ストリームに変換し、各カレントオブジェクトのタイプを、プロシージャの連続した反復によって、その保存箇所がその保存の順序と逆の順序で読み取られるタイプスタックと呼ばれるメモリスタック内に保存される。
本発明の独自性の1つによれば、そのシリアライゼーションエージェントは、線形データセットを少なくとも1つの構造化された結果オブジェクトに、デシリアライゼーションプロシージャと呼ばれるプロシージャによってデシリアライズし、入力ストリーム内に保存されたデータ項目の各々を、
シリアライゼーションエージェントによって、直前に処理を受けたデータに続いて入力ストリーム内に保存された少なくとも1つのデータ項目を読み取るステップと、
このデータ項目を解析しかつこのデータ項目に対応するアクションを実施するステップと、
によって処理する。
本発明の目的の1つはさらに、埋め込み式プラットフォームの動作環境が構造化オブジェクトに関するタイプマネージャを組み込んでいない場合に、ホストと埋め込み式プラットフォームの間でのソフトウェアオブジェクトの転送を可能としている、このタイプの構造化オブジェクト転送プロシージャを提示することである。
この目的は、そのデシリアライゼーションプロシージャが、カレントオブジェクトと呼ばれるエレメントをロードすること、すなわち前記カレントオブジェクトのすべてまたは一部分に対して直接または間接的な値を割り当てることを含み、前記エレメントは構造化された結果オブジェクトの構造のすべてまたは一部を構成し、カレントオブジェクトのロードの終了によって、
タイプスタックと呼ばれるメモリ構造の次の箇所内に保存されたオブジェクトタイプを表すデータ項目を読み取り、かつこの箇所から前記データ項目を削除すること、
タイプスタックから読み取られたデータ項目によって表されるタイプを、新たなカレントオブジェクトのタイプとして保存すること、
を起動することを特徴とする上述したデータ変換プロシージャによって達成される。
本発明の独自性の1つによれば、デシリアライゼーションプロシージャによって作成された構造化オブジェクトは、タイプスタックが空であるときに、完了と見なされて、宛先であるソフトウェアエージェントまたはアプリケーションに送信される。
本発明の独自性の1つによれば、新たなエレメントを指示する、「NEW」タグと呼ばれるタグを表すデータ項目に対応するデシリアライゼーションオペレーションは、
入力ストリーム内で少なくとも1つの連続するデータ項目を読み取るステップと、
タイプスタックと呼ばれるメモリスタック内のこの連続するデータ項目によって表されるオブジェクトタイプを、このスタック内にすでに保存された可能性があるタイプに続いて保存するステップと、
を含む。
本発明の独自性の1つによれば、デシリアライゼーションプロシージャによって使用されるスタックのタイプは、LIFOタイプのスタック、すなわちその箇所が保存したときの順序と逆の順序で読み取られるスタックを備えている。
本発明の独自性の1つによれば、そのデシリアライゼーションプロシージャは、構造化された結果ソフトウェアオブジェクトの構造を構成しているエレメントを、新たなメモリ空間の割り当てまたは開放された割り当ての再使用によって作成するためのステップを有し、前記作成は、作成されるエレメントのタイプに対応するタイプマネージャエージェントによって実行される。
本発明の独自性の1つによれば、構造化された結果ソフトウェアオブジェクトの構造を構成しているエレメントを作成するステップは、このエレメントの作成を指示するデータ項目を読み取るステップと、前記エレメントについての第1のロードステップとの間に発生する。
本発明の独自性の1つによれば、単純データ項目と呼ばれるデータ項目、すなわちタグを表していないデータ項目に対応するアクションは、このデータ項目の値をカレントオブジェクトに割り当てられたメモリ空間内に保存するステップを含む。
本発明の独自性の1つによれば、デシリアライゼーションプロシージャの間に、構造化された結果オブジェクトの構造を構成している少なくとも1つのエレメントにオブジェクトインデックスが割り当てられ、前記オブジェクトインデックスは、前記エレメントを一意に特定しており、かつこのエレメントが別のオブジェクトまたはエレメントによって指定または参照されることを可能とさせている。
本発明の独自性の1つによれば、参照を指示している「REF」タグと呼ばれるタグを表すデータ項目に対応するアクションは、
入力ストリーム内の少なくとも1つの連続するデータ項目を読み取るステップと、
カレントオブジェクトに割り当てられたメモリ空間内に、カレントオブジェクトのすべてまたは一部分の値のソースとしてオブジェクトを指定するデータ項目を、すでに保存されているデータ項目に続いて保存するステップとを含み、前記ソースオブジェクトまたはエレメントは前記連続するデータ項目によって特定される。
本発明の独自性の1つによれば、カレントオブジェクトのロードは、前記オブジェクトに割り当てられたメモリ空間内に保存されたデータがタイプマネージャエージェントまたは埋め込み式プラットフォーム内に保存されたタイプに関するマネージャエージェントによってカードメモリから読み取られる所与の長さに対応したときに、終了したと見なされる。
本発明の独自性の1つによれば、埋め込み式プラットフォームによる所与の長さの線形データシーケンスのホストへの送信は、データ読み取りプロシージャと呼ばれる反復式プロシージャによって実行され、
すでに受信されたデータの長さを表している少なくとも1つの送信パラメータを含む通信コマンドをホストによって送信するステップと、
埋め込み式プラットフォームによって送信パラメータを受信し、送信される線形データシーケンスと比較するステップと、
そのホストによってすでに受信されたデータの直後に続く1つまたは複数のデータ項目を表している少なくとも1つのリターンパラメータの送信によって通信コマンドに応答するステップと、
この通信コマンドリターンパラメータをホストによって受信し、これが表しているデータをすでに受信されたデータに続いて保存するステップと、
の再帰的ステップを含む。
本発明の独自性の1つによれば、埋め込み式プラットフォームによる所与の長さの線形データシーケンスのホストからの受信は、データ書き込みプロシージャと呼ばれる反復式プロシージャに従って実行され、
すでに送信された送信される線形データシーケンスのうちの部分の直後に続く1つまたは複数のデータ項目を表している少なくとも第1の送信パラメータ、ならびに必要に応じて、送信されるシーケンス内での第1の送信パラメータによって表されるデータの位置、またはすでに送信されたデータの長さを表している第2の送信パラメータを備えた通信コマンドをホストによって送信するステップと、
埋め込み式プラットフォームによって通信コマンド送信パラメータを受信するステップと、
埋め込み式プラットフォームの入力ストリーム内に、すでに受信されたデータに続いて、第1の送信パラメータによって表されるデータを保存するステップと、
の再帰的ステップを含む。
本発明の独自性の1つによれば、そのデータ書き込みプロシージャはさらに、
埋め込み式プラットフォームによって第2の送信パラメータを比較し、すでに受信されたデータの長さと比較するステップと、
埋め込み式プラットフォームによって、すでに受信されたデータの長さ又はこの比較の結果を表すデータ項目のいずれか、あるいはこの両者を表す少なくとも1つの応答パラメータを戻すステップと、
を含む。
本発明の目的の1つはさらに、転送または一時記憶に関する通信機能の可能性、または無制限のサイズをもつソフトウェアオブジェクトに関連して十分なサイズをもつソフトウェアオブジェクトを転送することを可能にするようなタイプの構造化オブジェクト転送プロシージャを提示することである。
この目的は、シリアライゼーション、デシリアライゼーション、データ読み取りまたはデータ書き込みのプロシージャのうちの少なくとも2つが、これらのプロシージャの各々の少なくとも1つのステップの連続的実行を含むステップを反復することによって、並列にまたはインターリーブされることを特徴とする上述したデータ変換プロシージャによって達成される。
本発明の独自性の1つによれば、その入力ストリーム、出力ストリームあるいはこれらの両者は、その2つのストリームが同じ循環式構造を共有することが可能である、循環式メモリ構造の形式で保存されている。
本発明の独自性の1つによれば、その埋め込み式プラットフォームは、プログラマにより作成された少なくとも1つのアプリケーションを保存しかつ実行することが可能なプログラム可能環境を有し、その通信機能が標準ISO7816で定義されるAPDUフォーマットと互換性をもつ。
本発明の独自性の1つによれば、受信したオブジェクトについてのデシリアライゼーションおよび派生的処理のオペレーションは、構造化オブジェクトの受信を指示する少なくとも1つのデータ項目を含んだ少なくとも1つのAPDUフォーマットコマンドを受信することによって起動される。
本発明の独自性の1つによれば、その埋め込み式プラットフォームはJavaCard(登録商標)標準と互換性があるプログラム可能環境を有している。
本発明の独自性の1つによれば、ホストまたは埋め込み式プラットフォーム上で実行されるアプリケーションの少なくとも1つは、Java(登録商標)言語でプログラムされている。
本発明の独自性の1つによれば、そのプロシージャは、埋め込み式プラットフォーム内で保存されるか又は実行されるカードエージェントと呼ばれる少なくとも1つのソフトウェアエージェントと、AAA−MOMタイプのソフトウェアインフラストラクチャを用いて非同期のメッセージによって通信するコンピュータネットワークに属する少なくとも1つのホスト内で保存されるか又は実行されるカードエンジンプロキシエージェントと呼ばれる少なくとも1つのソフトウェアエージェントと、の間の通信のために使用されており、前記カードエンジンプロキシエージェントは前記ネットワーク内の別のエージェントとの通信においてカードエージェントについての媒介として動作し、前記エージェントは前記ソフトウェアインフラストラクチャの仕様に従って動作し且つ少なくとも1つの分散式アプリケーションに属する。
さらに、たとえばJavaCard(登録商標)などの埋め込み式タイプに関するある種の環境またはオペレーティングシステムには、使用しなくなった場合にこのタイプのソフトウェアオブジェクトを削除するため、あるいはその占有するメモリ空間を解放するために、リソースに関してコストがかかるようなプロシージャや、複雑なだけのプロシージャは存在させていない。したがってこの場合には、手作業による削除が必要となると共に、アプリケーションのプログラマによって直接的かつケースバイケースで提供されなければならない。
本発明の目的の1つはしたがって、埋め込み式プラットフォームを基本とするアプリケーションのプログラマに対して、携帯式であるか否かによらず、データ処理ステーション内のアプリケーションによって使用されるある種の構造化ソフトウェアオブジェクトのすべてまたは一部分によって占有されるメモリ空間の再利用を可能にさせるソフトウェアツールを提供できるようなプロシージャを提示することである。
さらに、非線形構造を有するたとえばツリー構造の形式をしたソフトウェアオブジェクトの単純な複製のためのソフトウェアツールを有すると有用となり得る。
本発明の目的の1つはしたがって、埋め込み式プラットフォームを基本とするアプリケーションのプログラマに対して、ソースオブジェクトと呼ばれる構造化ソフトウェアオブジェクトを、そのソースオブジェクトと同じ値を含むが保存の際に別のオブジェクトを構成している結果オブジェクトと呼ばれる別のオブジェクトに複製するためのソフトウェアツールを提供できるようなプロシージャを提示することである。
同様に、セキュリティの理由から、このタイプのソフトウェアオブジェクトによって占有されるメモリ空間が解放されたときには、このオブジェクトからの情報を前記空間から消去し、前記情報が別のオブジェクトによって読み取られたり、別のアプリケーションが同じメモリ空間を引き続き使用することを防止することが重要となり得る。この情報はしたがって、手作業で消去されなければならず、この機能の提供はアプリケーションのプログラマによって直接的かつケースバイケースで実施される。
本発明の目的の1つはしたがって、埋め込み式プラットフォームを基本とするアプリケーションのプログラマに対して、前記オブジェクトの削除または前記空間の再利用の際にこのタイプのソフトウェアオブジェクトによって使用されるメモリ空間内に包含された情報を消去または均一化させるためのソフトウェアツールを提供できるようなプロシージャを提示することである。
本発明はしたがって、そのデータ読み取り、データ書き込み、デシリアライゼーションおよびシリアライゼーションのプロシージャがホストまたは埋め込み式プラットフォーム内に保存された少なくとも1つのクラス内の実装を介して適用されており、前記実施は、
オブジェクトに対するシリアライゼーションプロシージャを利用し、続いてデータ書き込みプロシージャおよびデシリアライゼーションプロシージャによって、埋め込み式プラットフォームの少なくとも1つのエージェントに対する構造化オブジェクトの送信を実行しているオブジェクト書き込みコマンドと、
シリアライゼーションプロシージャを利用し、続いてデータ読み取りプロシージャおよびデシリアライゼーションプロシージャによって、埋め込み式プラットフォームの少なくとも1つのエージェントからの構造化オブジェクトの読み取りを実行しているオブジェクト読み取りコマンドと、
前記コンポーネントの構造の解析に続く、前記オブジェクトの各コンポーネントに割り当てられたメモリ空間の解放またはデアロケーションについての保存のステップを含む、シリアライゼーションプロシージャを利用することにより、埋め込み式プラットフォーム内に保存された構造化オブジェクトについてのデアロケーションコマンドと、
所与の線形データシーケンスから非実体的コンテンツを有するオブジェクトを作成するために、デシリアライゼーションプロシージャを利用して、構造化オブジェクトによって解放されたメモリ空間についてのハウスキーピングまたは消去コマンドと、
このオブジェクトを表す線形データシーケンスを作成するために、前記ソースオブジェクトをデアロケーションすることなく、シリアライゼーションプロシージャを利用し、続いて、そのコンテンツがソースオブジェクトのコンテンツと同一であるような別の構造化オブジェクトを作成するために、この線形データシーケンスからのデシリアライゼーションプロシージャを利用することにより、構造化ソースオブジェクトについての複製コマンドと、
のうちの少なくとも1つコマンドを含むことを特徴とする上述のようなプロシージャを提示する。
本発明の独自性の1つによれば、その埋め込み式プラットフォームに関するプログラミング言語は、APDUメッセージを受信するとアプリケーション内でユーザ定義することが可能なプロセスを起動するProcessAPDU抽象メソッドを記述している第1のクラス(IOApplet)を含み、そのプログラムコードは、第1のクラス(IOApplet)を継承する第2のクラス(ObjectIOApplet)内で、このProcessAPDU抽象メソッドを実装として、埋め込み式プラットフォーム内に保存されている埋め込み式プラットフォーム内のデシリアライゼーションオペレーションを実行しており、前記プログラムコードはProcessObjectメソッドを用いており、それはこの同じ実施クラス(ObjectIOApplet)内の1つの抽象メソッドとして記述される。
本発明の独自性の1つによれば、その埋め込み式プラットフォームに関するプログラミング言語は、APDUフォーマットのメッセージをホストに送信するSendAPDUメソッドを記述している第1のクラス(IOApplet)を含んでおり、このプログラムコードは、第1のクラス(IOApplet)を継承する第2のカードクラス(ObjectIOApplet)内で、SendAPDUメソッドを用いて少なくとも1つのSendObjectメソッドを実装するために、保存されている埋め込み式プラットフォーム内でシリアライゼーションオペレーションを実行する。
本発明の別の目的は、携帯オブジェクトおよび上述したタイプのソフトウェアツールを含んだコンピュータシステムを提示することである。
この目的は、埋め込み式プラットフォームと呼ばれるコンピュータステーションを備えており、1つまたは複数の線形データシーケンスの形式で端末との情報の交換が可能な、少なくとも1つのプロセッサ、記憶設備および通信機能を含む携帯オブジェクト備えるコンピュータシステムであって、このプラットフォームは、一方で線形データシーケンス配置と、他方でオブジェクト指向のプログラミング言語の基準に従って構造化または階層化された1つまたは複数のソフトウェアオブジェクトを記述または表現している構造化配置との間で、ある方向または他の方向へのデータセットの変換ステップを実行することが可能なシリアライゼーションエージェントを組み込んでいることを特徴とするコンピュータシステムを用いて達成される。
本発明の独自性の1つによれば、その埋め込み式プラットフォームは、
埋め込み式プラットフォーム内に保存された宛先ソフトウェアエージェントについての応答機能によって受信された、1つまたは複数の線形データシーケンスに配置されたデータセットを宛先エージェントの代わりに受信し、
このデータセットを、オブジェクト指向のプログラミング言語の基準に従って構造化または階層化された、少なくとも1つのソフトウェアオブジェクトに変換し、
この構造化ソフトウェアオブジェクトを宛先エージェントに送信し、このオブジェクトに従って宛先エージェントによる処理を起動する、
ことを行うことが可能な通信エージェントを含んでいる。
本発明の独自性の1つによれば、構造化ソフトウェアオブジェクトを表す線形データシーケンスは、入力または出力ストリームで埋め込み式プラットフォーム内に保存されており、前記埋め込み式プラットフォームは、入力フローによって表される1つまたは複数の構造化オブジェクトを埋め込み式プラットフォーム内で作成すること、すなわち前記構造化オブジェクトをデシリアライゼーションすること、あるいは送信される1つまたは複数の構造化オブジェクトを表すデータを出力ストリームに書き込むこと、すなわち前記構造化オブジェクトをシリアライゼーションすることが可能な、シリアライゼーションエージェントと呼ばれるソフトウェアエージェントを組み込んでいる。
本発明の独自性の1つによれば、その入力または出力ストリームは、1つまたは複数の循環式メモリ構造の形式で保存されている。
本発明の独自性の1つによれば、そのシリアライゼーションエージェントは、タイプスタックと呼ばれるメモリスタックを使用して、シリアライズまたはデシリアライズされる構造化オブジェクトの構造のすべてまたは一部を構成している少なくとも1つのオブジェクトのタイプを保存しており、前記タイプスタックは、最も間近にロードされたメモリ位置が読み取られかつ消去された後にのみアクセスすることが可能な多数のメモリ位置を有している。
本発明の独自性の1つによれば、入力または出力ストリーム内に含まれるデータは、その各々が線形データシーケンスをデシリアライゼーションした際に実行される所与のアクションを表しているタグの組を備える符号システムを用いて1つまたは複数の構造化オブジェクトを表す。
本発明の独自性の1つによれば、少なくとも1つのタグは、
線形データシーケンスによって表された構造化オブジェクト構造に新たなエレメントを追加するアクションと、
構造化オブジェクトを構成するエレメントのすべてまたは一部分の値のソースとして、ソースオブジェクトと呼ばれるエレメントまたはオブジェクトを参照するアクションと、
後続の1つまたは複数のデータ項目が構造化オブジェクトを構成するエレメントのコンテンツを表していることを指示するアクションと、
構造化オブジェクトを構成するエレメントについてのコンテンツが存在しないことを指示するアクションと、
のうちの1つを表すように定義される。
本発明の独自性の1つによれば、その埋め込み式プラットフォームは、標準ISO7816に従いかつAPDUフォーマットコマンドを用いて動作する携帯オブジェクトを備える。
本発明の独自性の1つによれば、埋め込み式プラットフォーム内に保存された少なくとも1つのエージェントまたはアプリケーションは、Java(登録商標)言語でプログラムされており、前記埋め込み式プラットフォームはJavaCard(登録商標)標準に従ったコンピュータ環境を有する。
本発明の独自性の1つによれば、そのシステムは、ホスト内、埋め込み式プラットフォーム内、あるいはこの両者内に、
ホスト内においてこの構造化オブジェクトをデータストリームにシリアライゼーションさせ、続いてこのデータストリームを埋め込み式プラットフォームに送信し、埋め込み式プラットフォーム内において前記データストリームを構造化オブジェクトにデシリアライゼーションすることによって、カードの少なくとも1つのエージェントへ構造化オブジェクトを送信する、オブジェクト書き込みコマンドと、
埋め込み式プラットフォーム内においてこの構造化オブジェクトをデータストリームにシリアライゼーションし、続いて埋め込み式プラットフォームからこのデータストリームを受信し、ホスト内において前記データストリームを構造化オブジェクトにデシリアライゼーションすることによって、カードの少なくとも1つのエージェントから構造化オブジェクトを読み取る、オブジェクト読み取りコマンドと、
前記コンポーネントの構造の解析後に、このオブジェクトの各コンポーネントに割り当てられたメモリ空間の解放またはデアロケーションを含むオプションに従って前記オブジェクトをシリアライゼーションすることにより、埋め込み式プラットフォーム内に保存された構造化オブジェクトについてのデアロケーションコマンドと、
非実体的コンテンツによってオブジェクトを作成するために、所与の線形データシーケンスをデシリアライゼーションすることにより、埋め込み式プラットフォーム内の構造化オブジェクトによって解放されたメモリ空間についてのハウスキーピングまたは消去コマンドと、
ソースオブジェクトのデアロケーションなしに同じオブジェクトを表している線形データシーケンスにシリアライゼーションし、続いてそのコンテンツがソースオブジェクトのコンテンツと同一であるような別の構造化オブジェクトにこの線形データシーケンスからデシリアライゼーションすることによって、埋め込み式プラットフォーム内においてソースオブジェクトと呼ばれる構造化オブジェクトを複製するコマンドと、
のうちの少なくとも1つを実装している少なくとも1つのソフトウェアクラスを組み込む。
本発明の独自性の1つによれば、その埋め込み式プラットフォームは、AAA−MOMタイプソフトウェアインフラストラクチャに従って非同期のメッセージによって通信しているコンピュータネットワークに属するホストと少なくとも通信しており、前記ホストは前記埋め込み式プラットフォームと前記ネットワークの別のエージェントの間の通信を管理することが可能な、カードエンジンプロキシエージェントと呼ばれる、ソフトウェアエージェントを組み込んでおり、前記エージェントは、このソフトウェアインフラストラクチャの仕様に従って動作し、少なくとも1つの分散式アプリケーションに属する。
本発明、ならびにその特徴および利点は、添付の図面を参照しながら以下の説明を読むことによってより明瞭に理解されよう。
ある文献(たとえば、「Java(登録商標) embarque」−Eyrolles−Paris 1999)では、「埋め込み式コンピュータ(embedded computer)」という語は、それ自体は目に見えないコンピュータが、別の機能を有するある1つの装置内に組み込まれているものと指定するために使用している。フランス語の用語「ordinateur embarque」は英語の「embedded computer」の近似的翻訳である。
この特徴、すなわち別のデバイス内にある特定の機能を設けていることは、こうした埋め込み式コンピュータが多くの場合に限られたハードウェアまたはソフトウェアリソースだのみを有し、また多くの場合基本的なオペレーティングシステムやソフトウェア環境を利用しているということを十分に説明する。増強も予測可能であるが、このタイプのコンピュータのリソースは典型的には、8ビットまたは16ビットのプロセッサでは、512kbからこれよりさらに小さい値のオーダーの静的記憶装置であることがあり得る。スマートカードの場合には、利用可能なRAM容量は4kbのオーダーとすることがあり、また最も強力なモデルでは目下のところ最大で32kbとすることがあり得る。
一般的なITコンテキストにおいて、「プラットフォーム(platform)」という語は、少なくとも1つのプロセッサおよび記憶設備を組み込んでいるデータ処理デバイスを意味している。上の定義を拡張することによって、ならびにこのコンテキストでの記述を目的として、「埋め込み式プラットフォーム(embedded platform)」という語は、このタイプのプラットフォームを組み込んだ携帯オブジェクトを示すために用いており、前記オブジェクトは、純粋に携帯性すなわちサイズが小さく、または非常に限られた処理能力または記憶能力を有している。
以下の記載は、様々なエージェントと、その関連するアプリケーションとの間で所与のタスクおよびオペレーション分散を備えたバージョンの本発明によるプロシージャについて説明している。コンピュータアプリケーションがフレキシブルな組織化は、当然、この分散は、特に様々なエージェントとその指定対象の間の違いがこれらの主たる動作上の特徴にまったく影響を与えない抽象的概念である場合に、様々に提示されることがあり得る。したがって、本発明によるプロシージャは、特に各タスクまたはエージェントに関して別の方式で提示された多様な変形形態を結合することによって、本発明の基本的な趣旨を逸脱することなく本明細書に記載していない別のバージョンで実行されることもあり得ることは明白である。同様に、同じ場所内に同時に保存されたエージェントやアプリケーションの間でのタスクの抽象分散も、本発明の基本的な趣旨を逸脱することなく本明細書に記載していない多様な変形バージョンに結合することができる。
以下の記述では、本発明によるプロシージャを、主としてJava(登録商標)言語でプログラムされたアプリケーションを実行しているデータ処理ステーションを備えた端末と通信する、JavaCard(登録商標)タイプのシステム環境を用いたスマートカードを備える埋め込み式プラットフォームの場合について例証している。
しかし、本発明によるプロシージャは、そのデータ送信機能がプログラマに対してトランスペアレントなモードで構造化されたソフトウェアオブジェクトを送信することを提供しないような別の環境にも適用することができることは明白である。別のプログラミング環境、たとえば「Windows for Smart Cards(登録商標)」を用いる、あるいは別のプログラミング言語、たとえばVisual Basic(登録商標)を用いてプログラムすることが可能な、標準ISO7816に対するスマートカードも対象とすることができる。これはさらに、その通信機能に関して同様の制限を含む別の標準に従うスマートカードやこのタイプのプラットフォームを用いる携帯オブジェクトまたは端末にも適用される。
このプロシージャはさらに、携帯用であるか否かによらず、たとえば自動車用電子部品、識別マーカ、携帯電話あるいは携帯収集端末などの埋め込み式データ処理ステーションを組み込んでいる任意の携帯オブジェクトにも適用することができる。
同様に、本発明によるプロシージャは、主として端末またはホストと呼ばれるデータ処理ステーションと通信している埋め込み式プラットフォームの利用を含むものとして示される。必然的にこのプロシージャはさらに、その端末が、本発明の基本的な趣旨を逸脱することなく、任意のタイプのコンピュータネットワークの一部を形成するステーションである場合にも使用することができる。したがって、この端末によって実行されるものとして提示した様々な機能は、多数の異なるデバイス間に分散させることが可能であり、またこの分散は時間的に変動させることができる。必然的に、記載したプロシージャはさらに、ここでも本発明の基本的な趣旨を逸脱することなく、埋め込み式プラットフォームが1つまたは複数の別の埋め込み式プラットフォームと直接的または間接的に通信する場合にも記述することができる。一般的的に言えば、ホストまたはホスト端末はしたがって、埋め込み式プラットフォームと通信するアプリケーションまたはステーションとして定義されることになる。
本発明によるプロシージャは特に、スマートカード、たとえば、JavaCard(登録商標)標準に適合するものと、AAA−MOMタイプのソフトウェアインフラストラクチャに従って非同期のメッセージによって通信している、たとえばJava(登録商標)でプログラムされたコンピュータネットワークとの間の通信に適用することができる。この場合では、カードとネットワークの残りの部分との間での通信は、典型的には、カード内に保存されたカードエージェントと呼ばれるソフトウェアエージェントの各々に関する媒介の役割をするカードエージェントプロキシエージェントと呼ばれるソフトウェアエージェントによって管理されている。カード環境では、これらのカードエージェントは、カードエンジンエージェントと呼ばれるソフトウェアエージェントによって、管理される、または調整される、もしくは管理されかつ調整される。
次いで、本発明によるプロシージャは、このカードエンジンエージェントに対して、カードエンジンプロキシエージェントと通信しJava(登録商標)言語またはAAAインフラストラクチャ標準に従った構造化ソフトウェアオブジェクトの交換を可能にしている。構造化オブジェクトを外部と交換できることは、このカードはAAAインフラストラクチャとの向上された互換性の達成を可能とし、かつそのネットワークの別のAAAエージェントによってAAAタイプエージェントそのものと見なされることを可能とする。
本発明によるプロシージャはさらに、スマートカード、たとえば、JavaCard(登録商標)標準に適合するものと、たとえばJava(登録商標)でプログラムされたコンピュータネットワークと、の間の通信に適用することができ、オブジェクト指向のRPC(遠隔手続き呼出し)プロトコルによって、たとえばJava(登録商標)RMI(遠隔メソッド呼出し)やCORBA(登録商標)タイプのソフトウェアインフラストラクチャを用いて通信している。
あるアプリケーションが端末からスマートカードを含む埋め込み式プラットフォームへソフトウェアオブジェクトの転送を必要とする場合、転送はしばしばマスタ/スレーブタイプの通信の形態を取る。これは、その端末が埋め込み式プラットフォームへの送信機能を実行する主導権をとることを意味している。通信するために、この機能は通信コマンドを送信パラメータを付属させてプラットフォームに送信する。次いでこのコマンドは、プラットフォーム内の1つまたは複数の処理オペレーションを起動し、さらにこのプラットフォームからのリターンパラメータまたは応答パラメータを受信することができる。
標準ISO7816に従って動作するスマートカードの場合、このコマンドのパラメータは、以下のように組織化されたデータシーケンスを備えるAPDU(アプリケーションプロトコルデータユニット)タイプのフォーマットで送信される。
コマンドで送られる送信パラメータ:
Figure 2005519376
CLA:宛先のクラス又はアプリケーションを指定する1バイト、
INS:実行される命令を指定する1バイト、
P1,P2:APDUコマンドに関する情報を提供する2バイト、
Lc:送信されるデータの長さ、
Data:送信されるデータ、
Le:待ちになっているリターンデータの長さ。
カードによって戻される応答パラメータ:
Figure 2005519376
Data:応答データ、
SW1,SW2:カードによって送信されるチェックメッセージ又はコードを構成する2バイト。
このAPDUフォーマットは、線形データシーケンス、すなわち単純なバイトストリング以外の別の任意の形式でのデータの送信や受信を提供していないことが理解されよう。アプリケーションがある言語でプログラムされているとき、あるいはそのシステムがAPDU通信コマンド以外の別のコマンドを有していない埋め込み式プラットフォームの場合には、より完全に構造化されたオブジェクトを転送したいと希望するプログラマはしたがって、この目的のための単純なソフトウェアツールを有さないことになる。この際、プログラマはこのタイプの構造化オブジェクトをバイトストリングに変換するためにアプリケーションを準備し、次いでストリングを送信するためにAPDUコマンドを用い、かつ最終的に前記オブジェクトを反対の方向に再変換せざるを得ない。このことは、前記オブジェクトに関する手作業によるシリアライゼーション、送信およびデシリアライゼーションに対応し、換言するとこれらのオペレーションを最も精細にプログラミングすることに対応する。
JavaCard(登録商標)標準の埋め込み式プラットフォームを使用してアプリケーションを開発するためにプログラマがJava(登録商標)言語を使用する場合には、JavaCard(登録商標)で利用可能なツールによって、以下のJavaCard(登録商標)コマンド:
「process(APDU)」コマンド:そのカードはAPDUフォーマットでデータを受信し、これらのデータ内で指定される宛先ソフトウェアエージェントまたは「applet」によって、これらが含む送信パラメータの処理を起動する;
「sendAPDU()」コマンドまたは「APDU.sendbytes()」コマンド:直前に起動されたプロセスの前、または該プロセスの間に、そのカードはAPDUフォーマットをしておりかつリターンパラメータを含んでいる別のデータをホストに戻す;
を用いて線形データ送信がAPDUフォーマットで提供される。
「sendAPDU()」コマンドは、生データを含んだ非タイプ分けオブジェクトに適用可能なメソッドの形式で「IOApplet」クラスのJavaCard(登録商標)環境内で実装される。
一方、「Process(APDU)」コマンドは、1つの抽象メソッドの形式でJavaCard(登録商標)環境内の「IOApplet」クラス内で宣言される。このことは、そのメソッドがJavacard(登録商標)環境内に存在することを意味するだけではなく、さらにこのメソッドを実装するコードをこのコマンドを使用することが望ましいアプリケーションのプログラマが記述しなければならないことも意味している。たとえば、プログラマは、そのアプリケーション内で「IOApplet」クラスに関する継承サブクラスを作成し、次いで1つのメソッドを含んだこのサブクラスが、この「Process(APDU)」メソッドによって実行させようとするプロセスのコードを受け取っている。JavaCard(登録商標)環境は、メッセージを受け取ったときに「Process(APDU)」メソッドを単にコールし、次いでプログラマが追加的コード内に含めておいたプロセスを起動するに過ぎない。
このコンテキストにおいてプログラマに対して構造化ソフトウェアオブジェクトを直接送信するためのツールを提供するために、本発明によるプロシージャは、同様のコマンドであるが、Java(登録商標)言語の特定のオブジェクト指向の特性に従って構造化ソフトウェアオブジェクトを直接的に受け容れるようなコマンドを提供している。次いで、これらのコマンドをJavaCard(登録商標)環境内で使用することができ、またこれらのコマンドは、たとえば「process(Object)」や「sendObject()」タイプとすることができる。
プログラマ、本明細書では、ユーザと呼ぶこともある、が、APDUコマンドのシンタックスに関与する必要なしにこれらのコマンドを直接利用できるようにするために、本発明によるプロシージャは、アプリケーションまたは送信側エージェントと宛先エージェントとの間でのオブジェクトおよびデータに関するシリアライゼーション、送信およびデシリアライゼーションのオペレーションを引き継いでいる。
JavaCard(登録商標)環境の場合、これらのオペレーションは、たとえば「ObjectIOApplet」という名称の「IOApplet」クラスの1つのサブクラスに属する「Process(APDU)」メソッド内に包含されたプログラムコードを実行することによって実施することができる。次いで、APDUメッセージを受け取り、それ自身が変換オペレーションおよび別の「Process(Object)」抽象メソッドに対するコールを含んでいる場合、このコードがその環境によって自動的に起動される。このタイプの本発明の1バージョンでは、そのプログラマは単に構造化オブジェクトを受け取ったときに、カードによって実行させるオペレーションのコードを記述することが必要なだけである。次いで、プログラマは、「Process(Object)」抽象メソッドを実施するためにこのコードを「ObjectIOApplet」クラスの継承サブクラス内に書き込む。
以下のパラグラフでは、カード側において実行される変換、シリアライゼーションおよびデシリアライゼーションのオペレーションだけを記載している。必然的に、記載したプロシージャがホスト側における同じオペレーションを実行するために使用できることは明らかである。ホスト端末のハードウェアおよびソフトウェアのリソースは、カード上で利用可能なリソースと比べて実質的により大きいのが通常であるが、これらのオペレーションは、本発明の基本的な趣旨を逸脱することなく、ホスト側において別にプログラムされたり組織化されたりすることも可能である。
図1に表した本発明の1バージョンでは、ホスト端末(1)は、たとえばJavacard(登録商標)標準のスマートカード(2)などの埋め込み式プラットフォームと通信する。ホスト(1)は少なくとも1つのソフトウェアエージェント(111)を備えた少なくとも1つのアプリケーション(11)を実行すると共に、たとえば接続箇所(100)を含む通信リソースに関係するAPDUフォーマット通信機能(101)によってカード(2)と通信している。この接続箇所は、たとえば、電気的接触、マイクロ波リンク、IRリンクまたは磁気トラック、あるいはこれらのタイプの2つ以上からなる組合せによる接続手段を組み込んでいる。
カード(2)は、少なくとも1つのソフトウェアエージェント(221)を含んだアプリケーション(22)を実行すると共に、JavaCard(登録商標)システム環境の一部を形成する応答機能(201)を用いてホスト(1)と通信している。この目的のために、前記応答機能(201)は、ホスト端末(1)の通信リソース(100)と互換性があるタイプの通信リソース(200)を使用している。
ホストアプリケーション(11)のエージェント(111)が、カードエージェント(221)へのデータの送信、これに対してプロセス(2210)を実行させる命令、またはカードの記憶装置内に配置された情報の要求を希望している場合、このエージェントは、構造化ソフトウェアオブジェクト(31)をカードに送信するためのプロシージャを起動する、たとえば「WriteObject()」で指定されるオブジェクト書き込み命令を実行する。次いで、前記ソフトウェアオブジェクト(31)は、ホスト変換エージェント(12)によってシリアライズされる、すなわちAPDUフォーマットデータセットに変換される。次いで、このホスト変換エージェントは、通信機能(101)を用いてホスト接続箇所(100)およびカード通信リソース(200)を介してこれらのデータをカード(2)に送信する。
カード内において通信リソース(200)を管理する応答機能(201)による受信があると、この応答機能は前記データをカード変換エージェント(21)に送信する。前記カード変換エージェント(21)は、このデータをデシリアライズし、ソフトウェアオブジェクト(34)の形式をしたこれらの元の構造を取り戻すためにこれらを反対方向に変換する。次いで、前記構造化ソフトウェアオブジェクト(34)は、その受信したデータに対応したプロセス(2210)を実行する、たとえば「Process(Object)」と指定されるオブジェクト処理命令を用いて宛先エージェント(22)に送信される。
カード(2)内のアプリケーション(22)のエージェント(221)がホスト(1)のエージェント(111)に、データまたは実行されたプロセスに関する情報を送信したいとき、該エージェントは構造化ソフトウェアオブジェクト(41)をホストに送信するためのプロシージャを起動させる、たとえば「SendObject()」で指定されるオブジェクト送信命令を実行する。次いで、前記ソフトウェアオブジェクト(41)は、たとえばカード変換エージェント(21)によって、APDUフォーマットのデータセットにシリアライズされる、すなわち変換される。次いで、このカード変換エージェントは、応答機能(201)を使用し、カード通信リソース(200)およびホスト接続箇所(100)を介してこれらのデータをカード(2)に送信する。
接続箇所(100)を管理するホスト通信機能(101)による受信があったときには、前記通信機能はそのデータをホスト変換エージェント(12)に送信する。前記ホスト変換エージェント(12)はこのデータをデシリアライズし、ソフトウェアオブジェクト(44)の形式をしたこれらの元の構造を取り戻すためにこれらを反対方向に変換する。次いで、前記構造化ソフトウェアオブジェクト(44)は、受信したデータを読み取るための、たとえば「ReadObject()」と指定されるオブジェクト読み取り命令によって、宛先エージェント(11)に送信される。
図2は、ホストおよびカード変換エージェント(それぞれ、12と21)によって実行されるシリアライゼーション/デシリアライゼーションおよび送信のオペレーションが異なる2つのエージェント(それぞれ、121、122と211、212)によって実行されている本発明の1バージョンを表している。
したがって、カード変換エージェント(21)は、通信エージェント(211)とシリアライゼーションエージェント(212)とを含んでいる。通信エージェント(211)は、バイト変換オペレーションを管理し、応答機能(201)とで送信パラメータ(32)および応答パラメータ(43)の形式をしたデータを交換している。データの受信では、前記通信エージェント(211)は、その受信したデータが完全であるかどうかを確認し、そして、入力ストリーム(33)内に格納された線形データシーケンス内の送信パラメータ(32)を連結させる。データの送信では、前記通信エージェント(211)は出力フロー(42)内の線形データシーケンスを読み取り、そして、応答パラメータ(43)が応答機能(201)の送信能力と適合するような分散が得られるようにこれらのデータを分離している。
シリアライゼーションエージェント(212)は、オブジェクトレベル変換オペレーションを管理し、シリアライゼーション/デシリアライゼーションそれ自体を実行している。データの送信およびそのためのシリアライゼーションでは、シリアライゼーションエージェント(212)が送信しようとする構造化ソフトウェアオブジェクト(41)の構造およびコンテンツを解析し、そして、このオブジェクトを出力ストリーム(42)内に格納された線形データシーケンスの形式でコード化している。データの受信およびそのためのデシリアライゼーションについては、シリアライゼーションエージェント(212)は入力ストリーム(33)内の線形データシーケンスを読み取っている。シリアライゼーションエージェント(212)は次いで、このストリーム内のデータを解析し、そして、これらが表している構造化ソフトウェアオブジェクト(34)を復元している。
図3は、そのカードが本発明によるプロシージャについての宛先ステータスを有することが可能な多数のエージェント(221、222、223、231)を備えることができ、これらのエージェントは1つまたは複数のアプリケーション(22、23)間で分散されている可能性がある、本発明の1バージョンを表している。カード(2)とホスト(1)の間でのデータの交換のすべてを取り扱えるようにするため、本発明によるプロシージャは、インターフェースエージェント(210)を含んでおり、これを介して構造化されたデータのすべてがカード(2)とホスト(1)の間で交換される。
本発明のこのバージョンでは、アプリケーション(22)や宛先エージェント(221)に代わって、インターフェースエージェント(210)が前記宛先と無関係に、カードに対して送信されたすべてのデータを受信している。次いで、前記インターフェースエージェント(210)は、送信パラメータ(32)に対する通信エージェント(211)による連結、さらに続いて上述のような得られたデータ(33)に関するシリアライゼーションエージェント(212)によるデシリアライゼーションを指令する。これらのデータが構造化ソフトウェアオブジェクト(34)として復元されると、同じインターフェースエージェント(210)は、その受信の際にデータ(32)の宛先であったソフトウェアエージェント(221)に前記構造化オブジェクト(34)を送信する。別のバージョン(図示せず)では、インターフェースエージェント(210)によって受信されるデータ(32)は、宛先エージェント(221)の識別情報を含んでいるか、あるいはこれらが送信される前にインターフェースエージェント(210)によって前記データ(32)に対応する情報が追加される。次いで、デシリアライゼーションによって得られる構造化オブジェクト(34)は、デシリアライゼーションエージェント(212)または分散エージェント(図示せず)によって直接アドレス指定される。
同じように、インターフェースエージェント(210)は送信側アプリケーション(22)または送信側エージェント(221)によってホストに送信されたすべてのデータ(41)を受信する。次いで、前記インターフェースエージェント(210)は、シリアライゼーションエージェント(212)による、これらのデータの出力ストリーム(42)へのシリアライゼーション、ならびに上述のような通信エージェント(211)による前記出力ストリーム(42)の連結を指令している。次いで、得られたデータは、応答パラメータ(43)の形式で、応答機能(201)によって通信リソース(200、100)を介して端末(1)に送られる。
本発明の別のバージョン(図示せず)では、送信および変換チェーン(201、211、212、221)にインターフェースエージェント(210)が挿入されている。カードにおける受信(ホスト書き込みコマンド)については、インターフェースエージェント(210)は、受信されたデータまたはオブジェクトを、受信したデータ内に含まれている情報に従って、カード内の宛先(221、222、223、231)に導いている。カードからの送信(ホスト読み取りコマンド)については、インターフェースエージェント(210)はさらに、送信しようとするデータまたはオブジェクトを受信し、これらの送信側(221、222、223、231)を表している情報を前記データまたはオブジェクトに割り当てるためにも含めることができる。
これがその端末自体であるのか、この端末を管理することが可能な何らかのソフトウェアエージェントであるのかによらず、ホスト(1)と、カード上に存在するエージェントまたはアプリケーションとの間での情報の交換は、したがって、異なる2つのレベル、すなわちバイトレベルとオブジェクトレベルにおいて実行されるものと考えることができよう。
オブジェクトレベルでは、送信しようとする構造化ソフトウェアオブジェクト内で組織化されたデータは、線形データストリームの形に変換され、またこの逆にも変換される。このシリアライゼーションステップは、オブジェクトの構造を管理しており、各プラットフォーム内でシリアライゼーションエージェントによって実行される。
バイトまたはバイトストリングのレベルでは、単純な線形ストリームの形に配列されているデータが送信機能を用いたフラグメントによって、たとえばAPDUフォーマットの形で送信されており、これがカードとその外部世界との間で情報を交換する唯一の手段となっている。これらの交換は、この送信機能を使用してパラメータを送信することによって互いに通信しているホストおよびカード通信エージェントによって管理されている。
ユーザに対してトランスペアレントなコマンドを提供するために、1つまたは複数のクラス内で様々なプロセスが実行されており、一般に、その少なくとも1つがそのカード内で動作しており、1つが端末またはホスト内にある。Java(登録商標)言語では、本発明によるプロシージャはしたがって、カードについては「ObjectIOApplet」クラスを、またホストについては「ObjectIOProxy」クラスを以下のシンタックスを用いて提供することができる。
class ObjectIOProxy{
void writeObject(Object o);
Object readObject();

ここで、「ObjectIOProxy」クラスは、ホスト内の1つのクラスを定義しており、ユーザアプリケーションに「writeObject(Object)」コマンドと「readObject()」コマンドとを提供している。
class ObjectIOApplet{
void process(Object o);
void sendObject(Object o);

ここで、「ObjectIOApplet」クラスはカード内の1つのクラスを定義しており、ユーザアプリケーションに「process(Object)」コマンドと「sendObject()」コマンドとを提供している。
カードは本質的に受動的であるため、これらの変換および送信のオペレーションのすべては、APDUコマンドの送信をトリガさせるコード内の命令を用いてホストの主導で実行される。関連するエージェントから要求された変換オペレーションを起動させるのはこのコマンドである。
カードアプリケーションコードで実行される場合、「process(Object)」コマンドおよび「sendObject()」コマンドはしたがって、対応する変換オペレーションを直接的にトリガしない。「sendObject()」コマンドは送信しようとするオブジェクトを出力キュー(たとえば「qout」)内に格納し、ここでは、送信のためにシリアライズされるオブジェクトが「qout.push(object)」タイプの導入コマンドによって導入されている。シリアライゼーションオペレーションが起動されると、送信されるこれらのオブジェクトが、これらを導入したときと同じ順序で出力キューから抽出される。
同様に、このコマンドは、ホストにより起動された直前のオペレーションによってシリアライズされたオブジェクトを、入力キュー(たとえば「qin」)から抽出する。前記抽出は、「qin.pop()」タイプの抽出コマンドによって得られる。
次いで、読み取り、書き込み、シリアライゼーションおよびデシリアライゼーションのオペレーションは、ユーザにトランスペアレントなコマンドを用いて「ObjectIOProxy」クラスによってホストから管理される。これらのコマンドはたとえば、以下の、
「card.Serialize out」は、以下に記載するに、送信しようとするオブジェクトのカード内でシリアライゼーションを起動する。これらのオブジェクトは、カードアプリケーションによる「sendObject()」命令の実行の際に出力キュー内に保存されることが可能である
「card.Read」は、以下で記載するように、カード内で出力ストリームデータの読み取り、ならびにこれらのデータのホストへの送信を起動する、
「card.Write」は、以下に記載するように、カードへのデータの送信、ならびに入力ストリームに対するデータ書き込みを起動する、
「card.Serialize In」は、以下に記載するように、カード内で入力ストリーム内に存在するオブジェクトのデシリアライゼーションを起動する、
形式でこのクラスのコード内に実装させることができる。
本発明のここに記載したバージョンでは、カードの出力および入力ストリームは、同じ循環式メモリ構造内に保存される。各ストリームごとに異なるメモリ構造を使用して、又は、別のタイプのメモリ構造を使用して、本発明の別のバージョンも当然可能である。
循環式メモリ構造は、この場合には、その第1の箇所がシステムによって最終の箇所の直後に続くものと見なされるような連続したメモリ箇所からなる組に対応している。このことは、線形データシーケンスが、前記シーケンスの長さが箇所の総数と比べて大きくない場合、このタイプの構造内で、連続性を失うことなく、任意の箇所を始点として保存することができることを意味する。
入力および出力ストリームが同じ循環式構造を共有していることは、そのデータがこの同じ循環式構造の異なるエリアに含めて保存することを含む。これらのストリーム内に含まれるデータは、これらが読み取られるに連れて即座にまたはあるオペレーションの間に消去され、この2つのストリームの長さおよび位置はこの循環式構造の内部で変化する。その2つのストリームのうちの一方が、別のストリームの未消去のデータによって妨害されて新たなデータを保存するだけのそれ以上の空間を有しない場合、その占有する空間を解放するためにはこの別のストリームを処理するだけでよい。
このタイプの循環式構造によって、その長さがあらかじめ決定されていないストリームの処理のために限定された記憶リソースを使用することが可能となる。必要なことは単に、その2つのストリーム上の異なるオペレーションをこの目的のために十分に均等に分散させることだけである。
バイトレベルでは、あるプラットフォームの出力ストリームから別のプラットフォームの入力ストリームへのデータの交換、ならびにこの反対のデータの交換は、以下に記載するようにして実行される。
ホストがカードの出力ストリーム内に配置されたデータを取得したいと希望する場合、ホストはたとえばJava(登録商標)シンタックス向けの「card.Read」などの読み取りコマンドを送信する。このコマンドは、その各々がプロセスの1回の反復を表しているような多数のトランザクションに分割されているのが典型的である読み取りセッションを起動させる。
読み取りセッションを起動させるために、ホストは、APDUフォーマットコマンドを、その通信エージェントおよび送信機能を介して、受信したいと希望するデータの長さを表している送信パラメータ(short型整数に対応するP1およびP2)を付属させて発行している。通信エージェントからこのコマンドを受信すると、そのカードは、カードの出力ストリーム内の第1のデータブロックを読み取り、さらにこのブロックをカードの応答機能に送信する。次いで、この第1のデータブロックは、APDUコマンドに応答する応答データ(DataR)としてホストに戻される。
次いで、読み取りプロセスの連続する各反復では、ホストによるAPDUコマンド、ならびにすでに受信されたデータの長さを表している送信パラメータ(P1およびP2、すなわちshort型整数)の送信を含む。一旦カード通信エージェントにより受信されると、この長さは直前の送信に関する肯定応答(acknowledgement)の役割をする。したがって、通信エージェントは、応答データ(DataR)として、ホストによって指示された長さに直ぐに続けて出力ストリームデータを戻している。データは出力ストリームから読み取られるが消去されておらず、またしたがって、必要が生じた場合に再送信することができることに留意すべきである。このことは、この送信において失念される恐れのあるデータがないことを意味している。
この読み取りセッションは、ホストによって要求された長さが正しく受信されたときに終了となると共に、このホストはその反復を停止する。このセッションはまた、カードの通信エージェントが、出力ストリーム内で利用可能なすべてデータがすでに送信済みであることを示すデータ項目(たとえば、長さがゼロのDataRフィールド)またはコード(SW1またはSW2)が送信する場合にも終了させるか、または中断させることができる。カードの出力ストリームが空である場合、ホストはカード内において、その出力ストリームが新規のデータを受信するために、カード「qout」キューからカードの出力ストリームへの新たなオブジェクトシリアライゼーションオペレーションを起動させなければならない。
ホストがその出力ストリームからカードにデータを送信したいと希望する場合、ホストはJava(登録商標)シンタックス向けのたとえば「card.Write」などの書き込みコマンドを送信する。このコマンドは、その各々がプロセスの1回の反復を表しているような多数のトランザクションに分割されているのが典型的である書き込みセッションを起動する。
書き込みセッションを起動するために、ホストはAPDUフォーマットコマンドを、その通信エージェントおよび送信機能によって送信したいと希望するデータの長さを表している送信パラメータ(P1およびP2、すなわちshort型整数)を付属させて送信している。この時点で、この第1のAPDUコマンドのデータフィールド(DataT)は、送信しようとする第1のデータブロックまたはグループを含んでおり、このデータブロックはホストの出力ストリーム内に読み取られる。このコマンドを受信すると、カードの応答機能は、前記第1のデータブロックをカードの通信エージェントに送信する。次いで、カードの通信エージェントはこの第1のデータブロックをカードの入力ストリームに書き込む。
書き込みプロセスの連続する各反復では、ホストによるAPDUコマンド、ならびにすでに送信されたデータの長さを表している送信パラメータ(P1およびP2、すなわちshort型整数)の送信を含む。この時点で、この第1のAPDUコマンドのデータフィールド(DataT)は、ホストの出力ストリームから読み取られた次のデータブロックまたはグループを含んでいる。このコマンドを受信すると、カードの応答機能は、これらのパラメータおよびこのデータブロックをカード通信エージェントに送信する。次いで、カードの通信エージェントは、送信パラメータ(P1およびP2)内で宣言されたデータの長さを、書き込みセッションの開始以降ですでに受信されているデータの長さと比較する。このことは、この送信において失念される恐れのあるデータがないことを意味している。
この比較によってまったくエラーが特定されない場合、カードの通信エージェントはこのデータブロックをカード入力ストリームに書き込む。エラーが検出された場合、通信エージェントはエラーを示しているおよび/またはこのエラーの性質を表しているコードまたはインデックスをホストに戻す。このコードまたはインデックスは、応答機能の応答パラメータ(SW1およびSW2)、戻されたデータフィールド(DataR)、このフィールドの長さ、あるいはこれらの要素の組合せを介して戻されることがあり得る。
書き込みセッションは、ホストによって宣言された長さが送信され終わると終了となると共に、このホストは反復を停止させる。このセッションはまた、カードの通信エージェントが、カード入力ストリームが新規のデータを受信できないことを指示するコードまたはインデックスを送信する場合にも、終了させるか、または中断させることができる。次いで、ホストは、この入力ストリームを含むメモリ構造内にメモリ空間を解放するためにカード内で1つまたは複数のオペレーションを起動させなければならない。
これは、カード内で、入力ストリームからカードのアプリケーションにアクセス可能なオブジェクトの「qin」入力キューへの新たなデータのデシリアライゼーションオペレーションを起動させることが必要となることがあり得る。このためにはさらに、カードの出力ストリーム内に含まれたデータを受信し、さらにその2つのストリームを含んでいる循環式構造内のメモリ空間を解放するために、新たな読み取りセッションを起動させることが必要となることがあり得る。
オブジェクトレベルでは、シリアライゼーションおよびデシリアライゼーションオペレーションは、データストリームとカードのエージェントまたはアプリケーションとの間で、ならびにこの逆方向で、以下のように実行される。
オブジェクトは、カード内で、入力フロー(33)から、「ObjectIOApplet」クラスによって提供されかつ宛先のエージェントまたはアプリケーションによって使用される、「Process(Object)」命令に直接的にアクセス可能である場所である「qin」入力キューにデシリアライゼーションされる。
本発明によるプロシージャを実行するために、ホストはカード内で、デシリアライゼーションオペレーションの起動を希望する場合に、たとえばJava(登録商標)シンタックス向けの「card.Serialize In」などの命令を使用する。
図4は、構造化ソフトウェアオブジェクト(34)に対応する入力ストリーム(32)のデータをデコードすることによる前記構造化ソフトウェアオブジェクト(34)のデシリアライゼーション、ならびに前記構造化オブジェクト(34)または結果オブジェクトに対する保存および構造コンポーネント作成オペレーションを表している。
入力ストリーム(33)内の線形シーケンス内に保存されたデータを1つ1つ読み取りながら、シリアライゼーションエージェント(212)は、これらのデータを所与のコードに従って解釈し、さらにこの解釈に基づいて構造化ソフトウェアオブジェクト(34)を作成する。この入力ストリーム内に保存されたデータシーケンス内のある種のデータは、所与の値を有することができ、かつこの値は、コードタグの存在を指示するものと解釈される。このデコード処理は、デコードしようとする構造化オブジェクトのそれぞれのタイプに特定の割り当てメソッドを、たとえば次のシンタックス、
Typeobject::decode(Object,InputStream)
を使用してコールすることによって実行され、タイプ「Typeobject」のオブジェクト「Object」を入力ストリーム「InputStream」からデコードすることができる。
このコードには、その各々が所与の意味を有しておりかつその各々が入力ストリーム内のデータ項目の少なくとも1つの指定値に対応している1組のタグを備えている。したがって、これらのタグのうちの1つに対応する値を有する入力ストリーム内の各データ項目は、デシリアライゼーションプロセスの間にシリアライゼーションエージェントによって解釈を受ける。
本発明によるプロシージャを使用するアプリケーションについては、シリアライゼーションエージェント(212)は、多数のタグ組を認識するように設計することができるか、あるいは本発明の基本的な趣旨を逸脱することなく各タグを多数の異なるデータ値によって表現することができる。このタイプの多様性は、特に、1つのカード(2)またはカードタイプが多数の異なる端末またはホスト環境を有することを発生するために使用することができる。
本発明のここに記載したバージョンについては、そのコードは、「NULL」、「NEW」、「REF」および「DATA」タイプのタグを備えている。
NULLタグは、シリアライゼーションエージェントによる構築の途中で構造内のある箇所を占有しているがデータは存在しないことを表す。
NEWタグは、シリアライゼーションエージェントに関する新たなオブジェクトの記述の開始を指示し、このオブジェクトは、変換により得られる構造化ソフトウェアオブジェクト(34)、あるいはこのタイプの構造化オブジェクト(34)の一部を構成するエレメントと呼ばれるオブジェクトである。
REFタグは、あるオブジェクト、同じオブジェクトのことや別のオブジェクトの指定を、記述の途中においてオブジェクトまたはエレメントのすべてまたは一部に関する値のソースとして指示する。これを用いるとある値を参照によって割り当てることができる。
DATAタグは、記述の途中において後に続くデータがオブジェクトまたはエレメントの値またはコンテンツを表していることを指示する。このコンテンツは、オブジェクトに対して直接割り当てられる1つまたは複数の値を表す生データを含むことができ、あるいは、オブジェクトを指示する別のタグを再度含むことやこのコンテンツを定義している参照を含むことができる。
そのタイプに従って、タグには、その解釈が関連するタグの意味によって決定されるような1つまたは複数のデータ項目を続けることができる。
NEWタグを読み取ると、シリアライゼーションエージェントには、これに続くデータ項目が記述された新たなオブジェクトのタイプを表しているものと解釈しなければならないことが分かる。
同様に、REFタグを読み取ると、シリアライゼーションエージェントには、これに続くデータ項目が参照によってこの値のソースとして指定されたオブジェクトに関する識別子を表しているものと解釈しなければならないことが分かる。
本発明のここに記載したバージョンでは、そのタグはタイプおよびレファレンスの識別子と同じ方式で1バイト上でコード化されているが、本発明によるプロシージャはさらに関連するコンピュータ環境のニーズや可能性に応じて異なるかさらに複雑または明示的な別のコードを使用することもできることは明白である。
入力ストリーム(32)のデータを読み取るのに従って、シリアライゼーションエージェント(212)は、各データ項目の値を解析すると共に、結果オブジェクト(34)を構成しているオブジェクトまたはエレメント(340、341、342、343、344)を作成およびロードする。入力ストリーム(32)のこの読み取りは、この入力ストリームによって表されるオブジェクト(34)の再構成が完了するまで反復される。この作成は、デシリアライゼーションで「Typeobject」タイプのオブジェクトを作成または割り当てるために、たとえば次のシンタックス、
Typeobject::malloc()
を用いて各オブジェクトタイプに特定な割り当てメソッドをコールすることによって取得されることができる。
このタイプのオブジェクトは、異なる構造を有する可能性があるため、これらの作成およびロードのオペレーションは、直接的であるか否かによらず、たとえばJava(登録商標)言語の「タイプマーシャラ(type marshaller)」エージェントなど、作成するオブジェクトのタイプに特定のタイプの管理エージェント(TM0、TM1、TM2)によって管理されている。このタイプ管理エージェントは、1つまたは複数のオブジェクトタイプに特定であると共に、たとえばJava(登録商標)言語の「タイプマネージャ(type manager)」エージェントなどのジェネリックなタイプマネージャエージェント(TMG)によって管理することができる。特に、このタイプマネージャエージェントは、デシリアライゼーションプロセスの間に作成された様々なオブジェクトタイプに関する識別子を保存している。このジェネリックなタイプマネージャエージェント(TMG)はさらに、これらの異なるオブジェクトタイプに特定であると共に同じオブジェクトのシリアライゼーション/デシリアライゼーションのために使用されるコードおよびプロシージャ、またはメソッドを含む。このタイプマネージャエージェントはさらに、オブジェクトおよびその割り当てに関するリストを管理するために使用されており、これによってデコードの際に新たなオブジェクトを作成するために新たな割り当てを実行し解放されている割り当てを再使用することを可能にしている。
典型的には、タイプマネージャエージェント(TMG)は、カード内で管理を受けることが可能な異なるタイプのオブジェクトすべてに関する情報を含んでいる。この情報は、たとえばカードプログラミングフェーズの間にホストによって作成されることがあり得る。次いで、この情報は、アプリケーションによって使用されるクラス(「アプレット(applet)」)によって、ジェネリックなタイプマネージャエージェント(TMG)のコードに追加されるプログラムコード(「glueコード」)の形式で送信される。
以下に記載するようにタイプマネージャエージェントおよびタイプマーシャラエージェントを使用することによって、本発明によるプロシージャは、たとえばJavaCard(登録商標)などそのプログラミング環境がこうしたタイプマネージャを含んでいないような埋め込み式プラットフォーム内において、基本または構築タイプの構造化オブジェクトのシリアライゼーションおよびデシリアライゼーションを管理することを可能にしている。
デコード中のオブジェクトまたはエレメントの作成は、このオブジェクトの割り当て、すなわち所与のメモリ空間の予約、ならびにオブジェクトに対するこのメモリ空間の割り当て、に対応している。特にJavacard(登録商標)を含むようないくつかの埋め込み式環境は、従来のJava(登録商標)言語の「ガーベッジコレクタ(garbage collector)」エージェントなど、削除されたオブジェクトによってこれまで占有されていたメモリ空間を解放するために使用できるソフトウェアツールを含んでいない。シリアライゼーションエージェント(212)によってあるオブジェクトが作成されると、本発明によるプロシージャは、すでに不要になっている、たとえば作成しようとするオブジェクトと同じタイプの別のオブジェクトによってこれまで占有されていたメモリ空間をこのオブジェクトに対して割り当てながらこの作成を実行する可能性を提供することができる。したがって、カードのメモリ空間を適宜再使用することが可能となり、このことは、カードのメモリ空間には限度があるため有用な利点となることが多い。
図4に表した例では、入力ストリーム(32)は、その構造またはグラフがJava(登録商標)言語において以下の形式で記述することができるような構造化された結果オブジェクト(34)に対応している。
Figure 2005519376
入力ストリーム(33)を読み取る際に、シリアライゼーションエージェントは先ずNEWタグ(321)を読み取る。したがって、シリアライゼーションエージェントはこれに続くデータ項目(322)を読み取り、次いで、タイプ2オブジェクトに対する作成要求を保存する。このNEW識別子2タグ(321)に従って、シリアライゼーションエージェントは、この例ではクラスXの新たなオブジェクト「x」(340)を、同じタイプ(タイプ2)に対応するタイプマネージャエージェント(TM2)を用いて作成する。結果オブジェクトの記述の最初において、この新たなオブジェクトは、この結果オブジェクトに関するグラフのツリー構造の「root」オブジェクトとなる。
この作成の際に、シリアライゼーションエージェントは、この新たに作成したオブジェクト(340)にインデックス(3402)を割り当てており、この例ではこのインデックスは値0をとっている。したがって、前記インデックス(3402)はこの結果オブジェクト(34)の構築の際に別のエレメントまたはエレメントの一部分に関する参照の役割をしており、これによって、このエレメントのコンテンツがロード済みであるか否かの判定を可能にしている。
次いで、シリアライゼーションエージェントはタイプスタック(TYST)と呼ばれるメモリ構造内にこのオブジェクトのタイプおよびインデックスを保存する。このタイプスタックは、1つのメモリスタックタイプ構造であり、このことはそのデータ項目が1つの項目をもう一方の項目の上に保存する(プッシュで入れる)ことが可能であり、また、所与のデータ項目は、連続して保存されているデータをすでに抽出し終えたときにのみ読み取りおよび抽出(ポップ取り出し)することができることを意味している。データは、これを保存されたときと逆の順序(後入れ先出し法:LIFO)でスタックから抽出される。
シリアライゼーションエージェントはさらに、入力ストリーム内の次のデータをロードさせる、カレントオブジェクト(OBJ)と呼ばれるオブジェクトに対応させるように、前記新たなオブジェクト(340)のタイプおよびそのインデックスを保存する。
次のタグは、DATAタグであり、この後にタグや識別子ではない2つの生データ項目(324、325)が続く。これら2つのデータ項目は、したがって、カレントオブジェクト(OBJ)内に保存される、すなわち後続のエレメント(342、343)の値としてx(340)に保存される。これらの2つの後続のエレメントはそれぞれ、整数タイプ(int)指定の「i」、およびバイトタイプ(byte)指定の「by」であり、これらのエレメントは入力ストリームのこれらの2つのデータ項目(324、325)内のそれぞれに含まれる値をとる。
次のタグは、NEWタグであり、この後にタイプ0を指示する1つのデータ項目が続く。このシーケンスは、オブジェクト「x」の次のエレメントがタイプ0のオブジェクトであることを指示している。シリアライゼーションエージェントは、したがって、インデックス(3442)を、前記オブジェクト(344)に割り当て(この例では1)、さらに前記新たなオブジェクト(344)に関するインデックスおよびタイプ、すなわち0、をタイプスタック(TYST)に追加する(プッシュで入れる)。シリアライゼーションエージェントはさらに、タイプ0に対応するタイプマネージャエージェント(TM0)によって作成された、この例ではタイプYの「y」(344)の、タイプ0オブジェクトを有している。
カレントオブジェクト(OBJ)に対応するタイプマネージャエージェント(TM2)を介して、シリアライゼーションエージェントは、前記カレントオブジェクト(OBJ)、すなわち「x」、が完全にロードされていないことが分かる。次のタグは、1つの生データ項目(329)を従えたDATAタグであり、したがってこれは、カレントオブジェクトの次のエレメント(341)に対する値として、すなわちブール(Boolean)タイプのエレメント「bo」の値として割り当てられ、これがオブジェクト「x」の最後のエレメントとなる。
カレントオブジェクト(OBJ)に対応するタイプマネージャエージェント(TM2)を介して、シリアライゼーションエージェントは、前記カレントオブジェクト(OBJ)、すなわち「x」(340)、がここで完全にロードされたことが分かる。前記ロードされたオブジェクト(340)のインデックス(3402)は次いで、カード内でのこのオブジェクト(340)の識別子を付けてオブジェクトスタック(OBJST)内に保存される。次いで、シリアライゼーションエージェントは、カレントオブジェクトのロードを終了させ、タイプスタック(TYST)の一番上に保存されているタイプおよびインデックスを抽出する(ポップで取り出す)。スタックの一番上は、最初にアクセス可能なスタック箇所であることは当然に理解されよう。タイプスタックから抽出したタイプおよびインデックスは、この例ではそれぞれ0と1であり、これらは次いで、新たなカレントオブジェクト(OBJ)に対応するものとして保存される。
次のタグはDATAタグであり、これによりしたがってカレントオブジェクト、すなわち「y」のロードが指示される。このタグの後には、1つのREFタグ(3211)およびこの例では0であるような1つのデータ項目(3312)が続く。シリアライゼーションエージェントは、したがって、オブジェクト「y」(344)に対する参照によって値を割り当てており、この参照(3212)によりインデックス(3402)を指定するためのこのオブジェクトの値によって単純なリンクを示している。オブジェクト「y」は、したがって、オブジェクト「x」を参照するように定義された値を有しており、これはデシリアライゼーションプロセス内ではインデックス0を有する。このリンクは次いで、カード内におけるこのオブジェクト「x」に対する識別子を保存することによって結果オブジェクト(34)内において定義されており、この識別子はこのインデックスによってオブジェクトスタック(OBJST)から読み取られる。
カレントオブジェクト(OBJ)に対応するタイプマネージャエージェント(TM0)を介して、シリアライゼーションエージェントは前記カレントオブジェクト(OBJ)、すなわち「y」、がここで完全にロードされたことが分かる。前記ロードされたオブジェクト(344)のインデックス(3442)は、したがって、そのカード内での前記オブジェクト(344)の識別子を付けてオブジェクトスタック(OBJST)内に保存される。次いで、シリアライゼーションエージェントはこのロードを終了させ、タイプスタック(TYST)を調べる。
オブジェクト「y」のタイプの抽出後にタイプスタック(TYST)が空になると、すなわち復元すべき「構築タイプ(constructed type)」がそれ以上なくなると、シリアライゼーションエージェントは、結果オブジェクト(34)が完全に作成し終わったものと判断を下す。
本発明の一変形バージョンでは、新たなオブジェクトの作成または割り当ては、前記新たなオブジェクトを指示するNEWタグの読み取りから、このオブジェクトのロードの開始に至るまでのデシリアライゼーションプロセスの任意の段階で実行することができる。
別の変形形態では、オブジェクトのデシリアライゼーションの際に使用されるインデックスは、カード内におけるそのオブジェクトの識別子と同一である。
オブジェクトは、カード内において出力ストリーム(42)から出力キュー「qout」へシリアライズされ、これは、「ObjectIOApplet」クラスによって供給されると共に宛先エージェントまたはアプリケーションによって使用される命令「SendObject()」によって直接アクセスすることができる。
本発明によるプロシージャを実現するために、ホストはたとえばJava(登録商標)シンタックス向けの「card.Serialize Out」などの命令を使用して、カード内のシリアライゼーションオペレーションを起動させる。
図5は、ソースオブジェクトと呼ばれる構造化ソフトウェアオブジェクト(41)の構造のコンポーネントを解析し、続いて前記ソースオブジェクト(41)に対応する出力ストリーム(42)内に保存されるデータの形式でコード化することによる、構造化ソフトウェアオブジェクト(41)のシリアライゼーションを表している。
このシリアライゼーション機能は、所与のタイプのオブジェクトに対して利用可能なメソッド、すなわちアクションまたはプロシージャにおいて、以下のJava(登録商標)シンタックスを用いて実現される。
Typeobject::(Object,OutputStream)は、
タイプ「Typeobject」のオブジェクト「Object」を出力ストリーム「OutputStream」へコード化に使用されるメソッドである。
Typeobject::getSuper()は、
「Typeobject」タイプオブジェクトをコード化する際に、タイプに関する情報およびオブジェクトの構築タイプを取得するために使用されるメソッドである。
基本タイプは一般に、構築タイプと対照的に、環境またはプログラミング言語によってスケジューリングされかつ管理されるタイプであり、多数のオブジェクトの組合せとして定義される。現在の基本タイプは、埋め込み式環境に関してはたとえば、「integer」、「Boolean」および「byte」であり、またより広範な環境に関しては、長整数タイプ、実数タイプ、長実数タイプおよびキャラクタタイプ(「long」、「real」、「double」および「char」)である。
このシリアライゼーションオペレーションでについて、シリアライゼーションエージェント(212)は、シリアライズしようとするソースオブジェクト(42)の完全な構造またはグラフに対して再帰的な(recursive)走査を実行し、「root」オブジェクトまたはエレメント(この例では「x」)を始点としてオブジェクトエレメント(410、412、413、414、411)を解析する。この例で示したソースオブジェクト(42)のグラフは、図4に関して上述したものと同じである。シリアライゼーションエージェントは、構築タイプを有する各グラフエレメントごとに同じ構築タイプに対応するエージェント(TM0、TM1、TM2)をコールする。
出力ストリーム(42)内におけるソースオブジェクト(41)の記述は、NEWタグを書き込むことによって開始し、この後に、この例ではタイプ2オブジェクト「x」であるようなルートエレメントタイプ識別子を続けている。次いで、このルートオブジェクトは、カレントオブジェクト(OBJ)に指定される。このオブジェクトはさらにインデックス(この例では、0)を受け取ると共に、次いでそのタイプおよびインデックスがタイプスタック(TYST)内にロードされる(プッシュオペレーション)。
この記述は、DATAタグを書き込み、その後にルートオブジェクトのコンテンツに対応する値または参照を指示するデータを続けることによって継続される。ルートオブジェクト「x」が構築タイプをもつオブジェクト「y」(414)を含んでいるので、そのルートオブジェクトの記述には、NEWタグを含め、その後に前記オブジェクト「y」の値の代わりに、この例では、「NEW 0」の、前記オブジェクト「y」のタイプを続けている。NEWタグにはこのタグを書き込むときに、この例では、1の、1つのインデックスが割り当てられる。次いでこの新たなオブジェクトのインデックスおよびタイプがタイプスタック(TYST)内にロードされる(プッシュオペレーション)。
オブジェクト(OBJ)、すなわちオブジェクト「x」(410)、のコンテンツの記述が完了したら、オブジェクトのインデックスは、このオブジェクトの識別子と一緒にオブジェクトスタック(OBJST)内に保存される。次いで、シリアライゼーションエージェントはそのタイプスタックを解釈し、オブジェクト「y」のタイプおよびインデックスを抽出する(「ポップ」オペレーション)。シリアライゼーションエージェントは、前記オブジェクト「y」を新たなカレントオブジェクト(OBJ)として保存し、次いで前記オブジェクト「y」のコンテンツに関する記述を開始する。ルートオブジェクト「x」に対する単純な参照を備えたこのオブジェクトでは、出力ストリームに書き込まれたデータは、REFタグを含み、その後にこのオブジェクトをレファレンスとして指定する、すなわち、このオブジェクト「x」はこの例では、インデックス0を有する、ためのインデックスの役割をする1つのデータ項目が続く。
カレントオブジェクト、すなわちオブジェクト「y」(414)、のコンテンツの記述が完了したら、そのインデックスは、このオブジェクトに関する識別子と一緒にオブジェクトスタック(OBJST)内に保存される。次いで、シリアライゼーションエージェントはタイプスタックを調べ、このタイプスタック内でオブジェクト「y」の下に保存されたオブジェクト「x」のタイプを抽出する(ポップオペレーション)。オブジェクト「x」のインデックスがオブジェクトスタック(OBJST)内にすでに保存されていると、シリアライゼーションエージェントは、オブジェクト「x」がすでにシリアライゼーションまたは記述済みであることが分かる。したがって、シリアライゼーションエージェントは、再度タイプスタックを調べてこれが空であることを確認し、その結果、ソースオブジェクト(34)を構成しているすべてのエレメントが出力ストリーム(42)内に完全に記述済みであると判定する。
これらのアルゴリズムは再帰的であるため、埋め込み式プラットフォーム内、たとえばスマートカードやJavaCard(登録商標)標準の携帯コンピュータ式オブジェクト内にコードを保存することを可能とさせるようにメモリ空間を十分に小さくさせたプログラムコードを用いて、これらのシリアライゼーションおよびデシリアライゼーションオペレーションを実行することが可能となる。これらのアルゴリズムの簡潔性によってさらに、こうした埋め込み式プラットフォームで使用されるプロセッサなどの低電力のプロセッサによってこれらのオペレーションを実行することも可能となる。
一時的な形式で保存されるデータの大きさをバランスさせるためには、ホストアプリケーション(11)により要求される様々な読み取り、書き込み、シリアライゼーションおよびデシリアライゼーションのオペレーションを、1つまたは複数のプログラムループ内でインターリーブすることができる。このタイプのループは、各反復の時点でこれらのオペレーションの各々に関する1つのコマンドを、たとえば以下のJava(登録商標)シンタックスを用いて実行する。
Do
Do card.Serialize out While(ok out)
Do card.Read While(data read)
While(data in)card.Write
While(ok in)card.Serialize in
Loop
この例では、第1行および最終行(「Do」および「Loop」)は、4行の中間行のコードを備えたループの反復を決定している。このタイプのループは、当然別のオペレーションと組み合わせることが可能であると共に、反復プロセスを中断させるための様々な条件を含むことが可能である。
このループの第1行は、カード内で「SendObject()」コマンドによって「qout」出力キュー内に直前に保存されたオブジェクトに関してカード出力ストリームへのシリアライゼーションセッションを起動させることを指示している。次いで、このセッションは、「ok out」の条件が満たされている限り、たとえば送信するオブジェクトが「qout」キュー内に存在していると共にその出力ストリームが満たされていない間は反復される。
この第2行は、ホストによってカード出力ストリーム内に含めたデータに対して読み取りセッションを起動させることを指示している。次いで、このセッションは、「data read」条件が満たされている限り、たとえばカードからデータを受け取っている間は反復される。
この第3行は、ホストからのデータ入力ストリームへの書き込みセッションの実行および反復を指示している。このセッションは、「data in」条件が満たされていればその限りにおいて、たとえばカードに対して送信すべきデータが存在すると共にカードエントリストリームが満たされていない間においてのみ、実行し反復されている。
この第4行は、カードエントリストリーム内に含まれているデータに対する構造化オブジェクト「qin」エントリキューへのデシリアライゼーションセッションを、これらのデータが「process(Object)」コマンドによって抽出された場合に実行および反復するように指示している。このセッションは、「ok in」条件が満たされていればその限りにおいて、たとえばカードエントリストリーム内にデシリアライズすべきデータが存在する間においてのみ、実行し反復されている。
たとえばJavaCard(登録商標)標準に準拠したパッシブ(passive)カードの場合、オブジェクトシリアライゼーションオペレーションの最後に、典型的には、たとえば「process(Object)」メソッドに対する自動コールによってオブジェクトの処理を起動させている。
この例では、カード側において実行されるオペレーションのみを表していることに留意すべきである。ホスト側において実行される対称型オペレーションは、本発明の基本的な趣旨を逸脱することなく、利用可能なハードウェアおよびソフトウェアのリソースに応じて、同様の方式や全体として異なる方式のいずれかによって実行することができる。
これらの様々な相補型オペレーションが再帰的に反復することが可能なソフトウェアループ内にインターリーブされているということにより、構造化オブジェクトの転送に関連する様々なフェーズを、単一の実行コマンドまたは単一の転送コマンドのフレームワーク内で並列に実行することが可能である。循環形式で保存されたデータストリームを用いると共に、上述のように同じメモリ空間を不確定式で再使用することによって、埋め込み式プラットフォームの限られた容量であってもサイズに関する制約なしに、同じコマンドによって構造化オブジェクトの完全な転送を起動することができる。
上述した変換オペレーションのすべてが、ホストおよび埋め込み式プラットフォーム内にロードされた1つまたは複数のプロシージャにおいて実装される、すなわちプログラムされる場合、前記プロシージャはいくつかの単純なコマンドを用いてユーザによってアクセスを受けることが可能である。
Java(登録商標)言語およびJavaCard(登録商標)環境に適用されるような本発明のここに記載したバージョンでは、アプリケーションのプログラマは単に、これらのいくつかの単純なコマンドを使用してアプリケーションを作成するだけでよい。これらのコマンドは、中間的なオペレーションのすべてをユーザに対してトランスペアレントに実行している。換言すると、ユーザは、前記コマンドの機構の内部オペレーションに関与する必要がない。
たとえば、処理ステーションまたはホスト端末内にロードされた「ObjectIOProxy」クラスは、「WriteObject()」コマンドおよび「readObject()」コマンドを提供する。
同様に、埋め込み式プラットフォーム内にロードされた「ObjectIOApplet」クラスは、「Process(Object)」コマンドおよび「SendObject()」コマンドを提供する。典型的には、「ObjectIOApplet」クラスは、知られている拡張技法を用いて、すなわち「process(APDU)」メソッドを含んだ「IOApplet」クラスからの継承によってこれらのコマンドを実現している。このためには、初期メソッドと組み合わせたプログラムコードをこのメソッドに追加すること、ならびに初期メソッド内で定義されるようにそのコードのオペレーションを修正または置換すること、が必要である。
構造化オブジェクトをカードアプリケーションに送信しかつカード内で処理を起動するためには、そのホストアプリケーション内でユーザによって命令「WriteObject()」が利用される。
「Process(Object)」メソッドは、構造化オブジェクトの受信およびデシリアライゼーションに続いてカードによって自動的にコールされる。次いで、このメソッドのコンテンツは、このオブジェクトからの所望のオペレーションを実行するために、埋め込み式プラットフォーム内にロードされたアプリケーションの当該部分に関してユーザによってプログラムされる。次いでこのメソッドは、APDUフォーマットデータのみに関してJavaCard(登録商標)の標準「process(APDU)」コマンドと同様の方式で使用される。
「SendObject()」命令は、埋め込み式プラットフォームからホストへの1つまたは複数の構造化オブジェクトの送信を作成するために、埋め込み式プラットフォーム内にロードされたアプリケーションの当該部分、たとえば「Process(Object)」メソッドコードの内部、に関してユーザによって利用される。次いで、この命令は、APDUフォーマットデータのみに関してJavaCard(登録商標)の標準の「sendAPDU()」コマンドと同様の方式で使用される。
「ReadObject()」命令は、カードアプリケーションがこの目的のために作成しておいた1つまたは複数の構造化オブジェクトを埋め込み式プラットフォームから受信するために、そのホストアプリケーション内でユーザによって利用される。
前記埋め込み式プラットフォームの通信リソースがバイト形式または整数形式のデータを送信することができない場合であっても、このタイプの埋め込み式プラットフォームに関連するアプリケーションを作成するプログラマが、前記埋め込み式プラットフォームとホストまたは端末との間での構造化ソフトウェアオブジェクトの送信がより容易になることが理解されよう。
埋め込み式アプリケーションのプログラマは、構造化ソフトウェアオブジェクトのデアロケーション、あるいは対応するメモリ空間のリセットまたは消去、さらに構造化ソフトウェアオブジェクトの複製に関していくつかの単純なコマンドを有することは有用となる。このことは、その埋め込み式プラットフォームのプログラミング環境が、たとえばJavaCard(登録商標)環境内ですでに割り当てられたメモリ空間の再利用を管理しているガーベッジコレクタソフトウェアツールをもたない場合に特に成り立つ。
本発明によるプロシージャの1バージョンでは、オブジェクトのシリアライゼーションの間の構造化ソフトウェアオブジェクトの各コンポーネントに対する解析ステップは、様々なオプションを用いて実行することができる。これら多数のオプションが、このコマンドの各実行がどのオプションを使用しなければならないかを指示するパラメータを伴うような、同じシリアライゼーションコマンドの実装に、含むことが可能である。これらの様々なオプションは、さらに、シリアライゼーションコマンドの異なる実装において別々に使用されることも可能である。
これらのオプションのうちの1つでは、オブジェクトのシリアライゼーションの間における構造化ソフトウェアオブジェクトの各コンポーネントの解析に関して、シリアライゼーションエージェント(212)は、このコンポーネントを含むメモリ空間をデアロケート(dealocate)するか、あるいは前記コンポーネントを新たなアロケーションに対して再使用可能であるとマーク付けしている。したがって、このオプションを使用するデストラクティブシリアライゼーション(destructive serialisation)と呼ばれるシリアライゼーションは、構造化オブジェクトの変換を実行し、この後にそのオブジェクトによって占有されたメモリ空間が解放される。
別のバージョンでは、本発明によるプロシージャは、カード内に保存された構造化オブジェクトのこのタイプのデストラクティブシリアライゼーションを、任意の送信オペレーションの外部で、たとえば、「ObjectIOApplet」クラスの実行において、実行するオプションまたはコマンドを含むことができる。本発明によるプロシージャは、ユーザがアプリケーションのソフトウェアオブジェクトのうちのいくつかのすべてまたは一部によって占有されるメモリ空間を、困難なく再使用することが可能となることが容易に理解されよう。
別のバージョン(図示せず)では、本発明によるプロシージャは、上述のようにすでに棄却された構造化オブジェクトによって直前に占有されていたカード内のメモリ空間を再使用することによって構造化オブジェクトのデシリアライゼーションを実行するオプションまたはコマンドを含んでいる。このデシリアライゼーションは、すべてが同一であるか非実体的であるデータを含んだデータストリームから、任意の送信オペレーションの外部で、実行される。このタイプのオブジェクトの割り当ておよび書き込みの後において、再使用されたメモリ空間は、関係する空間を直前に占有していたオブジェクトに属するデータをまったく含むことがない。このオペレーションは、たとえば「ObjectIOApplet」クラス内に実装された場合、本発明によるプロシージャは、ユーザが、所与の割り当てに対応するメモリ空間の全体的な消去を、困難なくプログラムすることを可能とする。
別のバージョン(図示せず)では、本発明によるプロシージャは、任意の送信オペレーションの外部に、構造化ソースオブジェクトの線形データシーケンスへのシリアライゼーションを実行するオプションまたはコマンドを含む。次いで、この同じ線形データシーケンスは、ソースオブジェクトと同一の結果オブジェクトになるようにデシリアライゼーションされるが、しかし、異なるメモリ空間を使用する。このオペレーションがたとえば「ObjectIOApplet」クラス内で実行される場合、本発明によるプロシージャは、ユーザが、構造化ソフトウェアオブジェクトの同一の複製を困難なくプログラムすることを可能とする。
本発明は、特許請求した本発明に関する応用分野を逸脱することなく、具体的な別の多数の形態をしたバージョンを提供できることは当業者には明らかであろう。したがって、記載したバージョンは、例示のみを目的として提供されたものと見なす必要があると共に、添付の特許請求の範囲によって規定された領域内において修正が可能である。したがって、本発明は上述の詳細に限定されるものではない。
カードが1つのアプリケーションのみを組み込んでいる本発明の1バージョンにおける、埋め込み式プラットフォーム内のソフトウェアエージェントに対するおよびこれらからの、ホストまたは端末の読み取りおよび書き込みオペレーションに関するオブジェクト転送および変換を表している部分図である。 カードが1つのアプリケーションのみを有している本発明の1バージョンにおける、埋め込み式プラットフォーム内のソフトウェアエージェントに対するおよびこれらからの、ホストまたは端末の読み取りおよび書き込みオペレーションに関するオブジェクト転送および変換のより詳細な部分図である。 カードが多数のアプリケーションを組み込んでいる本発明の1バージョンにおける、埋め込み式プラットフォーム内のソフトウェアエージェントに対するおよびこれらからの、ホストまたは端末の読み取りおよび書き込みオペレーションに関するオブジェクト転送および変換を表した部分図である。 データストリームからの構造化ソフトウェアオブジェクトのデシリアライゼーションに関連するオブジェクトおよびエージェントを表した部分図である。 構造化ソフトウェアオブジェクトのデータストリームへのシリアライゼーションに関連するオブジェクトおよびエージェントを表した部分図である。

Claims (44)

  1. 1つまたは複数の線形データシーケンスの形式で端末との情報の交換が可能な、少なくとも1つのプロセッサ、記憶設備、および通信リソースを組み込んだ携帯オブジェクトを備えた、「埋め込み式プラットフォーム」と呼ばれる、コンピュータステーション(2)によって使用するためのデータ変換プロシージャであって、一方で線形データシーケンスを備える配置と、他方でオブジェクト指向のプログラミング言語の基準に従って構造化または階層化された1つまたは複数のソフトウェアオブジェクトを記述または表現している構造化配置との間で、ある方向または他の方向への、データセットの変換ステップを含むことを特徴とするデータ変換プロシージャ。
  2. オブジェクト指向のプログラミング言語の基準に従って構造化または階層化された1つまたは複数のソフトウェアオブジェクト(31、41)を備えるか表現している、送信される第1のデータセットを、このオブジェクトを記述または表現している構造化配置から前記第1のデータセットを表現している線形データシーケンスに変換またはシリアライゼーションするステップと、
    埋め込み式プラットフォーム(2)から、少なくとも1つのホスト(1)へ、すなわちある端末または該端末に接続されたコンピュータステーションへ、又は、前記ホスト(1)から埋め込み式プラットフォーム(2)へ、通信リソース(200または100)によって前記線形データシーケンスを送信するステップと、
    この線形データシーケンスを、第1のデータセットを再生するまたは表現する1つまたは複数の構造化ソフトウェアオブジェクト(34または44)に配置されたデータセットに送信後変換するまたはデシリアライゼーションするステップと、
    を含むことを特徴とする請求項1に記載のプロシージャ。
  3. ホスト端末(1)は埋め込み式プラットフォーム(2)に対して送信機能と呼ばれるソフトウェアエージェント(101)を用いて情報を送信し、前記情報は埋め込み式プラットフォーム内に保存された少なくとも1つの宛先ソフトウェアエージェント(221)によって前記データに関するプロセス(2210)を起動することが可能でありかつ少なくとも1つのアプリケーション(21)の一部を形成している応答機能(201)によって埋め込み式プラットフォーム内で受信され、
    前記宛先ソフトウェアエージェントについての応答機能(201)によって受信された、線形データシーケンスに配置されているデータセット(32)を、宛先エージェント(221)の代わりに通信エージェント(211)によって受信するステップと、
    オブジェクト指向のプログラミング言語の基準に従って構造化または階層化された少なくとも1つのソフトウェアオブジェクト(34)にこのデータセットを変換するステップと、
    前記構造化ソフトウェアオブジェクト(34)を宛先エージェント(221)に送信し、前記オブジェクトに従い、前記宛先エージェントによってプロセス(2210)を起動するステップと、
    を含むことを特徴とする、請求項1から2のいずれか一項に記載のプロシージャ。
  4. 応答機能(201)によってホスト(1)の送信機能(101)から、少なくとも1つの送信パラメータ(32)の形式の少なくとも1つのデータ項目を受信し、このパラメータを埋め込み式プラットフォーム(2)内で保存されるか又は実行される通信エージェント(211)に送信するステップと、
    応答エージェント(201)によって送信された少なくとも1つの送信パラメータ(32)を、通信エージェント(211)によって、線形データシーケンスに配置されたデータセットに変換または連結し、これらのデータを埋め込み式プラットフォーム(2)内の入力ストリーム(33)内に保存するステップと、
    埋め込み式プラットフォーム(2)内で保存されるか又は実行されるシリアライゼーションエージェント(212)によって、前記入力ストリーム(33)内に保存されたデータの少なくとも一部を、少なくとも1つの構造化ソフトウェアオブジェクト(34)を備えるまたは表すデータセットに変換またはデシリアライゼーションするステップと、
    前記構造化ソフトウェアオブジェクト(34)またはその参照を宛先エージェント(221)によって受信するステップと、
    を含むことを特徴とする請求項1から3のいずれか一項に記載のプロシージャ。
  5. 構造化ソフトウェアオブジェクト(41)またはその表現を、埋め込み式プラットフォーム(2)内で実行されるか又は保存されるアプリケーション(22)の一部を形成するソフトウェアエージェント(221)から、前記埋め込み式プラットフォーム内で実行されるか又は保存されるシリアライゼーションエージェント(212)に送信するステップと、
    前記構造化ソフトウェアオブジェクト(41)を前記シリアライゼーションエージェント(212)によって線形データシーケンスに配置されたデータセットに変換またはシリアライゼーションし、これらのデータを埋め込み式プラットフォーム内の出力ストリーム(42)内に保存するステップと、
    埋め込み式プラットフォーム(2)内で保存されるか又は実行される通信エージェント(221)によって、前記出力ストリーム(42)内に保存されたデータの少なくとも一部を応答機能(201)により送信されることが可能な応答パラメータの組(43)に変換するステップと、
    それ自体の主導でまたはホスト端末(1)の送信機能(101)に応答して、応答機能(201)によって、前記応答パラメータ(43)を埋め込み式プラットフォーム(2)からホスト端末(1)に送信するステップと、
    を含むことを特徴とする請求項1から4のいずれか一項に記載のプロシージャ。
  6. 入力ストリーム(33)または出力ストリーム(42)内に保存された線形データシーケンスは、タグと呼ばれる1つまたは複数のデータ項目を用いて構造化または階層化された1つまたは複数のソフトウェアオブジェクト(31または41)を表しており、その各々が前記線形データシーケンスのデシリアライゼーションに関して実行される所与のアクションを表している1つまたは複数の所与の値を有していることを特徴とする請求項1から5のいずれか一項に記載のプロシージャ。
  7. 少なくとも1つのタグは、
    線形データシーケンスによって表された構造化オブジェクトの構造に新たなエレメントを追加するアクションと、
    ソースオブジェクトと呼ばれるエレメントまたはオブジェクトを、構造化オブジェクトを構成するエレメントのすべてまたは一部分の値のソースとして参照するアクションと、
    後続の1つまたは複数のデータ項目が構造化オブジェクトを構成するエレメントのコンテンツを表していることを指示するアクションと、
    構造化オブジェクトを構成するエレメントについてのコンテンツが存在しないことを指示するアクションと、
    のうちの1つを表すように定義されていることを特徴とする請求項1から6のいずれか一項に記載のプロシージャ。
  8. シリアライゼーションエージェント(212)は、ソースオブジェクトと呼ばれる構造化オブジェクト(41)を1つの線形データセット(42)に、シリアライゼーションプロシージャと呼ばれるプロシージャに従って、シリアライズし、前記構造化ソースオブジェクト(41)の構造またはツリー構造を構成する、エレメントと呼ばれる、オブジェクトのうちの少なくとも1つ(410から414)を、
    シリアライゼーションエージェント(212)によって、前記構造化オブジェクト(41)の構造またはツリー構造を構成するカレントオブジェクトと呼ばれるエレメント(410、414)のタイプ(4100)を検出するステップと、
    新たなエレメントの追加を指示しているタグを表すデータ項目、続いてカレントオブジェクトのタイプ(TYOBJ)を表すデータ項目を、出力ストリーム(42)内に保存するステップと、
    出力ストリーム内に、カレントオブジェクトタイプ(TYOBJ)と関連付けされた、タイプシリアライゼーションエージェント(TM0、TM1、TM2)によって、該ストリーム内にすでに存在するエレメントの後に保存するステップであって、
    構造化オブジェクト(41)のすべてまたは一部分(412、413、411)の値を表しているデータ項目(424、425、429)によるか、
    あるオブジェクト(410)に対する参照を、構造化オブジェクト(41)のすべてまたは一部分(414)の値のソースとして指示するタグ(4211)を表しているデータ項目(4211、4212)であって、該タグの後には前記ソースオブジェクト(410)を特定しているデータ項目(4212)が続いているようなデータ項目によるか、
    のいずれかによっている保存ステップと、
    によって処理することを特徴とする請求項1から7のいずれか一項に記載のプロシージャ。
  9. シリアライゼーションプロシージャは構造化オブジェクト(41)を出力ストリーム(42)に変換し、各カレントオブジェクトのタイプを、その保存箇所が保存された順序と逆の順序で読み取られるタイプスタックと呼ばれるメモリスタック(TYST)内に各反復ごとに保存することを特徴とする請求項1から8のいずれか一項に記載のプロシージャ。
  10. シリアライゼーションエージェント(212)は、線形データセットを少なくとも1つの構造化された結果オブジェクト(34)に、デシリアライゼーションプロシージャと呼ばれるプロシージャによってデシリアライズし、入力ストリーム(33)内に保存された各データ項目を、
    シリアライゼーションエージェントによって、直前に処理を受けたデータに続いて入力ストリーム内に保存された少なくとも1つのデータ項目を読み取るステップと、
    このデータ項目を解析しかつ前記データ項目に対応するアクションを実行するステップと、
    によって処理することを特徴とする請求項1から9のいずれか一項に記載のプロシージャ。
  11. デシリアライゼーションプロシージャが、カレントオブジェクトと呼ばれるエレメントをロードすること、すなわち前記カレントオブジェクトのすべてまたは一部分に対して直接または間接的な値を割り当てることを含み、前記エレメントは構造化された結果オブジェクト(34)の構造のすべてまたは一部を構成し、カレントオブジェクトのロードの終了によって、
    タイプスタック(TYST)と呼ばれるメモリ構造の次の箇所内に保存されたオブジェクトタイプを表すデータ項目(TYT2)を読み取り、かつこの箇所から該データ項目を削除すること、
    タイプスタックから読み取られたデータ項目(TYT2)によって表されるタイプを、新たなカレントオブジェクトタイプ(TYOBJ)として保存すること、
    を起動することを特徴とする請求項1から10のいずれか一項に記載のプロシージャ。
  12. デシリアライゼーションプロシージャによって作成された構造化オブジェクト(34)は、タイプスタック(TYST)が空であるときに、完了と見なされて、前記オブジェクトについての宛先であるソフトウェアエージェント(221)またはアプリケーション(22)に送信されることを特徴とする請求項1から11のいずれか一項に記載のプロシージャ。
  13. 新たなエレメントを指示する、「NEW」タグと呼ばれるタグを表すデータ項目(321、326)に対応するデシリアライゼーションアクションは、
    入力ストリーム内で少なくとも1つの連続するデータ項目(322、327)を読み取るステップと、
    タイプスタック(TYST)と呼ばれるメモリスタック内の前記連続するデータ項目(322、327)によって表されるオブジェクトタイプを、すでに保存された可能性があるタイプに続いて保存するステップと、
    を含むことを特徴とする請求項1から12のいずれか一項に記載のプロシージャ。
  14. デシリアライゼーションプロシージャによって使用されるタイプスタック(TYST)は、LIFOタイプのスタック、すなわちその箇所が保存したときの順序と逆の順序で読み取られるスタックを備えることを特徴とする請求項1から13のいずれか一項に記載のプロシージャ。
  15. デシリアライゼーションプロシージャは、構造化された結果ソフトウェアオブジェクト(34)の構造を構成しているエレメント(410または414)を、新たなメモリ空間の割り当てまたは開放された割り当ての再使用によって作成するためのステップを有し、前記作成は、作成されるエレメントのタイプに対応するタイプマネージャエージェント(TM0、TM1、TM2)によって実行されることを特徴とする請求項1から14のいずれか一項に記載のプロシージャ。
  16. 構造化された結果ソフトウェアオブジェクト(34)の構造を構成しているエレメント(410、414)を作成するステップは、前記エレメントの作成を指示するデータ項目(322、327)を読み取るステップと、この同じエレメントについての第1のロードステップとの間に発生することを特徴とする請求項1から15のいずれか一項に記載のプロシージャ。
  17. 単純データ項目と呼ばれるデータ項目(324、325、329)、すなわちタグを表していないデータ項目に対応するアクションは、このデータ項目の値をカレントオブジェクトに割り当てられたメモリ空間内に保存するステップを含むことを特徴とする請求項1から16のいずれか一項に記載のプロシージャ。
  18. デシリアライゼーションプロシージャの間に、構造化された結果オブジェクト(34)の構造を構成している少なくとも1つのエレメント(410)にオブジェクトインデックス(4102)が割り当てられ、前記オブジェクトインデックスは、前記エレメントが別のオブジェクトまたはエレメント(414)によって指定または参照されることが可能なように、前記エレメントを一意の方式で特定することを特徴とする請求項1から17のいずれか一項に記載のプロシージャ。
  19. 参照を指示している「REF」タグと呼ばれるタグを表すデータ項目(3211)に対応するアクションは、
    入力ストリーム(32)内の少なくとも1つの連続するデータ項目(3212)を読み取るステップと、
    カレントオブジェクト(344)に割り当てられたメモリ空間(3441)内に、カレントオブジェクトのすべてまたは一部分の値のソースとしてオブジェクト(340)を指定するデータ項目を、すでに保存されているデータ項目に続いて保存するステップとを含み、前記ソースオブジェクトまたはエレメント(340)は前記連続するデータ項目(3212)によって特定されることを特徴とする請求項1から18のいずれか一項に記載のプロシージャ。
  20. カレントオブジェクトのロードは、割り当てられたメモリ空間内に保存されたデータが所与の長さに対応したときに終了したと見なされ、前記長さは埋め込み式プラットフォーム内のジェネリックなタイプマネージャエージェント(TMG)によって又はタイプマネージャエージェント(TM0、TM1、TM2)によって、カード(2)内の記憶装置から読み取られることを特徴とする請求項1から19のいずれか一項に記載のプロシージャ。
  21. 埋め込み式プラットフォーム(2)による所与の長さの線形データシーケンス(42)のホスト(1)への送信は、データ読み取りプロシージャと呼ばれる反復式プロシージャによって実行され、反復式プロシージャは、
    すでに受信されたデータの長さを表している少なくとも1つの送信パラメータを伴う通信コマンドをホストによって送信するステップと、
    埋め込み式プラットフォームによって送信パラメータを受信し、送信される線形データシーケンスと比較するステップと、
    そのホストによってすでに受信されたデータの直後に続く1つまたは複数のデータ項目を表している少なくとも1つのリターンパラメータ(43)の送信によって通信コマンドに応答するステップと、
    この通信コマンドのリターンパラメータ(43)をホストによって受信し、これが表しているデータをすでに受信されたデータに続いて保存するステップと、
    の再帰的ステップを含むことを特徴とする請求項1から20のいずれか一項に記載のプロシージャ。
  22. 埋め込み式プラットフォーム(2)による所与の長さの線形データシーケンス(43)のホスト(1)からの受信は、データ書き込みプロシージャと呼ばれる反復式プロシージャに従って実行され、
    すでに送信された送信される線形データシーケンスのうちの部分の直後に続く1つまたは複数のデータ項目を表している少なくとも1つの第1の送信パラメータ(32)、ならびに必要に応じて、送信されるシーケンス内での第1の送信パラメータによって表されるデータの位置、またはすでに送信されたデータの長さを表している第2の送信パラメータを備えた通信コマンドをホストによって送信するステップと、
    埋め込み式プラットフォームによって1つまたは複数の通信コマンド送信パラメータ(32)を受信するステップと、
    埋め込み式プラットフォームの入力ストリーム(33)内に、すでに受信されたデータに続いて、第1の送信パラメータ(32)によって表されるデータを保存するステップと、
    の再帰的ステップを含むことを特徴とする請求項1から21のいずれか一項に記載のプロシージャ。
  23. データ書き込みプロシージャはさらに、
    埋め込み式プラットフォームによって第2の送信パラメータを比較し、すでに受信されたデータの長さと比較するステップと、
    埋め込み式プラットフォームによって、すでに受信されたデータの長さ又はこの比較の結果を表すデータ項目のいずれか、あるいはこの両者を表す少なくとも1つの応答パラメータを戻すステップと、
    を含むことを特徴とする請求項1から22のいずれか一項に記載のプロシージャ。
  24. シリアライゼーション、デシリアライゼーション、データ読み取りまたはデータ書き込みのプロシージャのうちの少なくとも2つが、前記プロシージャの各々の少なくとも1つのステップの連続的実行を含むステップを反復することによって並列に実行またはインターリーブされることを特徴とする請求項1から23のいずれか一項に記載のプロシージャ。
  25. 入力ストリームまたは出力ストリームあるいはこれらの両者は、前記2つのストリームが同じ循環式構造を共有することが可能である、循環式メモリ構造の形式で保存されることを特徴とする請求項1から24のいずれか一項に記載のプロシージャ。
  26. 埋め込み式プラットフォームは、プログラマにより作成された少なくとも1つのアプリケーションを保存しかつ実行することが可能なプログラム可能環境を有し、その通信機能が標準ISO7816で定義されるAPDUフォーマットと互換性をもつことを特徴とする請求項1から25のいずれか一項に記載のプロシージャ。
  27. 受信したオブジェクトについてのデシリアライゼーションおよび処理のオペレーションは、構造化オブジェクトの受信を指示する少なくとも1つのデータ項目を含んだ少なくとも1つのAPDUフォーマットコマンドを受信することによって起動されることを特徴とする請求項26に記載の変換プロシージャ。
  28. 埋め込み式プラットフォームはJavaCard(登録商標)標準と互換性があるプログラム可能環境を有していることを特徴とする請求項1から27のいずれか一項に記載のプロシージャ。
  29. ホストまたは埋め込み式プラットフォーム上で実行されるアプリケーションの少なくとも1つは、Java(登録商標)言語でプログラムされていることを特徴とする請求項1から28のいずれか一項に記載のプロシージャ。
  30. データ読み取り、データ書き込み、デシリアライゼーションまたはシリアライゼーションのプロシージャがホストまたは埋め込み式プラットフォーム内に保存された少なくとも1つのクラス内の実装によって実行され、前記実装は、
    オブジェクトに対するシリアライゼーションプロシージャを利用し、続いてデータ書き込みプロシージャおよびデシリアライゼーションプロシージャによって、構造化オブジェクト(31)を埋め込み式プラットフォームの少なくとも1つのエージェント(221)に送信するオブジェクト書き込みコマンドと、
    シリアライゼーションプロシージャを利用し、続いてデータ読み取りプロシージャおよびデシリアライゼーションプロシージャによって、埋め込み式プラットフォームの少なくとも1つのエージェント(221)から構造化オブジェクト(41)を読み取るオブジェクト読み取りコマンドと、
    このコンポーネントの構造の解析後に、前記オブジェクトの各コンポーネントに割り当てられたメモリ空間の解放またはデアロケーションについての保存ステップを含む、シリアライゼーションプロシージャを利用することにより、埋め込み式プラットフォーム内に保存された構造化オブジェクトについてのデアロケーションコマンドと、
    所与の線形データシーケンスから非実体的コンテンツを有するオブジェクトを作成するためにデシリアライゼーションプロシージャを利用して、構造化オブジェクトによって解放されたメモリ空間についてのハウスキーピングまたは消去コマンドと、
    この同じオブジェクトを表す線形データシーケンスを作成するために、前記ソースオブジェクトをデアロケーションすることなく、シリアライゼーションプロシージャを利用し、次いで、そのコンテンツがソースオブジェクトのコンテンツと同一である別の構造化オブジェクトを作成するために、前記線形データシーケンスからのデシリアライゼーションプロシージャを利用することにより、ソースオブジェクトと呼ばれる構造化オブジェクトについての複製コマンドと、
    のうちの少なくとも1つを含むことを特徴とする請求項1から29のいずれか一項に記載のプロシージャ。
  31. 埋め込み式プラットフォームのプログラミング言語は、APDUメッセージを受信するとアプリケーション内でユーザ定義可能なプロセスを起動するProcessAPDU抽象メソッドを記述している第1のクラス(IOApplet)を含み、そのプログラムコードは、第1のクラス(IOApplet)を継承する第2のクラス(ObjectIOApplet)内で、前記ProcessABDU抽象メソッドの実装として、前記埋め込み式プラットフォーム内に保存されている埋め込み式プラットフォーム内のデシリアライゼーションオペレーションを実行し、前記プログラムコードはProcessObjectメソッドをコールし、それはこの同じ実施クラス(ObjectIOApplet)内の1つの抽象メソッドとして記述されることを特徴とする請求項30に記載のプロシージャ。
  32. 埋め込み式プラットフォームのプログラミング言語は、APDUフォーマットのメッセージをホストに送信するSendAPDUメソッドを記述している第1のクラス(IOApplet)を含んでおり、このプログラムコードは、前記第1のクラス(IOApplet)を継承する第2のクラス(ObjectIOApplet)内で、SendAPDUメソッドをコールする少なくとも1つのSendObjectメソッドの実装として、保存されている埋め込み式プラットフォーム内でシリアライゼーションオペレーションを実行することを特徴とする請求項(Javacard)に記載のプロシージャ。
  33. 埋め込み式プラットフォーム内で保存されるか又は実行されるカードエージェントと呼ばれる少なくとも1つのソフトウェアエージェントと、AAA−MOMタイプソフトウェアインフラストラクチャに従って非同期のメッセージによって通信するコンピュータネットワークに属する少なくとも1つのホスト内で保存されるか又は実行されるカードエンジンプロキシエージェントと呼ばれる少なくとも1つのソフトウェアエージェントと、の間の通信のために使用されており、前記カードエンジンプロキシエージェントは前記ネットワークの別のエージェントとの通信においてカードエージェントについての媒介として動作し、前記エージェントは、前記ソフトウェアインフラストラクチャの仕様に従って動作しかつ少なくとも1つの分散式アプリケーションに属することを特徴とする請求項1から32のいずれか一項に記載のプロシージャ。
  34. 埋め込み式プラットフォームと呼ばれるコンピュータステーション(2)を備えており、1つまたは複数の線形データシーケンスの形式で端末との情報の交換が可能な、少なくとも1つのプロセッサ、記憶設備および通信リソースを含む携帯オブジェクトを備えるコンピュータシステムであって、このプラットフォームは、一方で線形データシーケンス配置と、他方でオブジェクト指向のプログラミング言語の基準に従って構造化または階層化された1つまたは複数のソフトウェアオブジェクトを記述または表現している構造化配置との間で、ある方向または他の方向へのデータセットの変換ステップを実行することが可能なシリアライゼーションエージェント(212)を組み込んでいることを特徴とするコンピュータシステム。
  35. 埋め込み式プラットフォーム(2)は、
    埋め込み式プラットフォーム内に保存された宛先ソフトウェアエージェント(221)についての応答機能(201)によって受信された、1つまたは複数の線形データシーケンスに配置されてたデータセット(32)を宛先エージェント(221)の代わりに受信し、
    前記データセットを、オブジェクト指向のプログラミング言語の基準に従って構造化または階層化された、少なくとも1つのソフトウェアオブジェクト(34)に変換し、
    前記構造化ソフトウェアオブジェクト(34)を宛先エージェント(221)に送信し、前記オブジェクトに従って前記宛先エージェント(221)によってプロセス(2210)の実行を起動する、
    ことを行うことが可能な通信エージェント(211)を含むことを特徴とする請求項34に記載のシステム。
  36. 構造化ソフトウェアオブジェクトを表す線形データシーケンスは、入力または出力ストリームで埋め込み式プラットフォーム内に保存されており、埋め込み式プラットフォームは、入力ストリームによって表される1つまたは複数の構造化オブジェクトを埋め込み式プラットフォーム内で作成すること、すなわち前記構造化オブジェクトをデシリアライゼーションすること、あるいは送信される1つまたは複数の構造化オブジェクトを表すデータを出力ストリーム内に書き込むこと、すなわち前記構造化オブジェクトをシリアライゼーションすることが可能な、シリアライゼーションエージェント(212)と呼ばれるソフトウェアエージェントを組み込んでいることを特徴とする請求項34から35のいずれか一項に記載のシステム。
  37. 入力ストリームまたは出力ストリームは、1つまたは複数の循環式メモリ構造の形式で保存されていることを特徴とする請求項34から36のいずれか一項に記載のシステム。
  38. シリアライゼーションエージェント(212)は、タイプスタックと呼ばれるメモリスタックを使用し、シリアライズまたはデシリアライズされる構造化オブジェクトの構造のすべてまたは一部を構成している少なくとも1つのオブジェクトのタイプを保存し、前記タイプスタックは、最も間近にロードされたメモリ位置が読み取られかつ消去されるまでそのいずれにもアクセスできないメモリ位置を含むことを特徴とする請求項34から37のいずれか一項に記載のシステム。
  39. 入力または出力ストリーム内に含まれるデータは、その各々が前記線形データシーケンスをデシリアライゼーションした際に実行される所与のアクションを表しているタグの組を備えるコードを用いて1つまたは複数の構造化オブジェクトを表すことを特徴とする請求項34から38のいずれか一項に記載のシステム。
  40. 少なくとも1つのタグは、
    線形データシーケンスによって表された構造化オブジェクトの構造に新たなエレメントを追加するアクションと、
    構造化オブジェクトを構成するエレメントのすべてまたは一部分の値のソースとして、ソースオブジェクトと呼ばれるエレメントまたはオブジェクトを参照するアクションと、
    後続の1つまたは複数のデータ項目が構造化オブジェクトを構成するエレメントのコンテンツを表していることを指示するアクションと、
    構造化オブジェクトを構成するエレメントについてのコンテンツが存在しないことを指示するアクションと、
    のうちの1つを表すように定義されることを特徴とする請求項34から39のいずれか一項に記載のシステム。
  41. 埋め込み式プラットフォームは標準ISO7816に従いかつAPDUフォーマットコマンドを用いて動作する携帯オブジェクトを含むことを特徴とする請求項34から40のいずれか一項に記載のシステム。
  42. 埋め込み式プラットフォーム内に保存された少なくとも1つのエージェントまたはアプリケーションは、Java(登録商標)言語でプログラムされており、埋め込み式プラットフォームはJavaCard(登録商標)標準に従ったコンピュータ環境を有することを特徴とする請求項34から41のいずれか一項に記載のシステム。
  43. ホスト内、埋め込み式プラットフォーム内、あるいはこの両者内に、
    ホスト内において前記構造化オブジェクトをデータストリームにシリアライゼーションさせ、続いてこのデータストリームを埋め込み式プラットフォームに送信し、埋め込み式プラットフォーム内において前記データストリームを構造化オブジェクトにデシリアライゼーションすることによって、カードの少なくとも1つのエージェント(221)へ構造化オブジェクト(31)を送信する、オブジェクト書き込みコマンドと、
    埋め込み式プラットフォーム内において前記構造化オブジェクトをデータストリームにシリアライゼーションし、続いて埋め込み式プラットフォームから前記データストリームを受信し、ホスト内において前記データストリームを構造化オブジェクトにデシリアライゼーションすることによって、カードの少なくとも1つのエージェント(221)から構造化オブジェクト(41)を読み取る、オブジェクト読み取りコマンドと、
    前記コンポーネントの構造の解析後に、構造化オブジェクトの各コンポーネントに割り当てられたメモリ空間の解放またはデアロケーションを含むオプションに従って前記オブジェクトをシリアライゼーションすることにより、埋め込み式プラットフォーム内に保存された構造化オブジェクトについてのデアロケーションコマンドと、
    非実体的コンテンツを伴うオブジェクトを作成するために、所与の線形データシーケンスをデシリアライゼーションすることにより、埋め込み式プラットフォーム内の構造化オブジェクトによって解放されたメモリ空間についてのハウスキーピングまたは消去コマンドと、
    ソースオブジェクトのデアロケーションなしに同じオブジェクトを表している線形データシーケンスにシリアライゼーションし、続いてそのコンテンツがソースオブジェクトのコンテンツと同一であるような別の構造化オブジェクトに前記線形データシーケンスからデシリアライゼーションすることによって、埋め込み式プラットフォーム内においてソースオブジェクトと呼ばれる構造化オブジェクトを複製するコマンドと、
    のうちの少なくとも1つを実装している少なくとも1つのソフトウェアクラスを含むことを特徴とする請求項34から42のいずれか一項に記載のシステム。
  44. 埋め込み式プラットフォームは、AAA−MOMタイプソフトウェアインフラストラクチャに従って非同期のメッセージによって通信しているコンピュータネットワークに属する少なくとも1つのホストと通信しており、前記ホストは前記埋め込み式プラットフォームと前記ネットワークの別のエージェントの間の通信を管理することが可能な、カードエンジンプロキシエージェントと呼ばれる、ソフトウェアエージェントを含み、前記エージェントは、前記ソフトウェアインフラストラクチャの仕様に従って動作し、少なくとも1つの分散式アプリケーションに属することを特徴とする請求項34から43のいずれか一項に記載のシステム。
JP2003572003A 2002-02-28 2003-02-26 構造化ソフトウェアオブジェクトについての反復式シリアライゼーションプロシージャ Pending JP2005519376A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0202570A FR2836568A1 (fr) 2002-02-28 2002-02-28 Procede iteratif de serialisation d'objets logiciels structures
PCT/IB2003/000763 WO2003073390A2 (en) 2002-02-28 2003-02-26 Iterative serialisation procedure for structured software objects

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2009182071A Division JP2009289272A (ja) 2002-02-28 2009-08-05 構造化ソフトウェアオブジェクトについての反復式シリアライゼーションプロシージャ

Publications (1)

Publication Number Publication Date
JP2005519376A true JP2005519376A (ja) 2005-06-30

Family

ID=27676188

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2003572003A Pending JP2005519376A (ja) 2002-02-28 2003-02-26 構造化ソフトウェアオブジェクトについての反復式シリアライゼーションプロシージャ
JP2009182071A Pending JP2009289272A (ja) 2002-02-28 2009-08-05 構造化ソフトウェアオブジェクトについての反復式シリアライゼーションプロシージャ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2009182071A Pending JP2009289272A (ja) 2002-02-28 2009-08-05 構造化ソフトウェアオブジェクトについての反復式シリアライゼーションプロシージャ

Country Status (6)

Country Link
EP (1) EP1481377A2 (ja)
JP (2) JP2005519376A (ja)
CN (1) CN1301462C (ja)
AU (1) AU2003207871A1 (ja)
FR (1) FR2836568A1 (ja)
WO (1) WO2003073390A2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007004608A (ja) * 2005-06-24 2007-01-11 Fuji Xerox Co Ltd 連携処理システム及び装置及び方法
JP2007532998A (ja) * 2004-04-09 2007-11-15 マイクロソフト コーポレーション フラグメントベースのシリアライゼーションのシステムおよび方法
JPWO2020158347A1 (ja) * 2019-01-30 2021-09-09 日本電信電話株式会社 情報処理装置、方法およびプログラム

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8086660B2 (en) * 2004-05-21 2011-12-27 Ixia Distributed data model
EP2575036A1 (en) * 2011-09-30 2013-04-03 Gemalto SA Method for processing application data and corresponding first device
CN109739654B (zh) * 2018-08-10 2022-09-09 比亚迪股份有限公司 消息中间件及消息传输方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2677309B2 (ja) * 1989-07-19 1997-11-17 富士通株式会社 大規模知識データベースにおける領域管理方式
US6496871B1 (en) * 1998-06-30 2002-12-17 Nec Research Institute, Inc. Distributed agent software system and method having enhanced process mobility and communication in a computer network
US6754886B1 (en) * 1998-11-30 2004-06-22 International Business Machines Corporation Method and system for storing java objects in devices having a reduced support of high-level programming concepts
US6547150B1 (en) * 1999-05-11 2003-04-15 Microsoft Corporation Smart card application development system and method
DE19933584A1 (de) * 1999-07-17 2001-01-18 Ibm Verfahren zur kompakten Darstellung von Informationspaketen und deren Speicherung oder Übertragung
US6477701B1 (en) * 1999-09-30 2002-11-05 Seiko Epson Corporation Version-adaptive serialization and deserialization of program objects in an object-oriented environment
FR2805059A1 (fr) * 2000-02-10 2001-08-17 Bull Cp8 Procede de chargement d'une piece de logiciel dans une carte a puce, notamment du type dit "applet"
JP2001290785A (ja) * 2000-04-04 2001-10-19 Yokogawa Electric Corp Orbシステム及びエージェントシステムの構築方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007532998A (ja) * 2004-04-09 2007-11-15 マイクロソフト コーポレーション フラグメントベースのシリアライゼーションのシステムおよび方法
JP2007004608A (ja) * 2005-06-24 2007-01-11 Fuji Xerox Co Ltd 連携処理システム及び装置及び方法
JPWO2020158347A1 (ja) * 2019-01-30 2021-09-09 日本電信電話株式会社 情報処理装置、方法およびプログラム
JP7025104B2 (ja) 2019-01-30 2022-02-24 日本電信電話株式会社 情報処理装置、方法およびプログラム

Also Published As

Publication number Publication date
FR2836568A1 (fr) 2003-08-29
WO2003073390A2 (en) 2003-09-04
JP2009289272A (ja) 2009-12-10
AU2003207871A8 (en) 2003-09-09
WO2003073390A8 (en) 2005-04-07
CN1643552A (zh) 2005-07-20
WO2003073390A3 (en) 2003-12-31
CN1301462C (zh) 2007-02-21
EP1481377A2 (en) 2004-12-01
AU2003207871A1 (en) 2003-09-09

Similar Documents

Publication Publication Date Title
US5864864A (en) Method and apparatus for providing transparent persistent data support to foreign data types
US6083279A (en) Platform independent technique for transferring software programs over a network
CA2267477C (en) Packaging memory image files
US7158995B2 (en) Method for managing pointers to external objects in a run-time environment
EP0677943A2 (en) A communications system for exchanging data between computers in a network
US7444619B2 (en) Inter-process communication using different programming languages
JP2009289272A (ja) 構造化ソフトウェアオブジェクトについての反復式シリアライゼーションプロシージャ
JPH1040087A (ja) ソフトウェア工学で使われるデータモデルの取り扱い方法
JP2000514944A (ja) オブジェクト指向プログラミング言語のためのハードウェア加速器
CN111176791B (zh) 一种基于多虚拟机区块链平台跨虚拟机调用方法
US10452409B2 (en) Universal adapter for native calling
JP2008165340A (ja) 遠隔手続呼出方式
CN114398191A (zh) 远程服务调用方法、系统、计算机设备及存储介质
KR100654428B1 (ko) 자바 프로그램의 처리 속도를 향상시키는 시스템 및 그 방법
JP2005063449A (ja) オブジェクトからオブジェクトへのJavaネイティブインタフェースマッピングの方法及び装置
CN114116134A (zh) 智能合约部署和执行方法、设备及存储介质
US20100174717A1 (en) Interative serialisation procedure for structured software objects
US6829761B1 (en) Method and apparatus for managing shared memory in a run-time environment
US7096467B2 (en) Initialization of Java classes in Java virtual machine environments
CN113312031B (zh) 一种软件通信体系结构的命名服务接口
JP3881704B2 (ja) クライアント側スタブインタプリタ
US8527968B2 (en) Translation device, translation method, and storage medium for program
CN112698912A (zh) 一种Java Card虚拟机运行环境及内存管理方法
CN112650512A (zh) 硬件驱动方法及装置、终端、存储介质
Navas et al. Reconciling run-time evolution and resource-constrained embedded systems through a component-based development framework

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080902

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081126

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081203

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090226

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090407