JP2006185325A - アプリケーション・オブジェクトの再利用方法 - Google Patents

アプリケーション・オブジェクトの再利用方法 Download PDF

Info

Publication number
JP2006185325A
JP2006185325A JP2004380299A JP2004380299A JP2006185325A JP 2006185325 A JP2006185325 A JP 2006185325A JP 2004380299 A JP2004380299 A JP 2004380299A JP 2004380299 A JP2004380299 A JP 2004380299A JP 2006185325 A JP2006185325 A JP 2006185325A
Authority
JP
Japan
Prior art keywords
application
detecting
application object
change
reuse
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004380299A
Other languages
English (en)
Other versions
JP4144885B2 (ja
Inventor
Michiaki Tachibori
道昭 立堀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2004380299A priority Critical patent/JP4144885B2/ja
Priority to US11/321,357 priority patent/US20060150147A1/en
Publication of JP2006185325A publication Critical patent/JP2006185325A/ja
Priority to US12/169,397 priority patent/US8438557B2/en
Application granted granted Critical
Publication of JP4144885B2 publication Critical patent/JP4144885B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Abstract

【課題】 アプリケーションが用いるオブジェクトを再利用する方法であって、再利用するオブジェクトに変更が生じても、整合性、安全性に不具合が生じることなく再利用することが可能である、オブジェクトの再利用方法を提供することである。
【解決手段】 アプリケーション・プログラムがアプリケーション・オブジェクトの参照が終了したことを検出し、アプリケーション・プログラムにより、アプリケーション・オブジェクトの変更が行われることを検出し、アプリケーション・オブジェクトの変更を検出しないことに応答して、アプリケーション・オブジェクトの再利用をすることを決定し、参照が終了したこと、かつ、再利用をすることが決定されたことに応答して、アプリケーション・オブジェクトを再利用可能にする方法を提供する。
【選択図】 図1

Description

本発明は、例えば、構造化文章についてのアプリケーション・プログラムからの要求に対して生成されるアプリケーション・オブジェクトを再利用する方法に関する。さらに具体的には、1つ又は複数のアプリケーション・プログラムで使用されるアプリケーション・オブジェクトを、ミドルウェア等のソフトウェアにて制御し、再利用する方法に関する。
近年、情報の記述に構造化文章が用いられている。この構造化文章に対して、DOM(Document Object Model)、SDO(Service Data Object)、Bean等の構造を備えたオブジェクトを生成してアプリケーションに伝えることが行われる。この際に、アプリケーションは、一度生成したアプリケーション・オブジェクト(以下、「オブジェクト」)を再利用したい場合が頻繁に発生する。
このようなオブジェクトの再利用を実現するために、一度生成したオブジェクトをキャッシュしておくプログラミング技法は、Flyweightパターンとしても知られている。この技法では、アプリケーションからの、ある要求に対応するオブジェクトを何度も作り直すのではなく、同じオブジェクトを保持しておいて、アプリケーションに返す技法である。
Flyweightパターンをさらに、改良した方法として、XML文章解析した結果のDOMをキャッシュしておく方法が知られている(例えば、特許文献1)。この方法では、キャッシュしたオブジェクトの再利用は、読み出しに限られる。つまり、アプリケーション・サーバでキャッシュしておいたオブジェクトを、読み出す場合にのみ再利用させる。
特開2004−62716号公報
しかしながら、特許文献1の方法では、キャッシュしておいたオブジェクトを部分的に変更して再利用することができない。つまり、オブジェクトを再利用する際には、一度生成したオブジェクトを変形することなく、そのまま使用するのみならず、部分的に変更して再利用したい場合も頻繁に発生する。このような場合に特許文献1の方法では再利用することができない。
すなわち、再利用しているオブジェクトに対して、アプリケーションからの変更があった場合に、このオブジェクトを変更すると、もともと生成されたオブジェクトと異なるオブジェクトがキャッシュされてしまうため、オブジェクトの整合性、安全性に不安が生じる。すなわち、あるアプリケーションAが保持して参照しているオブジェクトを、他のアプリケーションBからの要求により、再利用して変更を行うと、アプリケーションAは、勝手に変更されたオブジェクトの構造や値を使用することになり、整合性、安全性に不具合が生じる。
本発明の目的は、アプリケーションが用いるオブジェクトを再利用する方法であって、再利用するオブジェクトに変更が生じても、整合性、安全性に不具合が生じることなく再利用することが可能である、オブジェクトの再利用方法を提供することである。
そこで、本発明者は、上記課題を解決するために鋭意研究を重ねた結果、
アプリケーション・プログラムに用いられるアプリケーション・オブジェクトを再利用する方法であって、
前記アプリケーション・プログラムが前記アプリケーション・オブジェクトの参照が終了したことを検出する参照検知段階と、
前記アプリケーション・プログラムにより、前記アプリケーション・オブジェクトの変更が行われることを検出する変更検出段階と、
前記アプリケーション・オブジェクトの変更を検出しないことに応答して、前記アプリケーション・オブジェクトの再利用をすることを決定する再利用決定段階と、
前記参照が終了したこと、かつ、前記再利用をすることが決定されたことに応答して、前記アプリケーション・オブジェクトを再利用可能にする再利用段階と、
を備えることを特徴とする方法を提供する。
本発明によれば、アプリケーション・プログラムがアプリケーション・オブジェクトの参照が終了したことを検出し、アプリケーション・プログラムにより、アプリケーション・オブジェクトの変更が行われることを検出し、アプリケーション・オブジェクトの変更を検出しないことに応答して、アプリケーション・オブジェクトの再利用をすることを決定し、参照が終了したこと、かつ、再利用をすることが決定されたことに応答して、アプリケーション・オブジェクトを再利用可能にする。
したがって、本発明によれば、一のアプリケーション・プログラムのオブジェクトに対する参照が終了したこと、及び、一のアプリケーション・プログラムのオブジェクトに対する変更が行われないことに応答して、このオブジェクトを再利用するかを決定するため、再利用するオブジェクトに変更が生じても、整合性、安全性に不具合が生じることなく再利用することが可能である。
さらに具体的には、上述の構成に加えて、アプリケーション・オブジェクトが記憶されている場所に関する情報(リファレンス)を記憶することにより再利用可能にする。したがって、この発明によれば、再利用するオブジェクトそのものをキャッシュせずに、オブジェクトの再利用可能な部分の情報(リファレンス)をキャッシュするため、キャッシュのためのオーバヘッドが小さい。
したがって、本発明によれば、一のアプリケーション・プログラムのオブジェクトに対する参照が終了したこと、及び、一のアプリケーション・プログラムのオブジェクトに対する変更が行われないことに応答して、このオブジェクトを再利用するかを決定するため、再利用するオブジェクトに変更が生じても、整合性、安全性に不具合が生じることなく再利用することが可能である。
以下に、本発明の好適な実施形態を図面に基づいて説明する。
図1に示すように、情報処理装置1は、アプリケーションやデータを制御する制御部10と、アプリケーションやアプリケーション・オブジェクト(以下、単に「オブジェクト」)等を記憶する記憶部40とから構成され、さらに、ユーザからの入力を受け付ける入力部20と、アプリケーションの動作結果等を出力する出力部30とを備えていてもよい。
情報処理装置1は、情報を処理する機能を備えた装置であり、コンピュータであってよい。情報処理装置1は、アプリケーションが動作し、このアプリケーションとOS(Operating System)とを仲介するソフトウェア(ミドルウェア)が動作する。
制御部10は、情報処理装置1にて動作するアプリケーションやオブジェクト、ミドルウェア等の演算、制御を行う中央処理装置であり、CPU(Central Processing Unit)であってよい。制御部10は、参照管理部11と、変更検出部12と、再利用決定部13と、再利用部14とから構成される。
参照検出部11は、アプリケーションがオブジェクトを参照していることを監視し、参照が終了したことを検知する。変更検出部12は、アプリケーション・プログラムにより、オブジェクトの変更が行われることを検出する。再利用決定部は、オブジェクトの再利用をすることを決定する。
再利用部14は、アプリケーションが生成したオブジェクトを再利用可能にする。再利用部14は、オブジェクトの再利用可能な部分の情報(リファレンス)を記憶することにより再利用可能にする。また、再利用部は、オブジェクトの変更を検出したことに応答して、変更前のオブジェクトを複製し、この複製したオブジェクトのリファレンスを記憶することで再利用可能にする。
記憶部40は、情報処理装置1のOS、ミドルウェア、アプリケーション、オブジェクト、オブジェクトのリファレンス等を記憶する。すなわち、記憶部40は、情報処理装置1で取り扱うプログラムやデータ等を記憶する。例えば、記憶部40は、コンピュータのメモリやハードディスク等であってよい。記憶部40は、リファレンス記憶部41と、リファレンス候補記憶部42と、バッファ部45とから構成されてよい。
リファレンス記憶部41は、再利用可能となったオブジェクトのリファレンスを記憶する。リファレンスとは、オブジェクトが記憶されている場所に関する情報であり、オブジェクトの生成とともにリファレンスが与えられる。リファレンスとは、オブジェクトが保存されている場所を示すアドレスでありポインタである。リファレンス候補記憶部42は、再利用可能となる候補となるオブジェクトのリファレンスを記憶する。バッファ部45は、アプリケーションのプログラムや、オブジェクトそのものを記憶する。バッファ部45は、Java(登録商標)言語では、ヒープ領域と呼ばれる保存領域を提供する。
次に、情報処理装置1が実行する具体的な動作を、図2のフローチャートを用いて説明する。
最初に、情報処理装置1で動作するアプリケーションのうち、一のアプリケーションであるアプリケーションAが、一のオブジェクトであるオブジェクトAを要求する(ステップS01)。ここでは、オブジェクトAはアプリケーションに初めて要求されたと仮定すると、オブジェクトAはこの要求時に初めて生成され、この生成とともに、このオブジェクトAのリファレンスが得られる(ステップS02)。このアプリケーションは、このリファレンスに基づいて、オブジェクトAを使用する。このオブジェクトAの使用時に、アプリケーションAがオブジェクトAの変更を行うことを検出しなかった場合には(ステップS03)、アプリケーションAの参照の終了後に、リファレンスをリファレンス記憶部41に記憶する(ステップS05)。オブジェクトの変更を行うことを検出した場合には、リファレンスを記憶することなしに、オブジェクトの変更を行う(ステップS04)。
次に、再利用の段階に入る。アプリケーションAまたは、アプリケーションAとは異なるアプリケーションBが、オブジェクトAを要求する(ステップS06)。オブジェクトAは、先に生成していたため、再利用できないか判断する。ここで、オブジェクトAのリファレンスがリファレンス記憶部41に存在していれば(ステップS07)、記憶されたリファレンスをアプリケーションBに返す(ステップS09)ことで、オブジェクトAを再利用する。ここで、オブジェクトAのリファレンスがリファレンス記憶部41に存在していなければ(ステップS07)、オブジェクトAは生成されて、このオブジェクトAのリファレンスを得る(ステップS08)。
さらに詳細に、本発明の動作について説明する。図3、図4、図5は、リファレンス候補記憶部42を用いて、オブジェクトの再利用を行うことを説明したフロー図である。最初に、図3を用いてリファレンス記憶部41からリファレンスを取り出して、リファレンス候補記憶部42にこのリファレンスを記憶することについて説明する。
最初に、制御部10は、アプリケーションからオブジェクトの要求を受ける(ステップS11)。次に、再利用決定部13は、要求されているオブジェクトのリファレンスが、リファレンス記憶部41に記憶されているか確認する(ステップS12)。再利用部14は、リファレンス記憶部41に記憶されているならばオブジェクトのリファレンスをリファレンス記憶部41から取り出して(ステップS14)、リファレンスをリファレンス候補記憶部42に記憶する(ステップS15)。このステップS14にて、取り出すとは、一時的に、バッファ部45にリファレンスをキャッシュして、リファレンス記憶部41には、何も残らない状態である。
要求されているオブジェクトのリファレンスが、リファレンス記憶部41に記憶されていないならば、再利用部14は、要求されたオブジェクトを生成し、リファレンスを得て(ステップS13)、リファレンスをリファレンス候補記憶部42に記憶する(ステップS15)。最後に、オブジェクトのリファレンスをアプリケーションに返す(ステップS16)。
次に、図4を用いて、アプリケーションによる参照が終了したことを検出するフローについて説明する。
参照検出部11が、アプリケーションによるオブジェクトへの参照が終了したかを検出する(ステップS21)。検出した場合には、このオブジェクトのリファレンスは、リファレンス候補記憶部42に記憶されているか確認される(ステップS22)。リファレンス候補記憶部42に記憶されている場合には、このオブジェクトのリファレンスをリファレンス候補記憶部42から取り出して(ステップS24)、オブジェクトのリファレンスをリファレンス記憶部41に記憶する(ステップS25)。このステップS24にて、取り出すとは、一時的に、バッファ部45にリファレンスをキャッシュして、リファレンス候補記憶部42には、何も残らない状態である。リファレンス候補記憶部42に記憶されていない場合には、このオブジェクトを破棄(削除)する(ステップS23)。このように、リファレンス候補記憶部42に記憶されていない場合とは、オブジェクトに対して変更が行われた場合である(図5にて説明する)。
次に、図5を用いて、オブジェクトへの変更操作を検出した場合の処理について説明する。
変更検出部12は、アプリケーションがオブジェクトへの変更操作を行う場合に、実際の変更操作が行われる前に、変更操作が行われることを検出する(ステップS31)。
再利用決定部13は、オブジェクトのリファレンスが、リファレンス候補記憶部42に記憶されているかを確認する(ステップS32)。オブジェクトのリファレンスをリファレンス候補記憶部42から取り出す(ステップS33)。このステップS33にて、取り出すとは、一時的に、バッファ部45にリファレンスをキャッシュして、リファレンス候補記憶部42には、何も残らない状態である。次に、再利用部14は、オブジェクトを複製(キャッシュ)(ステップS34)して、複製したオブジェクトのリファレンスをリファレンス記憶部41に記憶する(ステップS35)。その後、このオブジェクトの変更操作を実施する(ステップS36)。
したがって、再利用部14が、オブジェクトの実際の変更操作の前にオブジェクトの複製を行って、リファレンスを記憶するため、変更前のオブジェクトおよびリファレンスの使用におけるオブジェクトの値等の整合性や安全性に問題がない。
以下では、さらに具体的な実施例について説明する。
[参照管理]
上述の参照検出部11が、アプリケーションからオブジェクトへの、参照を終了したことを検出するために、以下の4つの方法のいずれか、または組み合わせを用いてもよい。
1)ファイナライザ機構を用いる方法
この方法では、Java言語におけるfinalize()のような、オブジェクトの回収前に呼び出される仕組みを使って、オブジェクトへの参照がなくなったことを検出する。オブジェクトを復活可能にした(revivable)状態で、アプリケーションへ伝える。復活可能にするためには、特殊なファイナライザを持った新しいオブジェクトを、オブジェクトからリンクする。(リンクは、オブジェクトのコンポーネントのうち参照を保持されていると不都合なもの、または、そこから参照されているコンポーネントから張る。例えばDOMの場合は、Documentオブジェクトのみから張ればよい。)特殊なファイナライザを持ったオブジェクトのクラスをResurrectionとすると、その実装は次のようになる。
Figure 2006185325
2)アプリケーションのオブジェクトのフィールドからのリンクをトレース(追尾)する方法
この方法では、一般的にガーベージ・コレクションで用いられる技術を、リフレクション機構を使うなどして、ミドルウェアで実装する。参照検出部11が、アプリケーションのフィールドからの参照をトレースし、オブジェクトへの参照がないことを判断する。浅い範囲のトレースで参照がないことの確証が得られない場合には、参照検出部11は、トレースをやめて、参照保持の恐れありと判断してもよい。参照保持の恐れがある場合には、再利用しないか、上述のファイナライザ機構による参照管理を用いてもよい
3)ユーザまたはアプリケーションから与えられた情報や、アプリケーションのコードを検査した情報を元に、アプリケーションの活動を制御しているミドルウェアと連携する方法
この方法では、参照検出部11が、設定ファイルの情報に基づいて、アプリケーションがオブジェクトを保持し続けないことを判別する。また、参照検出部11が、アプリケーションコードを検査することによって、オブジェクトを保持し続ける恐れがないことを検出する。アプリケーションの活動を制御するミドルウェアでは、オブジェクトを利用するような処理の開始と終了を制御するので、処理の終了を検知することができる。この場合、処理の終了をもって、アプリケーションに渡したオブジェクトをアプリケーションが保持していないことを検出できる。
コードの検査は、例えば、スタックアロケーションや同期消去などに用いられるエスケープ解析(ACM TOPLAS Vol.25 Issue 6, p713-775)を応用することにより実現できる。アプリケーション内のフィールドから直接または間接的にリンクされたままになっている場合や、解析対象外に参照が出てしまった場合は、そのオブジェクトは保持され続ける恐れのあるものとする。この場合は、再利用しないか、1)や2)の参照管理法を用いる。
4)ユーザまたはアプリケーションから与えられた情報や、アプリケーションのコードを検査した情報を元に、スレッドごとにオブジェクトを再利用するようにする方法。
この方法では、参照検出部11が、スレッド・ローカル変数を用いるなどして、スレッドごとにオブジェクトの再利用を行う(別スレッド間にまたがった再利用はしない)。あるオブジェクトをアプリケーションに渡した後、同じスレッドでは、そのオブジェクトの再利用が必要になった場合、以前渡したものを利用した処理は終わっていることが保障され、そのオブジェクトはアプリケーションによって保持していないと判断できる。ただし、これはアプリケーションの単一処理中で複数のオブジェクトを利用しない場合に限る。コード検査については3)と同様である。
参照管理を、ファイナライザ機構を用いて、図4のフローにあてはめて説明する。
1)アプリケーションから受け付けたメッセージを表すために再利用できるオブジェクトが、最初の段階(初めてこのオブジェクトを使用する場合)では、制御部10が、通常の処理と同様にして、新たにオブジェクトを生成する。
2)再利用部14は、アプリケーションに渡すオブジェクトのリファレンスを、リファレンス候補記憶部42に記憶し、復活可能な状態(revivable)にする。
3)制御部10が、アプリケーションに、生成したオブジェクトを渡す。
4)ファイナライザ機構により、アプリケーションに渡したオブジェクトへの、アプリケーションからの参照がなくなったことを検出したら、再利用部15は、そのオブジェクトのリファレンスを、リファレンス記憶部41に記憶する。
5)再利用可能なオブジェクトは、リファレンス記憶部41に記憶されているため、これを再利用して、場合によっては、このオブジェクトを変更して、新しく受け付けたメッセージに対応するオブジェクトとする。
[変更検出]
変更検出部12が、オブジェクトに対して、アプリケーションからの変更を検出する方法として、以下の2つの方法のいずれかまたは組み合わせを用いてもよい。
1)オブジェクトの変更を行うメソッドの呼び出しを見張る方法
この方法では、オブジェクトのクラスのメソッドのうち変更を行うメソッドの実装すべてにそれを通知するコードを挿入しておく。例えば、DOMのNodeクラスの場合、appendChild()は、メソッド呼び出し対象のDOMツリーと、引数で与えたノードの属するDOMツリーへの変更を伴う。そこで、その実装を次のようにする。
Figure 2006185325
DocumentImplは、文書全体を表すDocumentクラスのサブクラスであり、API(Application Interface)で提供されるDocumentクラスの実装である。このクラスに対して呼ばれているinvalidate()は、後に示す「変更検出時の処理」アルゴリズムを実装している。
2)ユーザまたはアプリケーションから与えられた情報やアプリケーションのコードを検査した情報を元に、変更を行うメソッドの利用を禁止する方法
この方法では、設定ファイルなどによってアプリケーションがオブジェクトを変更しないことを明示させる。または、アプリケーションコードを検査することによって、オブジェクトを変更するメソッドを呼んでいないことを検出する。場合によっては、オブジェクトのクラスのメソッドのうち変更を行うメソッドの実装すべてに例外を発生させるコードを挿入しておく。
コードの検査は、スタックアロケーションや同期消去などに用いられるエスケープ解析を応用することにより実現できる。アプリケーション内のフィールドから直接または間接的にリンクされたままになっている場合や、解析対象外に参照が出てしまった場合は、そのオブジェクトは変更される恐れのあるものとする。変更される恐れがある場合には、このオブジェクトは再利用しないで複製するか、1)の変更検出法を用いる。方法1)により、オブジェクトへの変更が検出された場合、そのオブジェクトは単に再利用不可とするか、または、変更前にそのオブジェクトの複製をとっておいて後の再利用に備える。
図6に、DOMの変更を行うメソッドについての一例を示した。ここに挙げるメソッドについて、呼ばれたことを通知するコードを挿入しておく。ただし、この際、属性値やテキスト要素など、再利用時に再設定されることが分かっており、変更があっても問題がないものについては、省いてもよい。
SDO(Service Data Object)は、Web Serviceへのサービスのパラメータや返り値のオブジェクトをあらわすのに使われる。図7に、SDOの変更を行うメソッドについての一例を示した。ここに挙げるメソッドについて、呼ばれたことを通知するコードを挿入しておく。
Beanは、Web Serviceへのサービスのパラメータや返り値のオブジェクトをあらわすのに使われるアプリケーション固有のオブジェクトである。Beanにおいて変更が行われるメソッドはアプリケーションごとに異なるが、メソッド名(setで始まるもの)や、Bean Infoと呼ばれるメタ情報から、setterメソッドと呼ばれるBeanの変更に用いられるメソッドを特定することができる。setterメソッドについて、呼ばれたことを通知するコードを挿入しておく。通常、Bean実装は、アプリケーション・サーバとセットで提供される開発環境を用いて生成されるため、その生成ツールを、通知コードが挿入されたsetterメソッドを生成するようにしておくことによってこれが可能になる。
変更検出を、さらに具体的に、図5のフローにあてはめて説明する。
1)アプリケーションから受け付けたメッセージを表すために再利用できるオブジェクトは、最初の段階では存在しないため、通常の処理と同様にして、新たにオブジェクトを生成する。
2)再利用部14は、アプリケーションに渡すオブジェクトのリファレンスを、リファレンス候補記憶部42に記憶し、復活可能な状態(revivable)にする。
3)制御部10が、アプリケーションに生成したオブジェクトを渡す。
4)変更検出部12が、アプリケーションによってオブジェクトが変更されようとしていることを検出したらそのオブジェクトのリファレンスをリファレンス候補記憶部42から取り出す。
5)再利用部14は、変更前に複製をつくってオブジェクトをバッファ部45に記憶し、このリファレンスをリファレンス記憶部41に記憶する。
6)制御部10が、実際の変更処理を行う。
7)次に受け付けたメッセージを表すために再利用できるオブジェクトは、リファレンス記憶部41に記憶されているため、これを再利用して、場合によっては、変更して、新しく受け付けたメッセージに対応するオブジェクトとする。
情報処理装置1は、例えば、図8に示すように、CPU(Central Processing Unit)80と、ホストコントローラ81と、I/Oコントローラ82と、RAM(Random Access Memory)83と、ROM(Read Only Memory)84と、ハードディスクドライブ85と、DVD/CD−ROMドライブ86と、FDドライブ87と、入力部20として、ユーザからの入力を受けるマウス、キーボード等である入力装置88と、出力部30として、表示装置90と、通信インターフェース91を備えていてもよい。
このような実施形態を実現する情報処理装置、オブジェクトの再利用方法を、コンピュータやサーバにて実行するためのプログラムにより実現することができる。このプログラムのための記憶媒体としては、光学記憶媒体、テープ媒体、半導体メモリ等が挙げられる。また、専用通信ネットワークやインターネットに接続されたサーバ・システムに設けられたハードディスク又はRAM等の記憶装置を記憶媒体として使用し、ネットワークを介してプログラムを提供してもよい。
以上、本発明の実施形態を説明したが、具体例を例示したに過ぎず、特に本発明を限定しない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載された効果に限定されない。
本発明は、ミドルウェアとして使用されるソフトウェアにて適用可能であり、さらに、XMLパーサ等に対しても適用可能である。また、対象となるオブジェクトとしては、SAAJ(SOAP with Attachments API for Java)オブジェクトであってもよい。
情報処理装置1のハードウェア構成を示す図である。 本発明の実施例である情報処理装置1が実行する動作を示すフローチャート図である。 本発明の実施例である情報処理装置1が実行する動作を示すフローチャート図である。 本発明の実施例である情報処理装置1が実行する動作を示すフローチャート図である。 本発明の実施例である情報処理装置1が実行する動作を示すフローチャート図である。 本発明の実施例であるDOMの変更メソッドの一例を示す。 本発明の実施例であるSDOの変更メソッドの一例を示す。 本発明の実施例である情報処理装置1がコンピュータである場合のハードウェア構成の一例を示す。
符号の説明
1 情報処理装置
10 制御部
11 参照検出部
12 変更検出部
13 再利用決定部
14 再利用部
20 入力部
30 出力部
40 記憶部
41 リファレンス記憶部
42 リファレンス候補記憶部
45 バッファ部

Claims (18)

  1. アプリケーション・プログラムに用いられるアプリケーション・オブジェクトを再利用する方法であって、
    前記アプリケーション・プログラムが前記アプリケーション・オブジェクトの参照が終了したことを検出する参照検知段階と、
    前記アプリケーション・プログラムにより、前記アプリケーション・オブジェクトの変更が行われることを検出する変更検出段階と、
    前記アプリケーション・オブジェクトの変更を検出しないことに応答して、前記アプリケーション・オブジェクトの再利用をすることを決定する再利用決定段階と、
    前記参照が終了したこと、かつ、前記再利用をすることが決定されたことに応答して、前記アプリケーション・オブジェクトを再利用可能にする再利用段階と、
    を備えることを特徴とする方法。
  2. 請求項1に記載の方法であって、
    前記再利用段階は、前記アプリケーション・オブジェクトが記憶されている場所に関する情報(リファレンス)を記憶することにより再利用可能にすることを特徴とする方法。
  3. 請求項2に記載の方法であって、
    前記再利用段階は、前記アプリケーション・オブジェクトの変更を検出したことに応答して、変更前のアプリケーション・オブジェクトを複製し、この複製したアプリケーション・オブジェクトのリファレンスを記憶することで再利用可能にすることを特徴とする方法。
  4. 請求項2に記載の方法であって、
    前記参照検知段階は、前記参照が終了したとは、JAVA言語のfinalizeメソッドを用いることで、前記アプリケーションからの参照が終了したことを検出することを特徴とする方法。
  5. 請求項2に記載の方法であって、
    前記参照検知段階は、前記参照が終了したとは、前記アプリケーション・プログラムが参照を行うコマンドから、前記アプリケーションからの参照が終了したことを検出することを特徴とする方法。
  6. 請求項2に記載の方法であって、
    前記参照検知段階は、前記参照が終了したとは、動的にアプリケーション・プログラムからオブジェクトのリンクを追尾することから、前記アプリケーションからの参照が終了したことを検出することを特徴とする方法。
  7. 請求項2に記載の方法であって、
    前記参照検知段階は、前記参照が終了したとは、設定ファイルの情報から、前記アプリケーションからの参照が終了したことを検出することを特徴とする方法。
  8. 請求項2に記載の方法であって、
    前記参照検知段階は、前記参照が終了したとは、前記アプリケーション・プログラムのスレッドから、前記アプリケーションからの参照が終了したことを検出することを特徴とする方法。
  9. 請求項1に記載の方法であって、
    前記変更検出段階では、前記アプリケーション・プログラムにより、前記アプリケーション・オブジェクトの変更が行われることを、前記アプリケーション・プログラムが変更を行うメソッドから検出することを特徴とする方法。
  10. 請求項1に記載の方法であって、
    前記変更検出段階では、前記アプリケーション・プログラムにより、前記アプリケーション・オブジェクトの変更が行われることを、コードを検査した情報に基づいて検出することを特徴とする方法。
  11. 請求項1に記載の方法であって、
    前記変更検出段階では、前記アプリケーション・プログラムにより、前記アプリケーション・オブジェクトの変更が行われることを、設定ファイルの情報から検出することを特徴とする方法。
  12. 請求項1に記載の方法であって、
    前記変更検出段階では、前記アプリケーション・プログラムにより、前記アプリケーション・オブジェクトの変更が行われることを、DOMのメソッドを検出することにより検出する方法。
  13. 請求項1に記載の方法であって、
    前記変更検出段階では、前記アプリケーション・プログラムにより、前記アプリケーション・オブジェクトの変更が行われることを、SDOのメソッドを検出することにより検出する方法。
  14. 請求項1に記載の方法であって、
    前記変更検出段階では、前記アプリケーション・プログラムにより、前記アプリケーション・オブジェクトの変更が行われることを、Beanのメソッドを検出することにより検出する方法。
  15. アプリケーション・プログラムに用いられるアプリケーション・オブジェクトを再利用するコンピュータ・プログラムであって、
    前記アプリケーション・プログラムが前記アプリケーション・オブジェクトの参照が終了したことを検出する機能を実現し、
    前記アプリケーション・プログラムにより、前記アプリケーション・オブジェクトの変更が行われることを検出する機能を実現し、
    前記アプリケーション・オブジェクトの変更を検出しないことに応答して、前記アプリケーション・オブジェクトの再利用をすることを決定する機能を実現し、
    前記参照が終了したこと、かつ、前記再利用をすることが決定されたことに応答して、前記アプリケーション・オブジェクトを再利用可能にする機能を実現することを特徴とするコンピュータ・プログラム。
  16. アプリケーション・プログラムに用いられるアプリケーション・オブジェクトを再利用する情報処理装置であって、
    前記アプリケーション・プログラムが前記アプリケーション・オブジェクトの参照が終了したことを検出する参照検知部と、
    前記アプリケーション・プログラムにより、前記アプリケーション・オブジェクトの変更が行われることを検出する変更検出部と、
    前記アプリケーション・オブジェクトの変更を検出しないことに応答して、前記アプリケーション・オブジェクトの再利用をすることを決定する再利用決定部と、
    前記参照が終了したこと、かつ、前記再利用をすることが決定されたことに応答して、前記アプリケーション・オブジェクトを再利用可能にする再利用部と、
    を備えることを特徴とする情報処理装置。
  17. 請求項16に記載の情報処理装置であって、
    前記再利用部は、前記アプリケーション・オブジェクトの再利用可能な部分の情報(リファレンス)を記憶することにより再利用可能にすることを特徴とする情報処理装置。
  18. 請求項17に記載の情報処理装置であって、
    前記再利用部は、前記アプリケーション・オブジェクトの変更を検出したことに応答して、変更前のアプリケーション・オブジェクトを複製し、この複製したアプリケーション・オブジェクトのリファレンスを記憶することで再利用可能にすることを特徴とする情報処理装置。
JP2004380299A 2004-12-28 2004-12-28 アプリケーション・オブジェクトの再利用方法 Expired - Fee Related JP4144885B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004380299A JP4144885B2 (ja) 2004-12-28 2004-12-28 アプリケーション・オブジェクトの再利用方法
US11/321,357 US20060150147A1 (en) 2004-12-28 2005-12-28 Reusing an application object
US12/169,397 US8438557B2 (en) 2004-12-28 2008-07-08 Reusing an application object

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004380299A JP4144885B2 (ja) 2004-12-28 2004-12-28 アプリケーション・オブジェクトの再利用方法

Publications (2)

Publication Number Publication Date
JP2006185325A true JP2006185325A (ja) 2006-07-13
JP4144885B2 JP4144885B2 (ja) 2008-09-03

Family

ID=36642160

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004380299A Expired - Fee Related JP4144885B2 (ja) 2004-12-28 2004-12-28 アプリケーション・オブジェクトの再利用方法

Country Status (2)

Country Link
US (2) US20060150147A1 (ja)
JP (1) JP4144885B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009157805A (ja) * 2007-12-27 2009-07-16 Exa Corp オブジェクトキャッシュ構築方法、オブジェクトキャッシュ構築プログラム
JP2016115070A (ja) * 2014-12-12 2016-06-23 Tis株式会社 プログラム変換システム

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008041038A (ja) * 2006-08-10 2008-02-21 Mitsubishi Electric Corp ソフトウエア作成方法
JP5068071B2 (ja) * 2006-12-27 2012-11-07 インターナショナル・ビジネス・マシーンズ・コーポレーション サーバ上のデータを、クライアントのキャッシュを利用してバックアップする装置および方法。
US7810047B2 (en) * 2007-09-04 2010-10-05 Apple Inc. List item layouts system and method
US9791993B2 (en) * 2008-05-08 2017-10-17 Salesforce.Com, Inc System, method and computer program product for creating a re-usable component utilizing a multi-tenant on-demand database service
US20110022943A1 (en) * 2009-07-23 2011-01-27 International Business Machines Corporation Document object model (dom) application framework
CN104317673B (zh) * 2014-10-24 2017-12-15 大唐网络有限公司 应用程序的回收方法、装置及其恢复方法、装置
US11055087B2 (en) 2018-03-16 2021-07-06 Google Llc Leveraging previously installed application elements to install an application

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4797810A (en) * 1986-06-26 1989-01-10 Texas Instruments Incorporated Incremental, multi-area, generational, copying garbage collector for use in a virtual address space
US5187786A (en) * 1991-04-05 1993-02-16 Sun Microsystems, Inc. Method for apparatus for implementing a class hierarchy of objects in a hierarchical file system
US5392432A (en) * 1991-08-27 1995-02-21 At&T Corp. Method for automatic system resource reclamation for object-oriented systems with real-time constraints
US5274804A (en) * 1991-11-20 1993-12-28 Parcplace Systems Automatic storage-reclamation postmortem finalization process
JPH06332710A (ja) * 1993-05-21 1994-12-02 Fujitsu Ltd オブジェクト指向データ処理システム
US6049838A (en) * 1996-07-01 2000-04-11 Sun Microsystems, Inc. Persistent distributed capabilities
US6256712B1 (en) * 1997-08-01 2001-07-03 International Business Machines Corporation Scaleable method for maintaining and making consistent updates to caches
US6066181A (en) * 1997-12-08 2000-05-23 Analysis & Technology, Inc. Java native interface code generator
US6202208B1 (en) * 1998-09-29 2001-03-13 Nortel Networks Limited Patching environment for modifying a Java virtual machine and method
US6463470B1 (en) * 1998-10-26 2002-10-08 Cisco Technology, Inc. Method and apparatus of storing policies for policy-based management of quality of service treatments of network data traffic flows
US6408434B1 (en) * 1999-01-07 2002-06-18 Sony Corporation System and method for using a substitute directory to automatically install an update program
US6678882B1 (en) * 1999-06-30 2004-01-13 Qwest Communications International Inc. Collaborative model for software systems with synchronization submodel with merge feature, automatic conflict resolution and isolation of potential changes for reuse
US6438560B1 (en) * 1999-09-16 2002-08-20 International Business Machines Corporation Reuse of immutable objects during object creation
JP4180247B2 (ja) 2000-04-28 2008-11-12 富士通株式会社 オブジェクト管理方法を切り替える装置および方法
US6826726B2 (en) * 2000-08-18 2004-11-30 Vaultus Mobile Technologies, Inc. Remote document updating system using XML and DOM
US6542911B2 (en) * 2001-03-01 2003-04-01 Sun Microsystems, Inc. Method and apparatus for freeing memory from an extensible markup language document object model tree active in an application cache
US7366738B2 (en) * 2001-08-01 2008-04-29 Oracle International Corporation Method and system for object cache synchronization
US7158995B2 (en) * 2002-05-08 2007-01-02 Oracle International Corporation Method for managing pointers to external objects in a run-time environment
JP3907187B2 (ja) 2002-07-31 2007-04-18 インターナショナル・ビジネス・マシーンズ・コーポレーション Saxパーサー、saxパーサー用方法、及びプログラム
US7287256B1 (en) * 2003-03-28 2007-10-23 Adobe Systems Incorporated Shared persistent objects
US7421458B1 (en) * 2003-10-16 2008-09-02 Informatica Corporation Querying, versioning, and dynamic deployment of database objects
US20050086662A1 (en) * 2003-10-21 2005-04-21 Monnie David J. Object monitoring system in shared object space
US20060090164A1 (en) * 2004-10-05 2006-04-27 Microsoft Corporation Object cloning for demand events
US7665077B2 (en) * 2004-10-18 2010-02-16 Microsoft Corporation System and method for sharing objects between applications in a virtual runtime environment
US7769747B2 (en) * 2004-12-02 2010-08-03 International Business Machines Corporation Method and apparatus for generating a service data object based service pattern for an enterprise Java beans model

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009157805A (ja) * 2007-12-27 2009-07-16 Exa Corp オブジェクトキャッシュ構築方法、オブジェクトキャッシュ構築プログラム
JP2016115070A (ja) * 2014-12-12 2016-06-23 Tis株式会社 プログラム変換システム

Also Published As

Publication number Publication date
US20090049426A1 (en) 2009-02-19
US8438557B2 (en) 2013-05-07
US20060150147A1 (en) 2006-07-06
JP4144885B2 (ja) 2008-09-03

Similar Documents

Publication Publication Date Title
US9146735B2 (en) Associating workflows with code sections in a document control system
EP2210183B1 (en) Managing updates to create a virtual machine facsimile
US8438557B2 (en) Reusing an application object
US10592312B2 (en) Message oriented middleware with integrated rules engine
US9424082B2 (en) Application startup page fault management in a hardware multithreading environment
US10768928B2 (en) Software development work item management system
JP5652480B2 (ja) データベース更新通知方法
US11880674B2 (en) Adaptive hot reload for class changes
CN102473103B (zh) 控制运行的应用程序以便进行实时场景图编辑
CN115576600A (zh) 基于代码变更的差异处理方法、装置、终端及存储介质
JP2006294019A (ja) 汎用ソフトウェア要件アナライザ
US9910666B1 (en) Implementing locale management on PaaS: live locale object update
CN113867834A (zh) 调试插件调用方法、装置及计算机可读存储介质
JP7116313B2 (ja) 修正候補特定プログラム
JP2009053767A (ja) プログラム解析装置、および、プログラム解析方法
WO2011104889A1 (ja) 計算機システム、メモリ管理方法及びメモリ管理プログラム
JP4776972B2 (ja) キャッシュ生成方法、装置、プログラム及び記録媒体
Liang AI Empowered Program Performance Analysis
JP2017091027A (ja) システム開発支援システム
JP2018067057A (ja) 制御プログラムの検証装置及びプログラム
KR101970717B1 (ko) 바이트 코드 기반 자바 메서드 버전 관리 방법, 이를 이용한 자바 소프트웨어 개발 시스템 및 방법
JP2008026937A (ja) 保守情報採取プログラム、保守情報採取方法、情報機器、及び外部記憶媒体
JP2009238011A (ja) 実行環境の制御方法およびプログラム
JP2009064125A (ja) サーバ装置、そのプログラム
JP2022178776A (ja) 適用可否判定方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071112

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20071221

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20080116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080227

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080610

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20080611

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080616

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110627

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110627

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120627

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees