(57)【要約】【課題】サーバと携帯端末からなる計算機システムにおいて、既に広く流布している携帯端末向けのプログラムを修正することなく、携帯端末上での実行の際に課せられる処理速度、メモリ容量などの携帯端末の特性から生ずる様々な制限を取り除きつつ、従来と同様な機能を携帯端末で実行する。【解決手段】プログラム格納・変換部は、関数呼び出しの変更情報により、該当する関数呼び出しをスタブ関数の呼び出しに変更し、プログラム実行サーバに配布する。携帯端末にも、実行するプログラムを配布し、サーバから、スタブ関数の呼び出しにより、スタブ関数を呼び出して、そのスタブ関数から携帯端末上のプログラムを、通信路を介して実行する。【選択図】        図１
2005228183.tif 000002
【特許請求の範囲】
【請求項１】
第一のプログラム実行装置と第二のプログラム実行装置と記憶装置とからなる計算機システムのプログラム実行方法において、
前記記憶装置から第一のプログラムと第二のプログラムとを読み出すステップと、
前記記憶装置から前記第一のプログラムと前記第二のプログラムのそれぞれに記述されている関数呼び出しの置換情報を読み出すステップと、
読み出された前記第一のプログラムと前記第二のプログラムのそれぞれに記述されている関数呼び出しを、それぞれ前記置換情報に基づき別の関数呼び出しに置換するステップと、
前記関数呼び出しを置換された第一のプログラムと第二のプログラムとを、前記第一のプログラム実行装置と前記第二のプログラム実行装置に、それぞれ配布するステップと、
前記第一のプログラム実行装置において前記第一のプログラムを実行し、前記第一のプログラムの置換された別の関数呼び出しにより、前記第二のプログラムの置換された関数を呼び出して、前記第二のプログラム実行装置において前記第二のプログラムを実行するステップとを有することを特徴とするプログラム実行方法。
【請求項２】
前記計算機システムは、さらに、プログラムを配布する装置と、前記プログラム実行装置と前記プログラムを配布する装置とを接続する通信手段とを有し、
前記プログラムを配布する装置は、前記通信手段によって前記第一のプログラム実行装置と前記第二のプログラム実行装置とに関数呼出しを置換された前記第一のプログラムと前記第二のプログラムとを、それぞれ配布することを特徴とする請求項１記載のプログラム実行方法。
【請求項３】
前記関数呼び出しの置換情報は、プログラム実行環境情報、要求性能の諸元を含み、これらの情報を参照して、別の関数呼び出しの置換の処理をおこなうことを特徴とする請求項１記載のプログラム実行方法。
【請求項４】
プログラムライブラリを有する計算機システムにおいて、
プログラム実行サーバと、
プログラム格納・変換部とを有し、
前記プログラム格納・変換部は、関数呼び出しの置換情報を保持し、前記プログラムライブラリよりプログラムを読み出して、前記関数呼び出しの置換情報により、該当する関数呼び出しを仲介関数の呼び出しに置換し、前記プログラム実行サーバに配布することを特徴とする計算機システム。
【請求項５】
さらに、プログラム実行端末を有し、
前記プログラム格納・変換部は、このプログラム実行端末に実行するプログラムを配布し、
前記プログラム実行サーバでは、前記関数呼び出しを置換した仲介関数の呼び出しにより、仲介関数を呼び出して、
前記仲介関数から前記プログラム実行端末上のプログラムを、通信路を介して実行することを特徴とする請求項４記載の計算機システム。
【請求項６】
前記プログラム実行サーバと前記プログラム実行端末のプログラムの実行は、オブジェクトのメソッド実行によりおこなわれることを特徴とする請求項５記載の計算機システム。
【請求項７】
前記プログラム実行サーバと前記プログラム実行端末のプログラムの実行は、前記プログラム実行端末において、オブジェクトがイベントを検知することをトリガーとしておこなわれることを特徴とする請求項５記載の計算機システム。
【請求項８】
前記プログラム実行サーバとプログラム実行端末は、一方にオブジェクト、他方にそれと対となる仲介オブジェクトを有し、
前記プログラム実行サーバから前記プログラム端末の関数の実行は、それらのオブジェクト間の通信によりおこなわれることを特徴とする請求項５記載の計算機システム。
【請求項９】
前記プログラム実行端末は、そのプログラム実行端末上のイベント発生を検知するリスナ代替オブジェクトを有し、
前記プログラム実行サーバは、イベントを処理するイベント関数を呼び出すリスナオブジェクトを有し、
前記プログラム実行端末で、イベント発生したときに、前記リスナ代替オブジェクトは、前記プログラム実行サーバのリスナオブジェクトと通信することにより、前記プログラム実行サーバのイベント処理関数を実行することを特徴とする請求項５記載の計算機システム。
【請求項１０】
携帯端末のプログラムを実行するプログラム実行サーバにおいて、
このプログラム実行サーバは、携帯端末において実行されるプログラムの関数呼び出しの部分を仲介関数呼び出しに置き換えたプログラムを実行し、
前記仲介関数呼び出しにより、通信路を介して携帯端末上のプログラムの関数を呼び出して実行させることを特徴とするプログラム実行サーバ。
【請求項１１】
前記携帯端末において実行されるプログラムは、その携帯端末のユーザインタフェースに関係するプログラムであることを特徴とする請求項１０記載のプログラム実行サーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム実行方法に係り、コンピュータプログラムの実行をサーバと携帯端末の双方でおこなえるようにしたプログラム実行方法に関する。
【背景技術】
【０００２】
近年、携帯電話やＰＤＡ等をはじめとする携帯端末の普及が目覚しい。特に、携帯電話は、初期の通話以外の用途のほかに、様々な機能を持つ携帯機器として進化してきており、インタプリタの実行環境が搭載され、様々な処理がおこなえるようになっている。例えば、ゲームや、予定管理等のアプリケーションをネットワーク経由で携帯電話にダウンロードして使用することが一般的におこなわれている。（以下の非特許文献１に記載）。
【０００３】
【非特許文献１】NTT DoCoMo社，ｉアプリコンテンツ作成について，[Online]，，[参照：平成１５年５月１５日]，インターネット＜http://www.nttdocomo.co.jp/mc-user/i/java/index.html＞
【発明の開示】
【発明が解決しようとする課題】
【０００４】
携帯端末がプログラムを実行できるようになり、ユーザの利便性は飛躍的に向上した。
【０００５】
しかしながら、携帯端末はその特性上、プログラムを実行するためのリソース、例えば、ＣＰＵの処理性能、メモリ量、二次記憶装置容量、ネットワーク性能等の性能が低く、またその機能が制限されていることが多い。このため、規模の大きなプログラムが実行できない場合や、たとえ実行できても処理に時間がかかることが多い。また、無線ネットワークを前提したものが多いため、通信にかかる費用も一般に高く、ネットワークを多用する用途に利用しにくいというコスト的な問題も存在する。
【０００６】
本発明は、上記問題点を解決するためになされもので、その目的は、既に広く流布している携帯端末向けのプログラムを修正することなく、これらの携帯端末上での実行の際に課せられる携帯端末の特性から生ずる様々な制限を取り除きつつ、従来と同様な機能を携帯端末で利用できるようにすることにある。
【課題を解決するための手段】
【０００７】
本発明に係る計算機システムのプログラム実行方法は、第一のプログラム実行装置と第二のプログラム実行装置と記憶装置とからなる計算機システムのプログラム実行方法において、前記記憶装置から第一のプログラムと第二のプログラムとを読み出すステップと、前記記憶装置から前記第一のプログラムと前記第二のプログラムのそれぞれに記述されている関数呼び出しの置換情報を読み出すステップと、読み出された前記第一のプログラムと前記第二のプログラムのそれぞれに記述されている関数呼び出しを、それぞれ前記置換情報に基づき別の関数呼び出しに置換するステップと、前記関数呼び出しを置換された第一のプログラムと第二のプログラムとを、前記第一のプログラム実行装置と前記第二のプログラム実行装置に、それぞれ配布するステップと、前記第一のプログラム実行装置において前記第一のプログラムを実行し、前記第一のプログラムの置換された別の関数呼び出しにより、前記第二のプログラムの置換された関数を呼び出して、前記第二のプログラム実行装置において前記第二のプログラムを実行するステップとを有するようにしたものである。
【０００８】
すなわち、本発明では、上記の課題を解決するために、携帯端末向けのプログラムを格納しているプログラム保存部、携帯端末向けのプログラムの全て、あるいは一部を実行可能なプログラム実行サーバ、および、携帯向けプログラムをプログラム実行サーバで実行可能に変換するプログラム変換部を備える。
【０００９】
携帯端末でプログラムを実行する場合の従来手順は、プログラム格納部から目的のプログラムをネットワーク経由でダウンロードして、その携帯端末上で実行するものであった。
【００１０】
一方、本方式では携帯端末からのプログラムロード要求に対して、プログラム保存部に格納されたプログラムをプログラム変換部に、いったん読み込む。次にプログラム変換部では、プログラムを解析し、プログラム実行サーバで実行するのが妥当と判断できる部分と、携帯端末側で実行するのが妥当と判断できる部分に分離する。
【００１１】
プログラム実行サーバで実行するのが妥当な部分とは、例えば、単純な数値計算や、データベースにアクセスする部分、あるいは、ネットワークにアクセスする部分が考えられる。また携帯端末上で実行するのが妥当な部分としては、例えば、ユーザインターフェースに関係した部分などが考えられる。このうち携帯端末側で実行すべき部分については、プログラム中で当該機能を呼び出している箇所を検出し、スタブ関数（仲介関数）の呼出に変換し、プログラム実行サーバにロードする。携帯端末側には、プログラム実行サーバのスタブ関数からの要求を実行する関数の呼出し手続きを含むプログラムをロードする。
【００１２】
このような構成にしてプログラムを実行するとサーバで実行すべき部分はサーバ上で高速実行される。スタブ関数呼び出しに置き換えられたＵＩ等の処理は、これを呼び出すことでサーバ上のスタブ関数が呼び出され、そのスタブ関数からネットワーク経由の関数呼び出し、すなわち、遠隔関数呼び出し（以下、ＲＰＣ、Remote  Procedure Call）を利用して、携帯端末上の関数呼出し手続きを含むプログラムから、目的とする関数を呼び出し、携帯端末上で処理がおこなわれる。
【００１３】
ユーザの端末操作等の処理についても、スタブ関数とＲＰＣを利用して同様な方法で、携帯端末からスタブ関数を呼び出し、プログラム実行サーバ上のプログラムを実行することによりおこなうことができる。
【００１４】
このような構成と動作によって、既存のプログラムを、その処理の大部分を高速なプログラム実行サーバ部で実行しながら実行し、ＵＩ等は従来通り携帯端末を使用することが可能することで、プログラムの利便性を変えることなく高速な処理が可能となる。
【発明の効果】
【００１５】
本発明によれば、既に広く流布している携帯端末向けのプログラムを修正することなく、これらの携帯端末上での実行の際に課せられる携帯端末の特性から生ずる様々な制限を取り除きつつ、従来と同様な機能を携帯端末で利用できる。
【発明を実施するための最良の形態】
【００１６】
以下、図１ないし図１８を用いて本発明に係る一実施形態を説明する。
【００１７】
〔関数呼出しの置換処理をおこなう計算機システム〕
先ず、図１ないし図３を用いて本発明の計算機システムの構成について説明する。
図１は、本発明の計算機システムの構成図である。
図２は、ＲＰＣ通信部の構成図である。
図３は、オブジェクト管理表を示す図である。
【００１８】
本発明の計算機システムは、プログラム実行サーバ１０と、プログラム格納変換部２０と、携帯端末３０がネットワーク４０を介して接続される構成である。携帯端末プログラム代替実行部１１は、従来、携帯端末上で実行されていたプログラムをプログラム実行サーバ１０で実行されるようにした機構である。このプログラム実行サーバ１０は、標準的なコンピュータが備えるように、入力機器２、出力機器３、プログラム、ライブラリファイルからなる。プログラムは、外部記憶装置４等がバスブリッジ１で接続されたコンピュータにおけるメモリ上で実行される。また、ライブラリファイルは、外部記憶装置４に記録されるている。
【００１９】
携帯端末プログラム代替実行部１１は、プログラム実行仮想機械１２、スタブライブラリ１４および実行ライブラリ１３からなる。プログラム実行仮想機械１２は、オブジェクト管理部１２１とＲＰＣ通信部１２２を持つ。
【００２０】
オブジョクト管理部１２１は、システムで扱うオブジェクトを管理する部分であり、後に説明するオブジェクト管理表を有する。ここで、オブジェクトとは、関連するデータの集合と、それに対する手続き(メソッド)をまとまりとして管理したものであり、本実施形態のシステムは、いわゆる「オブジェクト指向」のシステムである。
【００２１】
オブジョクト管理表は、データとプログラムの実行に伴い生成するオブジェクトに一意なオブジェクトＩＤを振り、これを管理するためのテーブルである。テーブルは、オブジェクトＩＤ（１２１１）とオブジェクトが記録されているアドレス１２１２を対にして記録する。オブジェクトＩＤ（１２１１）からアドレス１２１２を検索したり、逆にアドレス１２１２からオブジェクトＩＤ（１２１１）を検索するこが可能であり、高速化のためにハッシュ表をつかった実装も考えられる。
【００２２】
なお、携帯端末３０中のオブジェクト管理部３２１も同様なテーブルを有する。ここではアドレス１２１２に格納する情報としてオブジェクトのアドレスを使用したが、プログラム実行環境に存在するオブジェクトを一意に識別できる情報であれば、その他のものでもよい。
【００２３】
ＲＰＣ通信部１２２の構成は、図２に示す如くであり、符号化部１２２１，オブジェクトＩＤ取得部１２２２、複合化部１２２３、オブジェクト呼出部１２２４、およびネットワーク通信部１２２５からなる。
【００２４】
ＲＰＣ通信部１２２は、呼出し続き情報を受信すると、オブジェクトＩＤ取得部１２２２から、オブジェクトＩＤを得て、引数などと合わせて、符号化部１２２１によって、ネットワーク４０で交換可能な形態に変換し、ネットワーク通信部１２２５からＲＰＣとして送信される。
【００２５】
また、ＲＰＣとして送信された情報は、別コンピュータ上のネットワーク通信部１２２５で受信され、復号化部１２２３で、元のオブジェクトＩＤと引数に復元されて、オブジェクト呼出部１２２４に渡される。オブジェクト呼出部１２２４は、オブジェクトＩＤを参照して要求されたオブジェクトに対し、呼び出して引数を渡す。
【００２６】
なお、リモート関数の呼出は上記の方式に限定されるものではなく、既存のリモート関数呼び出し方式を利用しても良く、引数と実行する関数名が指定でき、その結果を返せるものであればいずれの方式も利用可能である。
【００２７】
プログラム格納変換部２０は、この計算機システムで動作できるように、プログラムを変換する部分であり、プログラム変換部２１と、携帯端末用プログラム格納部２２を備える。プログラム変換部これも、プログラム実行サーバ１０のように入出力機器がバスブリッジで接続されたコンピュータ上で動作する。
【００２８】
携帯端末３０は、プログラム実行サーバ１０上のものと同じ携帯端末プログラム実行部３１があり、これはプログラム実行仮想機械３２、実行ライブラリ３３、およびスタブライブラリ３４からなる。プログラム実行仮想機械３２は、さらにオブジェクト管理部３２１、および、ＲＰＣ通信部３２２を備える。ＲＰＣ通信部３２２の構成は、図２で示したものと同様である。
【００２９】
携帯端末プログラム実行部３１も、プログラム実行サーバ１０のように入出力機器がバスブリッジで接続された携帯端末上で動作する。
【００３０】
また、図１ではプログラム実行サーバ１０とプログラム格納・変換部２０を別のコンピュータ上で構成する実施形態を示したが、これらが同一のコンピュータ上で動作することも考えられる。
【００３１】
プログラム実行サーバ１０上の実行ライブラリ１３やスタブライブラリ１４、あるいは携帯端末３０上の実行ライブラリ３３やスタブライブラリ３４はストレージ上に存在せず、ネットワークからダウンロードする形態も考えられる。
【００３２】
次に、図４ないし図６を用いて本発明のプログラム実行方法の原理について説明する。
図４は、プログラムあるいはライブラリの構成の例を示した図である。
図５は、関数呼出手続置換設定データの構成を示した図である。
図６は、関数呼出手続の置換の例を示した図である。
【００３３】
本システムのプログラム実行は、関数を呼び出す際に関数の呼出しを別の関数に変更して呼び出す処理を含んでいる。
【００３４】
一般に、図４に示されるように、プログラムあるいはライブラリ５は、一つまたは複数の関数（５１〜５３）と、関数情報５４を持っている。関数情報は、プログラムモジュールに特有な情報を保持している。例えば、呼出規約、関数で利用する局所変数、モジュール名、関数に関連した情報のテーブルなどが考えられる。またオブジェクト指向言語ではクラス名なども考えられる。図４では関数情報をプログラムが内部に保有している構造を記したが、プログラム情報が外部に、例えば、別ファイルとして保持される形式も考えられる。この例としては、コンパイラから出力されるＭＡＰファイルなどが考えられる。
【００３５】
関数呼出手続置換設定データ６は、置き換えられる関数である置換対象関数６１と、これを置き換える関数である置換関数６２の組からなる。一つの置換関数６２に対して複数の置換対象関数６１が対応することも考えられる。置換対象関数６１および置換関数６２の保持する情報は、関数を指定する情報であり、関数名、関数を格納しているライブラリ名またはクラス名、関数へのアドレス、関数のＩＤなどが考えられる。
【００３６】
また、関数呼出手続置換設定データ６は、適用するプログラム毎、あるいはプログラム実行環境毎に予め定められている場合や、プログラムをロードした際に、プログラムを解析して利用できるリソースや要求される性能などを考慮して作成する方法が考えられる。また、関数置換をおこなった後に実行した結果を考慮することも考えられる。
【００３７】
さて、上記のプログラムあるいはライブラリと関数呼出手続置換設定６データがあるときに、本発明の関数呼出手続の置換は、以下のようにおこなわれる。
【００３８】
ユーザプログラム６１０は、関数Ａ（６１１）と関数情報６１４を持っているとする。関数Ａ（６１１）からは、関数Ｂの呼出手続６１２と関数Ｃの呼出手続６１３があるものとする。そして、関数Ｂ（６２１）と関数Ｃ（６２２）はライブラリＡ（６２０）内に存在する。
【００３９】
これに対して関数呼出手続置換設定データ６に、置換対象関数６１として関数Ｂ（６４１）が、置換関数６２として関数Ｄ（６４３）が登録されている。この場合、関数Ｂ呼出手続６１２はライブラリＢ（６３０）の関数Ｄ（６３１）への呼出手続に書き換える。以下同様にして関数Ｃ呼出６１３の呼出手続も書き換える。
置換される前のプログラムがライブラリＡ（６２０）内の関数だけを呼び出していた場合は、実行にはライブラリＡ（６２０）だけが必要であったが、当該変換によってライブラリＢ（６３０）の関数も呼び出すようになると、実行時にはライブラリＢ（６３０）も必要となる。
【００４０】
このような手法により、プログラムから呼び出す関数を置き換えることが可能となる。また、本説明ではプログラムの呼出手続を直接書き換えたが、関数の呼出手続が関数テーブルを参照しておこなうものであれば、このテーブルを書き換えることでも同様な関数呼び出しの置換が可能である。
【００４１】
関数をソースレベルで置き換えたときには、インタープリタ環境ならそのコードを実行すればよい。コンパイラ環境のときには、コンパイルが必要になる。
【００４２】
次に、図７ないし図１１を用いて本発明のプログラム実行をおこなうための計算機システムの動作について説明する。
図７は、本発明の計算機システムで仮想計算機がプログラムを実行するまでの流れを示した図である。
図８は、プログラム実行までの各サイトにおける処理の概要を示したフローチャートである。
図９は、関数呼び出しの置換処理を示したフローチャートである。
図１０は、ＲＰＣ通信部（１２２，３２２）がネットワークを使用して遠隔の関数を呼び出す手順を示したフローチャートである。
【００４３】
先ず、図７により本発明で関数呼出しの置換処理した場合のプログラム実行の流れについて説明する。
【００４４】
本実施形態では、システム上で関数αと関数βが実行する場合であって、関数αがプログラム実行サーバ１０で実行され、関数βが携帯端末上で実行されるものとする。
【００４５】
携帯端末プログラム代替実行部１１のプログラム実行仮想機械Ａ（１２）上で動作しているオブジェクト１２０１が関数αの呼び出し１２０２を実行した場合には、実行ライブラリ１３中の関数α（１３１）が実行される。
【００４６】
一方、本来の関数β（１３２）への呼び出しは、スタブライブラリ１４中のスタブ関数β（１４１）への呼び出しに置換されている。このため本来の関数β（１３２）への呼び出しは、スタブ関数β（１４１）への呼び出しに変更される。スタブ関数β（１４１）は、ＲＰＣ通信部１２２、ネットワーク４０を経由して、オブジェクト１０２１のオブジェクトＩＤ（１２１１）とスタブ関数β（１４１）へ渡された引数を渡す。
【００４７】
携帯端末３０上のプログラム実行仮想機械Ｂ（３２）には、関数β呼出手続３２０２を含んだプログラムがロードされる。そして、プログラム仮想機械Ｂ（３２）では、渡されたオブジェクトＩＤ（３２１１）から対象となるオブジェクト（３２０１）を得い、その中の関数βへの関数β呼出手続３２０２を実行することで、実行ライブラリ３３中の関数β（３３１）が実行される。
【００４８】
このような仕組みで、従来では一つのプログラムから呼出されていた機能を、二つの実行環境に任意に分割し、動作させることが可能となる。
【００４９】
次に、図８を用いてプログラム実行までの各サイトにおける処理の概要について説明する。
【００５０】
携帯端末３０のイベント発生などのトリガーなどにより、プログラム格納・置換部２０は、実行の対象となるプログラムを選択する（ステップ９０１０）。
【００５１】
次に、読み込んだプログラムの関数呼び出しを、プログラム変換部２１が置換し（ステップ９０２０）する。
【００５２】
そして、プログラム変換部２１は、プログラム実行サーバ１０向けには関数呼出手続を置換したプログラムを配布して、プログラム実行サーバ１０に実行させる（ステップ９０３０）。
【００５３】
また、プログラム変換部２１は、携帯端末３０向けにも関数呼出手続を置換したプログラムを配布して、実行させる（ステップ９０４０）。
【００５４】
次に、図９を用いて関数呼出しの置換処理について説明する。
【００５５】
最初に、プログラム変換部１０は、関数置換データ６を読み込む（ステップ９１１０）。次に、置換対象のプログラムを解析し（ステップ９１２０）、設定データ６に指定された関数を呼び出している箇所があるか否かを判定して（ステップ９１３０）、呼び出している場合には設定データ６に基づき関数呼び出しを変更する（ステップ９１４０）。これを全てのプログラムに対しておこなう（ステップ９１５０）。
【００５６】
次に、図１０を用いてＲＰＣ通信部（１２２，３２２）がネットワークを使用して遠隔の関数を呼び出す手順について説明する。
【００５７】
ＲＰＣの処理では、最初に対象とするオブジェクトのＩＤ（１２１１）をオブジェクト管理部１２１から取得する（ステップ９２１０）。
【００５８】
次に、関数呼び出しの引数、および、オブジェクトＩＤを通信可能な形式に符号化する（ステップ９２２０）。そして、この情報と共に携帯端末３０のＲＰＣ通信部３２２にデータを送信する（ステップ９２３０）。
【００５９】
携帯端末３０上のＲＰＣ通信部３２２では、引数とオブジェクトＩＤを復号し（ステップ９２４０）、得たオブジェクトＩＤからオブジェクトを取得し（ステップ９２５０）、オブジェクトの関数を引数と共に呼び出す（ステップ９２６０）。次に関数が実行されてることによって得られた戻り値を符号化し（ステップ９２７０）、プログラム実行サーバ１０のＲＰＣ通信部１２２に送信する（ステップ９２８０）。ＲＰＣ通信部１２通信部１２２は戻り値を復号して（ステップ９２９０）、その戻り値をオブジェクトに設定して（ステップ９２９５）、処理を終了する。
【００６０】
〔イベント処理とオブジェクト動作〕
次に、図１１ないし図１５を用いて本発明のプログラム実行方法におけるイベント処理と関連するオブジェクトの動作について説明する。
【００６１】
本発明のプログラム実行方法は、プログラム実行サーバ１０と携帯端末３０で機能分担し、両方でプログラムを実行するものであった。そのため、プログラムプログラム実行サーバ１０の携帯端末プログラム代替実行部１１のプログラム仮想実行部１２で関数呼出しをスタブ関数呼出しの手続きに置換して実行するものであった。本システムでのイベント処理も両方のサイトのオブジェクトが以下に説明するようにメッセージを送受信しながらおこなう。
【００６２】
先ず、図１１により一般的なボタンなどからのイベントを処理するイベントリスナ方式を説明する。
図１１は、一般的なボタンなどからのイベントを処理するイベントリスナ方式を説明する図である。
【００６３】
イベントリスナ方式はイベントの授受に広く利用されている方法である。先ず、イベントを発生するオブジェクト７００はリスナテーブル７１０を持ち、このオブジェクトの発生するイベントを受け取るオブジェクトを登録する。この図ではオブジェクトＡ（７２０）と、オブジェクトＢ（７３０）が登録されている。例えば、ユーザがボタンを押下するなどしてイベントが発生すると、イベント発生オブジェクト７００は、リスナテーブル７１０に登録されたオブジェクトのイベント処理関数を順番に、あるいは一斉に呼び出す。このような方法でユーザの操作をイベントとしてオブジェクトが受け取ることができる。このようなオブジェクトをリスナオブジェクトと呼ぶ。
【００６４】
またこれとは別の方法として、イベントを処理する専用の関数を設け、その中で必要な処理をおこなうものも存在する。
【００６５】
次に、図１２により本発明の計算機システムのオブジェクトの実装とイベント発生時の処理について説明する。
【００６６】
図１２は、本発明の計算機システムのオブジェクトの実装状態の一例を示す図である。
【００６７】
先ず、携帯端末３０上には、ボタンオブジェクト９００とリスナスタブオブジェクト９２０（仲介オブジェクト）が配置され、一方のプログラム実行サーバ１０には、ボタンオブジェクト９４０とリスナオブジェクトが配置される
ボタンオブジェクト９００は、携帯端末３０上のボタンをオブジェクト指向により具現化したオブジェクトであり、ボタン押下などのイベントを発生させる。ボタンの表示変更をするときには、メソッドとして表示変更関数が呼び出される。内部には、上記で説明したイベントリスナテーブル７１０を有しており、リスナスタブオブジェクトＡ９２０が登録されている。リスナスタブオブジェクトＡ９２０は、ボタンオブジェクトのイベントを処理するためのオブジェクトであり、プログラム実行サーバ１０上のリスナオブジェクトＡ９３０のスタブ（仲介）となるオブジェクトである。
【００６８】
携帯端末上でボタン押下などのイベントが発生したとする。ボタンオブジェクト９００は、上記のイベント発生オブジェクト７００に該当し、リスナテーブル９１０のリスナスタブオブジェクトＡ９２０のスタブイベント処理関数Ａ９２１を呼び出す。リスナスタブオブジェクトＡ９２０では、スタブイベント処理関数Ａ９２１から、ネットワーク経由でＲＰＣによりプログラム実行サーバ１０のリスナオブジェクトＡ９３０のイベント処理関数Ａ９３１を呼び出してイベント処理が実行される。
【００６９】
ボタンオブジェクト９００の表示を変更する場合には、ボタンスタブオブジェクト９４０の表示変更スタブ関数９４１から、ネットワーク経由でＲＰＣによりボタンオブジェクト９００の表示変更関数９０１が呼び出される。
【００７０】
このように、プログラム実行サーバ１０と携帯端末３０の両者にオブジェクトとスタブオブジェクトを配置して処理の機能分担をおこなうことができる。
【００７１】
次に、図１３により本発明の計算機システムのオブジェクトの生成の処理の一例について説明する。
図１３は、プログラム実行サーバ１０と携帯端末３０とに、オブジェクトとそれに対応するスタブオブジェクトを生成する処理を示すフローチャートである。
【００７２】
従来のオブジェクト生成関数は、一つのオブジェクトを生成する関数であったとすると、本発明のプログラム実行方法では、一つのサイトにオブジェクトを生成し、他のサイトにはそれに対応するスタブオブジェクトを生成するようにプログラム変換部２１が変換する。
【００７３】
図１３に示される例は、携帯端末３０上にオブジェクトを生成し、プログラム実行サーバ１０にそれに対応するスタブオブジェクトを生成するものである。したがって、プログラム変換部２１は、プログラム上の通常のオブジェクト生成関数の呼び出しを、スタブオブジェクトの生成関数の呼び出しに置換する。
【００７４】
このため、プログラム実行サーバ１０が、スタブオブジェクトの生成関数の呼び出しをおこなうと（ステップ９４１０）、ＲＰＣによる携帯端末３０への通信が発生させ（ステップ９４２０）、携帯端末３０上にオブジェクトを生成するトリガーをかける。
【００７５】
携帯端末３０では、この呼び出しを受けて、プログラム実行サーバ１０側から指定されたオブジェクトを生成し（ステップ９４３０）、初期化し（ステップ９４４０）、一意なオブジェクトＩＤを決定し（ステップ９４４５）、オブジェクト管理部３２１に登録する（ステップ９４５０）。
【００７６】
そして、この生成結果とオブジェクトＩＤをＲＰＣによりプログラム実行サーバ１０に返し（ステップ９４６０）、オブジェクトの生成に成功しているならば、プログラム実行サーバ１０上でスタブオブジェクトを生成し（ステップ９４７０）、生成されたスタブオブジェクトのオブジェクトＩＤをオブジェクト管理部１２１に登録し、そのオブジェクトＩＤを戻り値として返して、オブジェクト生成関数の呼び出しが終了する。
【００７７】
ここで、スタブオブジェクトは、プログラム変換部２１により元の関数のスタブとして置かれる関数から呼び出されることを意図している。図１３の例で言えば、プログラム実行サーバ１０には、ボタンスタブオブジェクト９４０が置かれ、表示変更スタブ関数９４１をメソッドとして有している。携帯端末３０上には、それの本体として、ボタンオブジェクト９００と、表示変更関数９０１がある。このように、異なったスタブオブジェクトとオブジェクトが両方のサイトに置かれる構成は、本発明のプログラム実行方法の関数とスタブ関数により機能の実行を分散させることをサポートする形態であると言うことができる。
【００７８】
次に、図１４により携帯端末３０上でおこなわれたイベントを処理するための登録処理について説明する。
図１４は、プログラム実行サーバ１０にリスナオブジェクトを、携帯端末３０上にリスナスタブオブジェクトを登録するための処理を示すフローチャートである。
【００７９】
ここでは、図１２のモデルを例にとり説明する。
【００８０】
通常のリスナオブジェクトの登録関数の呼び出しは、プログラム変換部２１により、予めリスナオブジェクトの登録関数のスタブ関数の呼び出しに置換される。
【００８１】
通常のリスナオブジェクトの登録関数は、オブジェクトをリスナテーブルに登録する関数である。本発明のプログラム実行方法では、リスナオブジェクトの登録関数の呼び出しを、スタブ関数の呼び出しに置換しておく。
【００８２】
プログラム実行サーバ１０から置換されたスタブ関数が呼び出されると、先ず、リスナオブジェクトＡ９３０を生成する（ステップ９５１０）。
【００８３】
次に、ＲＰＣ呼出９５２０により、携帯端末３０上にリスナスタブオブジェクトＡ９２０を生成する（ステップ９５３０）。
【００８４】
そして、リスナスタブオブジェクトＡ９２０を、ボタンオブジェクト９００のリスナテーブル９１０に登録する（ステップ９５４０）。
【００８５】
次に、図１５により携帯端末３０上でおこなわれたイベントが発生したときの動作について説明する。
図１５は、携帯端末３０上でおこなわれたイベントが発生したときの動作について説明するフローチャートである。
【００８６】
これは、イベントを処理するための登録処理が完了した後にのプログラム実行サーバ１０と携帯端末３０上でおこなわれる動作である。
【００８７】
ここでも、図１３を例にとり説明する。すなわち、携帯端末３０上で画面上に表示されているボタンを操作することによりイベントが発生した場合の処理である。
【００８８】
携帯端末３０上で画面上に表示されているボタンが操作されると、イベントが発生し、ボタンオブジェクト９００が、イベントリスナ方式によりリスナテーブル９１０を参照し、リスナスタブオブジェクトＡ９２０を呼び出す（ステップ９６１０）。そして、ＲＰＣ呼出９６２０により、プログラム実行サーバ１０上のリスナオブジェクトＡ９３０が呼び出され（ステップ９６３０）、イベント処理関数９３１が実行される。
【００８９】
このようにすることで、携帯端末側で生じたイベントをプログラム実行サーバ側で処理することが可能となる。
【００９０】
〔実行環境・性能を考慮した関数呼出しの置換処理の切り分け〕
次に、図１６を用いて本発明のプログラム実行方法で実行環境・性能を考慮した関数呼出しの置換処理の切り分けについて説明する。
図１６は、発明のプログラム実行方法で実行環境・性能を考慮した関数呼出しの置換処理の切り分けを説明する図である。
【００９１】
図１６の計算機システムには、プログラム実行サーバ１０と携帯端末３０に、それぞれ実行性能管理部１５および３５が追加されている。
【００９２】
この実行性能管理部１５，３５はそれぞれの実行環境情報、要求性能などの情報、例えば、ＣＰＵ能力、メモリ容量、利用できるハードウェア等のプログラム実行に影響する情報が記録されている。
【００９３】
プログラム格納・変換部２０には、プログラム変換切分部２３が追加されている。プログラム変換切分部２３は、実行性能管理部１５，３５の情報を利用して、プログラムの関数の置換処理を決定する。
【００９４】
例えば、実行するプログラムに対して携帯端末３０のメモリが極端に少ない場合は、ほとんど全ての処理をプログラム実行サーバ１０で実行するようにする。メモリに余裕がある場合は、関数呼出しの置換処理をおこなって、サーバ側のスタブ関数から携帯端末３０のプログラムを実行するようにして、携帯端末３０側での処理を増やすなどが考えられる。このように決定した方針によってプログラム変換をプログラム変換部２１でおこない、変換したプログラムをプログラム実行サーバ１０と、携帯端末３０に配布する。
【００９５】
〔他の計算機システム構成〕
次に、図１７および図１８を用いて本発明のプログラム実行方法を適用する場合の他の計算機システム構成について説明する。
図１７および図１８は、本発明のプログラム実行方法を適用する場合の他の計算機システム構成について説明する図である。
【００９６】
図１に示した実施形態は、プログラム実行サーバ１０と携帯端末３０という二つの異なった種別のプログラム実行装置に適用したものであった。これ以外にも同等の方式で同種のプログラム実行装置を二台利用することも同様に可能である。また二台のプログラム実行装置による処理の分担だけではなく、二台以上のプログラム実行装置に対して適用することも可能である。
【００９７】
図１７は、その一例を示したものであり、複数のコンピュータにより、振り分けテーブルを利用してスタブ関数からの呼び出しプログラムが実行される場合である。
【００９８】
この図１７の構成では、スタブ関数呼び出し８１０が呼び出されることにより、スタブライブラリ８１１中のスタブ関数８１２が呼び出される。そして、それぞれの関数と処理をおこなうコンピュータの振り分けをするための情報である振り分けテーブル８１４を参照して、このスタブ関数はＲＰＣ通信部８１３を通じてリモートのコンピュータの関数を呼び出してプログラムを実行する。
【００９９】
図１８は、他の一例を示したものであり、リモートコンピュータの関数を呼び出すスタブライブラリをコンピュータ毎に準備する方法である。
【０１００】
この図１８の構成では、プログラム実行前に関数呼出をスタブ関数呼び出しに置換する際に、どのコンピュータの関数を呼び出すかによってそれぞれ別のスタブライブラリ上のスタブ関数の呼び出しに変更する。このようにすることで関数呼び出しの置換をおこなった後は、特別な処理をすることなく適切なリモートコンピュータ上の関数呼び出しをおこなうことができる。
【図面の簡単な説明】
【０１０１】
【図１】本発明の計算機システムの構成図である。
【図２】ＲＰＣ通信部の構成図である。
【図３】オブジェクト管理表を示す図である。
【図４】プログラムあるいはライブラリの構成の例を示した図である。
【図５】関数呼出手続置換設定データの構成を示した図である。
【図６】関数呼出手続の置換の例を示した図である。
【図７】本発明の計算機システムで仮想計算機がプログラムを実行するまでの流れを示した図である。
【図８】プログラム実行までの各サイトにおける処理の概要を示したフローチャートである。
【図９】関数呼び出しの置換処理を示したフローチャートである。
【図１０】ＲＰＣ通信部（１２２，３２２）がネットワークを使用して遠隔の関数を呼び出す手順を示したフローチャートである。
【図１１】一般的なボタンなどからのイベントを処理するイベントリスナ方式を説明する図である。
【図１２】本発明の計算機システムのオブジェクトの実装状態の一例を示す図である。
【図１３】プログラム実行サーバ１０と携帯端末３０とに、オブジェクトとそれに対応するスタブオブジェクトを生成する処理を示すフローチャートである。
【図１４】プログラム実行サーバ１０にリスナオブジェクトを、携帯端末３０上にリスナスタブオブジェクトを登録するための処理を示すフローチャートである。
【図１５】携帯端末３０上でおこなわれたイベントが発生したときの動作について説明するフローチャートである。
【図１６】発明のプログラム実行方法で実行環境・性能を考慮した関数呼出しの置換処理の切り分けを説明する図である。
【図１７】本発明のプログラム実行方法を適用する場合の他の計算機システム構成について説明する図である（その一）。
【図１８】本発明のプログラム実行方法を適用する場合の他の計算機システム構成について説明する図である（その二）。
【符号の説明】
【０１０２】
１０…プログラム実行サーバ部，１１…携帯端末プログラム仮想実行部，１２…プログラム実行仮想機械，１３…実行ライブラリ，１４…スタブライブラリ，１２１…オブジェクト管理部，１２２…ＲＰＣ通信部，２０…プログラム格納・変換部，３０…携帯端末，３１…携帯端末プログラム実行部，３２…プログラム実行仮想機械，３３…実行ライブラリ、３４…スタブライブラリ，４０…ネットワーク。
【図１】
2005228183.tif 000003
【図２】
2005228183.tif 000004
【図３】
2005228183.tif 000005
【図４】
2005228183.tif 000006
【図５】
2005228183.tif 000007
【図６】
2005228183.tif 000008
【図７】
2005228183.tif 000009
【図８】
2005228183.tif 000010
【図９】
2005228183.tif 000011
【図１０】
2005228183.tif 000012
【図１１】
2005228183.tif 000013
【図１２】
2005228183.tif 000014
【図１３】
2005228183.tif 000015
【図１４】
2005228183.tif 000016
【図１５】
2005228183.tif 000017
【図１６】
2005228183.tif 000018
【図１７】
2005228183.tif 000019
【図１８】
2005228183.tif 000020