(57)【特許請求の範囲】
【請求項１】
サーバコンピュータとクライアントコンピュータが通信回線を介して接続されたコンピュータシステムであって、
Ｊａｖａ仮想マシンを有する前記サーバコンピュータが、
自装置が実行可能なＪａｖａメソッドを、自装置が有する前記Ｊａｖａ仮想マシンとは別のＪａｖａ仮想マシンを有する前記クライアントコンピュータにて実行されるＪａｖａアプレット上で呼び出すためのメッセージを当該クライアントコンピュータに送信するサーバ側メッセージ送信部と、
前記サーバ側メッセージ送信部が送信した前記メッセージに応じて前記クライアントコンピュータが前記Ｊａｖａメソッドを呼び出した結果を含むメッセージを当該クライアントコンピュータから受信するサーバ側メッセージ受信部とを備え、
前記クライアントコンピュータが、
前記サーバコンピュータから送信された前記メッセージを受信するクライアント側メッセージ受信部と、
自装置のウェブブラウザ上でブラウザ用スクリプトを実行するスクリプト実行部と、
自装置の前記Ｊａｖａ仮想マシン上で前記Ｊａｖａアプレットを実行するアプレット実行部と、
前記クライアント側メッセージ受信部が受信した前記メッセージに応じて、前記スクリプト実行部が実行する前記ブラウザ用スクリプトと前記アプレット実行部が実行する前記Ｊａｖａアプレットの間でイベントの受け渡しをすることにより、当該アプレット実行部が前記Ｊａｖａメソッドを呼び出すように制御するイベント受渡部と、
前記アプレット実行部が前記Ｊａｖａメソッドを呼び出した結果を含むメッセージを前記サーバコンピュータに送信するクライアント側メッセージ送信部とを備える、システム。
【請求項２】
サーバコンピュータとクライアントコンピュータが通信回線を介して接続されたコンピュータシステムであって、
前記サーバコンピュータが、
自装置が実行可能なＪａｖａメソッドを前記クライアントコンピュータにて実行されるＪａｖａアプレット上で呼び出すための、Ｊａｖａメソッドを含むＪａｖａオブジェクトを含むメッセージを当該クライアントコンピュータに送信するサーバ側メッセージ送信部と、
前記サーバ側メッセージ送信部が送信した前記メッセージに応じて前記クライアントコンピュータが前記Ｊａｖａメソッドを呼び出した結果を含むメッセージを当該クライアントコンピュータから受信するサーバ側メッセージ受信部とを備え、
前記クライアントコンピュータが、
前記サーバコンピュータから送信された前記メッセージを受信するクライアント側メッセージ受信部と、
自装置のウェブブラウザ上でブラウザ用スクリプトを実行するスクリプト実行部と、
自装置のＪａｖａ仮想マシン上で前記Ｊａｖａアプレットを実行するアプレット実行部と、
前記クライアント側メッセージ受信部が受信した前記メッセージに応じて、前記スクリプト実行部が実行する前記ブラウザ用スクリプトと前記アプレット実行部が実行する前記Ｊａｖａアプレットの間でイベントの受け渡しをすることにより、当該アプレット実行部が前記Ｊａｖａメソッドを呼び出すように制御するイベント受渡部と、
前記アプレット実行部が前記Ｊａｖａメソッドを呼び出した結果を含むメッセージを前記サーバコンピュータに送信するクライアント側メッセージ送信部とを備える、システム。
【請求項３】
サーバコンピュータとクライアントコンピュータが通信回線を介して接続されたコンピュータシステムであって、
前記サーバコンピュータが、
自装置が実行可能なＪａｖａメソッドであって前記クライアントコンピュータにて実行されるＪａｖａアプレットがもっている当該Ｊａｖａメソッドを呼び出すためのパラメータを含むメッセージを当該クライアントコンピュータに送信するサーバ側メッセージ送信部と、
前記サーバ側メッセージ送信部が送信した前記メッセージに応じて前記クライアントコンピュータが前記Ｊａｖａメソッドを呼び出した結果を含むメッセージを当該クライアントコンピュータから受信するサーバ側メッセージ受信部とを備え、
前記クライアントコンピュータが、
前記サーバコンピュータから送信された前記メッセージを受信するクライアント側メッセージ受信部と、
自装置のウェブブラウザ上でブラウザ用スクリプトを実行するスクリプト実行部と、
自装置のＪａｖａ仮想マシン上で前記Ｊａｖａアプレットを実行するアプレット実行部と、
前記クライアント側メッセージ受信部が受信した前記メッセージに応じて、前記スクリプト実行部が実行する前記ブラウザ用スクリプトと前記アプレット実行部が実行する前記Ｊａｖａアプレットの間でイベントの受け渡しをすることにより、当該アプレット実行部が前記Ｊａｖａメソッドを呼び出すように制御するイベント受渡部と、
前記アプレット実行部が前記Ｊａｖａメソッドを呼び出した結果を含むメッセージを前記サーバコンピュータに送信するクライアント側メッセージ送信部とを備える、システム。
【請求項４】
サーバコンピュータと複数台のクライアントコンピュータが通信回線を介して接続されたコンピュータシステムであって、
前記サーバコンピュータが、
自装置が実行可能なＪａｖａメソッドを前記クライアントコンピュータにて実行されるＪａｖａアプレット上で呼び出すためのメッセージを当該クライアントコンピュータに送信するサーバ側メッセージ送信部と、
前記サーバ側メッセージ送信部が送信した前記メッセージに応じて前記クライアントコンピュータが前記Ｊａｖａメソッドを呼び出した結果を含むメッセージを当該クライアントコンピュータから受信するサーバ側メッセージ受信部とを備え、
前記クライアントコンピュータが、
前記サーバコンピュータから送信された前記メッセージを受信するクライアント側メッセージ受信部と、
自装置のウェブブラウザ上でブラウザ用スクリプトを実行するスクリプト実行部と、
自装置のＪａｖａ仮想マシン上で前記Ｊａｖａアプレットを実行するアプレット実行部と、
前記クライアント側メッセージ受信部が受信した前記メッセージに応じて、前記スクリプト実行部が実行する前記ブラウザ用スクリプトと前記アプレット実行部が実行する前記Ｊａｖａアプレットの間でイベントの受け渡しをすることにより、当該アプレット実行部が前記Ｊａｖａメソッドを呼び出すように制御するイベント受渡部と、
前記アプレット実行部が前記Ｊａｖａメソッドを呼び出した結果を含むメッセージを前記サーバコンピュータに送信するクライアント側メッセージ送信部とを備え、
前記クライアントコンピュータのうちの第１のクライアントコンピュータの前記クライアント側メッセージ送信部が、当該クライアントコンピュータのうちの第２のクライアントコンピュータにて実行されるＪａｖａアプレット上で前記Ｊａｖａメソッドを呼び出すためのメッセージを、前記サーバコンピュータを介して当該第２のクライアントコンピュータに送信し、
前記第２のクライアントコンピュータの前記クライアント側メッセージ受信部が受信した前記メッセージに応じて当該第２のクライアントコンピュータの前記アプレット実行部が前記Ｊａｖａメソッドを呼び出し、
前記Ｊａｖａメソッドが呼び出された結果を含むメッセージを、前記第２のクライアントコンピュータの前記クライアント側メッセージ送信部が、前記サーバコンピュータを介して前記第１のクライアントコンピュータに送信する、システム。
【請求項５】
サーバコンピュータとクライアントコンピュータが通信回線を介して接続されたコンピュータシステムであって、
前記サーバコンピュータが、
自装置にかかっている負荷が予め定めた基準よりも大きい場合に、自装置が実行可能なＪａｖａメソッドを前記クライアントコンピュータにて実行されるＪａｖａアプレット上で呼び出すためのメッセージを当該クライアントコンピュータに送信するサーバ側メッセージ送信部と、
前記サーバ側メッセージ送信部が送信した前記メッセージに応じて前記クライアントコンピュータが前記Ｊａｖａメソッドを呼び出した結果を含むメッセージを当該クライアントコンピュータから受信するサーバ側メッセージ受信部とを備え、
前記クライアントコンピュータが、
前記サーバコンピュータから送信された前記メッセージを受信するクライアント側メッセージ受信部と、
自装置のウェブブラウザ上でブラウザ用スクリプトを実行するスクリプト実行部と、
自装置のＪａｖａ仮想マシン上で前記Ｊａｖａアプレットを実行するアプレット実行部と、
前記クライアント側メッセージ受信部が受信した前記メッセージに応じて、前記スクリプト実行部が実行する前記ブラウザ用スクリプトと前記アプレット実行部が実行する前記Ｊａｖａアプレットの間でイベントの受け渡しをすることにより、当該アプレット実行部が前記Ｊａｖａメソッドを呼び出すように制御するイベント受渡部と、
前記アプレット実行部が前記Ｊａｖａメソッドを呼び出した結果を含むメッセージを前記サーバコンピュータに送信するクライアント側メッセージ送信部とを備える、システム。
【請求項６】
前記クライアントコンピュータ用の表示部への前記Ｊａｖａアプレットによる表示を制御するＪａｖａメソッドを当該Ｊａｖａアプレット上で呼び出すためのメッセージを、前記サーバ側メッセージ送信部が当該クライアントコンピュータに送信する、請求項１乃至請求項５のいずれかのシステム。
【請求項７】
サーバコンピュータとクライアントコンピュータが通信回線を介して接続され、当該サーバコンピュータで発生したイベントを当該クライアントコンピュータに通知する機能を当該サーバコンピュータが有するコンピュータシステムであって、
前記サーバコンピュータが、
自装置のＨＴＭＬファイルであって、ブラウザ用スクリプト及びＪａｖａアプレットを含むＨＴＭＬファイルのＵＲＬにアクセスしてきた前記クライアントコンピュータに、当該ブラウザ用スクリプト及び当該Ｊａｖａアプレットを送信するアプリケーション送信部と、
自装置が実行可能なＪａｖａメソッドであって前記クライアントコンピュータにて実行される前記Ｊａｖａアプレット上で呼び出されるＪａｖａメソッドを含むＪａｖａオブジェクトを含むメッセージ、又は当該ＪａｖａアプレットがもっているＪａｖａメソッドを呼び出すためのパラメータを含むメッセージを、当該クライアントコンピュータに送信するサーバ側メッセージ送信部と、
前記サーバ側メッセージ送信部が送信した前記メッセージに応じて前記クライアントコンピュータが前記Ｊａｖａメソッドを呼び出した結果を含むメッセージを当該クライアントコンピュータから受信するサーバ側メッセージ受信部とを備え、
前記クライアントコンピュータが、
前記サーバコンピュータの前記ＨＴＭＬファイルのＵＲＬにアクセスすることにより、当該サーバコンピュータから前記ブラウザ用スクリプト及び前記Ｊａｖａアプレットを受信するアプリケーション受信部と、
前記サーバコンピュータから送信された前記メッセージを受信するクライアント側メッセージ受信部と、
前記アプリケーション受信部が受信した前記ブラウザ用スクリプトを自装置のウェブブラウザ上で実行するスクリプト実行部と、
前記アプリケーション受信部が受信した前記Ｊａｖａアプレットを自装置のＪａｖａ仮想マシン上で実行するアプレット実行部と、
前記クライアント側メッセージ受信部が受信した前記メッセージに応じて、前記スクリプト実行部が実行する前記ブラウザ用スクリプトと前記アプレット実行部が実行する前記Ｊａｖａアプレットの間でイベントの受け渡しをすることにより、当該メッセージに含まれる前記Ｊａｖａメソッド又は当該Ｊａｖａアプレットがもっている前記Ｊａｖａメソッドを当該アプレット実行部が呼び出すように制御するイベント受渡部と、
前記アプレット実行部が前記Ｊａｖａメソッドを呼び出した結果を含むメッセージを前記サーバコンピュータに送信するクライアント側メッセージ送信部とを備える、システム。
【請求項８】
通信回線を介して他のコンピュータと接続されたコンピュータであって、
Ｊａｖａ仮想マシンを有する自装置が実行可能なＪａｖａメソッドを、自装置が有する当該Ｊａｖａ仮想マシンとは別のＪａｖａ仮想マシンを有する前記他のコンピュータにて実行されるＪａｖａアプレット上で呼び出すためのメッセージを当該他のコンピュータに送信するメッセージ送信部と、
前記メッセージ送信部が送信した前記メッセージに応じて前記他のコンピュータが前記Ｊａｖａメソッドを呼び出した結果を含むメッセージを当該他のコンピュータから受信するメッセージ受信部とを備える、コンピュータ。
【請求項９】
第１のコンピュータと通信回線を介して接続された第２のコンピュータで当該第１のコンピュータがＪａｖａメソッドを呼び出す方法であって、
Ｊａｖａ仮想マシンを有する前記第１のコンピュータが実行可能なＪａｖａメソッドを、当該第１のコンピュータが有する当該Ｊａｖａ仮想マシンとは別のＪａｖａ仮想マシンを有する前記第２のコンピュータにて実行されるＪａｖａアプレット上で呼び出すためのメッセージを、当該第１のコンピュータから当該第２のコンピュータに送信するステップと、
前記第１のコンピュータから送信された前記メッセージを前記第２のコンピュータで受信するステップと、
前記第２のコンピュータのウェブブラウザ上でブラウザ用スクリプトを実行するステップと、
前記第２のコンピュータの前記Ｊａｖａ仮想マシン上で前記Ｊａｖａアプレットを実行するステップと、
受信された前記メッセージに応じて、前記ブラウザ用スクリプトと前記Ｊａｖａアプレットの間でイベントの受け渡しをすることにより、前記第２のコンピュータで前記Ｊａｖａメソッドを呼び出すステップと、
前記Ｊａｖａメソッドが呼び出された結果を含むメッセージを前記第２のコンピュータから前記第１のコンピュータに送信するステップと、
前記第２のコンピュータから送信された前記メッセージを前記第１のコンピュータで受信するステップとを備える、方法。
【請求項１０】
通信回線を介して他のコンピュータと接続されたコンピュータが当該他のコンピュータでＪａｖａメソッドを呼び出すように機能させるプログラムであって、
Ｊａｖａ仮想マシンを有する前記コンピュータを、
自装置が実行可能なＪａｖａメソッドを、自装置が有する前記Ｊａｖａ仮想マシンとは別のＪａｖａ仮想マシンを有する前記他のコンピュータにて実行されるＪａｖａアプレット上で呼び出すためのメッセージを当該他のコンピュータに送信するメッセージ送信部と、
前記メッセージ送信部が送信した前記メッセージに応じて前記他のコンピュータが前記Ｊａｖａメソッドを呼び出した結果を含むメッセージを当該他のコンピュータから受信するメッセージ受信部として機能させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアントでＪａｖａ（登録商標）メソッドを呼び出すシステム、コンピュータ、方法及びプログラムに関する。
【背景技術】
【０００２】
サーバにおいて発生したイベントを、リアルタイムでウェブブラウザに通知する機能が知られている（例えば、非特許文献１参照）。また、複数の端末のウェブブラウザの表示画面を同期して更新するクライアントプログラムが知られている（例えば、特許文献１参照）。通信ネットワークに接続されたサーバステーションを介してアクセス可能なデータ処理オブジェクトをクライアントステーションからリモートで使用する方法も知られている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１７６３３６号公報
【特許文献２】特開２００２−２０７６０４号公報
【非特許文献】
【０００４】
【非特許文献１】須江信洋，田中孝清、「ＷｅｂＳｐｈｅｒｅ  Ａｐｐｌｉｃａｔｉｏｎ  Ｓｅｒｖｅｒ  Ｆｅａｔｕｒｅ  Ｐａｃｋ  ｆｏｒ  Ｗｅｂ２．０  “０６  Ｗｅｂ  Ｍｅｓｓａｇｉｎｇ”」、日本ＩＢＭホームページ、２００８年５月２１日、［平成２３年７月２８日検索］、インターネット＜URL:http://download.boulder.ibm.com/ibmdl/pub/software/dw/jp/websphere/was/was_web20fep_ws/FPWEB20_06WebMessaging.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【０００５】
あるＪａｖａ仮想マシン（ＪＶＭ）から、別のＪＶＭにあるオブジェクトのメソッドを呼び出すためには、ＪａｖａのＲＭＩ（Remote Method Invocation）の仕組みを使う必要がある。このＲＭＩを利用するためには、Ｊａｖａメソッドが呼び出される側で、ＲＭＩのサービス呼び出しを最初に受け付けるモジュールが予め稼動している必要がある。
【０００６】
また、サーバからクライアントに対して計算処理をさせることができるシステムとして、グリッドコンピューティングが知られている。これは、ネットワーク上にあるコンピュータ同士を結びつけて１つの複合したコンピュータシステムとして機能させるものである。しかしながら、グリッドコンピューティングを利用するためには、専用のクライアントを用意する必要がある。
【０００７】
このため、サーバのＪａｖａプログラムやクライアントのウェブブラウザから、より簡易な方法によって他のクライアントでＪａｖａメソッドを呼び出せるようにすることが望ましい。本発明の目的は、クライアントに専用のモジュールが用意されていなくても、サーバからそのクライアントでＪａｖａメソッドを呼び出せるようにすることである。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明の第１の態様においては、サーバコンピュータとクライアントコンピュータが通信回線を介して接続されたコンピュータシステムであって、前記サーバコンピュータが、自装置が実行可能なＪａｖａメソッドを前記クライアントコンピュータにて実行されるＪａｖａアプレット上で呼び出すためのメッセージを当該クライアントコンピュータに送信するサーバ側メッセージ送信部と、前記サーバ側メッセージ送信部が送信した前記メッセージに応じて前記クライアントコンピュータが前記Ｊａｖａメソッドを呼び出した結果を含むメッセージを当該クライアントコンピュータから受信するサーバ側メッセージ受信部とを備え、前記クライアントコンピュータが、前記サーバコンピュータから送信された前記メッセージを受信するクライアント側メッセージ受信部と、自装置のウェブブラウザ上でブラウザ用スクリプトを実行するスクリプト実行部と、自装置のＪａｖａ仮想マシン上で前記Ｊａｖａアプレットを実行するアプレット実行部と、前記クライアント側メッセージ受信部が受信した前記メッセージに応じて、前記スクリプト実行部が実行する前記ブラウザ用スクリプトと前記アプレット実行部が実行する前記Ｊａｖａアプレットの間でイベントの受け渡しをすることにより、当該アプレット実行部が前記Ｊａｖａメソッドを呼び出すように制御するイベント受渡部と、前記アプレット実行部が前記Ｊａｖａメソッドを呼び出した結果を含むメッセージを前記サーバコンピュータに送信するクライアント側メッセージ送信部とを備える、システムを提供する。
本発明の第２の態様においては、前記サーバコンピュータが実行可能なＪａｖａメソッドを含むＪａｖａオブジェクトを含むメッセージを、前記サーバ側メッセージ送信部が前記クライアントコンピュータに送信する、第１の態様のシステムを提供する。
本発明の第３の態様においては、前記サーバコンピュータが実行可能なＪａｖａメソッドであって前記ＪａｖａアプレットがもっているＪａｖａメソッドを呼び出すためのパラメータを含むメッセージを、前記サーバ側メッセージ送信部が前記クライアントコンピュータに送信する、第１の態様のシステムを提供する。
本発明の第４の態様においては、前記クライアントコンピュータを複数台含むコンピュータシステムであって、前記クライアントコンピュータのうちの第１のクライアントコンピュータの前記クライアント側メッセージ送信部が、当該クライアントコンピュータのうちの第２のクライアントコンピュータにて実行されるＪａｖａアプレット上で前記Ｊａｖａメソッドを呼び出すためのメッセージを、前記サーバコンピュータを介して当該第２のクライアントコンピュータに送信し、前記第２のクライアントコンピュータの前記クライアント側メッセージ受信部が受信した前記メッセージに応じて当該第２のクライアントコンピュータの前記アプレット実行部が前記Ｊａｖａメソッドを呼び出し、前記Ｊａｖａメソッドが呼び出された結果を含むメッセージを、前記第２のクライアントコンピュータの前記クライアント側メッセージ送信部が、前記サーバコンピュータを介して前記第１のクライアントコンピュータに送信する、第１の態様乃至第３の態様のいずれかのシステムを提供する。
本発明の第５の態様においては、前記サーバコンピュータにかかっている負荷が予め定めた基準よりも大きい場合に、前記Ｊａｖａアプレット上で前記Ｊａｖａメソッドを呼び出すためのメッセージを、前記サーバ側メッセージ送信部が前記クライアントコンピュータに送信する、第１の態様乃至第４の態様のいずれかのシステムを提供する。
本発明の第６の態様においては、前記クライアントコンピュータ用の表示部への前記Ｊａｖａアプレットによる表示を制御するＪａｖａメソッドを当該Ｊａｖａアプレット上で呼び出すためのメッセージを、前記サーバ側メッセージ送信部が当該クライアントコンピュータに送信する、第１の態様乃至第５の態様のいずれかのシステムを提供する。
本発明の第７の態様においては、サーバコンピュータとクライアントコンピュータが通信回線を介して接続され、当該サーバコンピュータで発生したイベントを当該クライアントコンピュータに通知する機能を当該サーバコンピュータが有するコンピュータシステムであって、前記サーバコンピュータが、自装置のＨＴＭＬファイルであって、ブラウザ用スクリプト及びＪａｖａアプレットを含むＨＴＭＬファイルのＵＲＬにアクセスしてきた前記クライアントコンピュータに、当該ブラウザ用スクリプト及び当該Ｊａｖａアプレットを送信するアプリケーション送信部と、自装置が実行可能なＪａｖａメソッドであって前記クライアントコンピュータにて実行される前記Ｊａｖａアプレット上で呼び出されるＪａｖａメソッドを含むメッセージ、又は当該ＪａｖａアプレットがもっているＪａｖａメソッドを呼び出すためのパラメータを含むメッセージを、当該クライアントコンピュータに送信するサーバ側メッセージ送信部と、前記サーバ側メッセージ送信部が送信した前記メッセージに応じて前記クライアントコンピュータが前記Ｊａｖａメソッドを呼び出した結果を含むメッセージを当該クライアントコンピュータから受信するサーバ側メッセージ受信部とを備え、前記クライアントコンピュータが、前記サーバコンピュータの前記ＨＴＭＬファイルのＵＲＬにアクセスすることにより、当該サーバコンピュータから前記ブラウザ用スクリプト及び前記Ｊａｖａアプレットを受信するアプリケーション受信部と、前記サーバコンピュータから送信された前記メッセージを受信するクライアント側メッセージ受信部と、前記アプリケーション受信部が受信した前記ブラウザ用スクリプトを自装置のウェブブラウザ上で実行するスクリプト実行部と、前記アプリケーション受信部が受信した前記Ｊａｖａアプレットを自装置のＪａｖａ仮想マシン上で実行するアプレット実行部と、前記クライアント側メッセージ受信部が受信した前記メッセージに応じて、前記スクリプト実行部が実行する前記ブラウザ用スクリプトと前記アプレット実行部が実行する前記Ｊａｖａアプレットの間でイベントの受け渡しをすることにより、当該メッセージに含まれる前記Ｊａｖａメソッド又は当該Ｊａｖａアプレットがもっている前記Ｊａｖａメソッドを当該アプレット実行部が呼び出すように制御するイベント受渡部と、前記アプレット実行部が前記Ｊａｖａメソッドを呼び出した結果を含むメッセージを前記サーバコンピュータに送信するクライアント側メッセージ送信部とを備える、システムを提供する。
本発明の第８の態様においては、通信回線を介して他のコンピュータと接続されたコンピュータであって、自装置が実行可能なＪａｖａメソッドを前記他のコンピュータにて実行されるＪａｖａアプレット上で呼び出すためのメッセージを当該他のコンピュータに送信するメッセージ送信部と、前記メッセージ送信部が送信した前記メッセージに応じて前記他のコンピュータが前記Ｊａｖａメソッドを呼び出した結果を含むメッセージを当該他のコンピュータから受信するメッセージ受信部とを備える、コンピュータを提供する。
本発明の第９の態様においては、第１のコンピュータと通信回線を介して接続された第２のコンピュータで当該第１のコンピュータがＪａｖａメソッドを呼び出す方法であって、前記第１のコンピュータが実行可能なＪａｖａメソッドを前記第２のコンピュータにて実行されるＪａｖａアプレット上で呼び出すためのメッセージを、当該第１のコンピュータから当該第２のコンピュータに送信するステップと、前記第１のコンピュータから送信された前記メッセージを前記第２のコンピュータで受信するステップと、前記第２のコンピュータのウェブブラウザ上でブラウザ用スクリプトを実行するステップと、前記第２のコンピュータのＪａｖａ仮想マシン上で前記Ｊａｖａアプレットを実行するステップと、受信された前記メッセージに応じて、前記ブラウザ用スクリプトと前記Ｊａｖａアプレットの間でイベントの受け渡しをすることにより、前記第２のコンピュータで前記Ｊａｖａメソッドを呼び出すステップと、前記Ｊａｖａメソッドが呼び出された結果を含むメッセージを前記第２のコンピュータから前記第１のコンピュータに送信するステップと、前記第２のコンピュータから送信された前記メッセージを前記第１のコンピュータで受信するステップとを備える、方法を提供する。
本発明の第１０の態様においては、通信回線を介して他のコンピュータと接続されたコンピュータが当該他のコンピュータでＪａｖａメソッドを呼び出すように機能させるプログラムであって、前記コンピュータを、自装置が実行可能なＪａｖａメソッドを前記他のコンピュータにて実行されるＪａｖａアプレット上で呼び出すためのメッセージを当該他のコンピュータに送信するメッセージ送信部と、前記メッセージ送信部が送信した前記メッセージに応じて前記他のコンピュータが前記Ｊａｖａメソッドを呼び出した結果を含むメッセージを当該他のコンピュータから受信するメッセージ受信部として機能させる、プログラムを提供する。
【０００９】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係るコンピュータシステムの構成を示した図である。
【図２】サーバ装置から端末へイベントを送信する場合の処理の一例を示した図である。
【図３】本発明の実施形態に係るサーバ装置及び端末の機能構成を示したブロック図である。
【図４】サーバ装置と端末の間で送受信されるメッセージの形式の例を示した図である。
【図５】四則演算を行うＪａｖａクラスのサンプルソースである。
【図６】ＪａｖａＳｃｒｉｐｔとアプレットの間でのメッセージの送り方を例示したサンプルソースである。
【図７】本発明の実施形態に係るサーバ装置が端末でＪａｖａメソッドを呼び出すときの処理フローの一例を示した図である。
【図８】本発明の実施形態に係る第１の端末が第２の端末でＪａｖａメソッドを呼び出すときの処理フローの一例を示した図である。
【図９】本発明の実施形態に係るコンピュータのハードウェア構成の一例を示した図である。
【発明を実施するための形態】
【００１１】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１２】
図１は、本実施形態に係るコンピュータシステム１０の構成を示す。本実施形態に係るコンピュータシステム１０は、サーバ装置２０と、複数の端末３０とを備える。サーバ装置２０はウェブアプリケーションサーバであり、それぞれの端末３０で実行されるウェブブラウザにウェブコンテンツを提供する。サーバ装置２０は、一例として、それぞれのウェブブラウザに、ＨＴＭＬ（HyperText Markup Language）ファイルであるウェブページを提供する。
【００１３】
複数の端末３０のそれぞれは、サーバ装置２０とネットワークを介して接続される。それぞれの端末３０は、ウェブブラウザを実行する。それぞれのウェブブラウザは、ユーザの操作に応じて、サーバ装置２０からウェブコンテンツを取得して実行し、このウェブコンテンツにより提供される情報を表示する。それぞれのウェブブラウザは、一例として、ウェブページをダウンロードして、表示画面にウェブページを表示する。
【００１４】
ウェブコンテンツは、ＪａｖａＳｃｒｉｐｔ（登録商標）アプリケーションとＪａｖａアプレット（以下、単にアプレットという）を含む。ＪａｖａＳｃｒｉｐｔアプリケーションは、ウェブブラウザが実行可能なＪａｖａＳｃｒｉｐｔ言語で記述されたプログラムである。アプレットは、ウェブブラウザのウィンドウに埋め込まれて実行されるＪａｖａプログラムである。それぞれの端末３０は、これらのアプリケーションをダウンロードして実行する。これらのアプリケーションは、一例として、ＨＴＭＬファイルであるウェブページに挿入される。また、これらのアプリケーションは、一例として、ウェブコンテンツの提供者により作成される。本実施形態では、ＪａｖａＳｃｒｉｐｔアプリケーションはブラウザ用スクリプトの一例である。
【００１５】
図２は、本実施形態において、サーバ装置２０から端末３０へイベントを送信する場合の処理の一例を示す。本実施形態に係るコンピュータシステム１０は、一例として、図２に示されるような方法により、サーバ装置２０から端末３０へとイベントを送信する。
【００１６】
即ち、複数のウェブブラウザのそれぞれは、サーバ装置２０に対してリクエストを送信する。サーバ装置２０は、ウェブブラウザから受信したリクエストに対して直ぐにレスポンスを返すのではなく、一定時間（例えば、３０〜６０秒間）、ＨＴＴＰ（HyperText Transfer Protocol）接続を維持する。
【００１７】
その一定時間の間にサーバ装置２０で何かイベントが発生した場合には、サーバ装置２０はそのイベントのメッセージを含めてウェブブラウザにレスポンスを返す。レスポンスを受信すると、ウェブブラウザは直ぐに次のリクエストをサーバ装置２０へ送信する。一方、その一定時間の間にサーバ装置２０で何もイベントが発生しなかった場合には、サーバ装置２０はその一定時間の経過後にＨＴＴＰ接続を切断する。その後、やはりウェブブラウザはサーバ装置２０に再接続する。これにより、サーバ装置２０は、サーバ装置２０で発生したイベントをタイムラグ無く複数のウェブブラウザのそれぞれに通知することができる。
【００１８】
図２以外の方法でも、ウェブブラウザがＨＴＴＰだけでなくＴＣＰレベルでの接続をサーバ装置２０との間で確立できる場合には、例えばＷｅｂＳｏｃｋｅｔの技術を利用することにより、サーバ装置２０からウェブブラウザにタイムラグ無く（リアルタイムで）イベント通知を行うことが可能になる。
【００１９】
こうした機能は、クライアント（各端末３０のウェブブラウザ）側ではＪａｖａＳｃｒｉｐｔライブラリとして実装されている。一方、一般に、サーバ（サーバ装置２０）側のウェブアプリケーションは、Ｊａｖａにより実装されるサーブレットが主流である。サーバにはＪａｖａＳｃｒｉｐｔの実行環境がないため、通常、サーバ側の処理がＪａｖａＳｃｒｉｐｔで実装されることはない。このため、サーバ側の計算処理を一般のクライアントに実行させて負荷分散をするためには、サーバ側のアプリケーションの実装言語であるＪａｖａによるオブジェクトを、そのままサーバからクライアントに送信し、クライアントに処理させることが望ましい。
【００２０】
そこで、本実施形態では、端末３０（ウェブブラウザ）上でのみ実行可能なプログラムではなく、サーバ装置２０上で実行可能なプログラム（Ｊａｖａクラス又はＪａｖａオブジェクト）をそのまま端末３０に送信し、それをサーバ装置２０等の外部から呼び出すようにする。即ち、サーバ装置２０は、端末３０にＪａｖａオブジェクトを送信し、端末３０にそのＪａｖａオブジェクトを呼び出すように依頼する。そして端末３０は、その呼び出しを実行した結果を含むＪａｖａオブジェクトをサーバ装置２０に返信する。これにより、サーバ装置２０は、サーバ装置２０で実行可能なプログラムを、そのまま端末３０に実行させる。
【００２１】
図３は、本実施形態に係るサーバ装置２０及び端末３０の機能構成を示す。まず、サーバ装置２０の機能ブロックについて説明する。サーバ装置２０は、アプリケーション記憶部２１と、アプリケーション送信部２２とを有する。また、サーバ装置２０上では、サーブレット４０が実行されている。
【００２２】
アプリケーション記憶部２１は、サーバ装置２０のウェブコンテンツを記憶している。このウェブコンテンツは、端末３０にダウンロードされて実行されるＪａｖａＳｃｒｉｐｔアプリケーション６０（以下、単にＪａｖａＳｃｒｉｐｔ６０という）とアプレット８０を含む。
【００２３】
アプリケーション送信部２２は、それぞれの端末３０上で動作するウェブブラウザからの要求に応じて、アプリケーション記憶部２１に記憶されているＪａｖａＳｃｒｉｐｔ６０とアプレット８０をその端末３０に送信する。
【００２４】
サーブレット４０は、Ｊａｖａ言語で記述されたプログラムである。サーバ装置２０がサーブレット４０を実行することにより、実行部４１と、メッセージ送信部４２と、メッセージ受信部４３とが実現される。
【００２５】
実行部４１は、サーブレット４０の計算処理等を行う。具体的な処理の例は後述する。また、実行部４１は、端末３０を指定して、一部のＪａｖａメソッドをその端末３０に実行させる機能を有する。そのために、実行部４１は、メッセージ送信部４２及びメッセージ受信部４３を介して端末３０とメッセージをやり取りし、端末３０に実行させるＪａｖａメソッドをその端末３０で呼び出す。
【００２６】
メッセージ送信部４２は、サーブレット４０で発生したイベントをメッセージ化して、端末３０に送信する。特に、メッセージ送信部４２は、端末３０にて実行されるアプレット８０上でＪａｖａメソッドを呼び出すためのメッセージを、その端末３０に送信する。本実施形態では、メッセージ送信部４２はサーバ側メッセージ送信部の一例である。
【００２７】
メッセージ受信部４３は、メッセージ送信部４２が送信したメッセージに応じて端末３０がＪａｖａメソッドを呼び出した結果を含むメッセージを、その端末３０から受信する。本実施形態では、メッセージ受信部４３はサーバ側メッセージ受信部の一例である。
【００２８】
次に、端末３０の機能ブロックについて説明する。端末３０は、ウェブブラウザ５０と、Ｊａｖａ仮想マシン７０（以下、単にＪＶＭ７０という）とを備える。
【００２９】
ウェブブラウザ５０は、アプリケーション受信部５１と、メッセージ受信部５２と、メッセージ送信部５３とを有する。また、ウェブブラウザ５０上では、ＪａｖａＳｃｒｉｐｔ６０が実行されている。
【００３０】
アプリケーション受信部５１は、ウェブブラウザ５０とＪＶＭ７０でそれぞれ実行されるＪａｖａＳｃｒｉｐｔ６０とアプレット８０を、サーバ装置２０のＨＴＭＬファイルのＵＲＬ（Uniform Resource Locator）にアクセスすることにより、サーバ装置２０から受信する。
【００３１】
メッセージ受信部５２は、サーバ装置２０のメッセージ送信部４２から送信されたメッセージを受信する。本実施形態では、メッセージ受信部５２はクライアント側メッセージ受信部の一例である。
【００３２】
メッセージ送信部５３は、メッセージ受信部５２が受信したメッセージに応じてアプレット８０の実行部８１（後述）がＪａｖａメソッドを呼び出した結果を含むメッセージを、サーバ装置２０のメッセージ受信部４３に送信する。本実施形態では、メッセージ送信部５３はクライアント側メッセージ送信部の一例である。
【００３３】
ＪａｖａＳｃｒｉｐｔ６０は、ウェブブラウザ５０上で実行されるプログラムである。ウェブブラウザ５０がＪａｖａＳｃｒｉｐｔ６０を実行することにより、実行部６１と、アプレット呼出部６２とが実現される。実行部６１は、アプリケーション受信部５１が受信したＪａｖａＳｃｒｉｐｔ６０に記述された具体的な処理を実行する。アプレット呼出部６２は、サーバ装置２０からのイベントをアプレット８０に通知するために、メッセージ受信部５２が受信したメッセージに応じてアプレット８０の実行部８１を呼び出す。本実施形態では、実行部６１はスクリプト実行部の一例である。
【００３４】
ＪＶＭ７０は、Ｊａｖａバイトコードを端末３０のプラットフォームのネイティブコードに変換して実行するソフトウェアである。ＪＶＭ７０上では、アプレット８０が実行されている。
【００３５】
アプレット８０は、ＪＶＭ７０上で実行されるＪａｖａプログラムである。ＪＶＭ７０がアプレット８０を実行することにより、実行部８１と、ＪａｖａＳｃｒｉｐｔ呼出部８２とが実現される。実行部８１は、アプリケーション受信部５１が受信したアプレット８０に記述された具体的な処理を実行する。ＪａｖａＳｃｒｉｐｔ呼出部８２は、アプレット８０上で発生したイベントをサーバ装置２０等に送信するために、ＪａｖａＳｃｒｉｐｔ６０の実行部６１を呼び出す。
【００３６】
このように、ウェブブラウザ５０とＪＶＭ７０は、アプレット呼出部６２とＪａｖａＳｃｒｉｐｔ呼出部８２を介してイベントの受け渡しを行う。本実施形態では、アプレット呼出部６２とＪａｖａＳｃｒｉｐｔ呼出部８２はイベント受渡部の一例である。
【００３７】
図４は、サーバ装置２０と端末３０の間で送受信されるメッセージの形式の例を示す。このメッセージは、ＪａｖａＳｃｒｉｐｔにおけるオブジェクトの表記法を応用したＪＳＯＮ（ＪａｖａＳｃｒｉｐｔ Object Notation）のデータ形式で作成されている。まず、サーバ装置２０から端末３０に送信されるメッセージ９０について説明する。このメッセージ９０は、ＪＳＯＮヘッダ９０Ａと、Ｊａｖａオブジェクト９０Ｂとを有する。
【００３８】
ＪＳＯＮヘッダ９０Ａは、ＭＳＧヘッダ９１と、送信先ＩＤ９２と、送信元ＩＤ９３と、呼び出しメソッド名９４とを有する。ＭＳＧヘッダ９１は、メッセージ９０を送るためのヘッダである。送信先ＩＤ９２は、メッセージ９０の送信先である端末３０のウェブブラウザを識別するための情報である。送信元ＩＤ９３は、送信元であるサーバ装置２０を識別するための情報である。呼び出しメソッド名９４は、Ｊａｖａオブジェクト９０Ｂにより呼び出されるＪａｖａメソッドの名称である。
【００３９】
Ｊａｖａオブジェクト９０Ｂは、Ｊａｖａヘッダ９５と、Ｊａｖａメソッド９６と、Ｊａｖａフィールド９７とを有する。Ｊａｖａヘッダ９５は、Ｊａｖａオブジェクト９０Ｂのヘッダである。Ｊａｖａメソッド９６は、Ｊａｖａオブジェクト９０Ｂの「手続き」が記載される部分である。Ｊａｖａフィールド９７は、Ｊａｖａメソッド９６を実行するための「データ」（パラメータ）である。
【００４０】
端末３０からサーバ装置２０に返信されるメッセージ９０’もメッセージ９０と同様であるが、送信先ＩＤ９２と送信元ＩＤ９３の内容はメッセージ９０のものとは逆になっている。また、呼び出しメソッド名９４の部分が処理結果コード９８に変わっている。この処理結果コード９８は、Ｊａｖａオブジェクト９０Ｂの実行が成功した場合には０、エラーであった場合には−１などの値をもつリターンコードである。さらに、メッセージ９０’は、Ｊａｖａフィールド９７の部分に処理結果９９を含む。処理結果９９は、Ｊａｖａオブジェクト９０Ｂを実行して得られた演算結果等の値である。
【００４１】
なお、サーバ装置２０から端末３０にＪａｖａオブジェクト９０Ｂを送信することは必須ではない。端末３０で呼び出されるＪａｖａメソッドは、その端末３０のアプレット８０等のＪａｖａプログラムが元からもっているものでもよい。このため、サーバ装置２０から端末３０に送信されるメッセージは、サーバ装置２０が実行可能なＪａｖａメソッドであって端末３０にて実行されるアプレット８０上で呼び出されるＪａｖａメソッドを（即ち、Ｊａｖａオブジェクトを）含むメッセージでもよいし、又は、Ｊａｖａオブジェクトを含まず、アプレット８０が既にもっているＪａｖａメソッドを呼び出すためのパラメータのみを含むメッセージでもよい。
【００４２】
ここで、Ｊａｖａメソッドの具体例について説明する。図５は、四則演算を行うＪａｖａクラスのサンプルソースである。このＪａｖａクラスは、次の（１）〜（３）の機能をもつ。なお、このクラス自体は、アプレットインターフェイスをもたないため、Ｊａｖａアプレットではない。
（１）パラメータ設定用メソッド（ｓｅｔＰａｒａｍｓ（））を呼び出すことで、２個の入力パラメータ用フィールドａ，ｂに値が設定される。
（２）演算用メソッド（ａｄｄ（），ｓｕｂｔｒａｃｔ（），ｍｕｌｔｉｐｌｙ（），ｄｉｖｉｄｅ（）のいずれか）を呼び出すことで、演算結果が結果用フィールドｒｅｓｕｌｔに設定される。
（３）結果取得メソッド（ｇｅｔＲｅｓｕｌｔ（））を呼び出すことで、結果用フィールドｒｅｓｕｌｔから演算結果が取得される。
【００４３】
本実施形態のコンピュータシステム１０では、サーバ装置２０が実行可能なＪａｖａメソッドを、端末３０にて実行されるアプレット８０上で、サーバ装置２０が呼び出すことができる。その際、図５に示したような汎用的なＪａｖａクラスが、アプレット８０から利用されることにより、端末３０で実行される。図５のＪａｖａクラスをサーバ装置２０で利用する場合には、上記（１）〜（３）は全てサーバ装置２０で実行され、（２）の処理もサーバ装置２０のリソース（ＣＰＵ、メモリ）により実行される。一方、図５のＪａｖａクラスを端末３０で利用する場合には、例えば上記（１）はサーバ装置２０で行い、上記（２）は端末３０のリソースを使って端末３０で行い、上記（３）はサーバ装置２０で行うことが可能である。
【００４４】
即ち、本実施形態によれば、メインの演算処理である（２）を、サーバ装置２０と端末３０のどちらでも実行することができる。このため、その時点でのサーバ装置２０の負荷状況に応じて、それまでサーバ装置２０で実行していたものと同一のプログラム（Ｊａｖａクラス及びそのインスタンス）を端末３０に処理させることが可能である。例えば、サーバ装置２０にかかっている負荷が予め定めた基準よりも小さい間はサーバ装置２０上でＪａｖａプログラムを実行し、負荷がその基準を超えた場合に、そのプログラムの一部のＪａｖａメソッドをアプレット８０上で呼び出すためのメッセージを、端末３０に送信してもよい。
【００４５】
なお、図５に示した四則演算を行うＪａｖａクラスは、説明のために挙げた非常に単純な例である。演算処理のロジックやパラメータは、より複雑なものにすることもできる。
【００４６】
次に、アプレット呼出部６２とＪａｖａＳｃｒｉｐｔ呼出部８２がそれぞれアプレット８０の実行部８１とＪａｖａＳｃｒｉｐｔ６０の実行部６１を呼び出すときの具体的な方法について例示する。図６は、ＪａｖａＳｃｒｉｐｔ６０とアプレット８０の間でのメッセージの送り方を例示したサンプルソースである。図６（Ａ）は、アプレットからＪａｖａＳｃｒｉｐｔへのメッセージの送り方の例であり、図６（Ｂ）は、ＪａｖａＳｃｒｉｐｔからアプレットへのメッセージの送り方の例である。図６（Ｂ）で、「ｔｉ」は「ａｐｐｌｅｔ」タグの「ｎａｍｅ」属性で指定されるアプレットの名前であり、「ｓｅｔＳｔｒ（）」はこのアプレットがもっているメソッドである。
【００４７】
以下では、本実施形態に係るサーバ装置２０と端末３０の動作について説明する。図７は、サーバ装置２０が端末３０でＪａｖａメソッドを呼び出すときの処理フローの一例を示す。まず、一の端末３０のウェブブラウザ５０は、サーバ装置２０のＨＴＭＬファイルのＵＲＬにアクセスする（Ｓ１１）。このアクセスに応じて、サーバ装置２０のアプリケーション送信部２２と端末３０のアプリケーション受信部５１を介して、端末３０のウェブブラウザ５０はウェブページをダウンロードする（Ｓ１２）。このウェブページは、ＪａｖａＳｃｒｉｐｔアプリケーションとアプレットを含む。
【００４８】
そして、端末３０のウェブブラウザ５０とＪＶＭ７０は、ダウンロードされたウェブページに含まれるＪａｖａＳｃｒｉｐｔアプリケーションとアプレットをそれぞれ実行する。これにより、端末３０は、ＪａｖａＳｃｒｉｐｔ６０とアプレット８０を実行することができる。
【００４９】
続いて、ウェブブラウザ５０のＪａｖａＳｃｒｉｐｔ６０の実行部６１は、サーバ装置２０に対してサブスクライブをする（Ｓ１３）。実行部６１は、一例として、イベントを受信したことにより呼び出されるコールバック関数を登録する。これにより、サーバ装置２０が何れかの端末３０からイベントを受信した場合、又はサーバ装置２０でイベントが発生した場合に、サーバ装置２０は端末３０のＪａｖａＳｃｒｉｐｔ６０を呼び出すことができる。
【００５０】
続いて、ウェブブラウザ５０のＪａｖａＳｃｒｉｐｔ６０の実行部６１は、そのウェブブラウザ５０を識別するためのブラウザ識別情報（ＩＤ）の送信をサーバ装置２０に要求する（Ｓ１４）。実行部６１は、ステップＳ１３の処理と同時にブラウザ識別情報の要求を行ってもよい。
【００５１】
続いて、サーバ装置２０は、固有のブラウザ識別情報を、端末３０のウェブブラウザ５０に割り当てる。ここでは、その端末３０のウェブブラウザ５０にＩＤ＝１が割り当てられるとする。なお、サーバ装置２０にも、識別情報としてＩＤ＝−１が割り当てられているとする。サーバ装置２０は、割り当てたブラウザ識別情報ＩＤ＝１を、ウェブブラウザ５０のＪａｖａＳｃｒｉｐｔ６０の実行部６１に送信する（Ｓ１５）。実行部６１は、受信したブラウザ識別情報を記憶する。
【００５２】
一方、サーバ装置２０上では、サーブレット４０が実行されている。ここで、サーブレット４０の実行部４１が、ＩＤ＝１のウェブブラウザ５０の端末３０でＪａｖａメソッドを呼び出すとする（Ｓ１６）。この呼び出し処理は、例えばサーバ装置２０に対するユーザの操作や、サーバ装置２０の負荷状況が予め定められた条件を満たしたことなどを契機として、行われるものとする。
【００５３】
すると、サーバ装置２０のメッセージ送信部４２は、ＩＤ＝１のウェブブラウザ５０を指定して、Ｊａｖａメソッドを呼び出すイベントを通知する（Ｓ１７）。即ち、メッセージ送信部４２は、ＩＤ＝１のウェブブラウザ５０をもつ端末３０に実行させるＪａｖａメソッドを含むＪａｖａオブジェクトを含むメッセージを、その端末３０に送信する。例えば、加算のＪａｖａメソッドを端末３０に実行させる場合は、図５に示したａｄｄ（）のコードを図４のＪａｖａメソッド９６に含み、加算される値をＪａｖａフィールド９７に含むＪａｖａオブジェクト９０Ｂをもつメッセージ９０を、メッセージ送信部４２が送信する。
【００５４】
ＩＤ＝１のウェブブラウザ５０をもつ端末３０のメッセージ受信部５２がそのメッセージを受信すると、その端末３０のアプレット呼出部６２は、そのメッセージに対応するイベントをＪａｖａＳｃｒｉｐｔ６０からアプレット８０に受け渡す。即ち、アプレット呼出部６２は、その端末３０のＪＶＭ７０上で実行されているアプレット８０の実行部８１を呼び出す（Ｓ１８）。
【００５５】
そして、サーバ装置２０から送信されたＪａｖａメソッドの呼び出しが、アプレット８０上で実行される（Ｓ１９）。加算のメソッドを呼び出す場合は、端末３０のリソースを使って加算処理が実行される。
【００５６】
続いて、ＪａｖａＳｃｒｉｐｔ呼出部８２は、Ｊａｖａメソッドが呼び出されたことに対応するイベントを、アプレット８０からＪａｖａＳｃｒｉｐｔ６０に受け渡す。即ち、ＪａｖａＳｃｒｉｐｔ呼出部８２は、ウェブブラウザ５０上で実行されているＪａｖａＳｃｒｉｐｔ６０の実行部６１を呼び出す（Ｓ２０）。
【００５７】
すると、端末３０のメッセージ送信部５３は、ＩＤ＝−１のサーバ装置２０を指定して、Ｊａｖａメソッドが呼び出されたことに対応するイベントを通知する（Ｓ２１）。即ち、メッセージ送信部５３は、Ｊａｖａメソッドを呼び出したことにより得られた結果を含むＪａｖａオブジェクトを含むメッセージを、サーバ装置２０に送信する。例えば、加算のＪａｖａメソッドを端末３０に実行させた場合は、加算処理により得られた和を図４の処理結果９９に含むＪａｖａオブジェクト９０Ｂをもつメッセージ９０’を、メッセージ送信部５３が送信する。
【００５８】
そのメッセージをサーバ装置２０のメッセージ受信部４３が受信して、サーバ装置２０は、Ｊａｖａメソッドを呼び出したことにより得られた結果を取得する（Ｓ２２）。以上により、サーバ装置２０が端末３０でＪａｖａメソッドを呼び出すときの動作は終了する。
【００５９】
本実施形態では、サーバ装置２０だけでなく端末３０も、別の端末３０上でＪａｖａメソッドを呼び出すことができる。そこで次に、端末３０が別の端末３０上でＪａｖａメソッドを呼び出すときの動作について説明する。図８は、第１の端末３０が第２の端末３０でＪａｖａメソッドを呼び出すときの処理フローの一例を示す。
【００６０】
まず、第１の端末３０のウェブブラウザ５０が、サーバ装置２０との間で図７のステップＳ１１〜Ｓ１５と同様の処理を行う（Ｓ３１〜Ｓ３５）。この部分は上記と同様であるため、説明を省略する。また、第２の端末３０のウェブブラウザ５０も、サーバ装置２０との間でステップＳ１１〜Ｓ１５と同様の処理を行う。第１の端末３０と第２の端末３０のウェブブラウザ５０には、ブラウザ識別情報として、それぞれＩＤ＝１とＩＤ＝２が割り当てられているとする。また、サーバ装置２０にも、識別情報としてＩＤ＝−１が割り当てられているとする。
【００６１】
ここで、第１の端末３０のアプレット８０の実行部８１が、ＩＤ＝２のウェブブラウザ５０の端末３０でＪａｖａメソッドを呼び出すとする（Ｓ３６）。この呼び出し処理は、例えば第１の端末３０で実行されているアプレット８０に対するユーザの操作や、第１の端末３０の負荷状況が予め定められた条件を満たしたことなどを契機として、行われるものとする。
【００６２】
すると、第１の端末３０のＪａｖａＳｃｒｉｐｔ呼出部８２は、Ｊａｖａメソッドを呼び出すイベントを、アプレット８０からＪａｖａＳｃｒｉｐｔ６０に受け渡す。即ち、ＪａｖａＳｃｒｉｐｔ呼出部８２は、第１の端末３０のウェブブラウザ５０上で実行されているＪａｖａＳｃｒｉｐｔ６０の実行部６１を呼び出す（Ｓ３７）。
【００６３】
すると、第１の端末３０のメッセージ送信部５３は、ＩＤ＝２のウェブブラウザ５０を指定して、Ｊａｖａメソッドを呼び出すイベントをサーバ装置２０に通知する（Ｓ３８）。即ち、メッセージ送信部５３は、ＩＤ＝２のウェブブラウザ５０をもつ第２の端末３０に実行させるＪａｖａメソッドを含むＪａｖａオブジェクトを含むメッセージを、サーバ装置２０に送信する。
【００６４】
サーバ装置２０のメッセージ受信部４３がそのメッセージを受信すると、サーバ装置２０のメッセージ送信部４２は、そのメッセージで指定されているＩＤ＝２のウェブブラウザ５０をもつ第２の端末３０に、そのメッセージを通知（転送）する（Ｓ３９）。
【００６５】
ＩＤ＝２のウェブブラウザ５０をもつ第２の端末３０のメッセージ受信部５２がそのメッセージを受信すると、第２の端末３０のアプレット呼出部６２は、そのメッセージに対応するイベントをＪａｖａＳｃｒｉｐｔ６０からアプレット８０に受け渡す。即ち、アプレット呼出部６２は、第２の端末３０のＪＶＭ７０上で実行されているアプレット８０の実行部８１を呼び出す（Ｓ４０）。
【００６６】
そして、第１の端末３０から送信されたＪａｖａメソッドの呼び出しが、アプレット８０上で実行される（Ｓ４１）。
【００６７】
続いて、第２の端末３０のＪａｖａＳｃｒｉｐｔ呼出部８２は、Ｊａｖａメソッドが呼び出されたことに対応するイベントを、アプレット８０からＪａｖａＳｃｒｉｐｔ６０に受け渡す。即ち、ＪａｖａＳｃｒｉｐｔ呼出部８２は、第２の端末３０のウェブブラウザ５０上で実行されているＪａｖａＳｃｒｉｐｔ６０の実行部６１を呼び出す（Ｓ４２）。
【００６８】
すると、第２の端末３０のメッセージ送信部５３は、ＩＤ＝１のウェブブラウザ５０を指定して、Ｊａｖａメソッドが呼び出されたことに対応するイベントをサーバ装置２０に通知する（Ｓ４３）。即ち、メッセージ送信部５３は、Ｊａｖａメソッドを呼び出したことにより得られた結果を含むＪａｖａオブジェクトを含むメッセージを、サーバ装置２０に送信する。
【００６９】
サーバ装置２０のメッセージ受信部４３がそのメッセージを受信すると、メッセージ送信部４２は、そのメッセージで指定されているＩＤ＝１のウェブブラウザ５０をもつ第１の端末３０に、そのメッセージを通知（転送）する（Ｓ４４）。
【００７０】
ＩＤ＝１のウェブブラウザ５０をもつ第１の端末３０のメッセージ受信部５２がそのメッセージを受信すると、第１の端末３０のアプレット呼出部６２は、そのメッセージに対応するイベントをＪａｖａＳｃｒｉｐｔ６０からアプレット８０に受け渡す。即ち、アプレット呼出部６２は、第１の端末３０のＪＶＭ７０上で実行されているアプレット８０の実行部８１を呼び出す（Ｓ４５）。
【００７１】
これにより、第１の端末３０のアプレット８０の実行部８１は、Ｊａｖａメソッドを呼び出したことにより得られた結果を取得する（Ｓ４６）。以上により、第１の端末３０が第２の端末３０でＪａｖａメソッドを呼び出すときの動作は終了する。
【００７２】
本実施形態によれば、端末３０で実行されているアプレット等のＪａｖａプログラムに対してリモートから（即ち、サーバ装置２０や別の端末３０等の外部から）Ｊａｖａオブジェクトを送信し、そのオブジェクトに含まれるＪａｖａメソッドをリモートから呼び出すことが可能になる。即ち、ＪａｖａＳｃｒｉｐｔの実行環境をもたないサーバが、クライアント（ウェブブラウザ）上でのみ実行可能なＪａｖａＳｃｒｉｐｔプログラムではなく、サーバ上で実行可能なＪａｖａプログラムをそのままクライアントに送信し、それをサーバから呼び出して実行させることが可能になる。これにより、例えばサーバが、クライアントのリソースを使ってクライアントに計算させた結果を取得することができる。
【００７３】
一般に、あるＪＶＭが別のＪＶＭ上でＪａｖａメソッドを呼び出すためには、ＪａｖａのＲＭＩの仕組みを使う必要がある。しかしながら、本実施形態によれば、Ｊａｖａメソッドが呼び出される側でＲＭＩのサービス呼び出しを最初に受け付けるモジュールが予め稼動していなくても、リモートからＪａｖａメソッドを呼び出すことが可能になる。
【００７４】
なお、図５では四則演算を行うＪａｖａクラスを例示したが、クライアントで呼び出されるＪａｖａメソッドはこれに限らない。クライアントに送信されるＪａｖａオブジェクトには、任意の計算処理を含めることができる。そこで以下では、クライアントで呼び出されるＪａｖａメソッドの別の例について説明する。
【００７５】
まず、本実施形態をソート計算に適用することが考えられる。例えば、ソートのアルゴリズムをＪａｖａメソッド内に実装し、さらにこのメソッドを呼び出すための別のメソッドを実装する。ソート対象のデータは、配列等のデータ形式でＪａｖａオブジェクトに含める。ソート結果のデータは、ソート対象のデータエリアに書き込むようにしてもよいし、別に用意したエリアに書き込んでもよい。こうして得られたＪａｖａオブジェクトを含むメッセージを送受信することにより、サーバがクライアントにソートの計算を実行させることができる。一般に、ソートに要する計算量は、ソート対象のデータの要素数に応じて増大する。このため、本実施形態を適用して、計算処理をクライアントに行わせるメリットがある。
【００７６】
また、本実施形態を分割統治法による計算処理に適用することも考えられる。本実施形態のコンピュータシステム１０は、１個のサーバ装置２０に対して複数の端末３０が接続されている。そこで、例えばソート計算について、ソート対象のデータを複数個に分割し、それぞれのデータについて別々の端末３０にクイックソートやマージソートを実行させることができる。それらの結果をサーバ装置２０で取得して、全体のソート結果を求めることができる。
【００７７】
また、本実施形態をアプレットの状態制御に適用することも考えられる。一般に、アプレットはクライアントのウェブブラウザ上に表示エリアをもつことができるので、サーバから受信したＪａｖａオブジェクトを処理した結果を、その表示エリアに示すことが可能である。一般に、アプレットを操作するためにはその表示エリアに表示されるボタン等を操作しなければならないが、本実施形態によれば、表示エリアへのアプレットによる表示を制御するコマンドを含むＪａｖａオブジェクトを送受信することにより、クライアントのアプレットをサーバ（又は別のクライアント）から操作することが可能になる。
【００７８】
例えば、ウェブブラウザ上の表示エリアに「Ｓｔａｒｔ」、「Ｓｔｏｐ」、「Ｐａｕｓｅ」等のボタンが配置され、クライアントのユーザがこれらのボタンを操作することにより処理を制御することができるアプレットを考える。そして例えば、ウェブブラウザに表示されるウェブページが、ネットワークを利用したリモート講義で利用されている教材であるとする。この場合、複数の受講生が利用している複数のクライアントを、１人の講師が制御したいときがある。サーバ側の講師が各クライアントのアプレットの状態制御をするためには、「Ｓｔａｒｔ」、「Ｓｔｏｐ」、「Ｐａｕｓｅ」等のメソッドの呼び出しをサーバから行い、その結果がアプレットの表示エリアに出力されるようにする必要がある。本実施形態を適用すれば、このような制御を実現することが可能になる。
【００７９】
最後に、本実施形態に係るコンピュータのハードウェア構成について説明する。図９は、本実施形態に係るコンピュータ１９００のハードウェア構成の一例を示す。本実施形態に係るコンピュータ１９００は、ホスト・コントローラ２０８２により相互に接続されるＣＰＵ２０００、ＲＡＭ２０２０、グラフィック・コントローラ２０７５、及び表示装置２０８０を有するＣＰＵ周辺部と、入出力コントローラ２０８４によりホスト・コントローラ２０８２に接続される通信インターフェイス２０３０、ハードディスクドライブ２０４０、及びＣＤ−ＲＯＭドライブ２０６０を有する入出力部と、入出力コントローラ２０８４に接続されるＲＯＭ２０１０、フレキシブルディスク・ドライブ２０５０、及び入出力チップ２０７０を有するレガシー入出力部とを備える。
【００８０】
ホスト・コントローラ２０８２は、ＲＡＭ２０２０と、高い転送レートでＲＡＭ２０２０をアクセスするＣＰＵ２０００及びグラフィック・コントローラ２０７５とを接続する。ＣＰＵ２０００は、ＲＯＭ２０１０及びＲＡＭ２０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ２０７５は、ＣＰＵ２０００等がＲＡＭ２０２０内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置２０８０上に表示させる。これに代えて、グラフィック・コントローラ２０７５は、ＣＰＵ２０００等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
【００８１】
入出力コントローラ２０８４は、ホスト・コントローラ２０８２と、比較的高速な入出力装置である通信インターフェイス２０３０、ハードディスクドライブ２０４０、ＣＤ−ＲＯＭドライブ２０６０を接続する。通信インターフェイス２０３０は、ネットワークを介して他の装置と通信する。ハードディスクドライブ２０４０は、コンピュータ１９００内のＣＰＵ２０００が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ２０６０は、ＣＤ−ＲＯＭ２０９５からプログラム又はデータを読み取り、ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供する。
【００８２】
また、入出力コントローラ２０８４には、ＲＯＭ２０１０と、フレキシブルディスク・ドライブ２０５０、及び入出力チップ２０７０の比較的低速な入出力装置とが接続される。ＲＯＭ２０１０は、コンピュータ１９００が起動時に実行するブート・プログラム、及び／又は、コンピュータ１９００のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ２０５０は、フレキシブルディスク２０９０からプログラム又はデータを読み取り、ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供する。入出力チップ２０７０は、フレキシブルディスク・ドライブ２０５０を入出力コントローラ２０８４へと接続すると共に、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を入出力コントローラ２０８４へと接続する。
【００８３】
ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供されるプログラムは、フレキシブルディスク２０９０、ＣＤ−ＲＯＭ２０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、ＲＡＭ２０２０を介してコンピュータ１９００内のハードディスクドライブ２０４０にインストールされ、ＣＰＵ２０００において実行される。
【００８４】
コンピュータ１９００にダウンロードして実行され、コンピュータ１９００を端末３０として機能させるプログラムは、アプリケーション受信モジュールと、メッセージ受信モジュールと、メッセージ送信モジュールと、ＪａｖａＳｃｒｉｐｔ実行モジュールと、アプレット呼出モジュールと、アプレット実行モジュールと、ＪａｖａＳｃｒｉｐｔ呼出モジュールとを備える。これらのプログラム又はモジュールは、ＣＰＵ２０００等に働きかけて、コンピュータ１９００を、アプリケーション受信部５１、メッセージ受信部５２、メッセージ送信部５３、実行部６１、アプレット呼出部６２、実行部８１及びＪａｖａＳｃｒｉｐｔ呼出部８２としてそれぞれ機能させる。
【００８５】
これらのプログラムに記述された情報処理は、コンピュータ１９００に読込まれることにより、ソフトウェアと上述した各種のハードウェア資源とが協働した具体的手段であるアプリケーション受信部５１、メッセージ受信部５２、メッセージ送信部５３、実行部６１、アプレット呼出部６２、実行部８１及びＪａｖａＳｃｒｉｐｔ呼出部８２として機能する。そして、これらの具体的手段によって、本実施形態におけるコンピュータ１９００の使用目的に応じた情報の演算又は加工を実現することにより、使用目的に応じた特有の端末３０が構築される。
【００８６】
また、コンピュータ１９００にインストールされ、コンピュータ１９００をサーバ装置２０として機能させるプログラムは、アプリケーション送信モジュールと、サーブレット実行モジュールと、メッセージ送信モジュールと、メッセージ受信モジュールとを備える。これらのプログラム又はモジュールは、ＣＰＵ２０００等に働きかけて、コンピュータ１９００を、アプリケーション送信部２２、実行部４１、メッセージ送信部４２及びメッセージ受信部４３としてそれぞれ機能させる。
【００８７】
これらのプログラムに記述された情報処理は、コンピュータ１９００に読込まれることにより、ソフトウェアと上述した各種のハードウェア資源とが協働した具体的手段であるアプリケーション送信部２２、実行部４１、メッセージ送信部４２及びメッセージ受信部４３として機能する。そして、これらの具体的手段によって、本実施形態におけるコンピュータ１９００の使用目的に応じた情報の演算又は加工を実現することにより、使用目的に応じた特有のサーバ装置２０が構築される。
【００８８】
一例として、コンピュータ１９００と外部の装置等との間で通信を行う場合には、ＣＰＵ２０００は、ＲＡＭ２０２０上にロードされた通信プログラムを実行し、通信プログラムに記述された処理内容に基づいて、通信インターフェイス２０３０に対して通信処理を指示する。通信インターフェイス２０３０は、ＣＰＵ２０００の制御を受けて、ＲＡＭ２０２０、ハードディスクドライブ２０４０、フレキシブルディスク２０９０、又はＣＤ−ＲＯＭ２０９５等の記憶装置上に設けた送信バッファ領域等に記憶された送信データを読み出してネットワークへと送信し、若しくは、ネットワークから受信した受信データを記憶装置上に設けた受信バッファ領域等へと書き込む。このように、通信インターフェイス２０３０は、ＤＭＡ（ダイレクト・メモリ・アクセス）方式により記憶装置との間で送受信データを転送してもよく、これに代えて、ＣＰＵ２０００が転送元の記憶装置又は通信インターフェイス２０３０からデータを読み出し、転送先の通信インターフェイス２０３０又は記憶装置へとデータを書き込むことにより送受信データを転送してもよい。
【００８９】
また、ＣＰＵ２０００は、ハードディスクドライブ２０４０、ＣＤ−ＲＯＭドライブ２０６０（ＣＤ−ＲＯＭ２０９５）、フレキシブルディスク・ドライブ２０５０（フレキシブルディスク２０９０）等の外部記憶装置に格納されたファイル又はデータベース等の中から、全部又は必要な部分をＤＭＡ転送等によりＲＡＭ２０２０へと読み込ませ、ＲＡＭ２０２０上のデータに対して各種の処理を行う。そして、ＣＰＵ２０００は、処理を終えたデータを、ＤＭＡ転送等により外部記憶装置へと書き戻す。このような処理において、ＲＡＭ２０２０は、外部記憶装置の内容を一時的に保持するものとみなせるから、本実施形態においてはＲＡＭ２０２０及び外部記憶装置等をメモリ、記憶部、又は記憶装置等と総称する。本実施形態における各種のプログラム、データ、テーブル、データベース等の各種の情報は、このような記憶装置上に格納されて、情報処理の対象となる。なお、ＣＰＵ２０００は、ＲＡＭ２０２０の一部をキャッシュメモリに保持し、キャッシュメモリ上で読み書きを行うこともできる。このような形態においても、キャッシュメモリはＲＡＭ２０２０の機能の一部を担うから、本実施形態においては、区別して示す場合を除き、キャッシュメモリもＲＡＭ２０２０、メモリ、及び／又は記憶装置に含まれるものとする。
【００９０】
また、ＣＰＵ２０００は、ＲＡＭ２０２０から読み出したデータに対して、プログラムの命令列により指定された、本実施形態中に記載した各種の演算、情報の加工、条件判断、情報の検索・置換等を含む各種の処理を行い、ＲＡＭ２０２０へと書き戻す。例えば、ＣＰＵ２０００は、条件判断を行う場合においては、本実施形態において示した各種の変数が、他の変数又は定数と比較して、大きい、小さい、以上、以下、等しい等の条件を満たすかどうかを判断し、条件が成立した場合（又は不成立であった場合）に、異なる命令列へと分岐し、又はサブルーチンを呼び出す。
【００９１】
また、ＣＰＵ２０００は、記憶装置内のファイル又はデータベース等に格納された情報を検索することができる。例えば、第１属性の属性値に対し第２属性の属性値がそれぞれ対応付けられた複数のエントリが記憶装置に格納されている場合において、ＣＰＵ２０００は、記憶装置に格納されている複数のエントリの中から第１属性の属性値が指定された条件と一致するエントリを検索し、そのエントリに格納されている第２属性の属性値を読み出すことにより、所定の条件を満たす第１属性に対応付けられた第２属性の属性値を得ることができる。
【００９２】
以上に示したプログラム又はモジュールは、外部の記録媒体に格納されてもよい。記録媒体としては、フレキシブルディスク２０９０、ＣＤ−ＲＯＭ２０９５の他に、ＤＶＤ又はＣＤ等の光学記録媒体、ＭＯ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワーク又はインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ１９００に提供してもよい。
【００９３】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更又は改良を加えることが可能であることが当業者に明らかである。その様な変更又は改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【００９４】
特許請求の範囲、明細書、及び図面中において示した装置、システム、プログラム、及び方法における動作、手順、ステップ、及び段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、及び図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
【符号の説明】
【００９５】
１０…コンピュータシステム、２０…サーバ装置、２１…アプリケーション記憶部、２２…アプリケーション送信部、３０…端末、４０…サーブレット、４１…実行部、４２…メッセージ送信部、４３…メッセージ受信部、５０…ウェブブラウザ、５１…アプリケーション受信部、５２…メッセージ受信部、５３…メッセージ送信部、６０…ＪａｖａＳｃｒｉｐｔアプリケーション、６１…実行部、６２…アプレット呼出部、７０…Ｊａｖａ仮想マシン、８０…アプレット、８１…実行部、８２…ＪａｖａＳｃｒｉｐｔ呼出部、１９００…コンピュータ、２０００…ＣＰＵ、２０１０…ＲＯＭ、２０２０…ＲＡＭ、２０３０…通信インターフェイス、２０４０…ハードディスクドライブ、２０５０…フレキシブルディスク・ドライブ、２０６０…ＣＤ−ＲＯＭドライブ、２０７０…入出力チップ、２０７５…グラフィック・コントローラ、２０８０…表示装置、２０８２…ホスト・コントローラ、２０８４…入出力コントローラ、２０９０…フレキシブルディスク、２０９５…ＣＤ−ＲＯＭ
【図１】
0005936103.tif 000002
【図２】
0005936103.tif 000003
【図３】
0005936103.tif 000004
【図４】
0005936103.tif 000005
【図５】
0005936103.tif 000006
【図６】
0005936103.tif 000007
【図７】
0005936103.tif 000008
【図８】
0005936103.tif 000009
【図９】
0005936103.tif 000010