JP5419033B2 - 未知のオブジェクトにアクセスする方法 - Google Patents
未知のオブジェクトにアクセスする方法 Download PDFInfo
- Publication number
- JP5419033B2 JP5419033B2 JP2008298346A JP2008298346A JP5419033B2 JP 5419033 B2 JP5419033 B2 JP 5419033B2 JP 2008298346 A JP2008298346 A JP 2008298346A JP 2008298346 A JP2008298346 A JP 2008298346A JP 5419033 B2 JP5419033 B2 JP 5419033B2
- Authority
- JP
- Japan
- Prior art keywords
- class
- accessor
- present
- type
- line
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 claims description 212
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 description 16
- 230000010365 information processing Effects 0.000 description 14
- 230000007246 mechanism Effects 0.000 description 12
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 11
- 244000046052 Phaseolus vulgaris Species 0.000 description 11
- 238000005266 casting Methods 0.000 description 10
- 230000014509 gene expression Effects 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000003860 storage Methods 0.000 description 5
- 235000006719 Cassia obtusifolia Nutrition 0.000 description 4
- 235000014552 Cassia tora Nutrition 0.000 description 4
- 244000201986 Cassia tora Species 0.000 description 4
- 230000009471 action Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Description
"Trail: JavaBeans(商標) (The Java(商標) Tutorials)." [online]. Sun Microsystems, 2008-03-19. [retrieved on 2008-11-18]. Retrieved from the Internet: <URL:http://java.sun.com/docs/books/tutorial/javabeans/>
(特徴−1)プロパティ読み出しメソッド及び、プロパティ書き込みメソッドは、読み書き対象のオブジェクトを引数とする。
(特徴−2)読み出しメソッドは、プロパティの型を戻り値の型とする。
(特徴−3)書き込みメソッドは、対象オブジェクトの引数に加えて、プロパティの型の引数をとり得る。
(特徴−4)様々なプロパティの型に対応できるように、プリミティブ型及び参照型のそれぞれに特化したプロパティ読み書き用メソッドを提供する。すなわち、これらの特徴により、プロパティの型の差異に基づいて、異なるプロパティの型の数だけ独立してメソッドが用意され、異なるプロパティの型の数だけ独立して戻り値の型が用意され、異なるプロパティの型の数だけ独立して引数が用意され得る。更に、当該インタフェースは次の特徴を有する。
(特徴−5)2つのオブジェクトの一方から他方へプロパティをコピーするためのメソッドを提供する。当該メソッドは2つの対象オブジェクトを引数とする。
(特徴−6)変形として、コピー時に浅いコピーや深いコピー等の制御を行ない得るフィルタ・
オブジェクトを引数とすることも可能である。
(特徴−7)アクセス対象オブジェクトのメソッド情報、及び既知のインタフェースのメソッド情報を与えられると、アクセス対象オブジェクト上の指定されたメソッド呼び出しを、既知のインタフェースを通じて行えるようにするインヴォーカ(invoker)・オブジェクトを返す。
(特徴−8)インヴォーカ・オブジェクトのメソッド呼び出しメソッドは、通常の引数に加えて、呼び出し対象のオブジェクトを引数とする。
(機能−1)本発明に係るプログラミング・インタフェースは、アクセスするフィールドの型がプリミティブ型の場合にも、プリミティブ型の値を直接利用し得る。
(機能−2)本発明に係るプログラミング・インタフェースは、呼び出すメソッドの返り値やパラメータの型がプリミティブ型の場合にも、プリミティブ型の値を直接利用し得る。
(機能−3)本発明に係るプログラミング・インタフェースは、アクセス対象のオブジェクトのクラスに特化したランタイム用のコードを生成し得る。この生成コードにおいては、getter/setterメソッドや、指定されたメソッドが直接呼び出される。
S110:ユーザ105は、プログラミング・インタフェース110に対してオブジェクト操作等の要求を送信する。
S120:プログラミング・インタフェース110は、当該要求のうち、操作されるオブジェクトの属性及び/又はプロパティを取得及び/又は設定するために、アクセサ120を呼び出す。
S130:アクセサ120は、操作されるオブジェクトの属性及び/又はプロパティを取得及び/又は設定し、オブジェクトに対する操作を実行するクラス130のメソッドにこれらの値を引き渡し、実行制御をクラス130のメソッドに移行する。
S140:クラス130のメソッドは、オブジェクトに対する操作の結果をアクセサ120に返す。
S150:アクセサ120は、当該操作の結果をプログラミング・インタフェース110に返す。
S160:プログラミング・インタフェース110は、当該操作の結果をユーザ105に送信する。
(リフレクション−1)クラスに関するメタ情報をデータとして扱い得る。
(リフレクション−2)クラスやオブジェクトに対する汎用的操作を行い得る。
01行目は「変数objとして何らかのオブジェクトを受け取る」動作であり、
02行目は「objからクラスを変数beanClassとして得る」動作であり、
03行目は「beanClassからBeanInfoオブジェクトを変数beanInfoとして得る」動作であり、
04行目は、「beanInfoからPropertyDescriptorオブジェクトの配列を変数propsとして得る」動作であり、
05行目は「int型の変数sumを0で初期化する」動作であり、
06行目は「propsの各要素について」ループする動作であり、
07〜08行目は「getterメソッドのMethodオブジェクトを取り出し、そのinvokeメソッドを通して、objの各属性のgetterメソッドを呼び出す」動作であり、
09行目は「得られた結果をintValue()によりプリミティブ型のintに変換して、sumに足しこむ」動作であり、
11行目は「sumの値を表示する」動作であり得る。式[I]に示すアクセスの例は、07行目において、Reflection APIの一部であるMethodクラス(メソッドの情報や汎用アクセスを提供するクラス)のインスタンスを用いることにより、プロパティにアクセスしている。
01行目は、「変数objとして何らかのオブジェクトを受け取る」動作であり、
02行目は、「objからクラスを変数beanClassとして得る」動作であり、
03行目は、「beanClassからBeanInfoオブジェクトを変数beanInfoとして得る」動作であり、
04行目は、「beanInfoからPropertyDescriptorオブジェクトの配列を変数propsとして得る」動作であり、
05行目は、「propsと同じ大きさの配列をaccessorsとして作る」動作であり、
06〜07行目は、「各PropertyDescriptor要素のgetReadMethod()を呼び出しgetterメソッドのMethodオブジェクトを得て、accessorsの各要素とする」動作であり、
10行目は、「int型の変数sumを0で初期化する」動作であり、
11行目は、「accessorsの各要素のMethodオブジェクトごとに」ループする動作であり、
12行目は、「invokeメソッドを通して、objの各属性のgetterメソッドを呼び出す」動作であり、
13行目は、「得られた結果をintValue()によりプリミティブ型のintに変換して、sumに足しこむ」動作であり、
15行目は、「sumの値を表示する」動作であり得る。
S250:利用側210のアプリケーション等は、引数を準備する。具体的には、引数として用いる値をラップし、引数の配列を作成する。
S252:invoke()を呼ぶ。
S260:操作されるオブジェクトに対するアクセス権をチェックする。このとき、適宜、アクセス権の無い場合の所定のエラー処理等を実施してもよい。
S262:実際のメソッドに渡すための引数を準備する。具体的には、引数の配列へのアクセス権を設定し、引数として用いる値をアンラップする。
S264:実際のメソッドを呼ぶ。
S270:実際のメソッドを実行する。
S280:返り値を受け取る。
S282:invoke()の返り値を準備する。具体的には、返り値をラップする。
S284:invoke()の結果を返す。
S290:返り値を受け取る。
S292:返り値を利用するための準備を行う。具体的には、返り値をアンラップする。
S300:利用側210のアプリケーション等は、本発明に係るアクセサ側220のinvoke()を呼ぶ。
S310:本発明に係る方法を含むアクセサ側220は、対象のメソッド230に対して、実際のメソッドを呼ぶ。
S320:実際のメソッドが実行される。
S330:本発明に係る方法を含むアクセサ側220は、対象のメソッド230から返り値を受け取る。
S332:本発明に係る方法を含むアクセサ側220は、利用側210のアプリケーション等に対してinvoke()の結果を返す。
S340:利用側210のアプリケーション等は返り値を受け取る。
01行目は、「変数objとして何らかのオブジェクトを受け取る」動作であり、
02行目は、「objからクラス(Classオブジェクト)をbeanClassとして得る」動作であり、
03行目は、「beanClassから発明のgetPropertyAccessors()を通じてPropertyAccessorの配列をaccessorsとして得る」動作であり、
04行目は、「int型の変数sumを0で初期化する」動作であり、
06行目は、「accessorsの各要素について」ループする動作であり、
07行目は、「発明の、getIntValue()というint型のプロパティに特化して高速化されたアクセサを呼び出し、objの各属性のgetterメソッドを呼び出して属性の値をプリミティブ型の値として直接得て、それをsumに足しこむ」動作であり、
09行目は、「sumの値を表示する」動作であり得る。
S450:オブジェクトにアクセスしようとするアプリケーション等は、アクセサに対する要求を送信する。
S460:アクセサAPIメイン実装410は、当該要求に基づくバイトコードを生成するよう、コード・ジェネレータ420に指示を送信する。
S462:コード・ジェネレータ420は、生成したバイトコードをアクセサAPIメイン実装410に送信する。
S470:アクセサAPIメイン実装410は、生成されたバイトコードを実装するためのクラス・オブジェクトを生成するよう、カスタム・クラス・ローダ430に指示を送信する。
S472:カスタム・クラス・ローダ430は、生成したクラス・オブジェクトをアクセサAPIメイン実装410に送信する。
S474:カスタム・クラス・ローダ430は、生成したクラス・オブジェクトを実装するよう、特化アクセサ実装440にロード命令を送信する。
S480:アクセサAPIメイン実装410は、特化アクセサ実装440に新規インスタンスを送信する。具体的には、この新規インスタンスは、アクセサAPIメイン実装410がアプリケーション等から受信した要求に含まれる情報であり得る。
S482:特化アクセサ実装440は、アクセサAPIメイン実装410にアクセサ・オブジェクトを戻り値として送信する。
S490:アクセサAPIメイン実装410は、オブジェクトにアクセスしようとするアプリケーション等にアクセサ・オブジェクトを戻り値として送信する。
S510:アクセス対象のプロパティの型を調べる。
S520:プロパティの型が参照型であるか、プリミティブ型であるかを判定する。参照型であればS530に進み、プリミティブ型であればS540に進む。
S530:参照型用のアクセサ・クラスを生成する。
S540:プリミティブ型用のアクセサ・クラスを生成する。
S532:参照型用のget(Object)を生成する。
S534:参照型用のset(get(Object))を生成する。
S536:参照型用のコピーのためのメソッドを生成する。
S542:プリミティブ型用のget(Object)を生成する。
S544:プリミティブ型用のget(Object,Object)を生成する。
S546:プロパティの型用のgetXXValue(Object)を生成する。
S548:プロパティの型用のsetXXValue(Object,xx)を生成する。
S549:プリミティブ型用のコピーのためのメソッドを生成する。
S602:対象オブジェクトをアクセス対象クラスにキャストするコードを生成する。
S604:読み出しメソッドを呼ぶコードを生成する。
S606:呼び出した結果を返すコードを生成する。
S612:対象オブジェクトをアクセス対象クラスにキャストするコードを生成する。
S614:設定値オブジェクトをプロパティの型にキャストするコードを生成する。
S616:書き込みメソッドを呼ぶコードを生成する。
S652:対象オブジェクトをアクセス対象クラスにキャストするコードを生成する。
S654:読み出しメソッドを呼ぶコードを生成する。
S656:呼び出した結果を返すコードを生成する。
S662:対象オブジェクトをアクセス対象クラスにキャストするコードを生成する。
S664:書き込みメソッドを呼ぶコードを生成する。
01行目は、「テンプレート・パラメータ${accessor class}で表される名前のクラスをPropertyAccessorクラスのサブクラスとして宣言する」動作であり、
02行目は、「汎用型のターゲットをパラメータtargetにとり、汎用型の結果を返すメソッドget()を宣言する」動作であり、
03行目は、「テンプレート・パラメータ${bean class}にtargetをキャストし、テンプレート・パラメータ${getter method}という名前のメソッドを呼び出して返す」動作であり、
05行目は、「汎用型のターゲットをパラメータtargetにとり、汎用型の設定値をパラメータvalueにとるメソッドset()を宣言する」動作であり、
06行目は、「テンプレート・パラメータ${bean class}にtargetをキャストし、テンプレート・パラメータ${property type}にvalueをキャストしたものを引数としてテンプレート・パラメータ${setter method}という名前のメソッドを呼び出す」動作であり、
08〜09行目は、「上記で定義されたget()とset()を使って2つのオブジェクトの同属性の値を一方から他方へコピーするメソッドを宣言する」動作であり、
12〜13行目は、「上記で定義されたget()とset()を使って2つのオブジェクトの同属性の値を一方から他方へ、フィルタをかけたものを設定するメソッドを宣言する」動作であり得る。
01行目は、「テンプレート・パラメータ${accessor class}で表される名前のクラスをPropertyAccessorクラスのサブクラスとして宣言する」動作であり、
02行目は、「汎用型のターゲットをパラメータtargetにとり、汎用型の結果を返すメソッドget()を宣言する」動作であり、
03行目は、「後に定義するgetIntValue()を使ってtargetにアクセスし、返り値をIntegerオブジェクトでラップして返す」動作であり、
05行目は、「汎用型のターゲットをパラメータtargetにとり、汎用型の設定値をパラメータvalueにとるメソッドset()を宣言する」動作であり、
06行目は、「valueをInteger型にキャストして、プリミティブ型の整数値を取り出すメソッドintValue()を呼び出し、結果を、後に定義するsetIntValue()を使ってtargetにアクセスして設定する」動作であり、
08行目は、「汎用型のターゲットをパラメータtargetにとり、プリミティブ型に特化してintの結果を返すメソッドgetIntValue()を宣言する」動作であり、
09行目は、「テンプレート・パラメータ${bean class}にtargetをキャストし、テンプレート・パラメータ${getter method}という名前のメソッドを呼び出して返す」動作であり、
11行目は、「汎用型のターゲットをパラメータtargetにとり、プリミティブ型に特化してintの設定値をパラメータvalueにとるメソッドset()を宣言する」動作であり、
12行目は、「テンプレート・パラメータ${bean class}にtargetをキャストし、valueを引数としてテンプレート・パラメータ${setter method}という名前のメソッドを呼び出す」動作であり、
14行目は、「上記で定義されたgetIntValue()とsetIntValue()を使って2つのオブジェクトの同属性の値を、一方から他方へコピーするメソッドを宣言する」動作であり、
17行目は、「上記で定義されたgetIntValue()とsetIntValue()を使って2つのオブジェクトの同属性の値を一方から他方へ、フィルタをかけたものを設定するメソッドを宣言する」動作であり得る。
次式に、バイトコードのテンプレートの例を示す。通常のJava(登録商標)バイトコードのフォーマットに従って、前半にコンスタントプール、後半にメソッド定義を含む形式を用いる。「//」以降はコメントであり、実際のバイトコード(テンプレート)には反映されない。コンスタントプールの16、18、21、23〜26の項目の文字列定数がパラメータ化されている。なお、用語「実際のバイトコード」は、具体的なバイトコードを指す。
次式に、BeanAccessorのユーティリティ・メソッドとして、所与のクラスから、PropertyAccessorクラスのプロパティアクセサ・オブジェクトをプロパティ分だけ生成する例を示す。
01行目は、「クラス(Classオブジェクト)を引数にとりPropertyAccessorの配列を返すメソッドgetPropertyAccessorsを宣言する」動作であり、
02行目は、「従来のBeanのライブラリIntrospectorのgetBenaInfoを通じて、BeanInfoオブジェクトを取得する」動作であり、
03行目は、「従来のライブラリを用いて、プロパティ記述である、PropertyDescriptorを取得する」動作であり、
04行目は、「発明のPropertyAccessorの配列をPropertyDescriptorの配列と同じ大きさで生成する」動作であり、
05行目は、「各PropertyDescriptorから、発明のgetPropertyAccessorを使ってPropertyAccessorを取得し、PropertyAccessorの配列の各要素とする」動作であり、
09行目は、「生成して設定したPropertyAccessorの配列を返す」動作であり得る。
本発明に係る方法は、インヴォーカ・オブジェクトを生成するユーティリティ・メソッドとして、次式のように利用されるBeanAccessorのstaticメソッドgetMethodInvoker()を含み得る。
01行目は、「変数objとして何らかのオブジェクトを受け取る」動作であり、
02行目は、「objからクラス(Classオブジェクト)をbeanClassとして得る」動作であり、
03行目は、「beanClassから何らかのMethodオブジェクトを得る」動作であり、
04行目は、「既知のクラスAppFaceの既知のメソッドinvoke()のMethodオブジェクトを得る」動作であり、
05行目は、「発明のgetMethodInvoker()により、knownMethodを通じてtargetMethodを高速に呼び出すように生成されたクラスのインスタンス・オブジェクトをinvoker変数として得る」動作であり、
06行目は、「invoker変数の既知のメソッドinvoke()に対し、未知の対象オブジェクト(obj)に加え、既知の型のパラメータ列である文字列(“Hello”)と整数値(2)の3つのパラメータを渡して呼び出す」動作であり得る。
01行目は、「テンプレート・パラメータ${invoker class}で表される名前のクラスをテンプレート・パラメータ${invoker face}で表されるインタフェースを実装するクラスとして宣言(例の場合においてはAppFaceを実装)する」動作であり、
02行目は、「テンプレート・パラメータ${return type} (targetの型)型の結果を返し、汎用型のターゲットをパラメータtargetに加え、target(のあるメソッド)に特化した特定の引数(AppFace)とり、テンプレート・パラメータ${invoker name}(既知のメソッドの名前)を名前にもつメソッドを宣言する」動作であり、
03行目は、「コード生成時にわかるターゲットの型であるテンプレート・パラメータ${target type}にtargetをキャストして、target以外の残りの引数をそのまま渡し、コード生成時にわかるターゲットのメソッド名である${target method}をメソッド名としてメソッドを呼び出し、返り値をそのまま返す」動作であり得る。
図8は、本実施形態に係る、プログラミング装置のハードウェア構成を示す図である。図8においては、プログラミング装置を情報処理装置1000とし、そのハードウェア構成を例示する。以下は、コンピュータを典型とする情報処理装置として全般的な構成を説明するが、その環境に応じて必要最小限な構成を選択できることはいうまでもない。
次の式[XIX]に例示するアクセス対象クラスに対して、本発明により、前述の式[X]に示したテンプレートから生成されるバイトコードのコンスタントプール部分の一部を、式[XX]に例示する。
本発明に係る方法を用いてオブジェクトにアクセスすることにより、未知のクラスのオブジェクトに対して汎用的かつ高速なアクセスが可能になる。表1は、オブジェクトのディープコピーを様々な方法で実装したものの実行時間を比較したものである。実行環境としては、ランタイムとして「Sun Java 2 Runtime Environment, Standard Edition, version 1.4.2 HotSpot Server VM」を、オペレーティングシステムとして「Linux(登録商標) 2.4.18−14」を、ハードウェアとして「IBM intelliStation M Pro,a single Pentium(登録商標) 4 Processor 2.4GHz, 2GB memory」をそれぞれ用いた。表1のコピーコードとして区別される項目において、Hand−writtenは手で最善と思われるコピーを実装したもの、Generated source codeは、本発明と同等のコードをソースコードとして生成してコンパイルしたもの、Generated bytecodeが本発明によるもの、Reflectionは従来技術に係るリフレクション(Reflection API)を用いたものである。本発明により生成されたバイトコードと、従来技術に係るリフレクションを用いたものとでは数十倍の差が生じ、本発明の方法によりオブジェクト操作の高速化を達成することが可能であった。
01行目は、「シリアライザを実装したクラスMySerializer全体を宣言する」動作であり、
02行目は、「シリアライズ対象のオブジェクトのクラスを表すクラス・オブジェクトを保持しておく、Class型のフィールドtargetClassを宣言する」動作であり、
03行目は、「シリアライズ対象のオブジェクトの各プロパティへのアクセサ・オブジェクト(PropertyAccessor型)をキャッシュしておく、PropertyAccessorの配列型のフィールドpropsを宣言する」動作であり、
04行目は、「シリアライズ対象のオブジェクトの各プロパティの型を表すクラス・オブジェクト(Class型)をキャッシュしておく、Classの配列型のフィールドtypesを宣言する」動作であり、
05行目は、「MySerializerオブジェクトのコンストラクタ・シリアライズ対象のクラスの設定(targetClass)の後、前述の本発明に係る式[III]と同様にアクセサをキャッシュ(props)することに加え、各プロパティの型のキャッシュ(types)を初期化する」動作であり、
20行目は、「シリアライズの処理を行うメソッドserializeInto()を宣言し、シリアライズ結果出力先outと、シリアライズ対象のオブジェクトobjを引数とする」動作であり、
21行目は、「シリアライズ対象のオブジェクトが初期化時に設定されたクラスのときのみ処理を行う(22−30)が、そうでなければ、例外をあげる(32)」動作であり、
22行目は、「各アクセサについて以下の処理を行う」動作であり、
23行目は、「プロパティの型がintであれば、objに対して、intに特化したアクセス・メソッドgetIntValue()を呼び出してプロパティの値を取り出し、整数値を書き出すためのメソッドwriteInt()をoutに対して呼ぶ」動作であり、
25行目は、「プロパティの型がdoubleであれば、objに対して、doubleに特化したアクセス・メソッドgetDoubleValue()を呼び出してプロパティの値を取り出し、小数値を書き出すためのメソッドwriteDouble()をoutに対して呼ぶ」動作であり、
27行目は、「プロパティの型がStringであれば、objに対して、汎用的なアクセス・メソッドget()を呼び出してプロパティの値を取り出し、String型にキャストした上で文字列を書き出すためのメソッドwriteUTF()をoutに対して呼ぶ」動作であり得る。
110 プログラミング・インタフェース
120 アクセサ
130 クラス
210 利用側
220 アクセサ側
230 対象のメソッド
300 本発明を適用した場合のオブジェクトへのアクセスの処理の流れ
400 アクセサ・オブジェクトの生成
410 アクセサAPIメイン実装
420 コード・ジェネレータ
430 カスタム・クラス・ローダ
440 特化アクセサ実装
500 バイトコード生成の処理の流れ
600 参照型プロパティへのアクセス用コード生成の処理の流れ
650 プリミティブ型プロパティへのアクセス用コード生成の処理の流れ
1000 情報処理装置
Claims (7)
- アプリケーション・プログラムから未知であったクラスを利用するためにメモリ・デバイス中にライブラリを実行時に作成する方法であって、前記アプリケーション・プログラムがオブジェクトにアクセスするときに、
アクセスされるオブジェクトを引数とするメソッドを用意するステップと、
前記アクセスされるオブジェクトが有するメソッド情報と、既知のインタフェースのメソッド情報とに基づいて、前記アクセスされるオブジェクトが有するメソッドを、前記既知のインタフェースを通じて行えるようにするインヴォーカ・オブジェクトを返すステップと、を含み、
前記インヴォーカ・オブジェクトによるメソッド呼び出しメソッドは、前記アクセスされるオブジェクトを引数とする、
ライブラリを作成する方法。 - 前記アプリケーション・プログラムが前記オブジェクトにアクセスすることに応答して、前記アクセスされるオブジェクトを引数とするメソッドを用意するステップは、前記メソッドに基づくコードを生成する、
請求項1に記載のライブラリを作成する方法。 - 前記メソッドに基づく前記コードは、予め用意したテンプレートに基づくバイトコードである、
請求項2に記載のライブラリを作成する方法。 - 前記アプリケーション・プログラムが前記オブジェクトにアクセスすることに応答して、前記アクセスされるオブジェクトを引数とするメソッドを用意するステップは、前記メソッドに基づくコードを生成する、
請求項1に記載のライブラリを作成する方法。 - 前記メソッドに基づく前記コードは、予め用意したテンプレートに基づくバイトコードである、請求項4に記載のライブラリを作成する方法。
- 請求項1から5のいずれか1項に記載の方法の各ステップをコンピュータに実行させるためのコンピュータ・プログラム。
- アプリケーション・プログラムから未知であったクラスを利用するためにコンピュータ可読媒体中にライブラリを実行時に作成するシステムであって、前記アプリケーション・プログラムがオブジェクトにアクセスするときに、
アクセスされるオブジェクトを引数とするメソッドを用意する手段と、
前記アクセスされるオブジェクトが有するメソッド情報と、既知のインタフェースのメソッド情報とに基づいて、前記アクセスされるオブジェクトが有するメソッドを、前記既知のインタフェースを通じて行えるようにするインヴォーカ・オブジェクトを返す手段と、を含み、
前記インヴォーカ・オブジェクトによるメソッド呼び出しメソッドは、前記アクセスされるオブジェクトを引数とする、
ライブラリを作成するシステム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008298346A JP5419033B2 (ja) | 2008-11-21 | 2008-11-21 | 未知のオブジェクトにアクセスする方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008298346A JP5419033B2 (ja) | 2008-11-21 | 2008-11-21 | 未知のオブジェクトにアクセスする方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2010123060A JP2010123060A (ja) | 2010-06-03 |
| JP5419033B2 true JP5419033B2 (ja) | 2014-02-19 |
Family
ID=42324327
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2008298346A Expired - Fee Related JP5419033B2 (ja) | 2008-11-21 | 2008-11-21 | 未知のオブジェクトにアクセスする方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP5419033B2 (ja) |
Families Citing this family (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP5425715B2 (ja) | 2010-06-03 | 2014-02-26 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラム実行方法、システム及びプログラム |
| JP5673246B2 (ja) * | 2011-03-14 | 2015-02-18 | 富士通株式会社 | データストア制御装置、データストア制御プログラムおよびデータストア制御方法 |
| US8782620B2 (en) | 2012-06-12 | 2014-07-15 | International Business Machines Corporation | Processing reified generics in object-based programming environments |
| CN111913814B (zh) * | 2020-07-09 | 2024-05-31 | 海南车智易通信息技术有限公司 | 对象拷贝方法及计算设备 |
| CN116719531B (zh) * | 2023-06-14 | 2024-11-26 | 欧冶工业品股份有限公司 | 基于运行时字节码编辑的对象转换方法、系统、介质 |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2005250958A (ja) * | 2004-03-05 | 2005-09-15 | Ntt Data Corp | 分散コンピューティング環境におけるサービス実行処理システム、およびそのクライアント装置ならびにプログラム、サービス実行処理方法 |
-
2008
- 2008-11-21 JP JP2008298346A patent/JP5419033B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2010123060A (ja) | 2010-06-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP7324831B2 (ja) | ディープラーニングフレームワークにおける演算子の展開方法、展開装置及び電子機器 | |
| JP5679989B2 (ja) | デバッグパイプライン | |
| Team | R internals | |
| JP5415557B2 (ja) | デバッギングのためのユーザ・スクリプト・コードの変換 | |
| CN1181428C (zh) | 软件翻译的内省编辑器系统、程序和方法 | |
| US10437574B2 (en) | System and method for providing code completion features for code modules | |
| JP5933002B2 (ja) | ランタイムシステム | |
| US11366643B2 (en) | Generating dynamic modular proxies | |
| US10140119B2 (en) | Modular serialization | |
| US20250199785A1 (en) | Compilation methods, compilers, and wasm virtual machines | |
| US20060225053A1 (en) | Programming language improvements | |
| EP1552385A1 (en) | Providing dynamic model-code associativity | |
| JP2005135384A (ja) | コンピュータプラットフォームのためのプログラミングインターフェース | |
| US8650532B2 (en) | Change notification and information update based on uncompiled software development project | |
| US9038033B1 (en) | Techniques and mechanisms for web application minification | |
| US20050114871A1 (en) | System for optimizing application start-up | |
| JP5419033B2 (ja) | 未知のオブジェクトにアクセスする方法 | |
| US8201143B2 (en) | Dynamic mating of a modified user interface with pre-modified user interface code library | |
| WO2019090994A1 (zh) | 测试脚本自动化执行方法、装置、设备以及存储介质 | |
| US20090320007A1 (en) | Local metadata for external components | |
| JP2011065220A (ja) | コンパイラ・プログラム、コンパイル方法及びコンピュータ・システム | |
| Van den Brand et al. | Generator of efficient strongly typed abstract syntax trees in Java | |
| JP2018156133A (ja) | コンパイラプログラム、情報処理装置およびコンパイル方法 | |
| US8141034B2 (en) | System for automating the definition of application objects supporting compressing operations | |
| US20080222627A1 (en) | Static extensibility models with dynamic languages and scripts |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110908 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121204 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130304 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130813 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130930 |
|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20131022 |
|
| RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20131023 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131112 |
|
| LAPS | Cancellation because of no payment of annual fees |