JP2002539556A - オブジェクトグラフの固定性における冗長除去 - Google Patents

オブジェクトグラフの固定性における冗長除去

Info

Publication number
JP2002539556A
JP2002539556A JP2000605890A JP2000605890A JP2002539556A JP 2002539556 A JP2002539556 A JP 2002539556A JP 2000605890 A JP2000605890 A JP 2000605890A JP 2000605890 A JP2000605890 A JP 2000605890A JP 2002539556 A JP2002539556 A JP 2002539556A
Authority
JP
Japan
Prior art keywords
statement
temporary
serialized form
serialized
object graph
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
JP2000605890A
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 JP2002539556A publication Critical patent/JP2002539556A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4493Object persistence
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Image Generation (AREA)

Abstract

(57)【要約】 オブジェクトグラフを固定形式に増加するように直列化する方法およびシステム。オブジェクトグラフは、各々が1つあるいは複数のプロパティを有する一組のネストオブジェクトである。第1の環境のオブジェクトグラフは、一時直列化形式に直列化される。ほぼ同時に、一時直列化形式は、第2の環境へ読み込まれ、第2の環境で直並列変換される。一時形式から処理される具体化ステートメントを直並列変換することによって、オブジェクトグラフのコピーは、オブジェクトがデフォルト値を有する第2の環境で作成される。各オブジェクトに対して、第2の環境を変える一時直列化形式のステートメントだけが最終直列化形式で保持される。クラスのプロパティは、クラスの専用インプリメンテーションへの依存を避けるために公開APIによってアクセスされる。したがって、専用インプリメンテーションが時間に対して異なるプラットホームあるいは同じプラットホームにわたって異なる場合さえ、直列化形式は一般的にはなお直並列変換可能である。増分直列化は、いくつかの特別の場合を処理するようなエラー回復および機構を含む。

Description

【発明の詳細な説明】
【0001】 (技術分野) 本発明は、一般にコンピュータソフトウェアに関するものである。より詳細に
は、本発明は、オブジェクト指向コンポーネントの固定記憶に関するものである
【0002】 (背景技術) ソフトウェア設計においてモジュール性およびオブジェクト指向プログラミン
グパラダイムに関連した多数の長所がある。1つのこのような長所は再使用可能
なコンポーネントの使用である。JavaBeans(商標)は、オブジェクト
指向ソフトウェアコンポーネントモデルの1例である。JavaBeans(商
標)のような再使用可能コンポーネントは、アプリケーションを組み立てる際の
基本要素として使用できる。例えば、組み立てる人のツールは、アプリケーショ
ンの役目を果たすように一組のJavaBeans(商標)コンポーネントを一
緒に接続し、カスタマイズするために使用できる。この例では、JavaBea
ns(商標)は、ウィンドウズ(登録商標)のようなGUIエレメントおよびオ ブジェクトグラフで互いの内部にネストされ得るボタンを含み得る。再使用可能 コンポーネントは、さらにスタンドアロンアプリケーションと同じように使用す ることもできる。例えば、スプレッドシートを実行するJavaBeans(商 標)は、ウェブページあるいは他の適当なコンテナに埋め込むことができる。
【0003】 いかなる再使用可能コンポーネントシステムにおいても、固定形式のコンポー
ネントの記憶を行うことは重要である。再使用可能コンポーネントがオブジェク
ト指向言語で実現される場合、固定記憶は、直列化によって1つあるいは複数の
オブジェクトを実行時間形式あるいは一時的な形式から固定形式に変換する工程
を行うことができる。換言すると、直列化は、オブジェクトグラフが後で再構成
できるようにオブジェクトグラフの状態を記録する工程である。直列化は、再使
用可能コンポーネントばかりでなく、いかなるオブジェクトにもまた応用可能で
ある。
【0004】 直列化、すなわちJava(商標)言語によって提供されたデフォルトオブジ
ェクト直列化の1つの方式は、メモリの“スナップショット”を行うことによっ
てオブジェクトのグラフをバイトストリームに平坦化する。次にこのバイトスト
リームは、ファイルのような1つあるいは複数の固定コンテナに記憶される。そ
の後、バイトストリームは、直並列変換の工程によって活性Java(商標)言
語オブジェクトに再構成することができる。しかしながら、この方式にはたくさ
んの欠点がある。活性オブジェクトグラフのスナップショットは、クラスの公開
APIよりもむしろクラスの内部インプリメンテーションに結合される。この方
式は記憶する大量のデータも発生する。さらに、この方式によって発生されたデ
ータは、標準テキストエディタを使用して手動で編集できない2進フォーマット
にある。
【0005】 他の方式は、手で読み取り可能で、編集可能であるテキストフォーマットのオ
ブジェクトグラフを直列化することにある。例えば、この方式は、下記の高レベ
ル擬似コードに示されるように実行でき、それにおいて()を記述することによ
って発生される直列化出力テキストはJava(商標)言語ソースコードに基づ
いている。
【0006】 前述された方式は、オブジェクトのための全値、デフォルト値さえ記憶する。
オブジェクトの多数の値がデフォルト値である場合、よくあることだが、そのと
き大量の空間が効果的に消費される。
【0007】 直列化の他の方式は、クラスのデフォルト値を指定するメタデータを記憶する
ことによって直列化ファイルの空間を節約することにある。しかしながら、De
lphiおよびVisual Basicのようなシステムでは、この方式はプ
リミティブ値に対してのみ実行され、オブジェクトを含む値タイプに対して実行
されない。さらに、この方式は、デフォルト情報を2つの空間、すなわち直列化
メタデータおよび構成子に残す点でエラーを受けやすい。
【0008】 したがって、オブジェクトグラフを直列化する改良されたシステムおよび方法
を提供することが望ましい。
【0009】 (発明の開示) 上記に概略された問題は、オブジェクトグラフを固定形式に増加するように直
列化する方法およびシステムの様々な実施例によって主に解決される。一実施例
では、増分直列化は、Java(商標)バーチャルマシンおよびクラスライブラ
リのバージョン変更による堅牢性、手で標準テキストエディタを使用して編集可
能であるテキスト出力、直列化ファイルサイズを最少にするデフォルトの範囲の
広い使用、およびオブジェクトグラフのサイズと直線的に変わる性能を含む、前
述の方法より優れている多数の長所を提供する。本開示による直列化は、構成子
およびプロパティを有するいかなるオブジェクトにも応用されてもよい。
【0010】 オブジェクトグラフは一組のネストオブジェクトである。各オブジェクトは1
つあるいは複数のプロパティを有し、各プロパティは値を有する。1つの実施例
のプロパティ値はオブジェクトであってもよい。一実施例では、オブジェクトは
JavaBeans(商標)のような再使用可能コンポーネントである。一実施
例では、直列化は、オブジェクト指向Java(商標)プラットホームおよびオ
ブジェクト指向Java(商標)言語のリソースを使用して実行される。
【0011】 一実施例では、オブジェクトグラフは、第1の環境にある。第1の環境のオブ
ジェクトグラフは、例えば、並直列変換器内のメモリロケーションのような一時
直列化形式あるいは中間直列化形式に直列化される。この一時直列化形式あるい
は中間直列化形式は、2つの型のステートメント、すなわち新しいオブジェクト
を具体化するための第1の型のステートメント、および値をオブジェクトのプロ
パティに割当てる第2の型のステートメントを含む。直列化とほぼ同じ時間に、
この一時直列化形式あるいは中間直列化形式は、第1の環境の範囲外の第2の環
境で直並列変換(あるいは評価)される。一般的には、各オブジェクトは、具体
化ステートメントの直並列変換によって第2の環境で具体化される。一実施例で
は、具体化は、オブジェクトのクラスのための構成子の呼出しによって行われる
。構成子は、新しいオブジェクトを形成し、第2の環境のデフォルト値をオブジ
ェクトのプロパティに割当てる。このように、オブジェクトのコピーは、新しい
オブジェクトのプロパティがプロパティのデフォルト値を有する第2の環境で作
成される。
【0012】 オブジェクトが具体化された後、オブジェクトのための割当てステートメント
が調べられる。一実施例では、JavaBeans(商標)の内観関数は、オブ
ジェクトのプロパティのリストを生成するために使用される。ステートメント毎
に、可能性のある割当てステートメントは、第2の環境の状態に対して調べられ
る。第2の環境を変える一時直列化形式あるいは中間直列化形式の割当てステー
トメントだけが最終直列化形式に保持される。一実施例では、比較が、Java
(商標)で規定された“equals”方法を使用して各割当てステートメント
の左側および右側で行われる。比較し、恐らくプロパティ割当てを直列化した後
、オブジェクトの直並列変換は、第2の環境で割当ておよび/または他の操作を
実行することによって完了される。冗長割当てステートメントは、廃棄され、最
終直列化形式に保持されない。一実施例では、冗長具体化は同様に除かれる。
【0013】 クラスのプロパティは、クラスの専用インプリメンテーションへの依存を避け
るように公開APIによってアクセスされる。したがって、専用インプリメンテ
ーションが時間に対して異なるプラットホームあるいは同じプラットホームにわ
たって異なる場合さえ、直列化形式は一般的にはなお直並列変換可能である。一
実施例では、増分直列化は、いくつかの特別の場合を処理するようにエラー回復
および機構を含む。
【0014】 本発明の他の目的および長所は、詳細な説明を読み、添付図面を参照すると明
らかになる。
【0015】 本発明は様々な修正および代替形式に影響されやすいが、その特定の実施例は
、図面に例として示され、ここに詳細に記載されている。しかしながら、図面お
よびそれに対する詳細な説明は本発明を開示された特定の形式に限定することを
目的としないで、それどころか、この目的は添付された特許請求の範囲によって
規定される本発明の精神および範囲内の全ての変更、等価および代替を保護する
ことにある。
【0016】 (発明を実施するための最良の形態) 次に図面を参照すると、図1は、ここに記載されるような増分直列化を実行す
るのに適している典型的な汎用コンピュータシステム100の図である。コンピ
ュータシステム100は、少なくとも1つの中央処理装置(CPU)あるいはプ
ロセッサ102を含む。CPU102は、メモリ104および読み取り専用メモ
リ(ROM)106に結合される。メモリ104は、様々な種類の可能なメモリ
、例えば、ハードディスク記憶装置、フロッピー(登録商標)ディスク記憶装置 、リムーバブルディスク記憶装置、あるいはランダムアクセスメモリ(RAM) を示している。図1に示されるように、一般的には、メモリ104は、双方向の アクセスを可能にする。つまりこのメモリ104は、読み出し可能で、書き込み 可能である。一方、ROM106は読み取り可能であるが、書き込み可能でない 。メモリ104および/またはROM106は、下記に詳述される直列化システ ムおよび方法の全部あるいは一部を実行する命令および/またはデータを記憶し てもよく、メモリ104および/またはROM106は、命令および/またはデ ータをインストールするために使用されてもよい。複数の実施例において、コン ピュータシステム100は、デスクトップコンピュータ、ラップトップコンピュ ータ、パームトップコンピュータ、ネットワークコンピュータ、パーソナルディ ジタルアシスタント(PDA)、埋め込み装置、スマート電話、あるいは任意の 他の適当な計算装置を含んでもよい。
【0017】 CPU102は、ネットワーク108に結合されてもよい。このネットワーク
108は、様々な種類の可能なネットワーク、例えば、ローカルエリアネットワ
ーク(LAN)、ワイドエリアネットワーク(WAN)、あるいはインターネッ
トを示す。ここに記載されているような増分直列化は、したがって、1つあるい
は複数のネットワーク108を介して複数の異種型あるいは同種型ネットワーク
コンピュータシステム100で実行されてもよい。CPU102は、ネットワー
ク108を介してここに記載されているような直列化を実行する命令および/ま
たはデータを得てもよい。
【0018】 入出力バス110を介して、CPU102は、ビデオモニタあるいは他のディ
スプレイ、トラックボール、マウス、キーボード、マイク、タッチセンサーディ
スプレイ、磁気テープリーダ、紙テープリーダ、スタイラス、音声認識装置、手
書き認識器、プリンタ、プロッタ、スキャナ、および入力および/または出力の
ための任意の他の装置を含んでもよいが、これに限定されない1つあるいは複数
の入出力装置にも結合されてもよい。CPU102は、入出力バス110を介し
てここに記載されているような直列化を実行する命令および/またはデータを得
てもよい。
【0019】 増分直列化を実行する際に、コンピュータシステム100は、1つあるいは複
数のコンピュータプログラムを実行する。このコンピュータプログラムは、メモ
リ104および/またはROM106のようなメモリ媒体あるいは記憶媒体に記
憶されるかあるいはネットワーク108あるいはI/Oバス110を介してCP
U102に供給されてもよい。
【0020】 下記にさらに詳述されるように、コンピュータシステム100は、オブジェク
トグラフをコンパクトな固定形式に増分するように直列化するシステムおよび方
法を実行する。ここに使用されるように、直列化は、1つあるいは複数のオブジ
ェクトを実行時間形式あるいは一時形式からオブジェクトを再構成できる固定形
式に変換する工程である。ここに使用されるように、直並列変換は、1つあるい
は複数のオブジェクトを固定形式から実行時間形式あるいは一時形式に再構成あ
るいは再形成する工程である。ここに使用されるように、オブジェクトグラフは
、1つあるいは複数のネストオブジェクトの任意のセットである。
【0021】 一実施例ではここに記載されているような増分直列化を実行するために使用さ
れるJava(商標)言語は、関連技術の説明で前述されるデフォルトオブジェ
クト直列化方法をサポートする。一実施例による改良された直列化は、Java
(商標)バーチャルマシンおよびクラスライブラリのバージョン変更による堅牢
性、手で標準テキストエディタを使用して編集可能であるテキスト出力、直列化
ファイルサイズを最少にするデフォルトの範囲の広い使用、およびオブジェクト
グラフのサイズと直線的に変わる性能を含むが、これに限定されないデフォルト
Java(商標)方法を含む前述の方法より優れている多数の長所を提供する。
ここに記載されているような増分直列化は、構成子およびプロパティを有するい
かなるオブジェクトにも応用可能であってもよい。
【0022】 図2は、一実施例による直列化方法を示すフローチャートである。一実施例で
は、直列化方法は、オブジェクトグラフでオブジェクト毎に進む。ステップ20
1では、したがって、第1の環境の第1のオブジェクトは開始オブジェクトであ
る。換言すると、関心のある最初のオブジェクトは、第1のオブジェクトである
。一実施例では、オブジェクト間の関係がコンテナ船の関係である場合、第1の
オブジェクトは一般的には最も外部のコンテナである。例えば、直列化されるオ
ブジェクトグラフがウィンドウのような再使用可能コンポーネントである場合、
第1のオブジェクトは、ウィンドウに含まれたオブジェクトよりもむしろ最も外
部コンテナ、つまりウィンドウオブジェクトそのものである。第1の環境は、第
1のオブジェクトがある環境あるいは範囲である。
【0023】 ステップ203では、第2の環境が作成される。一実施例の第2の環境は、第
1の環境と別個であり、第1の環境のオブジェクトグラフに対してユーザによっ
て行われたいかなる変更にも束縛されない。換言すると、第2の環境は第1の環
境の範囲外にある。一実施例では、第2の環境は後述されるようなステップ20
7の第1の繰り返しで作成される。一実施例では、第2の環境はハッシュテーブ
ルである。
【0024】 ステップ205では、このオブジェクトを直列化する直列化出力テキストが作
成される。換言すると、オブジェクトが後で再構成できるようにこのオブジェク
トおよびオブジェクトのプロパティを固定形式で記述するテキストが作成される
。一実施例では、直列化出力テキストは、2つの異なる形式のステートメント、
すなわち、第1の形式のステートメント、すなわち新しいオブジェクトを具体化
する具体化ステートメント、および第2の形式のステートメント、値をオブジェ
クトのプロパティに割り当てる割当てステートメントを含む。ステップ205の
第1の繰り返しにおいて、直列化オブジェクトは第1のオブジェクトである。
【0025】 一実施例では、ステップ205で作成された直列化出力テキストは、一時直列
化形式あるいは中間直列化形式に記述される。複数の実施例では、直列化形式は
、出力ストリーム、直列化方法の内部のメモリロケーション、メモリ媒体に記憶
されたファイル、あるいは他の適当な形式を含んでもよい。複数の実施例では、
テキストは、Java(商標)言語ソースコード、XML(Extensibl
e Markup Language)、あるいはいかなる他の適当なフォーマ
ットのようなソースコードで表現できる。
【0026】 ステップ207では、ステップ205で生成された直列化出力テキストの一部
は、このオブジェクトのクラスの新しいオブジェクトを作成することによって第
2の環境で直並列変換される。一実施例では、ステートメントもしくは新しいオ
ブジェクトの具体化を生じるステートメントは第2の環境で直並列変換される。
一実施例では、オブジェクトのクラスのための構成子は呼出され、新しいオブジ
ェクトは第2の環境でこのように具体化される。新しいオブジェクトのプロパテ
ィは、構成子によって割当てられるようなデフォルト値を有する。換言すると、
ステップ207では、このオブジェクトは第2の環境のオブジェクトのデフォル
ト値で再構成される。ステップ207の第1の繰り返しにおいて、第1のオブジ
ェクトが具体化される。一実施例では、第2の環境はステップ203でなくて、
むしろ第1のオブジェクトが具体化される場合にステップ207の第1の繰り返
しで作成される。
【0027】 ステップ209では、このオブジェクトに対するプロパティ割当てのための直
列化出力テキストが調べられ、第2の環境を変えるこれらの割当てステートメン
トだけが保持される。換言すると、単にデフォルト値をセットする割当ては一般
的には保持されない。一実施例では、割当てステートメントの左側および右側は
、第2の環境でにおいて1回に1割当てステートメントで比較される。割当ての
左側および右側が第2の環境で同一でない場合、割当てステートメントは最終直
列化形式に保持される。一方、2つの側が同一である場合、割当てステートメン
トは、最終直列化形式に保持されない。ステップ209は、しばしば大きな因数
により、冗長である任意のプロパティ割当てを最終直列化形式に保持されないこ
とによって直列化形式のサイズを減らすのに役立つ。後述される図3は、一実施
例によるこのステップをさらに示す。
【0028】 一実施例では、冗長具体化は、ここに述べられているように冗長割当てステー
トメントの除去と同様に最終直列化形式から除去される。この実施例では、第1
のオブジェクトは、やみくもに具体化されるが、連続オブジェクトは、具体化が
第2の環境を変えるならば、第2の環境で具体化だけされる。一実施例では、同
じクラスに属する適切なインスタンスが既に第2の環境にある場合、具体化が除
去される。このインスタンスの新しいコピーを形成する代わりに、元のコピーが
使用され、そのプロパティは同じ反復アルゴリズムを使用してセットされる。同
じクラスに属する適切なインスタンスが全然存在しない場合、新しいインスタン
スが第2の環境で具体化される。したがって、異なるクラスのインスタンスを生
成する具体化ステートメントだけは最終直列化形式に保持される。
【0029】 一実施例では、ステップ209で生成された最終直列化形式は、ステップ20
5で形成された一時あるいは中間直列化形式とは異なる新しい形式である。この
実施例では、非冗長ステートメントは、ステップ209に示されるように最終直
列化形式に新たに記述される。他の実施例では、ステップ205で形成された一
時直列化形式あるいは中間直列化形式は、ステップ209で参照される最終直列
化形式と同じ形式である。本実施例では、ステップ205で形成された全ステー
トメントは、直列化形式に記述され、次に、冗長ステートメントは、ステップ2
09に示されるように、直列化形式から削除される。
【0030】 ステップ211では、直並列変換は、式が最終直列化形式に現れるとき、第2
の環境で式の数値を求めることによって実行される。一実施例では、式は具体化
ステートメントおよび割当てステートメントである。
【0031】 ステップ213では、オブジェクトグラフの全オブジェクトが訪れられたかど
うかが決定される。一実施例では、ハッシュテーブルは、オブジェクトが直列化
方法で訪れられたメモリを保有するために使用される。全オブジェクトが訪ねら
れた場合、この方法は終了される。全オブジェクトが訪ねられなかった場合、次
に、ステップ215では、第1の環境のオブジェクトグラフの次のオブジェクト
は関心のあるオブジェクトを形成される。一実施例では、オブジェクトグラフは
、反復して横断される。次に、この次のオブジェクトはステップ205に戻るこ
とによって直列化される。
【0032】 図3は、所与のオブジェクトのためのプロパティの直列化をさらに示している
。図3は、図2のステップ209の詳細である。したがって、図3に示された方
法は、ステップ209と取り換えることができ、ステップ209の代わりに呼出
すことができる。図3の方法は、サブルーチン、関数、あるいは任意の他の適当
なプログラミング構成によって実行できる。
【0033】 図3のステップ231では、このオブジェクトのためのプロパティのリストは
得られる。一実施例では、オブジェクトグラフは、JavaBeans(商標)
のような複数の再使用可能コンポーネントを含み、Beans Introsp
ectorは、各クラスのためのプロパティのリストを生成するために使用され
る。Beans Introspectorは、JavaBeans(商標)に
よってサポートされたプロパティ、事象、方法を決定するJavaBeans(
商標)リソースである。オブジェクトのプロパティは、オブジェクトの専用のプ
ロパティ等を有してもよい。ここで使用されるように、“プロパティ”は、オブ
ジェクトのプロパティ、他のプロパティのプロパティ、オブジェクトグラフに存
在してもよい任意の他のプロパティを参照する。
【0034】 ステップ233では、第1のプロパティは調べられるプロパティである。ステ
ップ235では、このプロパティのための割当てステートメントは第2の環境で
調べられる。一実施例では、割当ての左側および右側は、ステップ209に対し
て前述されるように比較される。しばしば、第2の環境のプロパティは、オブジ
ェクトの構成子によって割当てられるようなデフォルト値を有する。ステップ2
37では、割当てステートメントの2つの側が等しいかどうかが決定される。換
言すれば、ステップ237では、ステートメントが直並列変換された場合、プロ
パティ割当てステートメントが第2の環境を変えるかどうかが決定される。一実
施例では、Java(商標)オブジェクトで規定された“equals”方法は
同等性の決定に使用される。一実施例では、プロパティ値はオブジェクトである
。“equals”方法の使用は、プリミティブ値および複合(例えばオブジェ
クト)値の両方を試験する等値を可能にする。
【0035】 割当ての2つの側が等しくない場合、ステップ239では、関連割当てステー
トメント(図2のステップ205で作成された)は最終直列化形式に保持される
。一方、2つの側が等しい場合、ステップ241では、このプロパティのための
割当てステートメントは最終直列化形式に保持されない。
【0036】 ステップ243では、オブジェクトの全プロパティが調べられたかどうかが決
定される。調べられた場合、制御の流れは、図3の方法が呼出される図2の方法
のロケーションに戻る。調べられなかった場合、ステップ245で、プロパティ
のリストの次のプロパティは関心のあるプロパティを形成され、この方法は、付
加プロパティおよび割当てステートメントを調べることができるようにステップ
235に戻る。
【0037】 クラスのインプリメンテーション従属内部詳細に頼るよりもむしろオブジェク
トの公開API(アプリケーションプログラミングインタフェース)によってオ
ブジェクトを作成し、変えることによって、一実施例による直列化は、Java
(商標)バーチャルマシンの異なるインプリメンテーションおよび内部クラスイ
ンプリメンテーションの変化の前後で堅牢性および信頼性のレベルに到達する。
クラスの公開APIが同じままである限り、直列化ファイルは、一般的にはクラ
スの内部インプリメンテーションのいかなる変化にもかかわらず、直並列変換可
能である。
【0038】 一実施例では、下記の関係を満たすのは有利なことである。インスタンス“i
”のプロパティ“p”が(Java(商標)言語に基づいた典型的なシンタック
スを使用するために)下記のように値“v”にセットした後、 i.p=v; 次に、インスタンス“i”のプロパティ“p”の値は、(Java(商標)言語
に基づいた典型的なシンタックスを使用するために)下記のように値“v”に等
しい。 v.equals(i.p)==true
【0039】 ここに記載された直列化システムおよび方法の一実施例の効果がある結果は、
等価関係が保持されるということである。換言すると、オブジェクトは、正確な
プロパティを割当てられ、ソース環境で共有されるオブジェクトは、結局ディス
ティネーション環境で共有されることになる。例えば、下記の入力ソースコード
(擬似Java(商標)言語で表現される)を考察する。
【0040】 一実施例による直列化の場合、上記の入力は下記の直列化出力を生じる。
【0041】 したがって、正確に同じプロパティを有するモデルに対する2つのリストは、
2つの異なるモデルを含む2つの異なるリストを生成するようにその構成子(“
new”)によって正確に具体化される。
【0042】 さらに入力ソースコードの第2の例を考察する: およびその付随の直列化出力:
【0043】 この第2の例では、直列化ファイルは、2つのリストが同じモデルを有してい
ることを示している。さらに、アルゴリズムは、第1のリストが既に正しい型式
のモデルを有しているので、第1のリストを同じモデルの新規のインスタンスと
取り換えるようにだけリスト、list1内部のモデルを廃棄する際に問題が全
然ないことを実現した。何か公開プロパティがある場合、このプロパティは構成
子によって作成されたモデルで設定できる。本例のように、少しも公開プロパテ
ィがない場合、Jlistに含まれたデフォルトモデルは、新たに具体化される
デフォルトモデルと区別できない。
【0044】 直列化形式が可能性のある将来の直並列変換において“分割する”ことを防止
するために、一実施例による直列化は下記のようにエラー処理を含む。書き込み
フェーズ中、第2の環境で値を設定している間、いかなる例外(すなわちエラー
)も見つける。例外が見られる場合、直列化ファイルへの気に障る割当ての送出
がスキップされる。したがって、直列化形式は、等しく構成された環境で直並列
変換される場合、同じエラーを生じない。さらに、入力ストリームは、ステート
メントの評価で見られるエラーを見つけるべきである。エラーが読み取り工程で
見られる場合、ステートメントは、廃棄され、評価は次のステートメントに対し
て続く。エラーを廃棄したステートメントが評価環境の値に名前を結合すること
を目的としている具体化であった場合、この変数は結合されないままにされる。
この変数に対するいかなる後の参照もエラーを廃棄し、それを参照したステート
メントをスキップする。
【0045】 一実施例では、直列化は、オブジェクト指向Java(商標)プラットホーム
およびオブジェクト指向Java(商標)言語のリソースを使用して実行される
。Java(商標)言語は、Gosling、JoyおよびSteele(Ad
dison‐Wesley,ISBN 0‐201‐63451‐1)によるJ
ava言語仕様に記載されている。Java(商標)言語はオブジェクト指向プ
ログラミング言語である。オブジェクト指向プログラミング言語では、データお
よび関連方法は、オブジェクトとして公知されるエンティティを形成するように
一緒に集めあるいはカプセル化できる。このオブジェクトはオブジェクト指向プ
ログラミングの基本要素である。オブジェクト内のデータ構造は、オブジェクト
の状態、オブジェクトの属性、オブジェクトのフィールド、あるいはオブジェク
トの変数とかわるがわる呼ばれてもよい。変数で操作する手順は、通常オブジェ
クトの方法としてJava(商標)で参照される。
【0046】 オブジェクト指向Java(商標)言語を使用するJava(商標)プラット
ホームは、複数の異なるオペレーティングシステムおよびハードウェアプラット
ホームで同じアプリケーションあるいはアプレットを与え、かつ実行するソフト
ウェアプラットホームである。Java(商標)プラットホームは、オペレーテ
ィングシステムおよびハードウェア上のソフトウェアのレイヤーのこれらの他の
プラットホームの上部にある。Java(商標)プラットホームは、2つの基本
部分、すなわちJava(商標)バーチャルマシン、およびJava(商標)ア
プリケーションプログラミングインタフェース(Java(商標)API)を有
する。Java(商標)APIは、複数のアプリケーションプログラミングイン
タフェース(API)とみなすことができる。Java(商標)APIは、Ja
va(商標)アプリケーションとJava(商標)バーチャルマシンとの間に一
組のプログラミングインタフェースを指定する。各々の根元的なプラットホーム
はJava(商標)バーチャルマシンのプラットホーム専用インプリメンテーシ
ョンを有するが、唯一つのバーチャルマシン仕様がある。Java(商標)バー
チャルマシン仕様は、LindholmおよびYellin(Addison‐
Wesley,ISBN 0‐201‐63452‐X)によるJavaバーチ
ャルマシン仕様に記載されている。Java(商標)アプリケーションおよびア
プレットが多数の異なる根元的な計算プラットホームにわたるJava(商標)
バーチャルマシンで実行できることによって、Java(商標)プラットホーム
は、Java(商標)アプリケーションおよびアプレットがJava(商標)プ
ラットホームが実行された任意のハードウェアで実行できる標準の均一プログラ
ミングインタフェースを提供できる。したがって、Java(商標)プラットホ
ームは、“一度書き込み、どこででも実行”機能を与えるように設計される。
【0047】 開発者は、Java(商標)で作動されるアプリケーションおよびアプレット
のためのソースコードを記述するためにJava(商標)言語およびJava(
商標)APIを使用する。開発者は、ソースコードを根元的なシステムの機械語
よりもむしろJava(商標)プラットホームに一回だけコンパイルする。Ja
va(商標)プログラムは、Java(商標)バーチャルマシン用のマシン命令
であるバイトコードにコンパイルする。Java(商標)言語で記述されたプロ
グラムは、Java(商標)プラットホームが任意の根元的なオペレーティング
システムおよび任意のハードウェアでJava(商標)プラットホームがある場
合いつも実行できるバイトコードファイルにコンパイルする。換言すると、同じ
Java(商標)アプリケーションあるいはアプレットは、Java(商標)プ
ラットホームを実行する任意の計算プラットホームで実行できる。したがって、
Java(商標)アプリケーションおよびアプレットは、1つの形式の機械語で
示され、Java(商標)プラットホームのソフトウェアによって特定の根元的
なコンピュータシステムで実行できる他の形式の機械語に変換される。
【0048】 一実施例による直列化がJava(商標)言語の一実施例で実行される場合、
いくつかの特別の場合が生じ得る。これらの例外の状況は、付加ステップを図2
および図3に関して議論されたアルゴリズムに付加することを必要とし得る。後
述された解決策は、クラスのインプリメンテーションを変えることを避けるので
、直列化システムおよびここに示された方法の公開APIへの信用を保つ。
【0049】 第1の特別の場合は、ゼロの構成子(すなわち、ゼロアーギュメントをとる構
成子)を有しないクラスのために生じ得る。このようなクラスの例は、カラー、
矩形、寸法、整数、ストリング、およびその構成子が少なくとも1つのアーギュ
メントを必要とする他のクラスを含んでもよい。この場合、直列化プログラムは
、構成子のパラメータを名前を付けられたプロパティとして指定するメタデータ
を記憶する。
【0050】 第2の特別の場合は、公開構成子、例えば方法、クラスおよびアレイを全然有
しないクラスに対して生じ得る。この場合、合成構成子は、公開構成子を有しな
いクラスのインスタンスを作成するために使用される。
【0051】 第3の特別の場合は、クラスの有用な状態の全てを標準プロパティとして表さ
ないクラス、例えばハッシュテーブル、コンテナ、アレイに対して生じ得る。こ
の場合、直列化は、公開状態を時には値としてのアレイを有する規則的なプロパ
ティとして表す合成プロパティを使用できる。
【0052】 第4の特別の場合は、副次的作用を有するオブジェクト、換言すると、オブジ
ェクトが作成される環境外の状態を変えるオブジェクトに対して生じ得る。この
状態はまれで、下記の例におけるようにJava(商標)のアブストラクトウィ
ンドウツールキットから生じ得る。
【0053】 副次的な作用は、新しいウィンドウが作成される度に静的変数が増分されると
いうことである。並直列変換器は、この割当てを注目し、プロパティが最初のプ
ロパティと同じであるようにプロパティをセットする。この特別の場合を処理す
る必要性を減らすために、オブジェクトのプロパティは、リストされ、最も多く
の副次的な作用から最も少ない副次的な作用の順に処理される。したがって、後
者のプロパティの多数の状態はファイルサイズを減らすためにスキップできる。
【0054】 増分直列化方法の1つの実施例はさらに、下記のように示されるJava(商
標)言語方法writeNode()で示されている。writeNode()
方法は、この方法に渡された(実行可能)式を使用し、この式を評価し、出力を
示す用語のリストにこの方法を加えるべきであるaddTerm()のインプリ
メンテーションを当てにする。この評価は、新しいオブジェクトを作成し、この
オブジェクトに名前(defineRepresentation)を割り当て
るかあるいは予め規定された式(setRepresentation)をプロ
パティに割り当てる。オブジェクトのプロパティを有するインスタンスは、de
fineRepresentationによって予め規定されたインスタンスで
あってもよいし、あるいはこのような項のgetRepresentation
である、のいずれかである。これによって、下記の型式のステートメントは、出
力で発生できる:具体化、例えば、 直接プロパティ割当て、例えば、 および一般プロパティ割当て、例えば、
【0055】 これらの式を評価するために、評価器は、プロパティを具体化し、設定し、プ
ロパティを得ることができなければならない。一実施例では、下記のように示さ
れたwriteNode()方法は、第1のアーギュメントとして具体化され、
第2のアーギュメントとしてヌルであるオブジェクトで最初に呼び出される: 専用オブジェクトwriteNode(Object node,Object
exp)をIOExceptionを廃棄する
【0056】 様々な実施例は、キャリア媒体の前述の記載に従って実行された命令および/
またはデータを受信することあるいは記憶することをさらに含む。適当なキャリ
ア媒体は、ネットワーク108あるいは無線リンクのような通信媒体を介して伝
達される電気信号あるいはディジタル信号と同様にディスクのような記憶媒体を
含む。
【0057】 本発明は特定の実施例に関して記載されたが、この実施例が図示され、本発明
の範囲がそのように限定されないことが分かる。記載された実施例のいかなる変
更、修正、付加および改良も可能である。これらの変更、修正、付加および改良
は上記の特許請求の範囲内で詳述されるような本発明の範囲内にあり得る。
【図面の簡単な説明】
【図1】 一実施例による増分直列化を実行するのに適しているコンピュータシステムの
図である。
【図2】 増分直列化の一実施例を示すフローチャートである。
【図3】 増分直列化の一実施例をさらに示すフローチャートである。
【手続補正書】特許協力条約第34条補正の翻訳文提出書
【提出日】平成13年4月10日(2001.4.10)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SL,SZ,TZ,UG,ZW ),EA(AM,AZ,BY,KG,KZ,MD,RU, TJ,TM),AE,AL,AM,AT,AU,AZ, BA,BB,BG,BR,BY,CA,CH,CN,C R,CU,CZ,DE,DK,DM,DZ,EE,ES ,FI,GB,GD,GE,GH,GM,HR,HU, ID,IL,IN,IS,JP,KE,KG,KP,K R,KZ,LC,LK,LR,LS,LT,LU,LV ,MA,MD,MG,MK,MN,MW,MX,NO, NZ,PL,PT,RO,RU,SD,SE,SG,S I,SK,SL,TJ,TM,TR,TT,TZ,UA ,UG,UZ,VN,YU,ZA,ZW

Claims (28)

    【特許請求の範囲】
  1. 【請求項1】 オブジェクトグラフを固定形式に直列化する方法であって、
    前記オブジェクトグラフが1つあるいは複数のオブジェクトを含み、各オブジェ
    クトは1つあるいは複数のプロパティを有し、各プロパティが関連値を有するも
    のにおいて、 前記オブジェクトグラフを一時直列化形式に直列化することであって、前記一
    時直列化形式が具体化ステートメントと割当てステートメントを含むことと、 前記一時直列化形式の前記具体化ステートメントを直並列変換し、前記オブジ
    ェクトグラフのコピーを形成することであって、前記オブジェクトグラフのコピ
    ーのプロパティが割当てられたデフォルト値であることと、 前記一時直列化形式の各ステートメントを調べ、各ステートメントが冗長であ
    るかどうかを決定し、 冗長でない各ステートメントを最終直列化形式に記述することとを含む、オブ
    ジェクトグラフを固定形式に直列化する方法。
  2. 【請求項2】 前記一時直列化形式の各ステートメントを調べ、各ステート
    メントが冗長であるかどうかを決定することが、前記一時直列化形式の各割当て
    ステートメントを調べ、各割当てステートメントが前記オブジェクトグラフのコ
    ピーを変えるかどうかを決定することをさらに含み、 冗長でない各ステートメントを前記最終直列化形式に記述することが、前記オ
    ブジェクトグラフのコピーを変える各割当てステートメントを前記最終直列化形
    式に記述することをさらに含む、請求項1記載の方法。
  3. 【請求項3】 前記一時直列化形式の各割当てステートメントを調べ、各割
    当てステートメントが前記オブジェクトグラフのコピーを変えるかどうかを決定
    することが、各割当てステートメントの左側を右側と比較することをさらに含む
    、請求項2記載の方法。
  4. 【請求項4】 前記一時直列化形式の各ステートメントを調べ、各ステート
    メントが冗長であるかどうかを決定することが、前記一時直列化形式の各具体化
    ステートメントを調べ、各具体化ステートメントが異なるクラスのインスタンス
    を発生するかどうかを決定することをさらに含み、 冗長でない各ステートメントを最終直列化形式に記述することが、異なるクラ
    スのインスタンスを発生する各具体化ステートメントを最終直列化形式に記述す
    ることをさらに含む、請求項1記載の方法。
  5. 【請求項5】 前記一時直列化形式の前記具体化ステートメントを直並列変
    換することが、前記一時直列化形式の前記オブジェクトの各々に関連したクラス
    のための構成子を呼出すことをさらに含み、 前記構成子を呼出すことが、前記クラスの新しいオブジェクトを具体化し、デ
    フォルト値を前記新しいオブジェクトの前記プロパティに割当てることをさらに
    含む、請求項1記載の方法。
  6. 【請求項6】 前記オブジェクトグラフのコピーの際に、前記最終直列化形
    式のステートメントを直並列変換することをさらに含む、請求項1記載の方法。
  7. 【請求項7】 前記プロパティの1つあるいは複数の値がオブジェクトであ
    る、請求項1記載の方法。
  8. 【請求項8】 前記オブジェクトが再使用可能なコンポーネントである、請
    求項1記載の方法。
  9. 【請求項9】 前記再使用可能なコンポーネントがJavaBeansであ
    る、請求項8記載の方法。
  10. 【請求項10】 オブジェクトグラフを固定形式に直列化するプログラム命
    令を含むキャリア媒体であって、前記オブジェクトグラフが1つあるいは複数の
    オブジェクトを含み、各オブジェクトが1つあるいは複数のプロパティを有し、
    各プロパティが関連値を有し、前記プログラム命令が、 前記オブジェクトグラフを一時直列化形式に直列化し、前記一時直列化形式が
    具体化ステートメントおよび割当てステートメントを含むこと、 前記一時直列化形式の前記具体化ステートメントを直並列変換し、前記オブジ
    ェクトグラフのコピーを形成することであって、前記オブジェクトグラフのコピ
    ーのプロパティが割当てられたデフォルト値であること、 前記一時直列化形式の各ステートメントを調べ、各ステートメントが冗長であ
    るかどうかを決定すること、 冗長でない各ステートメントを最終直列化形式に記述すること、 とを実行するように実行可能である、キャリア媒体。
  11. 【請求項11】 前記一時直列化形式の各ステートメントを調べ、各ステー
    トメントが冗長であるかどうかを決定することが、前記一時直列化形式の各割当
    てステートメントを調べ、各割当てステートメントが前記オブジェクトグラフの
    コピーを変えるかどうか決定することをさらに含み、 冗長でない各ステートメントを前記最終直列化形式に記述することが、前記オ
    ブジェクトグラフのコピーを変える各割当てステートメントを前記最終直列化形
    式に記述することをさらに含む、請求項10記載のキャリア媒体。
  12. 【請求項12】 前記一時直列化形式の各割当てステートメントを調べ、各
    割当てステートメントが前記オブジェクトグラフのコピーを変えるかどうか決定
    することが、各割当てステートメントの左側を右側と比較することをさらに含む
    、請求項11記載のキャリア媒体。
  13. 【請求項13】 前記一時直列化形式の各ステートメントを調べ、各ステー
    トメントが冗長であるかどうかを決定することが、前記一時直列化形式の各具体
    化ステートメントを調べ、各具体化ステートメントが異なるクラスのインスタン
    スを発生するかどうかを決定することをさらに含み、 冗長でない各ステートメントを最終直列化形式に記述することが、異なるクラ
    スのインスタンスを発生する各具体化ステートメントを最終直列化形式に記述す
    ることをさらに含む、請求項10記載のキャリア媒体。
  14. 【請求項14】 前記一時直列化形式の前記具体化ステートメントを直並列
    変換することが、前記一時直列化形式の前記オブジェクトの各々に関連したクラ
    スのための構成子を呼出すことをさらに含み、 前記構成子を呼出すことが、前記クラスの新しいオブジェクトを具体化し、デ
    フォルト値を前記新しいオブジェクトの前記プロパティに割当てることをさらに
    含む、請求項10記載のキャリア媒体。
  15. 【請求項15】 前記プログラム命令が、前記オブジェクトグラフのコピー
    の際に、前記最終直列化形式のステートメントを直並列変換することを実行する
    ようにさらに実行可能である、請求項10記載のキャリア媒体。
  16. 【請求項16】 前記プロパティの1つあるいは複数の値がオブジェクトで
    ある、請求項10記載のキャリア媒体。
  17. 【請求項17】 前記オブジェクトが再使用可能なコンポーネントである、
    請求項10記載のキャリア媒体。
  18. 【請求項18】 前記再使用可能なコンポーネントがJavaBeansで
    ある、請求項17記載のキャリア媒体。
  19. 【請求項19】 前記キャリア媒体が記憶媒体である、請求項10記載のキ
    ャリア媒体。
  20. 【請求項20】 オブジェクトグラフを固定形式に直列化するコンピュータ
    システムであって、前記オブジェクトグラフが1つあるいは複数のオブジェクト
    を含み、各オブジェクトが1つあるいは複数のプロパティを有し、各プロパティ
    が関連値を有するものにおいて、 CPUと、 前記CPUに結合されたシステムメモリと、 前記CPUに結合された固定メモリとを備え、 前記システムメモリが、前記CPUによって実行可能なプログラム命令を記憶
    し、前記プログラム命令が、 前記オブジェクトグラフを一時直列化形式に直列化し、前記一時直列化形式が
    具体化ステートメントおよび割当てステートメントを含み、 前記一時直列化形式の前記具体化ステートメントを直並列変換し、前記オブジ
    ェクトのコピーを形成し、前記オブジェクトグラフのコピーのプロパティが割当
    てられたデフォルト値であり、 前記一時直列化形式の各ステートメントを調べ、各ステートメントが冗長であ
    るかどうかを決定し、 冗長でない各ステートメントを最終直列化形式に記述するように実行可能であ
    る、コンピュータシステム。
  21. 【請求項21】 前記一時直列化形式の各ステートメントを調べ、各ステー
    トメントが冗長であるかどうかを決定する際に、前記プログラム命令が、前記一
    時直列化形式の各割当てステートメントを調べ、各割当てステートメントが前記
    オブジェクトグラフのコピーを変えるかどうかを決定するようにさらに実行可能
    であり、 冗長でない各ステートメントを前記最終直列化形式に記述する際に、前記プロ
    グラム命令が、前記オブジェクトグラフのコピーを変える各割当てステートメン
    トを前記最終直列化形式に記述するようにさらに実行可能である、請求項20記
    載のコンピュータシステム。
  22. 【請求項22】 前記一時直列化形式の各割当てステートメントを調べ、各
    割当てステートメントが前記オブジェクトグラフのコピーを変えるかどうか決定
    する際に、前記プログラム命令が、各割当てステートメントの左側を右側と比較
    するようにさらに実行可能である、請求項21記載のコンピュータシステム。
  23. 【請求項23】 前記一時直列化形式の各ステートメントを調べ、各ステー
    トメントが冗長であるかどうかを決定する際に、前記プログラム命令が、前記一
    時直列化形式の各具体化ステートメントを調べ、各具体化ステートメントが異な
    るクラスのインスタンスを発生するかどうかを決定するようにさらに実行可能で
    あり、 冗長でない各ステートメントを最終直列化形式に記述する際に、前記プログラ
    ム命令が、異なるクラスのインスタンスを発生する各具体化ステートメントを最
    終直列化形式に記述するようにさらに実行可能である、請求項20記載のコンピ
    ュータシステム。
  24. 【請求項24】 前記一時直列化形式の前記具体化ステートメントを直並列
    変換する際に、前記プログラム命令が、前記一時直列化形式の前記オブジェクト
    の各々に関連したクラスのための構成子を呼出すようにさらに実行可能であり、 前記構成子を呼出す際に、前記プログラム命令が、前記クラスの新しいオブジ
    ェクトを具体化し、デフォルト値を前記新しいオブジェクトの前記プロパティに
    割当てるように実行可能である、請求項20記載のコンピュータシステム。
  25. 【請求項25】 前記プログラム命令が、前記オブジェクトグラフのコピー
    の際に、前記最終直列化形式のステートメントを直並列変換することを実行する
    ようにさらに実行可能である、請求項20記載のコンピュータシステム。
  26. 【請求項26】 前記プロパティの1つあるいは複数の値がオブジェクトで
    ある、請求項20記載のコンピュータシステム。
  27. 【請求項27】 前記オブジェクトが再使用可能なコンポーネントである、
    請求項20記載のコンピュータシステム。
  28. 【請求項28】 前記再使用可能なコンポーネントがJavaBeansで
    ある、請求項27記載のコンピュータシステム。
JP2000605890A 1999-03-17 2000-03-16 オブジェクトグラフの固定性における冗長除去 Pending JP2002539556A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/271,049 1999-03-17
US09/271,049 US6301585B1 (en) 1999-03-17 1999-03-17 Redundancy elimination in the persistence of object graphs
PCT/US2000/007238 WO2000055727A2 (en) 1999-03-17 2000-03-16 Redundancy elimination in the persistence of object graphs

Publications (1)

Publication Number Publication Date
JP2002539556A true JP2002539556A (ja) 2002-11-19

Family

ID=23033986

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000605890A Pending JP2002539556A (ja) 1999-03-17 2000-03-16 オブジェクトグラフの固定性における冗長除去

Country Status (6)

Country Link
US (1) US6301585B1 (ja)
EP (1) EP1166204B1 (ja)
JP (1) JP2002539556A (ja)
AU (1) AU3898900A (ja)
DE (1) DE60002696D1 (ja)
WO (1) WO2000055727A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005011362A (ja) * 2003-06-19 2005-01-13 Microsoft Corp モジュラオブジェクトシリアライゼーションアーキテクチャ
JP2007538324A (ja) * 2004-05-20 2007-12-27 エスアーペー アーゲー ランタイムシステムにおけるオブジェクトを共有するためのプログラム、方法、装置

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US6625663B1 (en) * 2000-03-23 2003-09-23 Unisys Corp. Method for streaming object models that have a plurality of versioned states
US6877162B1 (en) * 2000-07-31 2005-04-05 Hewlett-Packard Company Method and system for extendable class-based shared data-types
US7096419B2 (en) * 2001-02-16 2006-08-22 Sas Institute Inc. System and method for object state persistence
US7120639B1 (en) * 2001-06-27 2006-10-10 Microsoft Corporation Pluggable formatters
US7191196B2 (en) * 2001-06-28 2007-03-13 International Business Machines Corporation Method and system for maintaining forward and backward compatibility in flattened object streams
US20030115363A1 (en) * 2001-12-06 2003-06-19 Yared Peter A. Method and apparatus for packaging a trimmed object graph
US7225161B2 (en) * 2001-12-21 2007-05-29 Schlumberger Omnes, Inc. Method and system for initializing a key management system
US7251635B2 (en) * 2002-02-25 2007-07-31 Schlumberger Omnes, Inc. Method and apparatus for managing a key management system
US7100159B2 (en) * 2002-11-04 2006-08-29 Hewlett-Packard Development Company, L.P. Method, apparatus and means for silently customizing software within a multi-platform environment
US7331042B2 (en) * 2002-12-21 2008-02-12 International Business Machines Corporation Fault-tolerant dynamic editing of GUI display and source code
CA2419904A1 (en) * 2003-02-26 2004-08-26 Ibm Canada Limited - Ibm Canada Limitee Version-insensitive serialization and deserialization of program objects
US7730446B2 (en) * 2003-03-12 2010-06-01 Microsoft Corporation Software business process model
US7577934B2 (en) * 2003-03-12 2009-08-18 Microsoft Corporation Framework for modeling and providing runtime behavior for business software applications
US7197512B2 (en) * 2003-03-26 2007-03-27 Microsoft Corporation Type bridges
US7404186B2 (en) * 2003-05-28 2008-07-22 Microsoft Corporation Signature serialization
US7386836B2 (en) * 2003-06-09 2008-06-10 International Business Machines Corporation Maintaining multiple valid concurrent serialized object versions
US7293254B2 (en) * 2003-09-18 2007-11-06 Microsoft Corporation Extensibility application programming interface and framework for meta-model objects
US20050081141A1 (en) * 2003-10-09 2005-04-14 Einfalt Ehf. Visual programming system and method
US7207002B2 (en) * 2003-11-13 2007-04-17 International Business Machines Corporation Serialization and preservation of objects
US7496932B2 (en) 2004-01-12 2009-02-24 International Business Machines Corporation Communicating with remote objects in a data processing network
US7730041B2 (en) * 2004-08-25 2010-06-01 Microsoft Corporation Data abstraction based serialization
US7890853B2 (en) * 2006-02-13 2011-02-15 Nextair Corporation Apparatus and machine-readable medium for generating markup language representing a derived entity which extends or overrides attributes of a base entity
US7958501B2 (en) * 2006-03-31 2011-06-07 Sap Ag System to disclose the internal structure of persistent database objects
US9311082B2 (en) * 2006-12-29 2016-04-12 Sap Se System and method for processing graph objects
US20100064234A1 (en) * 2007-03-09 2010-03-11 Ghost, Inc. System and Method for Browser within a Web Site and Proxy Server
US8396904B2 (en) * 2009-01-20 2013-03-12 Clausal Computing Oy Utilizing information from garbage collector in serialization of large cyclic data structures
US7952500B2 (en) * 2009-01-27 2011-05-31 Tatu Ylonen Oy Serialization of shared and cyclic data structures using compressed object encodings
US8359497B2 (en) 2010-06-18 2013-01-22 International Business Machines Corporation Determining the cause of serialization failures
US20130117326A1 (en) * 2011-11-08 2013-05-09 Microsoft Corporation External serialization and deserialization
US8954475B2 (en) * 2011-11-10 2015-02-10 Microsoft Technology Licensing, Llc Deep cloning of objects using binary format
US20130218933A1 (en) * 2012-02-20 2013-08-22 Microsoft Corporation Consistent selective sub-hierarchical serialization and node mapping
US8495659B1 (en) 2012-05-01 2013-07-23 International Business Machines Corporation Eliminating redundancy in instance data of different versioned classes in communication between object request brokers using a common class definition
US20140025691A1 (en) * 2012-07-20 2014-01-23 Adobe Systems Inc. Method and apparatus for dynamic filtering of an object graph in a content repository
US10437564B1 (en) 2016-09-16 2019-10-08 Software Tree, LLC Object mapping and conversion system
US10282217B2 (en) * 2017-07-12 2019-05-07 Change Healthcare Holdings, Llc Method, system and computer program product for object serialization and de-serialization
EP3983922A1 (en) 2019-06-14 2022-04-20 Ailia SA Method for the execution of an instance of a smart contract by means of a blockchain
IT201900008991A1 (it) * 2019-06-14 2020-12-14 Ailia Sa Metodo di esecuzione di uno smart contract
CN110362451B (zh) * 2019-07-17 2023-09-26 北京小米移动软件有限公司 一种监控方法、装置及介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5715447A (en) * 1991-08-06 1998-02-03 Fujitsu Limited Method of and an apparatus for shortening a lock period of a shared buffer
US5860009A (en) * 1994-04-28 1999-01-12 Kabushiki Kaisha Toshiba Programming method for concurrent programs and program supporting apparatus thereof
US5917422A (en) * 1997-07-10 1999-06-29 Ncr Corporation System and method of assigning an electronic serial number to a radio frequency device
US6012059A (en) * 1997-08-21 2000-01-04 Dataxel Corporation Method and apparatus for replicated transaction consistency

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005011362A (ja) * 2003-06-19 2005-01-13 Microsoft Corp モジュラオブジェクトシリアライゼーションアーキテクチャ
KR101159310B1 (ko) * 2003-06-19 2012-06-22 마이크로소프트 코포레이션 직렬화 방법 및 이 방법을 구현하는 컴퓨터 실행가능 명령어가 저장된 하나 이상의 컴퓨터 판독가능 저장 매체
JP2007538324A (ja) * 2004-05-20 2007-12-27 エスアーペー アーゲー ランタイムシステムにおけるオブジェクトを共有するためのプログラム、方法、装置
JP4791461B2 (ja) * 2004-05-20 2011-10-12 エスアーペー アーゲー ランタイムシステムにおけるオブジェクトを共有するためのプログラム、方法、装置

Also Published As

Publication number Publication date
WO2000055727A2 (en) 2000-09-21
EP1166204A2 (en) 2002-01-02
WO2000055727A3 (en) 2001-01-25
US6301585B1 (en) 2001-10-09
DE60002696D1 (de) 2003-06-18
AU3898900A (en) 2000-10-04
EP1166204B1 (en) 2003-05-14

Similar Documents

Publication Publication Date Title
JP2002539556A (ja) オブジェクトグラフの固定性における冗長除去
US10795660B1 (en) Live code updates
US7207002B2 (en) Serialization and preservation of objects
US6760905B1 (en) Lazy compilation of template-generated classes in dynamic compilation execution environments
US7039923B2 (en) Class dependency graph-based class loading and reloading
CN107924326B (zh) 对经更新的类型的迁移方法进行覆盖
US6877163B1 (en) Method and system for dynamic proxy classes
US20060190934A1 (en) Method and apparatus for inlining native functions into compiled Java code
US20060143227A1 (en) System and method for persisting software objects
US11782774B2 (en) Implementing optional specialization when compiling code
US7219341B2 (en) Code analysis for selective runtime data processing
US10346086B2 (en) Determining an age category for an object stored in a heap
US11477258B2 (en) Serialization of objects using multiple serialization algorithms
US10848410B2 (en) Ranking service implementations for a service interface
US7065743B2 (en) Apparatus and method for caching analyzed program information
US11288045B1 (en) Object creation from structured data using indirect constructor invocation
US6769119B1 (en) System, method, and computer program product for scoping operating system semantics in a computing environment supporting multi-enclave processes
US11599551B2 (en) Deserialization of stream objects using multiple deserialization algorithms
US20230350716A1 (en) Managing temporal dependencies between sets of foreign resources
Gibbons et al. Shadows: a type-safe framework for dynamically extensible objects
US20060218546A1 (en) Method and apparatus for situationally aware delivery of object instances to a client
Chan Adding Support for Parameterized Virtual Machines to the JR Concurrent Programming Language