(57)【要約】【課題】クライアント装置に対して、低い通信量で最適なプログラムを提供することのできる情報処理装置を提供する。【解決手段】サーバ装置１０１において、サーバコントローラ２０１は、クライアント装置からプログラムの位置情報を含む処理要求を受信すると、位置情報と関連付けられた仮想マシンコードプログラムを、データ管理器２０４の管理するデータの中から検索する。そして、当該仮想マシンコードプログラムを取出して、仮想マシン−中間コード変換器２０３によって中間コードに変換する。変換した中間コードを、ネットワークインタフェース２０２を介して、処理要求の送信元であるクライアント装置に処理応答として送信する。【選択図】        図３
2004192038.tif 000002
【特許請求の範囲】
【請求項１】
他の装置からプログラムの位置情報を含む処理要求を受付ける受信手段と、
前記受信した処理要求に含まれる前記位置情報に基づいて、プログラムと位置情報とが関連付けれられて格納されている第１の記憶装置から、前記位置情報に関連付けられたプログラムを取得する取得手段と、
前記第１の記憶装置から取得したプログラムが仮想マシンコードで構成されるプログラムである場合に、前記プログラムを特定のクライアント装置に依存しない中間コードで構成されるプログラムに変換する変換手段と、
前記変換したプログラムを前記他の装置に対する処理応答として送信する送信手段とを備える、情報処理装置。
【請求項２】
前記受信手段は、前記他の装置から、前記プログラムの位置情報と、前記他の装置の情報とを含む処理要求を受付け、
前記変換手段は、前記第１の記憶装置から取得したプログラムを、前記受信した処理要求に含まれる前記他の装置の情報に基づいて、前記他の装置に適する構成のプログラムに変換する、請求項１に記載の情報処理装置。
【請求項３】
前記変換手段は、前記第１の記憶装置から取得したプログラムが仮想マシンコードで構成されるプログラムと前記中間コードで構成されるプログラムとのいずれかである場合に、前記受信した処理要求に含まれる前記他の装置の情報に基づいて、前記第１の記憶装置から取得したプログラムを、前記他の装置に適する構成のプログラムとして、前記他の装置において動作可能なネイティブコードで構成されるプログラムに変換する、請求項２に記載の情報処理装置。
【請求項４】
前記変換前のプログラムの位置情報と、前記変換されたプログラムとを対応付けて第２の記憶装置に格納する格納手段をさらに備え、
前記受信した処理要求に含まれる前記位置情報に対応する前記変換されたプログラムが、前記第２の記憶装置に格納されている場合に、前記取得手段は、前記第２の記憶装置から前記変換されたプログラムを取得し、
前記送信手段は、前記取得した前記変換されたプログラムを送信する、請求項１に記載の情報処理装置。
【請求項５】
前記格納手段は、前記受信した処理要求に含まれる前記変換前のプログラムの位置情報に対応する前記変換されたプログラムが、前記第２の記憶装置に格納されていない場合に、前記変換手段において変換されたプログラムを、前記変換前のプログラムの位置情報と対応付けて前記第２の記憶装置に格納する、請求項４に記載の情報処理装置。
【請求項６】
前記受信手段は、前記他の装置から、前記プログラムの位置情報と、前記プログラムを格納する前記第１の記憶装置を特定する情報とを含む処理要求を受付け、
前記取得手段は、前記受信した処理要求に含まれる前記第１の記憶装置を特定する情報に基づいて、前記特定された第１の記憶装置から前記位置情報に関連付けられたプログラムを取得する、請求項１に記載の情報処理装置。
【請求項７】
他の装置に対して、プログラムの位置情報と、当該情報処理装置の情報とを含む処理要求を行なう情報処理装置であって、
前記当該情報処理装置の情報は、当該情報処理装置のメモリ空き容量、前記プログラムの実行速度、当該情報処理装置の制御プログラムに関する情報などを含む情報であって、前記処理要求を作成する際に自動的に読出して前記処理要求に含ませることを特徴とする、情報処理装置。
【請求項８】
他の装置に対してプログラムの位置情報を含む処理要求を行なう要求手段と、
前記他の装置から、前記位置情報に対応するプログラムを取得する取得手段と、
前記他の装置から取得したプログラムを、記憶装置に格納する格納手段とを備え、
前記要求手段は、前記処理要求に含まれる前記位置情報に対応するプログラムが前記記憶装置に格納されていない場合には、前記他の装置に対して前記処理要求を行なう、情報処理装置。
【請求項９】
複数の情報処理装置からなる情報処理システムであって、
第１の情報処理装置は、第２の情報処理装置に対してプログラムの位置情報を含む処理要求を行ない、
前記第２の情報処理装置は、前記受信した処理要求に含まれる前記位置情報に基づいて、プログラムと位置情報とが関連付けれられて格納されている第１の記憶装置から、前記位置情報に関連付けられたプログラムを取得し、
前記第１の記憶装置から取得したプログラムが仮想マシンコードで構成されるプログラムである場合に、前記第２の情報処理装置は、前記プログラムを特定のクライアント装置に依存しない中間コードで構成されるプログラムに変換して前記第１の情報処理装置に対して送信する、情報処理システム。
【請求項１０】
前記第１の情報処理装置は、前記第２の情報処理装置に対して、プログラムの位置情報と、前記第１の情報処理装置の情報とを含む処理要求を行ない、
前記第２の情報処理装置は、前記第１の記憶装置から取得したプログラムを、前記受信した処理要求に含まれる前記第１の情報処理装置の情報に基づいて、前記第１の情報処理装置に適する構成のプログラムに変換して前記第１の情報処理装置に対して送信する、請求項９に記載の情報処理システム。
【請求項１１】
前記第２の情報処理装置は、前記変換前のプログラムの位置情報と前記変換されたプログラムとを対応付けて格納する第２の記憶装置に、前記受信した処理要求に含まれる前記位置情報に対応する前記変換されたプログラムが格納されている場合に、前記変換を行なわず、前記第２の記憶装置から前記変換されたプログラムを取得して前記第１の情報処理装置に対して送信する、請求項９に記載の情報処理システム。
【請求項１２】
前記第１の情報処理装置は、前記第２の情報処理装置に対して、前記プログラムの位置情報と、前記プログラムを格納する前記第１の記憶装置を特定する情報とを含む処理要求を行ない、
前記第２の情報処理装置は、前記受信した処理要求に含まれる前記第１の記憶装置を特定する情報に基づいて、前記特定された第１の記憶装置から前記位置情報に関連付けられたプログラムを取得する、請求項９に記載の情報処理システム。
【請求項１３】
前記第１の情報処理装置は、前記第２の情報処理装置から取得したプログラムを記憶装置に格納し、前記処理要求に含まれる前記位置情報に対応するプログラムが前記記憶装置に格納されていない場合に、前記第２の情報処理に対して前記処理要求を行なう、請求項９に記載の情報処理システム。
【請求項１４】
情報処理装置における情報処理方法をコンピュータに実行させるプログラムであって、
他の装置からプログラムの位置情報を含む処理要求を受付ける受信ステップと、
前記受信した処理要求に含まれる前記位置情報に基づいて、プログラムと位置情報とが関連付けれられて格納されている第１の記憶装置から、前記位置情報に関連付けられたプログラムを取得する取得ステップと、
前記第１の記憶装置から取得したプログラムが仮想マシンコードで構成されるプログラムである場合に、前記プログラムを特定のクライアント装置に依存しない中間コードで構成されるプログラムに変換する変換ステップと、
前記変換したプログラムを前記他の装置に対する処理応答として送信する送信ステップとを実行させる、情報処理プログラム。
【請求項１５】
前記受信ステップは、前記他の装置から、前記プログラムの位置情報と、前記他の装置の情報とを含む処理要求を受付け、
前記変換ステップは、前記第１の記憶装置から取得したプログラムを、前記受信した処理要求に含まれる前記他の装置の情報に基づいて、前記他の装置に適する構成のプログラムに変換する、請求項１４に記載の情報処理プログラム。
【請求項１６】
前記変換ステップは、前記第１の記憶装置から取得したプログラムが仮想マシンコードで構成されるプログラムと前記中間コードで構成されるプログラムとのいずれかである場合に、前記受信した処理要求に含まれる前記他の装置の情報に基づいて、前記第１の記憶装置から取得したプログラムを、前記他の装置に適する構成のプログラムとして、前記他の装置において動作可能なネイティブコードで構成されるプログラムに変換する、請求項１５に記載の情報処理プログラム。
【請求項１７】
前記変換前のプログラムの位置情報と、前記変換されたプログラムとを対応付けて第２の記憶装置に格納する格納ステップをさらに実行させ、
前記受信した処理要求に含まれる前記位置情報に対応する前記変換されたプログラムが、前記第２の記憶装置に格納されている場合に、前記取得ステップは、前記第２の記憶装置から前記変換されたプログラムを取得し、
前記送信ステップは、前記取得した前記変換されたプログラムを送信する、請求項１４に記載の情報処理プログラム。
【請求項１８】
前記格納ステップにおいて、前記受信した処理要求に含まれる前記変換前のプログラムの位置情報に対応する前記変換されたプログラムが、前記第２の記憶装置に格納されていない場合に、前記変換ステップにおいて変換されたプログラムを、前記変換前のプログラムの位置情報と対応付けて前記第２の記憶装置に格納する、請求項１７に記載の情報処理プログラム。
【請求項１９】
前記受信ステップは、前記他の装置から、前記プログラムの位置情報と、前記プログラムを格納する前記第１の記憶装置を特定する情報とを含む処理要求を受付け、
前記取得ステップは、前記受信した処理要求に含まれる前記第１の記憶装置を特定する情報に基づいて、前記特定された第１の記憶装置から前記位置情報に関連付けられたプログラムを取得する、請求項１４に記載の情報処理プログラム。
【請求項２０】
他の装置に対して、プログラムの位置情報と、情報処理装置の情報とを含む処理要求を行なう前記情報処理装置における情報処理方法をコンピュータに実行させるプログラムであって、
前記情報処理装置の情報は、前記情報処理装置のメモリ空き容量、前記プログラムの実行速度、前記情報処理装置の制御プログラムに関する情報などを含む情報であって、前記処理要求を作成する際に自動的に読出して前記処理要求に含ませることを特徴とする、情報処理プログラム。
【請求項２１】
情報処理装置における情報処理方法をコンピュータに実行させるプログラムであって、
他の装置に対してプログラムの位置情報を含む処理要求を行なう要求ステップと、
前記他の装置から、前記位置情報に対応するプログラムを取得する取得ステップと、
前記他の装置から取得したプログラムを記憶装置に格納する格納ステップとを実行させ、
前記要求ステップは、前記処理要求に含まれる前記位置情報に対応するプログラムが前記記憶装置に格納されていない場合には、前記他の装置に対して前記処理要求を行なう、情報処理プログラム。
【請求項２２】
請求項１４〜２１のいずれかに記載の情報処理プログラムを記録する、コンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は情報処理装置、情報処理システム、情報処理プログラム、および該プログラムを記録した記録媒体に関し、特に、他の情報処理装置に対して最適なプログラムを提供することのできる情報処理装置、情報処理システム、情報処理プログラム、および該プログラムを記録した記録媒体に関する。
【０００２】
【従来の技術】
コンピュータ等のマシンにおいて動作するプログラムとして、様々なプログラムが存在する。その中のＪａｖａ（Ｒ）プログラムは、特定のマシン固有の環境に依存しないＪａｖａ（Ｒ）ＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）と呼ばれる仮想マシン上で動作するマシンコードによって書かれたプログラムであり、Ｊａｖａ（Ｒ）プログラムの実行環境を備えていればいかなるマシンでも実行することができる。よってＪａｖａ（Ｒ）は様々な種類のマシンが接続するインターネット上で共通に使用できるオブジェクト指向言語として、インターネットユーザの拡大と共に広く使われるようになっている。
【０００３】
Ｊａｖａ（Ｒ）プログラムが様々なマシンで実行可能である理由として、Ｊａｖａ（Ｒ）プログラムがインタプリタ型で動作することが挙げられる。インタプリタ型は、プログラムに書かれた命令を１行ずつ解析し実行する動作を順に繰返す方法である。そのため、インタプリタ型は、解析段階でバグ等の危険なコードを排除しエラーチェックができ安全に実行できる反面、１行ずつ処理を行なうため実行速度が遅い。
【０００４】
そこで、Ｊａｖａ（Ｒ）プログラムのような仮想マシンコードプログラムの実行を高速化する技術としてコンパイルがある。コンパイルは、プログラムを、仮想マシンコードを実行しようとするマシンが直接実行できるネイティブコードに一括して変換する技術である。コンパイルされたプログラムは、マシンにおいて直接実行されるため、インタプリタ型より高速に実行することが可能になる。
【０００５】
コンパイルを行なうコンパイラにはいくつかの種類があり、その内ＪＩＴ（Ｊｕｓｔ−Ｉｎ−Ｔｉｍｅ）コンパイラは、仮想マシンコードを実行するマシンが直接実行に応じてコードを出力するコンパイラである。このＪＩＴコンパイラは、実際に多くのＪａｖａ（Ｒ）実行環境に実装されている。
【０００６】
また、特許文献１においては、仮想マシンコードを実行する環境のマシンとは異なる代理コンパイル装置でＪＩＴコンパイラを実行するネットワークコンピュータシステムが提供されている。
【０００７】
【特許文献１】
特開２０００−２１５１８１号公報
【０００８】
【発明が解決しようとする課題】
しかしながら、従来方法である実行環境と同一のマシン上でコンパイルを行なうＪＩＴコンパイラによる手法では、メモリ容量や演算能力といったマシンリソースを多く必要とするという問題がある。このため、携帯電話やＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）などの限られたマシンリソースの製品での採用は困難である。
【０００９】
また、この問題を解決するために特許文献１においては代理コンパイル装置が提供されているが、代理コンパイル装置からクライアントへ転送するプログラムサイズが大きくなるという問題がある。
【００１０】
家庭などで使用する据置き型のパーソナルコンピュータをクライアントと考えた場合には、インターネット上の代理コンパイル装置との通信速度は、近年のブロードバンド環境の拡大に伴ないメタル線を使用する場合で約十メガビット、光ファイバを使用する場合で百メガビットにも上り、かつ使用料金は接続時間や通信データ量に関係しない固定料金方式である。このため、上述のようなプログラムサイズの大きさはさほど問題にはならない。
【００１１】
しかしながら、携帯電話や携帯情報端末をクライアントとして考えた場合には、通信環境は一般に携帯電話もしくはＰＨＳ（Ｐｅｒｓｏｎａｌ  Ｈａｎｄｙｐｈｏｎｅ  Ｓｙｓｔｅｍ）による無線方式であり、その通信速度は秒間数十キロビットから数百キロビットと遅く、また通信時間や通信データ量に応じて課金が発生する方式である。よってプログラムサイズが大きくなる問題は、通信時間が伸張したり通信量が増加し大きく費用が発生する問題に繋がる。
【００１２】
また、クライアント装置によっては、使用可能な搭載メモリ量が多い、すなわち資源が潤沢な環境もある。このような場合は、プログラムサイズやプログラム実行時の使用メモリ量が多少大きくなっても高速に動作することを希望することもあり、そのような要求にも柔軟に対応しなければならないという問題もある。
【００１３】
本発明はこれらの問題に鑑みてなされたものであって、クライアント装置に対して、低い通信量で最適なプログラムを提供することのできる情報処理装置、情報処理システム、情報処理プログラム、および該プログラムを記録した記録媒体を提供することを目的とする。
【００１４】
【課題を解決するための手段】
上記目的を達成するために、本発明のある局面に従うと、情報処理装置は、他の装置からプログラムの位置情報を含む処理要求を受付ける受信手段と、受信した処理要求に含まれる位置情報に基づいて、プログラムと位置情報とが関連付けれられて格納されている第１の記憶装置から、位置情報に関連付けられたプログラムを取得する取得手段と、第１の記憶装置から取得したプログラムが仮想マシンコードで構成されるプログラムである場合に、プログラムを特定のクライアント装置に依存しない中間コードで構成されるプログラムに変換する変換手段と、変換したプログラムを他の装置に対する処理応答として送信する送信手段とを備える。
【００１５】
また、上述の受信手段は、他の装置から、プログラムの位置情報と、他の装置の情報とを含む処理要求を受付け、変換手段は、第１の記憶装置から取得したプログラムを、受信した処理要求に含まれる他の装置の情報に基づいて、他の装置に適する構成のプログラムに変換することが望ましい。
【００１６】
さらに、上述の変換手段は、第１の記憶装置から取得したプログラムが仮想マシンコードで構成されるプログラムと中間コードで構成されるプログラムとのいずれかである場合に、受信した処理要求に含まれる他の装置の情報に基づいて、第１の記憶装置から取得したプログラムを、他の装置に適する構成のプログラムとして、他の装置において動作可能なネイティブコードで構成されるプログラムに変換することが望ましい。
【００１７】
また、情報処理装置は、変換前のプログラムの位置情報と、変換されたプログラムとを対応付けて第２の記憶装置に格納する格納手段をさらに備え、受信した処理要求に含まれる位置情報に対応する変換されたプログラムが、第２の記憶装置に格納されている場合に、取得手段は、第２の記憶装置から変換されたプログラムを取得し、送信手段は、取得した変換されたプログラムを送信することが望ましい。
【００１８】
さらに、上述の格納手段は、受信した処理要求に含まれる変換前のプログラムの位置情報に対応する変換されたプログラムが、第２の記憶装置に格納されていない場合に、変換手段において変換されたプログラムを、変換前のプログラムの位置情報と対応付けて第２の記憶装置に格納することが望ましい。
【００１９】
また、上述の受信手段は、他の装置から、プログラムの位置情報と、プログラムを格納する第１の記憶装置を特定する情報とを含む処理要求を受付け、取得手段は、受信した処理要求に含まれる第１の記憶装置を特定する情報に基づいて、特定された第１の記憶装置から位置情報に関連付けられたプログラムを取得することが望ましい。
【００２０】
本発明の他の局面に従うと、情報処理装置は、他の装置に対して、プログラムの位置情報と、当該情報処理装置の情報とを含む処理要求を行なう情報処理装置であって、当該情報処理装置の情報は、当該情報処理装置のメモリ空き容量、プログラムの実行速度、当該情報処理装置の制御プログラムに関する情報などを含む情報であって、処理要求を作成する際に自動的に読出して処理要求に含ませることを特徴とする。
【００２１】
本発明のさらに他の局面に従うと、情報処理装置は、他の装置に対してプログラムの位置情報を含む処理要求を行なう要求手段と、他の装置から、位置情報に対応するプログラムを取得する取得手段と、他の装置から取得したプログラムを、記憶装置に格納する格納手段とを備え、要求手段は、処理要求に含まれる位置情報に対応するプログラムが記憶装置に格納されていない場合には、他の装置に対して処理要求を行なう。
【００２２】
本発明のさらに他の局面に従うと、情報処理システムは、複数の情報処理装置からなる情報処理システムであって、第１の情報処理装置は、第２の情報処理装置に対してプログラムの位置情報を含む処理要求を行ない、第２の情報処理装置は、受信した処理要求に含まれる位置情報に基づいて、プログラムと位置情報とが関連付けれられて格納されている第１の記憶装置から、位置情報に関連付けられたプログラムを取得し、第１の記憶装置から取得したプログラムが仮想マシンコードで構成されるプログラムである場合に、第２の情報処理装置は、プログラムを特定のクライアント装置に依存しない中間コードで構成されるプログラムに変換して第１の情報処理装置に対して送信する。
【００２３】
また、第１の情報処理装置は、第２の情報処理装置に対して、プログラムの位置情報と、第１の情報処理装置の情報とを含む処理要求を行ない、第２の情報処理装置は、第１の記憶装置から取得したプログラムを、受信した処理要求に含まれる第１の情報処理装置の情報に基づいて、第１の情報処理装置に適する構成のプログラムに変換して第１の情報処理装置に対して送信することが望ましい。
【００２４】
また、第２の情報処理装置は、変換前のプログラムの位置情報と前記変換されたプログラムとを対応付けて格納する第２の記憶装置に、受信した処理要求に含まれる位置情報に対応する変換されたプログラムが格納されている場合に、変換を行なわず、第２の記憶装置から変換されたプログラムを取得して第１の情報処理装置に対して送信することが望ましい。
【００２５】
また、第１の情報処理装置は、第２の情報処理装置に対して、プログラムの位置情報と、プログラムを格納する第１の記憶装置を特定する情報とを含む処理要求を行ない、第２の情報処理装置は、受信した処理要求に含まれる第１の記憶装置を特定する情報に基づいて、特定された第１の記憶装置から位置情報に関連付けられたプログラムを取得することが望ましい。
【００２６】
また、第１の情報処理装置は、第２の情報処理装置から取得したプログラムを記憶装置に格納し、処理要求に含まれる位置情報に対応するプログラムが記憶装置に格納されていない場合に、第２の情報処理に対して処理要求を行なうことが望ましい。
【００２７】
本発明のさらに他の局面に従うと、情報処理プログラムは、情報処理装置における情報処理方法をコンピュータに実行させるプログラムであって、他の装置からプログラムの位置情報を含む処理要求を受付ける受信ステップと、受信した処理要求に含まれる位置情報に基づいて、プログラムと位置情報とが関連付けれられて格納されている第１の記憶装置から、位置情報に関連付けられたプログラムを取得する取得ステップと、第１の記憶装置から取得したプログラムが仮想マシンコードで構成されるプログラムである場合に、プログラムを特定のクライアント装置に依存しない中間コードで構成されるプログラムに変換する変換ステップと、変換したプログラムを他の装置に対する処理応答として送信する送信ステップとを実行させる。
【００２８】
また、上述の受信ステップは、他の装置から、プログラムの位置情報と、他の装置の情報とを含む処理要求を受付け、変換ステップは、第１の記憶装置から取得したプログラムを、受信した処理要求に含まれる他の装置の情報に基づいて、他の装置に適する構成のプログラムに変換することが望ましい。
【００２９】
さらに、上述の変換ステップは、第１の記憶装置から取得したプログラムが仮想マシンコードで構成されるプログラムと中間コードで構成されるプログラムとのいずれかである場合に、受信した処理要求に含まれる他の装置の情報に基づいて、第１の記憶装置から取得したプログラムを、他の装置に適する構成のプログラムとして、他の装置において動作可能なネイティブコードで構成されるプログラムに変換することが望ましい。
【００３０】
また、情報処理プログラムは、変換前のプログラムの位置情報と、変換されたプログラムとを対応付けて第２の記憶装置に格納する格納ステップをさらに実行させ、受信した処理要求に含まれる位置情報に対応する変換されたプログラムが、第２の記憶装置に格納されている場合に、取得ステップは、第２の記憶装置から変換されたプログラムを取得し、送信ステップは、取得した変換されたプログラムを送信することが望ましい。
【００３１】
さらに、上述の格納ステップにおいて、受信した処理要求に含まれる変換前のプログラムの位置情報に対応する変換されたプログラムが、第２の記憶装置に格納されていない場合に、変換ステップにおいて変換されたプログラムを、変換前のプログラムの位置情報と対応付けて第２の記憶装置に格納することが望ましい。
【００３２】
また上述の受信ステップは、他の装置から、プログラムの位置情報と、プログラムを格納する第１の記憶装置を特定する情報とを含む処理要求を受付け、取得ステップは、受信した処理要求に含まれる第１の記憶装置を特定する情報に基づいて、特定された第１の記憶装置から位置情報に関連付けられたプログラムを取得することが望ましい。
【００３３】
本発明のさらに他の局面に従うと、情報処理プログラムは、他の装置に対して、プログラムの位置情報と、情報処理装置の情報とを含む処理要求を行なう情報処理装置における情報処理方法をコンピュータに実行させるプログラムであって、情報処理装置の情報は、情報処理装置のメモリ空き容量、プログラムの実行速度、情報処理装置の制御プログラムに関する情報などを含む情報であって、処理要求を作成する際に自動的に読出して処理要求に含ませることを特徴とする。
【００３４】
本発明のさらに他の局面に従うと、情報処理プログラムは、情報処理装置における情報処理方法をコンピュータに実行させるプログラムであって、他の装置に対してプログラムの位置情報を含む処理要求を行なう要求ステップと、他の装置から、位置情報に対応するプログラムを取得する取得ステップと、他の装置から取得したプログラムを記憶装置に格納する格納ステップとを実行させ、要求ステップは、処理要求に含まれる位置情報に対応するプログラムが記憶装置に格納されていない場合には、他の装置に対して処理要求を行なう。
【００３５】
本発明のさらに他の局面に従うと、記録媒体は、コンピュータ読取可能な記録媒体であって、上述の情報処理プログラムを記録する。
【００３６】
【発明の実施の形態】
以下に、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがってそれらについての詳細な説明は繰返さない。
【００３７】
［第１の実施の形態］
図１に、第１の実施の形態における情報処理システムの構成の具体例を示す。
【００３８】
図１を参照して、本実施の形態における情報処理システムは、サーバ装置１０１とクライアント装置１０２とを含み、ネットワーク１０３を介して接続される。
【００３９】
サーバ装置１０１は、クライアント装置１０２の処理要求に対して何らかの処理応答を返す装置であり、具体的にはＷｅｂサーバなどが該当する。処理要求にはプログラムやテキスト文書、画像といったデータの位置情報がＵＲＬ等の表記によって含まれる。また、サーバ装置１０１は、一般的なコンピュータ等を用いて構成され、そのハードウェア構成について、図２にブロック図を示す。
【００４０】
図２を参照して、本実施の形態におけるサーバ装置１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１によって制御され、Ｉ／Ｆ（インタフェース）１５を介してクライアント装置１０２から受付けた処理要求に対して処理を行なう。ＣＰＵ１１で実行されるプログラムは、記憶部であるＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２またはＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１４に記憶される。そして、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３は、ＣＰＵ１１でプログラムが実行される際の一時的な作業領域となる。なお、サーバ装置１０１は一般的なコンピュータを用いて構成することができ、図２に示されるハードウェア構成は一般的なコンピュータのハードウェア構成である。そのため、言うまでもなく、サーバ装置１０１のハードウェア構成は図２に示される構成に限定されない。
【００４１】
クライアント装置１０２もまた、一般的なコンピュータ等を用いて構成される装置であって、図２に示されるハードウェア構成と同様な構成である。そのため、ここでの詳細な説明は行なわない。
【００４２】
ネットワーク１０３は、サーバ装置１０１とクライアント装置１０２とを接続するネットワークであり、インターネットや企業内のイントラネットなどが該当するが、その他、無線によるネットワークであっても構わない。
【００４３】
本情報処理システムにおいては、クライアント装置１０２は、サーバ装置１０１で管理するプログラムの位置を示すＵＲＬを含む処理要求を、サーバ装置１０１に対して送信する。サーバ装置１０１は、受信した処理要求からプログラムの位置情報を取得して、該当する位置のプログラムを特定する。プログラムが仮想マシンコードプログラムであれば、サーバ装置１０１は、中間コードプログラムに変換して処理応答とし、要求元のクライアント装置１０２に渡す。
【００４４】
クライアント装置１０２は、サーバ装置１０１から受取った中間コードプログラムを、クライアント装置１０２が実行できるネイティブコードプログラムに変換し、実行に必要なライブラリや情報とリンクして実行する。
【００４５】
図３に、本情報処理システムを構成するサーバ装置１０１の機能構成を表わす、機能ブロックの具体例を示す。
【００４６】
図３を参照して、サーバ装置１０１は、サーバ装置１０１を制御するサーバコントローラ２０１と、有線または無線によって他の装置と通信を行なうためのモジュールであるネットワークインタフェース２０２とを含む。
【００４７】
さらに、サーバ装置１０１は、仮想マシンコードプログラムを、特定のマシンに依存しない命令コードである中間コードのプログラムに変換する仮想マシン−中間コード変換器２０３と、サーバ装置１０１が取扱うデータを管理するデータ管理器２０４とを含む。
【００４８】
データ管理器２０４は、仮想マシンコードプログラム２０５と仮想マシンコードプログラム以外のデータ２０６とを、プログラム位置情報と関連付けて管理する。データ管理器２０４が管理するデータは、サーバ装置１０１のＨＤＤ１４あるいはＲＡＭ１３に置かれてもよいし、サーバ装置１０１とは別の装置に置いても構わない。
【００４９】
このような本実施の形態のサーバ装置１０１において、サーバコントローラ２０１は、ネットワークインタフェース２０２を介してクライアント装置１０２から仮想マシンコードプログラムの位置情報を含む処理要求を受信する。そして、サーバコントローラ２０１は、受信した処理要求に含まれるプログラム位置情報を取得し、当該位置情報と関連付けられた仮想マシンコードプログラムを、データ管理器２０４の管理するデータの中からデータ管理器２０４によって検索する。
【００５０】
位置情報と関連付けられた仮想マシンコードプログラムがデータ管理器２０４の管理するデータの中にある場合は、データ管理器２０４は、当該仮想マシンコードプログラムを取出して、仮想マシン−中間コード変換器２０３によって中間コードに変換する。そして、変換した中間コードを、ネットワークインタフェース２０２を介して、処理要求の送信元であるクライアント装置１０２に処理応答として送信する。
【００５１】
位置情報と関連付けられたデータが仮想マシンコードプログラムではない場合や、データとして存在しない場合は、別途処理される。
【００５２】
図４に、上述のサーバコントローラ２０１の動作手順の具体例を表わすフローチャートを示す。図４に示されるサーバ装置１０１における応答処理は、ＣＰＵ１１が、ＲＯＭ１２またはＨＤＤ１４に記憶されるプログラムを読出してＲＡＭ１３上に展開し、図３に示される各部を機能させることによって実行される。
【００５３】
図４を参照して、サーバコントローラ２０１は実行を開始すると、始めに、他の装置と接続したネットワークインタフェース２０２において、クライアント装置１０２からの処理要求を待つ（Ｓ１０１）。
【００５４】
次に、クライアント装置１０２から仮想マシンコードプログラムの位置情報を含む処理要求を受けると、要求の位置情報を指定して、データ管理器２０４で検索する（Ｓ１０２）。そして、データ管理器２０４において、指定した位置情報と関連付けられているデータが仮想マシンコードプログラムであるか否かを判定する（Ｓ１０３）。
【００５５】
指定した位置情報と関連付けられているデータが仮想マシンコードプログラムである場合は（Ｓ１０３でＹＥＳ）、データ管理器２０４においてその仮想マシンコードプログラムを取得する（Ｓ１０４）。
【００５６】
一方、指定した位置情報と関連付けられているデータが仮想マシンコードプログラムとは異なるデータであったり、指定の位置情報と関連付けられたデータが存在しない場合は（Ｓ１０３でＮＯ）、別途処理する（Ｓ１０７）。
【００５７】
そして、仮想マシン−中間コード変換器２０３において、取得した仮想マシンコードプログラムを中間コードプログラムに変換し（Ｓ１０５）、変換後の中間コードプログラムを、処理応答として要求元のクライアント装置１０２へ送信する（Ｓ１０６）。ステップＳ１０６におけるプログラムの変換方法は、一般的な変換方法でよく、本発明において限定されるものではない。
【００５８】
以上でサーバ装置１０１における応答処理を終了し、要求元のクライアント装置１０２に対して中間コードプログラムが送信される。
【００５９】
上述のように、本実施の形態におけるサーバ装置１０１は、サーバ装置１０１において仮想マシンコードプログラムを中間コードプログラムに変換し、変換した中間コードプログラムをクライアント装置１０２に対して渡すことを特徴とする。
【００６０】
この中間コードプログラムは、特定のマシンに依存しない命令コードによって構成されているプログラムであるため、上述のステップＳ１０３において、コンパイルサーバであるサーバ装置１０１が仮想マシンコードプログラムから中間コードプログラムへの変換を行なう際に、クライアント装置１０２の実行環境を考慮して変換を行なう必要がない。このため、クライアント装置１０２からサーバ装置１０１に対して、当該クライアント装置１０２の実行環境等の情報を送る必要がないので、サーバ装置１０１に対する処理要求において情報量が削減し、通信量を低減させることができる。
【００６１】
また、サーバ装置１０１では、クライアント装置１０２の実行環境を考慮して変換を行なう必要がないため、クライアント装置１０２ごとに異なるアーキテクチャに応じて複数のコンパイラや変換器を用意する必要がない。このため、サーバ装置１０１の機能の簡単化を図ることができ、しかも処理の軽減を図ることが可能となる。
【００６２】
さらに、本実施の形態におけるサーバ装置１０１は、仮想マシンコードプログラムではなく変換した中間コードプログラムをクライアント装置１０２に対して渡すため、以下のような効果がある。
【００６３】
ここで、仮想マシンコード、中間コード、およびネイティブコードの差異について説明する。
【００６４】
ネイティブコードは、パーソナルコンピュータや携帯電話などの実在するコンピュータ上で直接実行可能な命令群である。また、仮想マシンコードおよび中間コードは、いずれも仮想的なコンピュータ上で実行可能な命令群であるが、両者はアーキテクチャが異なり、後者はネイティブコードが動作するコンピュータのアーキテクチャに近い特徴を持っている。
【００６５】
例えば、仮想マシンコードとしてＪａｖａ（Ｒ）プログラムのバイトコードを考えた場合、仮想マシンは、Ｊａｖａ（Ｒ）ＶｉｒｔｕａｌＭａｃｈｉｎｅ（Ｒ）である。また、実在するコンピュータでは、米インテル社製のＰｅｎｔｉｕｍ（Ｒ）があり、専用のネイティブコードが直接実行可能である。Ｊａｖａ（Ｒ）ＶｉｒｔｕａｌＭａｃｈｉｎｅ（Ｒ）のアーキテクチャはスタック型であるが、Ｐｅｎｔｉｕｍ（Ｒ）のアーキテクチャはレジスタ型であり、また中間コードが動作するマシンのアーキテクチャもレジスタ型となる。
【００６６】
また仮想マシンコードから中間コードへの変換を容易にするように、中間コードが動作するマシンは、実在するコンピュータの制約の多くを取除いた点を特徴とする。例えば、中間コードでは、レジスタの数を無限個に持つことができる。これにより、プログラム中での変数は、全てレジスタに割当てることが可能である。
【００６７】
一方、実在のコンピュータでは、レジスタ数は有限であり、変数全てをレジスタに割当てることは不可能となる場合が多い。この場合は、外部のメモリに変数を割当てて利用する必要がある。
【００６８】
一般的に、レジスタ型のコンピュータでの演算は、レジスタを使用しなければならないため、外部メモリの値を演算に用いるには、一旦レジスタへ転送する必要がある。場合によっては外部メモリから転送する前に、レジスタに格納している現在の値を別のメモリ領域に転送し退避する操作と、演算後に退避した値をレジスタに戻す操作とが必要となる。
【００６９】
中間コードは、このようなレジスタを無限個とするため、上述のような操作は必要がない。そのため、命令数が少なくて済み、プログラムサイズは減少し、通信量が低減する。本実施の形態におけるサーバ装置１０１ではこのような中間コードで構成されるプログラムをクライアント装置１０２に対して送信するため、クライアント装置１０２に送信する情報量を大幅に削減することができる。
【００７０】
［第２の実施の形態］
第２の実施の形態におけるサーバ装置１０１のハードウェア構成は、図２に示される具体例と同様であるため、ここでの説明を繰返さない。
【００７１】
図５に、本実施の形態のサーバ装置１０１の機能構成を表わす、機能ブロックの具体例を示す。本実施の形態のサーバ装置１０１は、仮想マシンコードからネイティブコードへの変換を行なうことを特徴とする。
【００７２】
具体的には、図５を参照して、本実施の形態におけるサーバ装置１０１は、第１の実施の形態におけるサーバ装置１０１と同様に、サーバ装置１０１を制御するサーバコントローラ２１０と、有線または無線によって他の装置と通信を行なうためのモジュールであるネットワークインタフェース２０２とを含む。
【００７３】
さらに、サーバ装置１０１は、仮想マシンコードプログラムを、特定のマシンに依存しない命令コードである中間コードのプログラムに変換する仮想マシン−中間コード変換器２０３と、中間コードを特定のマシンに依存するネイティブコードに変換する中間コード−ネイティブコード変換器２１１と、サーバ装置１０１が取扱うデータを管理するデータ管理器２０４とを含む。
【００７４】
データ管理器２０４は、仮想マシンコードプログラム２０５と仮想マシンコードプログラム以外のデータ２０６とを、プログラム位置情報と関連付けて管理する。データ管理器２０４が管理するデータは、サーバ装置１０１のＨＤＤ１４あるいはＲＡＭ１３に置かれてもよいし、サーバ装置１０１とは別の装置に置いても構わない。
【００７５】
ＣＰＵやオペレーティングシステムなど装置環境の違いにより作成するネイティブコードが異なるため、本実施の形態のサーバ装置１００では、当該サーバ装置１００を使用する装置の環境に応じてコード変換器を用意する必要があり、複数のコード変換器を使い分けることになる。
【００７６】
このような本実施の形態のサーバ装置１００において、サーバコントローラ２１０は、ネットワークインタフェース２０２を介してクライアント装置１０２から仮想マシンコードプログラムの位置情報とクライアント装置情報とを含む処理要求を受信する。そして、サーバコントローラ２１０は、処理要求に含まれるプログラム位置情報を取得し、当該位置情報と関連付けられた仮想マシンコードプログラムを、データ管理器２０４の管理するデータの中からデータ管理器２０４によって検索する。
【００７７】
位置情報と関連付けられた仮想マシンコードプログラムがデータ管理器２０４の管理するデータの中にある場合は、データ管理器２０４は、当該仮想マシンコードプログラムを取出して、仮想マシン−中間コード変換器２０３によって中間コードに変換する。さらに、変換した中間コードを、中間コード−ネイティブコード変換器２１１によって、処理要求に含まれたクライアント装置情報から特定したアーキテクチャに対応するネイティブコードに変換する。そして、変換したネイティブコードを、ネットワークインターフェース２０２を介して、処理要求の送信元であるクライアント装置１０２に処理応答として送信する。
【００７８】
一方、位置情報と関連付けられたデータが仮想マシンコードプログラムではない場合や、データとして存在しない場合は、別途処理される。
【００７９】
また、処理要求に含まれるクライアント装置情報からアーキテクチャが特定できない場合は、ネイティブコードではなく中間コードプログラムを送信することも可能である。
【００８０】
図６に、上述のサーバコントローラ２１０の動作手順の具体例を表わすフローチャートを示す。図６に示されるサーバ装置１０１における応答処理もまた、ＣＰＵ１１が、ＲＯＭ１２またはＨＤＤ１４に記憶されるプログラムを読出してＲＡＭ１３上に展開し、図３に示される各部を機能させることによって実行される。
【００８１】
図６を参照して、サーバコントローラ２１０は実行を開始すると、始めに、他の装置と接続したネットワークインタフェース２０２において、クライアント装置１０２からの処理要求を待つ（Ｓ２０１）。
【００８２】
次に、クライアント装置１０２から仮想マシンコードプログラムの位置情報を含む処理要求を受けると、要求の位置情報を指定して、データ管理器２０４で検索する（Ｓ２０２）。そして、データ管理器２０４において、指定した位置情報と関連付けられているデータが仮想マシンコードプログラムであるか否かを判定する（Ｓ２０３）。
【００８３】
指定した位置情報と関連付けられているデータが仮想マシンコードプログラムである場合は（Ｓ２０３でＹＥＳ）、データ管理器２０４においてその仮想マシンコードプログラムを取得し（Ｓ２０４）、取得した仮想マシンコードプログラムを仮想マシン−中間コード変換器２０３において中間コードプログラムに変換する（Ｓ２０５）。
【００８４】
一方、指定した位置情報と関連付けられているデータが仮想マシンコードプログラムとは異なるデータであったり、指定の位置情報と関連付けられたデータが存在しない場合は（Ｓ２０３でＮＯ）、別途処理する（Ｓ２１０）。
【００８５】
次に、サーバコントローラ２１０において、クライアント装置１０２からの処理要求でクライアント装置情報が指定されており、さらにクライアント装置１０２のアーキテクチャの特定が可能であるか否かを判定する（Ｓ２０６）。
【００８６】
クライアント装置１０２からの処理要求よりクライアント装置１０２のアーキテクチャが特定できる場合には（Ｓ２０６でＹＥＳ）、中間コード−ネイティブコード変換器２１１において、中間コードプログラムをそのアーキテクチャに対応したネイティブコードプログラムへ変換する（Ｓ２０７）。そして、変換したネイティブコードプログラムを、処理応答として要求元のクライアント装置１０２へ送信する（Ｓ２０８）。
【００８７】
クライアント装置１０２からの処理要求よりクライアント装置のアーキテクチャが特定できない場合には（Ｓ２０６でＮＯ）、中間コードプログラムを、処理応答として要求元のクライアント装置１０２へ送信する（Ｓ２１１）。
【００８８】
以上でサーバ装置１０１における応答処理を終了し、要求元のクライアント装置１０２に対して、実行可能なネイティブコードプログラムあるいは中間コードプログラムが送信される。
【００８９】
上述のように、本実施の形態におけるサーバ装置１０１は、サーバ装置１０１において仮想マシンコードプログラムを中間コードプログラムに変換し、さらにクライアント装置１０２のアーキテクチャに応じて中間コードプログラムをネイティブコードプログラムに変換し、変換したネイティブコードプログラムをクライアント装置１０２に対して渡すことを特徴とする。
【００９０】
このようにすることで、クライアント装置１０２において中間コードプログラムを実行可能なネイティブコードプログラムに変換する処理を不要とし、クライアント装置１０２の構成を簡略化することができる。また、クライアント装置１０２におけるプログラムの起動を早め、実行までの時間を短くすることができる。
【００９１】
［第３の実施の形態］
第３の実施の形態におけるサーバ装置１０１のハードウェア構成は、図２に示される具体例と同様であるため、ここでの説明を繰返さない。
【００９２】
図７に、本実施の形態のサーバ装置１０１の機能構成を表わす、機能ブロックの具体例を示す。本実施の形態のサーバ装置１０１は、キャッシュ機能を備えることを特徴とする。
【００９３】
具体的には、図７を参照して、本実施の形態におけるサーバ装置１０１は、第１，第２の実施の形態におけるサーバ装置１０１と同様に、サーバ装置１０１を制御するサーバコントローラ２２０と、有線または無線によって他の装置と通信を行なうためのモジュールであるネットワークインタフェース２０２とを含む。
【００９４】
さらに、サーバ装置１０１は、仮想マシンコードプログラムを、特定のマシンに依存しない命令コードである中間コードのプログラムに変換する仮想マシン−中間コード変換器２０３と、中間コードを特定のマシンに依存するネイティブコードに変換する中間コード−ネイティブコード変換器２１１と、プログラム位置情報と関連付けて変換済プログラムを保存するキャッシュ装置２２２と、サーバ装置１０１が取扱うデータを管理するデータ管理器２０４とを含む。
【００９５】
データ管理器２０４は、仮想マシンコードプログラム２０５と仮想マシンコードプログラム以外のデータ２０６とを、プログラム位置情報と関連付けて管理する。データ管理器２０４が管理するデータは、サーバ装置１０１のＨＤＤ１４あるいはＲＡＭ１３に置かれてもよいし、サーバ装置１０１とは別の装置に置いても構わない。
【００９６】
このような本実施の形態のサーバ装置１００において、サーバコントローラ２２０は、ネットワークインタフェース２０２を介してクライアント装置１０２から仮想マシンコードプログラムの位置情報とクライアント装置情報とを含む処理要求を受信する。そして、サーバコントローラ２２０は、処理要求に含まれるプログラム位置情報を取得し、当該位置情報と関連付けられた仮想マシンコードプログラムを、データ管理器２０４の管理するデータの中からデータ管理器２０４によって検索する。
【００９７】
その際、データ管理器２０４は、キャッシュ装置２２２に同じプログラム位置情報と関連付けられた変換済プログラムの有無を確認する。キャッシュ装置２２２に変換済プログラムが存在する場合は、その変換済プログラムを取出して使用し、新たにプログラムを変換する処理を行なわない。また、キャッシュ装置２２２に変換済プログラムが存在しない場合には、位置情報で指定された仮想マシンコードプログラムをデータ管理器２０４の管理するデータの中から取出して、仮想マシン−中間コード変換器２０３によって中間コードに変換する。そして、変換した中間コードプログラムを、キャッシュ装置２２２にプログラム位置情報と関連付けて保存し、ネットワークインターフェース２０２を介して、処理要求の送信元であるクライアント装置１０２に処理応答として送信する。
【００９８】
図８に、上述のサーバコントローラ２２０の動作手順の具体例を表わすフローチャートを示す。図８に示されるサーバ装置１０１における応答処理は、図６に示される第２の実施の形態のサーバ装置１０１における応答処理に対してキャッシュ機能に関連する処理が加わったものである。
【００９９】
図８を参照して、サーバコントローラ２２０は、クライアント装置１０２から仮想マシンコードプログラムの位置情報を含む処理要求を受けると（Ｓ３０１）、先行してキャッシュ装置２２２を検索し、プログラム位置情報と関連付けられた変換済プログラムがキャッシュ装置２２２に保存されているか否かを確認する（Ｓ３０３）。
【０１００】
プログラム位置情報と関連付けられた変換済プログラムがキャッシュ装置２２２に保存されている場合（Ｓ３０２でＹＥＳ）、キャッシュ装置２２２から変換済プログラムを取得して処理応答としてクライアント装置１０２へ送信し（Ｓ３０９）、処理を終了する。
【０１０１】
一方、プログラム位置情報と関連付けられた変換済プログラムがキャッシュ装置２２２に保存されていない場合（Ｓ３０２でＮＯ）、ステップＳ３０３〜Ｓ３０５，Ｓ３１０において図３のフローチャートに示す処理と同様の処理を実行しする。そして、仮想マシンコード−中間コード変換器２０３によってプログラム位置情報と関連付けられた仮想マシンコードプログラムを中間コードプログラムへと変換する（Ｓ３０６）。ここで、本サーバ装置１０１に中間コード−ネイティブコード変換器が搭載されており、かつクライアント装置１０２から受信した処理要求によってクライアント装置１０２のアーキテクチャが特定可能である場合は、さらに変換された中間コードをネイティブコードに変換することもできる。
【０１０２】
そして、変換後のプログラムをプログラム位置情報と関連付けてキャッシュ装置２２２に保存し（Ｓ３０７）、その後に、処理応答として要求元のクライアント装置１０２へ変換後のプログラムを送信する（Ｓ３０８）。
【０１０３】
以上でサーバ装置１０１における応答処理を終了し、要求元のクライアント装置１０２に対して、実行可能なネイティブコードプログラムあるいは中間コードプログラムが送信される。
【０１０４】
このように、本実施の形態におけるサーバ装置１０１がキャッシュ機能をさらに備えることで、キャッシュ装置２２２に保存された変換済プログラムと同じプログラム位置情報を含む処理要求がある際は、プログラム変換処理を行なわずに変換済プログラムを送信することが可能となる。そのため、サーバ装置１０１の処理を簡単化することができる。
【０１０５】
なお、図９に、キャシュ装置２２２が持つキャッシュテーブルの具体例を示す。図９においては、２つのプログラムをプログラム位置情報と関連付けて管理している。
【０１０６】
図９を参照して、キャッシュテーブルの１行目は、当該キャシュ装置２２２に、プログラム位置情報ｐｒｏｇｒａｍ／Ｇａｍｅ．ｃｌａｓｓに関連付けてプログラムｉａｓｄ８０１３．ｉｍｃが保存されていることを示す。
【０１０７】
上述のステップＳ３０１において、サーバ装置１０１がクライアント装置１０２よりプログラム位置情報ｐｒｏｇｒａｍ／Ｇａｍｅ．ｃｌａｓｓを含む処理要求を受取った場合、同じプログラム位置情報がキャッシュテーブルに存在するため、ステップＳ３０３以降の処理であるプログラムの変換は行なわずに、ステップＳ３０９においてキャッシュ装置２２２内のプログラムｉａｓｄ８０１３．ｉｍｃを使用する。
【０１０８】
また、上述のステップＳ３０１において、サーバ装置１０１がクライアント装置１０２よりプログラム位置情報ｐｒｏｇｒａｍ／Ｔｏｏｌ．ｃｌａｓｓを含む処理要求を受取った場合は、このプログラム位置情報がキャッシュテーブルに存在しないため、上述のステップＳ３０３〜Ｓ３０６において、前述した第１の実施の形態のサーバ装置１０１と同様の処理を行ない、プログラム位置情報に基づいて仮想マシンコードプログラムを取得し、中間コードプログラムまたはネイティブコードプログラムに変換する。そして変換済のプログラムは、上述のステップＳ３０７において、プログラム位置情報ｐｒｏｇｒａｍ／Ｔｏｏｌ．ｃｌａｓｓに関連付けてキャッシュ装置２２２に保存し、キャッシュテーブルを更新する。
【０１０９】
なお、本キャッシュテーブルには、キャッシュ装置２２２にプログラムが保存された日時やプログラムサイズ、プログラム位置情報の処理要求を送信したクライアント装置名やアドレスといった項目を自由に設定できることが好ましい。このようにすることで、これらを利用してキャッシュ装置２２２を制御することも可能である。
【０１１０】
［第４の実施の形態］
第４の実施の形態におけるサーバ装置１０１のハードウェア構成は、図２に示される具体例と同様であるため、ここでの説明を繰返さない。また、サーバ装置１０１の機能構成もまた、図３あるいは図７に示される具体例と同様であるため、ここでの説明を繰返さない。
【０１１１】
本実施の形態のサーバ装置１０１は、仮想マシン−中間コード変換器２０３において仮想マシンコードプログラムのコード変換を行なう際に、クライアント装置１０２から送信される処理要求に含まれる資源情報やユーザ設定に基いて最適化を行なうことを特徴とする。
【０１１２】
ここで、本実施の形態にサーバ装置１０１の仮想マシン−中間コード変換器２０３が行なう最適化について具体的に説明する。最適化には、コンパイラなどの開発ツールにおいて一般的に使用するループ展開やインライン展開などがある。
【０１１３】
図１０〜図１２は、仮想マシン−中間コード変換器２０３がコードの変換時に最適化を行なう場合の具体例を示す図である。図１０は、変換元となる仮想マシンコードプログラムのソースコードの具体例を示す図であり、仮想マシンコードプログラムでは、図１０に示されるソースコードの通りにバイナリコードが作成されているとする。
【０１１４】
図１１は、図１０に示すソースコードにおいて、ｆｏｒ文のループ展開を行なって最適化した仮想マシンコードプログラムのソースコードの具体例を示す図であり、ループの中に記述されたｄｉｓｐＩｎｔ関数呼出しがループ回数だけ記されｆｏｒ文は取去られている。これにより、ループを続けるか否かを判定するコードおよびループの始めへとジャンプするコードといった、ループを繰返す回数分実行するコードが削除されるため、仮想マシンコードプログラムの実行速度が高速化する。
【０１１５】
また、図１２は、図１１に示すソースコードにおいて、ｄｉｓｐＩｎｔ手続きの呼出しをインライン展開して最適化した仮想マシンコードプログラムのソースコードの具体例を示す図であり、ｄｉｓｐＩｎｔ手続きに代わりｄｉｓｐＩｎｔ手続きの内容であるＳｙｓｔｅｍ．ｏｕｔ．ｐｒｉｎｔｌｎ手続きが記述されている。これにより、手続きを呼出すために必要な引数をスタックに積込むコードや手続きへジャンプするコードは削除されるため、その分、仮想マシンコードプログラムの実行速度が高速化する。
【０１１６】
これらのことより、図１１に示すソースコードである仮想マシンコードプログラムは、図１０に示すソースコードである仮想マシンコードプログラムに比較して実行速度が速く、図１２に示すソースコードである仮想マシンコードプログラムは、図１１に示すソースコードである仮想マシンコードプログラムに比較して実行速度が速い。
【０１１７】
逆に、一般的に、変換時に最適化を行なうことは、最適化を行なわない通常の変換と比較して時間を必要とし、仮想マシン−中間コード変換器２０３における最適化が高度になればさらに変換処理に時間を必要とする。よって本実施の形態のサーバ装置１０１の仮想マシン−中間コード変換器２０３が最適化を行なうことは、クライアント装置１０２が仮想マシンコードプログラムの位置情報を含む処理要求を出してからサーバ装置１０１が変換済プログラムをクライアント装置１０２に送信するまでの時間が長くなる要因となる。そのため、クライアント装置１０２でのプログラム起動までの時間は長くなる。また、図１１あるいは図１２に挙げたループ展開やインライン展開といった仮想マシンコードプログラムの最適化は、プログラムサイズの増大につながる。そのため、メモリ容量が小さいような限られた装置資源の実行環境では変換されたプログラムが実行できない場合もある。
【０１１８】
しかし、メモリ容量が大きい実行環境であり、プログラム使用者がプログラムの実行速度を重視している場合は、プログラムの起動時間が長くてもよい場合がある。本実施の形態のクライアント装置１０２では、プログラム実行時のクライアント装置１０２の資源情報と、使用者がプログラムの実行に際して起動時間と実行時間とのいずれを重視するかの設定とを、ユーザ設定としてサーバ装置１０１に送信することによって、サーバ装置１０１の仮想マシン−中間コード変換器２０３における最適化の強度を変更することが可能である。
【０１１９】
ここで、クライアント装置１０２の資源情報とは、クライアント装置１０２のメモリ空き容量、実行速度、ＯＳ名とバージョン番号などを含む情報であって、実行環境に合わせた最適化を行なうための環境パラメータである。またユーザ設定とは、最適化で重視する項目などユーザが任意に指定することが可能な項目である。
【０１２０】
図１３に、資源情報やユーザ設定を含む処理要求をサーバ装置１０１に対して送信する、本実施の形態のクライアント装置１０２の機能構成を表わす、機能ブロックの具体例を示す。
【０１２１】
図１３を参照して、本実施の形態のクライアント装置１０２は、クライアント装置１０２を制御するクライアントコントローラ３０１と、有線または無線によって他の装置と通信を行なうためのモジュールであるネットワークインタフェース３０２と、中間コードプログラムをクライアント装置１０２のアーキテクチャで実行可能であるネイティブコードのプログラムに変換するコード変換を行なう中間−ネイティブコード変換器３０３と、モジュール化したプログラムとクライアント装置１０２が持つライブラリとを結合するリンカ３０４と、クライアント装置のユーザ設定を記録する設定記録領域３０５とを含む。なお、中間−ネイティブコード変換器３０３については、クライアント装置１０２のアーキテクチャが異なれば実行可能であるネイティブコードも異なるため、クライアント装置１０２によって搭載する変換器が異なる。
【０１２２】
このような本実施の形態のクライアント装置１０２において、クライアントコントローラ３０１は、クライアント装置１０２の使用者が行なう操作やクライアント装置１０２で実行する他のプログラムなどから、ネットワーク１０３に接続したサーバ装置１０１が管理する仮想マシンコードプログラムの実行命令を受けると、この仮想マシンコードプログラムの位置情報を含むサーバ装置１０１への処理要求を作成する。
【０１２３】
サーバ装置１０１への処理要求を作成する際に、本実施の形態のクライアント装置１０２のクライアントコントローラ３０１は、設定記録領域３０５に記録されたユーザ設定とクライアント装置１０２のメモリ使用量などの資源情報とを自動的に読出して前記処理要求に加えることを特徴とする。そして、この処理要求をネットワークインタフェース３０２によってサーバ装置１０１に向けて送信し、対応する処理応答をサーバ装置１０１から受信する。サーバ装置１０１までの通信やサーバ装置１０１での処理が正常に実行された場合、この処理応答には、前記処理要求に含めたプログラム位置情報に対応するプログラムが含まれている。
【０１２４】
受信したプログラムが中間コードプログラムである場合は、中間−ネイティブコード変換器３０３において、受信した中間コードプログラムをネイティブコードプログラムに変換する。また、受信したプログラムがネイティブコードプログラムである場合は、変換しなくてよい。
【０１２５】
処理要求を送信したサーバ装置１０１が上述のようなコード変換時の最適化を行なう機能を有している場合、受信したプログラムには、送信した資源情報やユーザ設定に基づいた最適化が行なわれている。
【０１２６】
このようにして最終的に得られたネイティブコードは、クライアント装置１０２のハードウェア操作するなどを行なうライブラリと、リンカ３０４によって結合され実行される。
【０１２７】
本実施の形態において、このようにサーバ装置１０１がコード変換時の最適化を行なう機能を備える場合には、クライアント装置１０２の資源情報やユーザ設定に応じて、各クライアント装置ごとに最適なプログラムを提供することができる。このため、クライアント装置においてプログラム実行までの時間を短くすることができる。
【０１２８】
また、クライアント装置１０２の装置資源が、メモリ容量が小さいような限られた装置資源である場合であっても、本実施の形態のサーバ装置１０１から提供された、変換されたプログラムが実行できないといった問題が発生しない。
【０１２９】
さらに、クライアント装置１０２のメモリ容量が大きい実行環境であり、プログラム使用者がプログラムの実行速度を重視している場合であっても、本実施の形態のサーバ装置１０１は、そのような要求にマッチした最適なプログラムを提供することができる。
【０１３０】
なお、本実施の形態のクライアント装置１０２は、受信したプログラムを保存するキャッシュ機能をさらに備えても構わない。図１４に、キャッシュ機能を備えるクライアント装置１０２の機能構成を表わす、機能ブロックの具体例を示す。
【０１３１】
図１４に示されるクライアント装置１０２の機能構成は、図１３に示されるクライアント装置１０２の機能構成にプログラムを保存するキャッシュ装置３０６が追加された構成となっている。キャッシュ装置３０６は、処理要求に含めたプログラム位置情報とその処理要求に対応してサーバ装置１０１から受信した処理応答に含まれるプログラムとを関連付けて保存する。ここで、サーバ装置１０１からの処理応答に含まれるプログラムが中間コードプログラムである場合は、中間−ネイティブコード変換器３０３によって変換したネイティブコードプログラムとプログラム位置情報とを関連付けてキャッシュ装置３０６に保存することも可能である。
【０１３２】
クライアント装置１０２がキャッシュ機能を備える場合、クライアントコントローラ３０１は、処理要求を作成する際にキャッシュ装置３０６を確認し、この処理要求に含ませるプログラム位置情報と関連付けられたプログラムがキャッシュ装置３０６に保存されている場合は、この処理要求をサーバ装置１０２に送信しない。そして、キャッシュ装置３０６に保存された当該プログラムを読出して使用する。
【０１３３】
このように本実施の形態のクライアント装置１０２がキャッシュ機能を備えることで、サーバ装置１０１と通信を行なってプログラムを取得する必要がないため、プログラム実行までの時間を短縮することができる。
【０１３４】
なお、このような本実施の形態のクライアント装置１０２において、ユーザが最適化の強度を設定する際にクライアント装置１０２付属の表示装置に表示される表示画面の具体例を図１５に示す。図１５に示すような表示画面において、ユーザは、最適化についての強度を選択することが可能である。
【０１３５】
選択して設定した最適化強度は、クライアント装置１０２内部の設定記録領域３０５にユーザ設定として記録され、サーバ装置１０１に対して仮想マシンコードプログラムを要求する際に、仮想マシンコードプログラムの位置情報と共にサーバ装置１０１に対して送信する。
【０１３６】
具体的には、本実施の形態では、最適化について実行速度を重視するか起動速度を重視するかを４段階のレベルで指定するものとする。ここで指定した項目は、ユーザ設定となり、サーバ装置１０１に通知される。サーバ装置１０１では、要求された仮想マシンコードプログラムに対して、指定されたレベルに応じた最適化を行なう。例えば、最適化レベル１が指定されている場合にはループ展開、最適化レベル２が指定されている場合にはループ展開に加えてオンライン展開を行なう。このような最適化に関するユーザの設定項目や、ユーザ設定に応じてサーバ装置１０１上で行なう最適化項目は、システムに合わせて自由に決定することができる。
【０１３７】
［第５の実施の形態］
第５の実施の形態における情報処理システムにおいては、サーバ装置１０１は、サーバ装置１０１自身でデータを持たず管理しない代理サーバ装置であるものとする。代理サーバ装置は、Ｗｅｂサーバなどデータを管理して提供する機能を持つ他のサーバ装置とクライアント装置との間に位置して、通信を中継する機能を備える。
【０１３８】
図１６に、本実施の形態における情報処理システムであって、代理サーバ装置１０５を含む情報処理システムの構成の具体例を示す。
【０１３９】
図１６を参照して、本実施の形態における情報処理システムは、図１に示す第１〜第４の実施の形態における情報処理システムの構成に対して、さらに代理サーバ装置１０５を含む構成である。すなわち、ネットワーク１０３を介して接続されるクライアント装置１０２とサーバ装置１０４とに加えて、代理サーバ装置１０５をさらに含む。代理サーバ装置１０５とサーバ装置１０４、および代理サーバ装置１０５とクライアント装置１０２は、それぞれネットワーク１０３と接続して通信を行なう。サーバ装置１０４とクライアント装置１０２とは、直接通信を行なうことができなくても構わない。
【０１４０】
代理サーバ装置１０５は一般的なコンピュータなどで構成され、そのハードウェア構成は、図２に示されるサーバ装置１０１のハードウェア構成の具体例と同様であるため、ここでの説明を繰返さない。
【０１４１】
図１７に、本情報処理システムを構成する代理サーバ装置１０５の機能構成を表わす、機能ブロックの具体例を示す。
【０１４２】
図１７を参照して、代理サーバ装置１０５は、代理サーバ装置を制御するサーバコントローラ４０１と、有線または無線によって他の装置と通信を行なうためのモジュールであるネットワークインタフェース４０２と、仮想マシンコード−中間コード変換器４０３と、変換後のプログラムをキャッシュして保存するキャッシュ装置４２２とを含む。仮想マシンコード−中間コード変換器４０３とキャッシュ装置４２２とは、前述したサーバ装置１０１に含まれるものと同様のものであるため、ここでの説明は繰返さない。また、本代理サーバ装置１０５には前述したサーバ装置１０１に含まれる中間コード−ネイティブコード変換器３０３がさらに含まれてもよく、また、キャッシュ装置４２２が含まれていなくても構わない。
【０１４３】
図１８に、上述のサーバコントローラ４０１の動作手順の具体例を表わすフローチャートを示す。図１８に示される代理サーバ装置１０５における応答処理は、図示しない代理サーバ装置１０５のＣＰＵが、ＲＯＭまたはＨＤＤに記憶されるプログラムを読出してＲＡＭ上に展開し、図１７に示される各部を機能させることによって実行される。
【０１４４】
図１８を参照して、サーバコントローラ４０１は、実行を開始すると、始めに、他の装置と接続したネットワークインタフェース４０２において、クライアント装置１０２からの処理要求を待つ（Ｓ４０１）。ステップＳ４０１では、クライアント装置１０２から、仮想マシンコードプログラムの位置情報と、当該プログラムを提供するサーバ装置１０４を特定する情報とを含む処理要求を受付ける。
【０１４５】
次に、クライアント装置１０２から処理要求を受取ると、先行してキャッシュ装置４２２を検索し、プログラム位置情報と関連付けられた変換済プログラムがキャッシュ装置４２２に保存か否かを確認する（Ｓ４０２）。
【０１４６】
プログラム位置情報と関連付けられた変換済プログラムがキャッシュ装置４２２に保存されている場合（Ｓ４０２でＹＥＳ）、キャッシュ装置４２２から変換済プログラムを取得して、処理応答としてクライアント装置１０２へ送信し（Ｓ４１０）、処理を終了する。
【０１４７】
一方、プログラム位置情報と関連付けられた変換済プログラムがキャッシュ装置４２２に保存されていない場合（Ｓ４０２でＮＯ）、プログラム位置情報から取得したデータを提供するサーバ装置１０４を特定し、該当するサーバ装置１０４にプログラム位置情報を含む処理要求を中継して送信する（Ｓ４０３）。そして、この処理要求に対する処理応答を待受けてサーバ装置１０４より受信する（Ｓ４０４）。
【０１４８】
サーバ装置１０４より受信した処理応答には、中継して送信した処理要求に含むプログラム位置情報に対応するデータが含まれており、このデータが仮想マシンコードプログラムであるか否かを判別する（Ｓ４０５）。
【０１４９】
サーバ装置１０４より受信した処理応答に含まれるデータが仮想マシンコードプログラムとは異なるデータであったり、何らかのエラーによりデータを受信できない場合は（Ｓ４０５でＮＯ）、別途処理を実行し（Ｓ４１１）、本処理を終了する。
【０１５０】
サーバ装置１０４より受信した処理応答に含まれるデータが仮想マシンコードプログラムである場合には（Ｓ４０５でＹＥＳ）、仮想マシン−中間コード変換器４０３において、取得した仮想マシンコードプログラムを中間コードプログラムに変換する（Ｓ４０７）。ステップＳ４０７においては、本代理サーバ装置１０５が中間コード−ネイティブコード変換器を備え、かつクライアント装置１０１から受信した処理要求によってクライアント装置１０２のアーキテクチャが特定可能である場合は、中間コードをネイティブコードに変換することもできる。
【０１５１】
そして、変換後のプログラムをプログラム位置情報と関連付けてキャッシュ装置４２２に保存し（Ｓ４０８）、その後に変換後のプログラムを処理応答として要求元のクライアント装置１０２へ送信する（Ｓ４０９）。
【０１５２】
以上で代理サーバ装置１０５における応答処理を終了し、要求元のクライアント装置１０２に対して、実行可能な中間コードプログラムあるいはネイティブコードプログラムが送信される。
【０１５３】
本実施の形態における情報処理システムがこのように構成され、代理サーバ装置１０５がこのような処理を行なうことで、サーバ装置１０４やクライアント装置１０２の構成を簡略化することが可能である。
【０１５４】
なお、本実施の形態の代理サーバ装置１０５においても、前述の変換時に最適化する機能を適用することにより、仮想マシンコードから中間コードへの変換時、あるいは中間コードからネイティブコードへの変換時にコードの最適化を行なうことが可能である。このことによって、本実施の形態の代理サーバ装置１０５は、クライアント装置１０２に対して最適なプログラムを提供することができる。
【０１５５】
また、上述の処理を行なうためには、クライアント装置１０２が、仮想マシンコードプログラムの位置情報と共に、当該プログラムを提供するサーバ装置１０４を特定する情報を処理要求として代理サーバ装置１０５に送信することが必要である。この場合のクライアント装置１０２における処理は、上述の第４の実施の形態におけるユーザ設定を行なう場合の処理と同様で、図１５に示されるようなクライアント装置１０２の表示装置上の表示画面において、プログラムを提供するサーバ装置１０４を指定することによって、サーバ装置１０４を特定する情報が処理要求として代理サーバ装置１０５に送信される。
【０１５６】
さらに、上述の情報処理システムにおいて行なわれる処理方法を、プログラムとして提供することもできる。このようなプログラムは、コンピュータに付属するフレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびメモリカードなどのコンピュータ読取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。あるいは、コンピュータに内蔵するハードディスクなどの記録媒体にて記録させて、プログラムを提供することもできる。また、ネットワークを介したダウンロードによって、プログラムを提供することもできる。
【０１５７】
提供されるプログラム製品は、ハードディスクなどのプログラム格納部にインストールされて実行される。なお、プログラム製品は、プログラム自体と、プログラムが記録された記録媒体とを含む。
【０１５８】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【図１】第１の実施の形態における情報処理システムの構成の具体例を示す図である。
【図２】第１の実施の形態におけるサーバ装置１０１のハードウェア構成の具体例を示すブロック図である。
【図３】第１の実施の形態におけるサーバ装置１０１の機能構成を表わす、機能ブロックの具体例を示す図である。
【図４】第１の実施の形態におけるサーバ装置１０１の、サーバコントローラ２０１の動作手順の具体例を表わすフローチャートである。
【図５】第２の実施の形態におけるサーバ装置１０１の機能構成を表わす、機能ブロックの具体例を示す図である。
【図６】第２の実施の形態におけるサーバ装置１０１の、サーバコントローラ２１０の動作手順の具体例を表わすフローチャートである。
【図７】第３の実施の形態におけるサーバ装置１０１の機能構成を表わす、機能ブロックの具体例を示す図である。
【図８】第３の実施の形態におけるサーバ装置１０１の、サーバコントローラ２２０の動作手順の具体例を表わすフローチャートである。
【図９】キャシュ装置２２２が持つキャッシュテーブルの具体例を示す図である。
【図１０】変換元となる仮想マシンコードプログラムのソースコードの具体例を示す図である。
【図１１】ループ展開を行なって最適化した仮想マシンコードプログラムのソースコードの具体例を示す図である。
【図１２】インライン展開して最適化した仮想マシンコードプログラムのソースコードの具体例を示す図である。
【図１３】第４の実施の形態におけるクライアント装置１０２の機能構成を表わす、機能ブロックの具体例を示す図である。
【図１４】キャッシュ機能を備えるクライアント装置１０２の機能構成を表わす、機能ブロックの具体例を示す図である。
【図１５】ユーザが最適化の強度を設定する際にクライアント装置１０２付属の表示装置に表示される表示画面の具体例を示す図である。
【図１６】代理サーバ装置１０５を含む、第５の実施の形態における情報処理システムの構成の具体例を示す図である。
【図１７】第５の実施の形態における代理サーバ装置１０５の機能構成を表わす、機能ブロックの具体例を示す図である。
【図１８】第５の実施の形態における代理サーバ装置１０５の、サーバコントローラ４０１の動作手順の具体例を表わすフローチャートである。
【符号の説明】
１１  ＣＰＵ、１２  ＲＯＭ、１３  ＲＡＭ、１４  ＨＤＤ、１５  Ｉ／Ｆ、１０１  サーバ装置、１０２  クライアント装置、１０３  ネットワーク、１０５  代理サーバ装置、２０１，２１０，２２０  サーバ装置のサーバコントローラ、２０２  サーバ装置のネットワークＩ／Ｆ、２０３  仮想マシン−中間コード変換器、２０４  データ管理器、２０５  仮想マシンコードプログラム、２０６  仮想マシンコードプログラム以外のデータ、２１１  サーバ装置の中間コード−ネイティブコード変換器、２２２  サーバ装置のキャッシュ装置、３０１  クライアントコントローラ、３０２  クライアント装置のネットワークＩ／Ｆ、３０３  クライアント装置の中間コード−ネイティブコード変換器、３０４  リンカ、３０５  設定記録領域、３０６  クライアント装置のキャッシュ装置、４０１  代理サーバ装置のサーバコントローラ、４０２  代理サーバ装置のネットワークＩ／Ｆ、４０３  代理サーバ装置の仮想マシン−中間コード変換器、４２２  代理サーバ装置のキャッシュ装置。
【図１】
2004192038.tif 000003
【図２】
2004192038.tif 000004
【図３】
2004192038.tif 000005
【図４】
2004192038.tif 000006
【図５】
2004192038.tif 000007
【図６】
2004192038.tif 000008
【図７】
2004192038.tif 000009
【図８】
2004192038.tif 000010
【図９】
2004192038.tif 000011
【図１０】
2004192038.tif 000012
【図１１】
2004192038.tif 000013
【図１２】
2004192038.tif 000014
【図１３】
2004192038.tif 000015
【図１４】
2004192038.tif 000016
【図１５】
2004192038.tif 000017
【図１６】
2004192038.tif 000018
【図１７】
2004192038.tif 000019
【図１８】
2004192038.tif 000020