(57)【要約】  本発明は、アプリケーションとアプリケーションコンポーネントとを実行する場合に、ソフトウェアアプリケーション内の異なるコンポーネントの類似の機能を使用する方法およびシステムに関する。一実施形態では、所定の構造がコンポーネントタイプごとに作成され、ここで、各コンポーネントタイプは、実行される場合に類似の機能を有する。パラメータ情報は、クライアントにおいて受信され、前記所定の構造とリンクされて、スクリプト固有の所定の構造を提供する。このスクリプト固有の所定の構造を実行することによって前記コンポーネントが実行される。ユーザが前記コンポーネントを終了した後に、該スクリプト固有の所定の構造は自動的に削除される。
2007531147.tif 000002
【特許請求の範囲】
【請求項１】
リクエストされたコンポーネントに関するパラメータ情報をサーバからクライアントに送信するステップと、
前記送信されたコンポーネントパラメータ情報を前記クライアントにおいて所定の構造にリンクさせて、スクリプト固有の所定の構造を提供するステップであって、該所定の構造は、前記リクエストされたコンポーネントの意図された機能に対応する意図された機能を有するものであるステップと、
前記スクリプト固有の所定の構造を実行して前記コンポーネントを実行するステップと
を含んでなる、あるスクリプトのリクエストされたコンポーネントを実行する方法。
【請求項２】
前記コンポーネントに対するリクエストを前記クライアントから前記サーバに送るステップをさらに含む請求項１に記載の実行方法。
【請求項３】
前記サーバにおいて前記スクリプトにおける前記リクエストされたコンポーネントを検索するステップをさらに含む請求項２に記載の実行方法。
【請求項４】
前記リンクステップが、前記パラメータ情報内の位置識別子を見出すステップと、前記所定の構造における対応する識別子に基づいて、該識別子と関連するスクリプトデータを前記所定の構造へと挿入するステップとをさらに含む請求項１に記載の実行方法。
【請求項５】
ユーザのアクセスレベルを判断するステップをさらに含み、前記送信するステップが、前記ユーザアクセスレベルに基づいて前記パラメータ情報を送信するステップをさらに含む請求項１に記載の実行方法。
【請求項６】
前記クライアントにおいて前記所定の構造を記憶するステップと、クライアントの所定の構造とサーバの所定の構造とが存在するように、前記所定の構造のコピーを前記サーバに記憶するステップとをさらに含む請求項１に記載の実行方法。
【請求項７】
ユーザが前記コンポーネントを終了した後に、前記スクリプト固有の所定の構造を自動的に削除するステップをさらに含む請求項１に記載の実行方法。
【請求項８】
前記クライアントが前記コンポーネントに対するリクエストを前記サーバに送って接続を確立するステップと、前記クライアントおよび前記サーバが無接続プロトコルに従うことができるように、前記サーバが前記接続に対するセッション識別番号を作成するステップとをさらに含む請求項１に記載の実行方法。
【請求項９】
相互に通信しているクライアントメモリとクライアントプロセッサとクライアントトランシーバーとを含むクライアントであって、前記クライアントメモリがサーバによって送信されるコンポーネントスクリプトを含み、該送信されるコンポーネントスクリプトが前記コンポーネントに関するパラメータ情報を含み、前記クライアントメモリが、前記コンポーネントの意図された機能に対応する意図された機能を有するクライアントの所定の構造をさらに含むものであるクライアントを含んでおり、前記プロセッサが、前記送信されたコンポーネントスクリプトの前記パラメータ情報を前記クライアントの所定の構造にリンクさせて、スクリプト固有の所定の構造を提供し、前記スクリプト固有の所定の構造を実行することによって前記コンポーネントを実行するように構成されている、あるスクリプトのコンポーネントを実行するためのシステム。
【請求項１０】
前記クライアントと通信しているサーバであって、該サーバが相互に通信しているサーバメモリとサーバプロセッサとサーバトランシーバーとを含み、前記サーバメモリが前記スクリプトを含み、前記サーバトランシーバーが前記コンポーネントスクリプトを送信するように構成されているサーバをさらに含み、前記コンポーネントスクリプトはコンポーネントに関する前記パラメータ情報を含むものである請求項９に記載のシステム。
【請求項１１】
前記サーバメモリが、複数のコンポーネントタイプのうちの１つの意図された機能に対応する意図された機能を有するサーバの所定の構造をさらに含み、前記コンポーネントが前記複数のコンポーネントタイプのうちの１つの前記意図された機能を有している請求項９に記載のシステム。
【請求項１２】
前記クライアントが、前記クライアントメモリに記憶されたクライアントランタイムエンジンをさらに含み、前記クライアントランタイムエンジンがクライアントパーサーおよびクライアント実行エンジンを含み、前記クライアント実行エンジンがクライアントリンカーと前記クライアントの所定の構造とを含み、前記クライアントパーサーが、前記送信されたコンポーネントスクリプトにおける識別子を検索するように前記プロセッサに命令するように構成されており、前記クライアントリンカーは、前記パラメータ情報を前記クライアントの所定の構造にリンクさせて、前記スクリプト固有の所定の構造を提供するように前記クライアントプロセッサに命令するように構成されている請求項９に記載のシステム。
【請求項１３】
前記クライアントと通信しているサーバであって、前記サーバは相互に通信しているサーバメモリとサーバプロセッサとサーバトランシーバーとを含み、前記サーバメモリが前記スクリプトとサーバランタイムエンジンとを含み、該サーバランタイムエンジンがサーバパーサーとサーバ実行エンジンとを含み、該サーバ実行エンジンがサーバリンカーと複数のコンポーネントタイプのうちの１つの意図された機能に対応する意図された機能を有するサーバの所定の構造とを含むものであるサーバをさらに含み、前記コンポーネントが前記複数のコンポーネントタイプのうちの１つの前記意図された機能を有しており、前記サーバパーサーが、前記スクリプトにおける前記コンポーネントを検索するように前記サーバプロセッサに命令するように構成されており、前記コンポーネントが、前記クライアントによってリクエストされ、前記コンポーネントに関する前記パラメータ情報を含む前記コンポーネントスクリプトを含み、前記サーバリンカーが、前記パラメータ情報を前記サーバの所定の構造にリンクさせて、サーバスクリプト固有の所定の構造を提供するように前記サーバプロセッサに命令するように構成されており、前記サーバトランシーバーが、前記コンポーネントスクリプトを送信するように構成されており、前記サーバおよび前記クライアントが、前記クライアントおよび前記サーバのランタイムエンジンについて同一のインテリジェンスを有している請求項１２に記載のシステム。
【請求項１４】
前記クライアントが前記コンポーネントスクリプトをリクエストする場合には、前記コンポーネントスクリプトが前記サーバから前記クライアントに送信され、前記クライアントメモリがクライアント長期間メモリおよびクライアント短期間メモリをさらに含み、前記クライアントが前記コンポーネントスクリプトをリクエストする前に前記ランタイムエンジンが前記クライアント長期間メモリに記憶されており、前記クライアントが前記コンポーネントスクリプトをリクエストする場合には、前記クライアントプロセッサが前記ランタイムエンジンを前記クライアント短期間メモリに転送して、前記スクリプト固有の所定の構造を前記クライアント短期間メモリに一時的に記憶し、前記クライアントが前記コンポーネントを終了する場合に前記スクリプト固有の所定の構造を前記クライアント短期間メモリから自動的に削除するように構成されている請求項９に記載のシステム。
【請求項１５】
前記送信されたパラメータ情報がコンポーネント情報と関連した識別子を含み、前記所定の構造が対応する識別子を含む請求項９に記載のシステム。
【請求項１６】
前記サーバが、各接続を一意に識別するために確立された各接続の一意のセッション識別番号を作成し、既に確立された前記セッションを再作成することによって無接続プロトコルを容易にするものである請求項９に記載のシステム。
【請求項１７】
ユーザがあるスクリプトのコンポーネントをあるシステム上で実行する場合にそのコンポーネントを実行するためのアプリケーションであって、
所定の構造とリンカーとを備える実行エンジンを含む第１のランタイムエンジンであって、前記所定の構造が複数のコンポーネントタイプのうちの１つの意図された機能を有している第１のランタイムエンジンを含み、前記コンポーネントが前記複数のコンポーネントタイプのうちの１つの前記意図された機能を有しており、前記ユーザが前記コンポーネントを実行する場合に、（ａ）前記リンカーが、前記コンポーネントに関するパラメータ情報を前記所定の構造にリンクさせて、スクリプト固有の所定の構造を提供するようにクライアントプロセッサに命令し、前記パラメータ情報は、サーバからクライアントに送信され、クライアントプロセッサ読み取り可能なメモリに記憶されており、（ｂ）前記実行エンジンが、前記スクリプト固有の所定の構造を実行して、前記コンポーネントを実行するように前記クライアントプロセッサに命令し、前記第１のランタイムエンジンが媒体に記憶され、前記媒体がシステムと併用される場合には、前記第１のランタイムエンジンは、クライアントプロセッサ読み取り可能なメモリと前記クライアントプロセッサとを含む前記システムの前記クライアントプロセッサ読み取り可能なメモリに転送されるものであるアプリケーション。
【請求項１８】
サーバランタイムエンジンが前記システムのサーバプロセッサ読み取り可能なメモリに転送され、前記サーバランタイムエンジンが前記第１のランタイムエンジンのコピーを含み、前記システムは、サーバプロセッサ読み取り可能なメモリとサーバトランシーバーとサーバプロセッサとを備えるサーバを含み、前記サーバはクライアントと通信しており、前記クライアントは前記クライアントプロセッサと前記クライアントプロセッサ読み取り可能なメモリとを含み、前記サーバランタイムエンジンはサーバパーサーおよびサーバ実行エンジンを含み、前記クライアントにおけるユーザは、コンポーネントを実行する前に前記サーバから前記コンポーネントをリクエストし、前記ユーザが前記コンポーネントをリクエストする場合には、（ａ）前記サーバパーサーは、前記リクエストされたコンポーネントの前記スクリプトを検索するように前記サーバプロセッサに命令し、前記スクリプトは前記サーバプロセッサ読み取り可能なメモリに記憶されており、（ｂ）前記実行エンジンは、前記コンポーネントに関する前記パラメータ情報を含むコンポーネントスクリプトを前記サーバトランシーバーを介して前記クライアントに送信するように前記サーバプロセッサに命令するものである請求項１７に記載のアプリケーション。
【請求項１９】
前記サーバ実行エンジンがサーバの所定の構造をさらに含み、前記サーバの所定の構造は前記複数のコンポーネントタイプのうちの１つの前記意図された機能を有しており、前記リクエストされたコンポーネントは前記複数のコンポーネントタイプのうちの前記１つの前記意図された機能を有するものである請求項１８に記載のアプリケーション。
【請求項２０】
前記クライアントが前記コンポーネントをリクエストする場合には、前記サーバ実行エンジンが、前記サーバプロセッサに対し、セッション番号を作成して該セッション番号を前記クライアントに送信するように命令するものである請求項１９に記載のアプリケーション。
【請求項２１】
前記実行エンジンが、前記クライアントプロセッサに対し、前記スクリプト固有の所定の構造を前記クライアントプロセッサ読み取り可能なメモリに記憶するように命令し、前記プロセッサに対し、前記ユーザが前記コンポーネントを終了した後に前記スクリプト固有の所定の構造を前記メモリから自動的に削除するように命令するものである請求項１７に記載のアプリケーション。
【請求項２２】
コンポーネントスクリプトを含むメモリであって、前記コンポーネントスクリプトはあるスクリプトの前記コンポーネントに関するパラメータ情報を含み、前記コンポーネントの意図された機能に対応する意図された機能を有する所定の構造をさらに含むものであるメモリと、
前記メモリと通信しているプロセッサと
を含んでなり、前記プロセッサは、前記コンポーネントスクリプトの前記パラメータ情報を前記所定の構造にリンクさせて、スクリプト固有の所定の構造を提供し、前記スクリプト固有の所定の構造を前記メモリに一時的に記憶し、前記スクリプト固有の所定の構造を実行することによって前記コンポーネントを実行し、前記ユーザが前記コンポーネントを終了する場合に前記スクリプト固有の所定の構造を自動的に削除するように構成されている、あるスクリプトのコンポーネントを実行するためのシステム。
【請求項２３】
前記スクリプトがサーバから送信されたスクリプトをさらに含む請求項２２に記載のシステム。
【請求項２４】
前記クライアントと通信しているサーバをさらに含み、前記サーバは相互に通信しているサーバメモリとサーバプロセッサとサーバトランシーバーとを含み、前記サーバメモリは前記スクリプトを含み、前記サーバトランシーバーは前記コンポーネントスクリプトを送信するように構成されている請求項２３に記載のシステム。
【請求項２５】
前記サーバメモリは、複数のコンポーネントタイプのうちの１つの意図された機能に対応する意図された機能を有するサーバの所定の構造をさらに含み、前記コンポーネントは前記複数のコンポーネントタイプのうちの１つの前記意図された機能を有するものである請求項２４に記載のシステム。
【請求項２６】
所定の構造をメモリに転送するステップであって、前記所定の構造が複数のコンポーネントタイプのうちの１つの意図された機能に対応する意図された機能を有するステップと、
コンポーネントスクリプトを前記所定の構造にリンクさせて、スクリプト固有の所定の構造を提供するステップであって、前記コンポーネントが前記複数のコンポーネントタイプのうちの１つの前記意図された機能を有するステップと、
前記スクリプト固有の所定の構造を前記メモリに一時的に記憶するステップと、
前記スクリプト固有の所定の構造を実行することによって前記コンポーネントを実行するステップと、
前記プログラムが終了された後、前記スクリプト固有の所定の構造を前記メモリから自動的に削除するステップと
を含んでなる、プログラムのスクリプトのコンポーネントの実行方法。
【請求項２７】
前記所定の構造を長期間メモリに記憶するステップをさらに含み、前記転送するステップが、ユーザがコンポーネントをリクエストする場合に、前記所定の構造を短期間メモリに転送することを含み、前記記憶するステップが、前記スクリプト固有の所定の構造を前記短期間メモリに記憶することを含み、前記自動的に削除するステップが、前記スクリプト固有の所定の構造を前記短期間メモリから自動的に削除することをさらに含むものである請求項２６に記載の実行方法。
【請求項２８】
コンポーネントスクリプトをサーバからクライアントに送信するステップをさらに含み、前記転送するステップが、前記所定の構造をクライアントメモリに転送することをさらに含み、前記記憶するステップが、前記スクリプト固有の所定の構造を前記クライアントメモリに記憶することをさらに含み、前記自動的に削除するステップが、前記スクリプト固有の所定の構造を前記クライアントメモリから自動的に削除することをさらに含むものである請求項２６に記載の実行方法。
【請求項２９】
ユーザがあるスクリプトのコンポーネントをあるシステム上で実行する場合にそのコンポーネントを実行するためのアプリケーションであって、
所定の構造およびリンカーを備える実行エンジンを含む第１のランタイムエンジンであって、前記所定の構造が複数のコンポーネントタイプのうちの１つの意図された機能を有する第１のランタイムエンジンを含み、前記コンポーネントが前記複数のコンポーネントタイプのうちの１つの前記意図された機能を有しており、前記ユーザが前記コンポーネントを実行する場合、（ａ）前記リンカーが、プロセッサに対し、前記コンポーネントに関するパラメータ情報を前記所定の構造にリンクさせて、スクリプト固有の所定の構造を提供するように命令し、（ｂ）前記実行エンジンが、前記プロセッサに対し、前記スクリプト固有の所定の構造をプロセッサ読み取り可能なメモリに一時的に記憶するように命令し、（ｃ）前記実行エンジンが、前記プロセッサに対し、前記スクリプト固有の所定の構造を実行して、前記コンポーネントを実行するように命令し、前記ユーザが前記アプリケーションを終了する場合には、前記実行エンジンは、前記プロセッサに対し、前記スクリプト固有の所定の構造を前記プロセッサ読み取り可能なメモリから自動的に削除するように命令し、前記第１のランタイムエンジンは媒体に記憶され、前記媒体がシステムと併用される場合には、前記第１のランタイムエンジンは、プロセッサ読み取り可能なメモリと前記プロセッサとを含む前記システムの前記プロセッサ読み取り可能なメモリに転送されるものであるアプリケーション。
【請求項３０】
サーバランタイムエンジンが前記システムのサーバプロセッサ読み取り可能なメモリに転送され、前記サーバランタイムエンジンは前記第１のランタイムエンジンのコピーを含み、前記システムは、サーバプロセッサ読み取り可能なメモリとサーバトランシーバーとサーバプロセッサとを備えるサーバを含み、前記サーバはクライアントと通信しており、前記クライアントは前記プロセッサおよび前記プロセッサ読み取り可能なメモリを含み、前記サーバランタイムエンジンはサーバパーサーおよびサーバ実行エンジンを含み、ユーザはコンポーネントを実行する前に前記コンポーネントをリクエストし、前記ユーザが前記コンポーネントをリクエストする場合には、（ａ）前記サーバパーサーは、前記サーバプロセッサに対し、前記リクエストされたコンポーネントの前記スクリプトを検索するように命令し、前記スクリプトは前記サーバプロセッサ読み取り可能なメモリに記憶されており、（ｂ）前記実行エンジンは、前記サーバプロセッサに対し、前記コンポーネントのパラメータ情報を前記サーバトランシーバーを介して前記クライアントに送信するように命令するものである請求項２９に記載のアプリケーション。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にソフトウェアプログラムの分野に関する。特に、本発明は、プログラムのコンポーネントを実行するためのシステムおよび方法に関する。
【背景技術】
【０００２】
クライアント−サーバおよびスタンドアローン環境の両方でプログラムを実行するのに使用される複数の方法およびシステムがある。すべてのものが、プラットフォーム依存性の問題や、サーバおよびネットワークの帯域幅への負荷や、ガーベジコレクションや、耐障害性や、低実行速度および他の問題などの複数の欠点を有している。
【０００３】
クライアントが小さく設計されており、データ処理の多くがサーバ上で生じるクライアント／サーバ環境がある。これらのクライアントは通常シンクライアントと称されており、これらは、ネットワークコンピュータ上で実行するＪａｖａ（登録商標）ベースシンクライアントをサポートするＮｅｔｓｃａｐｅ社およびＳｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ社などの企業によって推奨されている。他方、Ｍｉｃｒｏｓｏｆｔ社およびＩｎｔｅｌ社は、デスクトップコンピュータ上でローカルに実行されるより大きなアプリケーションを奨励している。
【０００４】
ソフトウェアプログラムは、通常、Ｃ、Ｊａｖａ（登録商標）、Ｃ＋＋、ＶＢ、Ｐｅｒｌなどの多数のハイレベル言語のうちの１つを使用して展開される。ソースコードは、プログラムを実行するためにプロセッサが理解および使用可能なマシーンコードにコンパイルされる。一般的に、プログラムは３つの異なる方法を使用してコンパイルおよび実行される。（ａ）プラットフォーム依存性実行ファイル（ｅｘｅ）または動的リンクライブラリ（ｄｌｌ）と、（ｂ）バーチャルマシーンによって実行されるプラットフォーム独立バイトコードと、（ｃ）ラインごとに解釈および実行されるプラットフォーム独立バイトコードとのいずれかにプログラムをコンパイルすることによって、ハイレベル言語はマシーンコードにコンパイルされる。
【０００５】
ソフトウェアプログラムを準備する間にいずれのハイレベル言語およびプログラム実行方法を利用するかについての選択は、展開の容易性や、コンポーネントの再利用性や、（プラットフォーム依存性に関する）メンテナンスの容易性や、（メモリおよびネットワークの帯域幅負荷に関する）最小限のリソースでの高速プログラム実行などの多数の要因に左右される。記述言語およびバイトコードのオプションは、通常、実行速度よりもむしろ（オペレーティングシステムおよびプロセッサ独立性という）プログラムメンテナンスの容易性ゆえに使用される。
【０００６】
Ｃ言語／Ｃ＋＋言語により記述されたプログラムは、コンパイルされた場合にマシーン読み取り可能なプラットフォーム依存性実行ファイルを形成する。クライアント−サーバ環境において、クライアントのユーザがプログラムの実行を望む場合には、クライアントはサーバにリクエストを送り、実行ファイル全体がクライアントに転送される、つまり、実行ファイルのコピーがサーバからクライアントに転送されてクライアントコンピュータ上で実行される。このことは、クライアントとサーバコンピュータとの間で情報を送受信するために相当量のネットワーク帯域幅を使用することを伴う。処理の多くがクライアントコンピュータで実行されるが、必要とされる情報は常時送信される必要がある。
【０００７】
別の欠点は、プログラムのプラットフォーム依存性である。Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムにコンパイルされたプログラムはＬｉｎｕｘオペレーティングシステム上では実行不可能であり、逆もまた同様である。結果として、サーバは、異なるオペレーティングシステムを実行するクライアントにサービス提供するために複数の実行ファイルのバージョンを管理する。
【０００８】
これらの欠点の一部に対処するように、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ社がＪａｖａ（登録商標）を作成した。Ｊａｖａ（登録商標）により記述されたプログラムはプラットフォーム独立性である。Ｊａｖａ（登録商標）コンパイラはＪａｖａ（登録商標）ソースコードをバイトコードに変換し、これはＪａｖａ（登録商標）  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ（以下、「ＪＶＭ」とよぶ）によって理解される。ＪＶＭは、プラットフォーム依存性であり、プログラムをマシーン読み取り可能なフォームに変換して実行する。しかしながら、バイトコードは高密度であり、サーバからクライアントに送信されなければならないため、ネットワーク帯域幅のクラッターを引き起こす。さらに、Ｊａｖａ（登録商標）により記述されたプログラムの多くは、必要な処理がサーバコンピュータで実行されるようにプログラミングされている。これは、サーバによって一度にサービス提供可能なクライアント数を制限する。
【０００９】
Ｊａｖａ（登録商標）Ｓｃｒｉｐｔおよび他の類似の言語はインタープリタ型言語である。このような言語では、クライアント側にインタープリタがあり、クライアントはテキスト形態のスクリプトを受信する。クライアント側のインタープリタは、プログラムを実行するために一度に１つ以上のラインを解釈する。プログラムスクリプトの実際のテキストが送られるため、Ｃ／Ｃ＋＋の実行ファイルやＪａｖａ（登録商標）バイトコードが送られる場合に課されるよりもネットワーク帯域幅の負担は軽い。帯域幅の負担が軽いことの理由は、実行ファイルおよびバイトコードファイルがより高密度であるためである。しかしながら、Ｊａｖａ（登録商標）Ｓｃｒｉｐｔは、スクリプト全体がサーバからクライアントに送られることを要する。多くの場合スクリプト全体は送信される必要はないため、このことは必ずしもネットワーク帯域幅を停滞させるわけではない。
【００１０】
ＳＱＬおよびＯｒａｃｌｅのデータベースなどのクライアント−サーバ環境において使用されるデータベースでは、クライアントはサーバにクエリーを送り、サーバはリクエストされた情報をクライアントに送る。情報を表示するために必要なインテリジェンス（intelligence：知能または情報）はクライアントに常駐しているため、ユーザインタフェースに関する処理はクライアントコンピュータで実行される。しかしながら、式を解く必要がある場合には、サーバにコンタクトをとる必要がある。このような場合には、サーバは、データベースから情報を検索して、式の結果を算出し、情報をクライアントに送り返す。このことは、サーバプロセッサが結果を算出することを必要とするため、スローダウンし、サーバにおいてサービスが提供されている他のクライアントを制限する。
【００１１】
サーバが、定期的なメンテナンス手順、クラッシュ、または不具合を経験する場合には、クライアントは、接続解除され、サーバが固定された場合のみサーバにアクセス可能である。小企業では、不具合のあるサーバコンピュータが固定されている間にクライアントの負荷を転送するための複数のサーバの余裕がないため、この問題は特に小企業に影響を与える。
【００１２】
ガーベジコレクションは、スタンドアローン環境およびクライアント−サーバ環境における当該分野におけるもう１つの問題である。ランダムアクセスメモリ（ＲＡＭ）に割り当てられたメモリは、メモリのクラッターを回避するために使用された後に割り当て解除される必要がある。プログラムがＣ／Ｃ＋＋言語により記述されている場合には、プログラマーはマニュアルでメモリを割り当て解除しなければならない。プログラマーは、スペースを割り当てるために「ｍａｌｌｏｃ」コマンドを使用し、スペースを開放するために割り当て解除コマンドを使用する。しかしながら、プログラマーは、ソフトウェアプログラムを記述するときにメモリスペースの割り当て解除をしばしば無視するため、メモリクラッターを招く。
【００１３】
Ｊａｖａ（登録商標）は、そのようなＪＶＭにおける上記の問題に対処することを意図している。ＪＶＭは、一定期間参照されていないメモリのトラックを保持し、そのメモリを自動的に割り当て解除する。しかしながら、ＪＶＭを備えたデバイスは、参照されていないオブジェクトを定期的に検索して削除するための貴重な処理電力を内蔵しなければならない。さらに、参照されていないオブジェクトは、使用されずにメモリに記憶されている間に貴重なメモリを使い果たしている。
【００１４】
ネットワーク帯域幅およびサーバ処理の負荷や、プラットフォーム独立性や、ガーベジコレクションや、耐障害性などのプログラム実行に関連する問題に対処する必要がある。
【００１５】
本発明の目的および利点の多くが、以下の詳細な説明および添付の図面を閲覧した後に、当業者には明らかになるであろう。
【発明の開示】
【００１６】
本発明は、複数の形態、構造および方法により具現化されうる。以下に提供される説明および図面は、クライアント−サーバ環境における本発明の例示的実施形態を示す。当業者は、スタンドアローン環境を含む、以下に示されていない他の形態、構造および方法により本発明が具現化できることを理解するであろう。本発明は、請求項の全範囲を有することになろうが、以下に示される実施形態によって制限されるべきではない。
【００１７】
本発明は、一般に、プログラムおよびプログラムコンポーネントを実行するための方法およびシステムに関する。１つ以上のプログラムの多数のコンポーネントは、実行される場合に、同一の意図された機能、つまりコンポーネントの機能を有する。例えば、フォームが実行される場合には、このフォームは、グラフィカルユーザインタフェースと、データ入力用フィールドと、このフォームを他のフォームやコンポーネントにリンクさせるボタンと、フォームに入力されたデータが他のフォームやコンポーネントに影響する様子を示す相関情報と、式を計算する式解答能力とを有するという機能をもつ。多くのフォームは、同一の意図された機能をもつ。１つ以上のプログラムの多数のコンポーネントは同一の意図された機能をもつ。
【００１８】
本発明の実施形態によると、複数のコンポーネントタイプのうちの１つの意図された機能を有する所定の構造（predetermined structure：以下、「ＰＤＳ」とよぶ）が作成される。従って、フォーム例では、ＰＤＳは、ユーザインタフェースとフィールドとボタンと相関と式との意図された機能を備えた一般的な構造を含む。
【００１９】
本発明の一実施形態では、ＰＤＳはクライアントのメモリに記憶されており、他の実施形態では、ＰＤＳはクライアントおよびサーバの両方に記憶されている。クライアントは特定のコンポーネントをサーバからリクエストしてもよく、ユーザはこのコンポーネントを実行する、例えばビジネスプログラム用フォームを実行することができる。一実施形態では、サーバは、コンポーネントに関するパラメータ情報のみをクライアントに送る。パラメータ情報は、例えば、クライアントが実行予定の特定のコンポーネントに関する特定の情報を含む。例えば、フォーム例では、パラメータ情報は、ユーザインタフェースと、フィールド名およびタイプと、フォーム間およびフォーム内のフィールドへと挿入される事前入力されたユーザデータへのリンクと、例えばコストフォームが異なる利益（ｐｒｏｆｉｔ）フォームのデータに影響する様子を示す情報などの、フォームに入力されたデータが別のフォームのデータに影響する様子を示す相関情報と、例えばプロセッサに複数のサブコストを合計してトータルコストを算出するように命令する情報などの式解答情報とに関する特定の情報を含みうる。
【００２０】
ユーザはこの情報をクライアントにおいて受信し、これを対応する所定の構造にリンクさせて、スクリプト固有の所定の構造を提供し、またはクライアントはスクリプト固有の所定の構造を実行する。フォームの意図された機能のすべてがクライアントメモリにＰＤＳとして記憶されているため、パラメータ情報のみが、クライアントでの処理のためにクライアントに送信されていればよい。スクリプトフォーマットのパラメータ情報のみを送信することによって、多くの高密度バイトやマシーンコードを送信したり、フォームの基本構造を含むスクリプト全体を送信したりするのに比べて多くのネットワーク帯域幅が保存される。
【００２１】
別の実施形態では、ユーザがコンポーネントを終了した後、例えば、ユーザがコンポーネントを閉じた後、クライアントは自動的にコンポーネントを削除する。結果として、メモリ利用の改良が達成され、ガーベジコレクションに関連する問題が緩和される。他のシステムでは、プログラマーがシステム上で実行されるプログラムごとにメモリを割り当て解除するコマンドをマニュアルで含める必要があるか、プロセッサがメモリを定期的にスキャンして未使用コンポーネントを削除する必要がある。プログラマーの怠慢および定期的なスキャンは、メモリクラッターおよび処理電力消費をもたらす。
【発明を実施するための最良の形態】
【００２２】
図１は、クライアント−サーバ環境における本発明の一実施形態を示す。各クライアント１０２、１０４、１０６は、通信ネットワーク１１１を介してサーバ１０８と通信しており、これは、例えば、インターネットなどのワイドエリアネットワーク、ローカルエリアネットワーク、または基地局および移動局を含む無線ネットワークでありうる。
【００２３】
図１ａは、本発明の実施形態に従ったサーバ１０８を示す。図１ａの実施形態では、サーバ１０８は、長期間メモリ１１４と短期間メモリ１１２とプロセッサ１１０とトランシーバー１１６とを有するコンピュータを含む。サーバの長期間メモリ１１４は、データを記憶しており、コンピュータのハードディスクドライブを含みうる。一実施形態では、サーバの長期間メモリ１１４は、プログラムスクリプト１２８とユーザデータベース１２７とランタイムエンジン１２０とをその中に記憶して含む。ランタイムエンジン１２０は、パーサー１２２と、ＰＤＳ１２５およびリンカー１２４を備える実行エンジン１２６とを含む。短期間メモリ１１２は、コンピュータのランダムアクセスメモリを備えてもよく、これは、プログラムまたはプログラムコンポーネントがサーバ１０８によって実行される場合に使用される。
【００２４】
プロセッサ１１０は、コンピュータのマイクロプロセッサを備えてもよく、複数の機能を実行するのに使用される。ランタイムエンジンは、プロセッサ１１０に対し種々の手順の実行を命令してもよい。一実施形態では、サーバパーサー１２２はプロセッサ１１０に対し、クライアント１０２によってリクエストされたコンポーネントの検索を命令し、サーバ実行エンジン１２６はサーバトランシーバー１１６にパラメータ情報を有するコンポーネントスクリプトをクライアント１０２に送信することを命令する。他の実施形態では、サーバ実行エンジン１２６は、プロセッサ１１０に対し、リクエストされたコンポーネントに関連してユーザデータベース１２７に記憶されている事前入力されたユーザ定義データのパラメータ情報をクライアント１０２に送信することも命令する。別の実施形態では、サーバリンカー１２４は、サーバプロセッサ１１０に対し、コンポーネントスクリプトをＰＤＳ１２５にリンクさせて、スクリプト固有ＰＤＳを提供することを命令し、そして、サーバ実行エンジン１２６は、サーバプロセッサに対し、スクリプト固有ＰＤＳをサーバの短期間メモリ１１２に一時的に記憶して実行し、終了後にスクリプト固有ＰＤＳを削除することを命令する。
【００２５】
サーバプロセッサ１１０は、ランタイムエンジン１２０、スクリプト１２８、またはユーザデータベース１２７からのデータなどの情報を、長期間メモリ１１４から短期間メモリ１１２に一時的に移動させる。サーバ１０８のトランシーバー１１６は、スクリプトをクライアントに送信し、ユーザからリクエストを受信するなど、情報を送受信するのに使用される。
【００２６】
図１ｂは、本発明の実施形態に従ったクライアントを示す。クライアント１０２は、例えば、モバイル電話や携帯情報端末（ＰＤＡ）などのコンピュータや携帯デバイスを含みうる。クライアント１０２は、クライアントの長期間メモリ１３６および短期間メモリ１３２と、クライアントプロセッサ１３０と、クライアントトランシーバー１４６とを含む。クライアントの長期間メモリ１３６は、情報を記憶するように構成されており、コンピュータのハードディスクドライブや携帯デバイスのメモリチップを含みうる。クライアントの長期間メモリ１３６は、その中に記憶されたランタイムエンジン１３８を含み、ランタイムエンジン１３８は、パーサー１４０と、ＰＤＳ１４３およびリンカー１４２を備える実行エンジン１４４とを含む。クライアントの短期間メモリ１３２は、コンピュータのランダムアクセスメモリや、携帯デバイスで使用される類似のチップを含みうる。クライアントプロセッサ１３０は、コンピュータや携帯デバイスのチップをそれぞれ含む。
【００２７】
一実施形態では、クライアントパーサー１４０は、クライアントプロセッサ１３０に対し、コンポーネントスクリプトおよび所定の構造１４３内の（以下により詳細に説明される）識別子の検索を命令し、クライアントリンカー１４２は、クライアントプロセッサ１３０に対し、リクエストされたコンポーネントのパラメータ情報を対応するＰＤＳ１４３にリンクさせてスクリプト固有ＰＤＳを提供することを命令し、クライアント実行エンジン１４４は、クライアントプロセッサ１３０に対し、スクリプト固有ＰＤＳをクライアントの短期間メモリ１３２に一時的に記憶して実行することを命令する。ユーザがリクエストされたコンポーネントを終了する場合には、クライアント実行エンジン１４４は、クライアントプロセッサ１３０に対し、スクリプト固有ＰＤＳを自動的に削除することを命令する。
【００２８】
クライアントプロセッサ１３０は、ランタイムエンジン１３８などの情報を長期間メモリ１３６から短期間メモリ１３２に一時的に移動させるためにも使用されてもよい。クライアントトランシーバー１４６は、情報を送受信する、例えばリクエストをサーバ１０８に送信し、サーバ１０８からスクリプトを受信するのに使用されてもよい。
【００２９】
クライアントランタイムエンジン１３８は、クライアントとサーバとの一方または両方に記憶されうる。従って、ランタイムエンジン１３８は、クライアント１０２、サーバ１０８、または、ピアツーピアあるいはオフラインアプリケーションとして作用するように構成可能である。サーバ１０８とクライアント１０２との両方が同量のインテリジェンスを有していれば、これらは、サーバまたはクライアントとしての役割を交換可能である。交換はシステムの耐障害性を増大させるため、マシーンの不具合があれば、ネットワークの他のマシーンが、システムを混乱させることなく不具合のあるマシーンの動作負荷を効率的にサポート可能である。耐障害性に加えて、このアーキテクチャは、各マシーンが自己の処理を実行可能であるために、ネットワークトラヒックを削減する。従って、クライアントとサーバとの間の連続通信は必要とされない場合もある。
【００３０】
本発明は、図１のクライアント−サーバ環境により示されているが、本発明は他の形態により具現化できる点に注目すべきである。例えば、本発明は、長期間メモリおよび短期間メモリとプロセッサとを備えるスタンドアローンコンピュータにより具現化されうる。他の実施形態では、本発明は、例えば、磁気テープや、磁気ディスクおよび光学ディスクを含むディスクや、メモリチップなどの任意の媒体に記憶されうる。そして、本発明は、コンピュータや携帯デバイスなどの処理能力を有する他のデバイス上に媒体からロードされうる。
【００３１】
コンポーネントタイプごとにＰＤＳがあり、図２はＰＤＳを作成するための本発明の実施形態を示す。ステップ２１０において、所望のコンポーネントタイプおよびその意図された機能が識別される。多くのソフトウェアプログラムは、複数のコンポーネントを含み、これらは、実行される場合に特定の機能を示す１つ以上のスクリプトラインを含む。スクリプトは、例えば、Ｃ、Ｆｏｒｔｒａｎ、Ｊａｖａ（登録商標）、または、以下により詳細に説明される本発明の好ましい実施形態であるＶｓｃｒｉｐｔなどの任意のプログラミング言語でありうる。
【００３２】
コンポーネントは、その意図された機能、実行される場合にコンポーネントが示す機能に基づいたコンポーネントタイプへと分割されて、コンポーネントは、通常、プロセッサによって実行される。プログラムに見られるいくつかのコンポーネントタイプは、プログラマー定義データタイプと、プログラマー定義オブジェクトと、フォームと、ビューと、レポートと、プログラマー定義機能と、メニューと、第三者実行ファイルとを含む。
【００３３】
上記のように、各コンポーネントは、（例えばサインおよびシンボルがユーザインタフェース上のどこに配置されているかなどの）ユーザインタフェースが現れる様子と、コンポーネントの構造およびコンポーネント間の相関関係などのアプリケーションモデルと、式解答能力などの類似の意図された機能とを有する。例えば、多くのフォームは、グラフィカルユーザインタフェースと、データ入力用フィールドと、フォームを他のフォームやコンポーネントとリンクさせるボタンと、フォームに入力されたデータが他のフォームやコンポーネントに影響する様子を示す相関関係情報と、式を計算する式解答能力とを有するこれらの機能のうちの１つ以上を、これらが実行される場合に示す。例えば、メニューコンポーネントタイプは、特定のグラフィカル表示を示し、ドロップダウンメニューと、実行される場合に種々の他のコンポーネントタイプにリンクするドロップダウンメニュー選択とを含む。当業者は、他の意図された機能を有する他のコンポーネントタイプがあることと、これらの他のコンポーネントタイプが本発明の範囲内にあることを理解するであろう。
【００３４】
ステップ２２０において、ＰＤＳはコンポーネントタイプごとに作成される。ＰＤＳは、その対応するコンポーネントタイプの意図された機能を有するように記述されたスクリプトを含む。従って、ＰＤＳの構成は、その対応するコンポーネントタイプにより左右される。フォームおよびメニューコンポーネントタイプのＰＤＳの例が以下に提供されており、Ｃプログラミング言語により記述されている。しかしながら、他の実施形態では、ＰＤＳは、例えばＦｏｒｔｒａｎおよびＪａｖａ（登録商標）などの他の言語により記述される場合があることに注目すべきである。ＰＤＳがクライアントおよび／またはサーバにおいてマシーンコードにより記憶されることにも注目すべきである。ＰＤＳは、ＰＤＳがロードされているクライアントやサーバにおいて使用される特定のオペレーティングシステムおよびプロセッサタイプに従ってプリコンパイルされる。従って、クライアントに送られるパラメータ情報はプラットフォーム独立的であり、異なるタイプのスクリプトやコードは異なるオペレーティングシステムやプロセッサには必要ではない。
【００３５】
フォーム用ＰＤＳは、そのフォームの意図された機能を有するべきである。以下に示される実施形態では、フォームＰＤＳは、（以下に「ｓｔｒｕｃｔ  ｔａｇ＿ＶＱＬ＿ＦｏｒｍＩｎｆｏ」とラベリングされた）一般的タイトル部分と、（以下に「ｓｔｒｕｃｔ  ｔａｇ＿ＶＱＬ＿Ｆｏｒｍ」とラベリングされた）一般的構造部分と、（以下に「ｓｔｒｕｃｔ  ｔａｇ＿ＶＱＬ＿ＦｉｅｌｄＩｎｆｏ」とラベリングされた）フィールド構造部分と、（以下に「ｓｔｒｕｃｔ  ｔａｇ＿ＶＱＬ＿ＦｏｒｅｉｇｎＬｉｎｋ」とラベリングされた）外部リンク部分と、（以下に「ｓｔｒｕｃｔ  ｔａｇ＿ＶＱＬ＿Ｇｒｉｄ」とラベリングされた）グリッド構造部分と、（以下に「ｓｔｒｕｃｔ  ｔａｇ＿ＶＱＬ＿ＢｏｕｎｄＩｎｆｏ」とラベリングされた）グリッドフィールドプロパティ部分とを含む。これらの部分はフォームの意図された機能を含む。以下に示されるフォームＰＤＳはＰＤＳ内の特定のラインへの矢印を含むことに注目する。矢印は、ＰＤＳがコンポーネントにリンクされる場合に特定のフォーム用スクリプトがＰＤＳに挿入されることになる場所を示す。１つのプログラムからのフォームスクリプトの一例を提供し、リンクプロセスについて説明する。
【００３６】
[フォームＰＤＳ、タイトル部分−スクリプト１]
フォームＰＤＳの一般的タイトル部分は、フォームのタイトルが現れる様子を示す情報を含み、このようなタイトル部分の一例を以下に示す。タイトルおよびオブジェクトの情報に関するＰＤＳスクリプトは、矢印によって以下にマーキングされる。さらに、フォームスクリプト（Ｓｃｒｉｐｔ９）により提供されるようなタイトルが示される。このフォーム構造および／または他のフォーム構造は、フォームにおけるラベルおよびフィールドのすべてにおいて使用されるスクリーンサイズや表示座標や背景色やフォントなどのフォームの追加特性を捕捉するように拡張可能である。この情報は、以下により詳細に説明されるリンクステップ中に使用される。
【００３７】
【数１】
2007531147.tif 000003
【数２】
2007531147.tif 000004
【００３８】
[フォームＰＤＳ、一般的構造部分−スクリプト２]
フォームＰＤＳの一般的構造部分は、ウィジェット（ｗｉｄｇｅｔｓ）に関する情報とグリッド手段と他の情報とを含み、このような一般的構造部分の一例を以下に示す。フィールドリストと、フォームにおいてフィールドが使用される様子との間の間隔に関する情報を示すＰＤＳスクリプトが矢印によって以下にマーキングされる。
【００３９】
【数３】
2007531147.tif 000005
【００４０】
[フォームＰＤＳ、フィールド構造部分−スクリプト３]
フォームＰＤＳのフィールド構造部分はフォーム内の各フィールドに関する情報を含み、このようなフィールド構造部分の一例が以下に示される。フォーム内で使用されるフィールドの名称、識別およびサイズに関する情報を示すＰＤＳスクリプトが矢印によって以下にマーキングされる。さらに、フォームスクリプト（Ｓｃｒｉｐｔ９）により提供されるようなフィールドの名称と識別とサイズとが示される。この情報は、以下により詳細に説明されるリンクステップ中に使用される。
【００４１】
【数４】
2007531147.tif 000006
【００４２】
[フォームＰＤＳ、外部リンク部分−スクリプト４]
フォームが別のコンポーネントへのリンクを含む場合には、これは外部リンクを有しており、本発明の実施形態に従って、フォームＰＤＳの外部リンク部分が存在することになり、これは、このフォームから他のコンポーネントへのリンクに関する情報を含む。このような外部リンク部分の一例を以下に示す。
【００４３】
【数５】
2007531147.tif 000007
【数６】
2007531147.tif 000008
【００４４】
[フォームＰＤＳ、グリッド構造部分−スクリプト５]
フォームがグリッドを含む場合には、本発明の実施形態に従って、フォームＰＤＳのグリッド構造部分が存在することになり、これは行列のグリッドサイズに関する情報および他のグリッド情報を含む。このようなグリッド構造部分の一例を以下に示す。
【００４５】
【数７】
2007531147.tif 000009
【００４６】
[フォームＰＤＳ、グリッドフィールド構造部分−スクリプト６]
フォームがグリッドを含む場合、本発明の実施形態に従って、フォームＰＤＳのグリッドフィールド構造部分が存在することになり、これは、フィールドと列ＩＤおよび列サイズなどの、グリッド内のフィールドに関する情報を含む。このようなグリッド構造部分の一例を以下に示す。
【００４７】
【数８】
2007531147.tif 000010
【数９】
2007531147.tif 000011
【００４８】
従って、以下に示される実施形態では、フォームＰＤＳは、表示される場合にタイトルがどのように見えるか、フォームが実行される場合にフォームのグラフィカル表示がどのように現れるかに関する情報や、フォーム内のフィールドに関する情報や、フォーム上のリンク（つまりボタン）があれば、リンクによるフォームの接続先に関する情報や、フォームに入力されたデータが他のフォームやコンポーネントに如何に影響するかに関する情報や、フォームがグリッドを含んでいれば、グリッドおよびグリッド内のフィールドに関する情報などのように、フォームの意図された機能を含む。
【００４９】
[メニューＰＤＳ、メニュー構造部分−スクリプト７]
メニュー用ＰＤＳは、メニューの意図された機能を有するべきである。以下に示される実施形態では、メニューＰＤＳは（以下に「Ｓｔｒｕｃｔ＿ｔａｇ＿ＶＱＬ＿ＭｅｎｕＩｎｆｏ」とラベリングされた）メニュー構造部分を含む。メニュー構造部分は、メニューグラフィカル表示と、ドロップダウンメニューと、ドロップダウンメニューが含むリンクに関する情報とを含む。
【００５０】
【数１０】
2007531147.tif 000012
【００５１】
従って、上記ＰＤＳは、（例えばサインおよびシンボルがユーザインタフェース上に配置される場所などの）ユーザインタフェースが現れる様子と、コンポーネントの構造およびコンポーネント間の相関関係などのアプリケーションモデルと、式解答に関する情報とを含む。２つのＰＤＳの例が上記に提供されており、限られた数のコンポーネントタイプが上記に提供されているが、当業者は、異なる機能を有する他のコンポーネントタイプと、他のコンポーネントタイプの意図された機能を含むように作成された他のＰＤＳと、対応する実行エンジンとに、本発明が適用できることを理解するであろう。
【００５２】
本発明の実施形態では、ランタイムエンジン１２０、１３８は、媒体に保持されて、プロセッサ１１０、１３０を含むデバイスへとロードされる。デバイスのプロセッサ１１０、１３０は、ＰＤＳ１２５、１４３をパラメータ情報にリンクさせて、スクリプト固有ＰＤＳを提供し、このスクリプト固有ＰＤＳを実行する。他の実施形態では、プロセッサは、スクリプト固有ＰＤＳを一時的に記憶し、ユーザがコンポーネントを終了した後にスクリプト固有ＰＤＳを自動的に削除する。
【００５３】
本発明の実施形態によると、ＰＤＳは、サーバ１０８とクライアント１０２とのいずれかもしくは両方によって、または、他の実施形態ではスタンドアローンコンピュータによって、対応するコンポーネントスクリプトにリンクされる。図３は、クライアントのリクエストに応答してスクリプトをクライアント１０２に送るサーバ１０８の実施形態を示す。
【００５４】
ステップ３１０において、サーバ１０８は、プログラムに対するクライアントリクエストを受信する。通常、サーバ１０８のトランシーバーは、クライアントトランシーバー１４６によって送信されたリクエストを受信する。ステップ３２０において、サーバ１０８はユーザアクセスレベルに基づいてユーザ３１５を認証する。サーバプロセッサ１１０は、ユーザによって送信されたユーザＩＤおよびパスワード情報を、ユーザデータベースに記憶されているアクセスレベル情報と比較してもよい。他の方法のユーザ識別は、バイオメトリクスやハードウェアロックなどを含む。
【００５５】
ステップ３３０において、セッション番号が作成される。セッション番号は、しばしば、ワールドワイドウェブなどのＷＡＮ環境において使用される。セッション番号は、クライアントとサーバとの間の特定の通信を識別する。通信の識別によってクライアントまたはサーバのいずれかが、後に通信を参照して返すことができ、多数のインスタンスにおいて特別に保存された通信トランクの必要性を回避する。本発明の態様によると、セッション番号の使用は、ＬＡＮ環境に適用されて、無接続通信プロトコルの使用を容易にすることによってクライアント−サーバセッション管理を支援する。
【００５６】
ステップ３４０において、サーバ１０８は、ユーザリクエストに従ってプログラムスクリプトをロードする。一実施形態では、サーバプロセッサ１１０は、プログラムスクリプト１２８を長期間メモリ１１４から短期間メモリ１１２に転送する。ステップ３５０において、サーバ１０８は適切なコンポーネントを検索する。サーバパーサー１２２からの命令ごとに、サーバプロセッサ１１０はランタイムエンジン１２０を長期間メモリ１１４から短期間メモリ１１２に転送し、スクリプトにおける適切なコンポーネントを検索する。他の実施形態では、事前入力されたユーザデータが適切なコンポーネントにおいて参照されると、サーバプロセッサは事前入力されたユーザデータをユーザデータベース１２７から検索する。通常、検索された第１のコンポーネントは、クライアントに送られるメニューである。他のコンポーネントもクライアントリクエストに応じて検索されることがある。Ｖｓｃｒｉｐｔ言語のメニューおよびフォームスクリプトの例を以下に提供する。
【００５７】
本発明の代替実施形態では、ＰＤＳ１２５、１４３は、パラメータ情報にリンクされて、テストや他の目的でサーバにおいてスクリプト固有の所定の構造を提供し、このような場合には、サーバ実行エンジン１２６は、サーバプロセッサに対し、スクリプト固有の所定の構造を実行するように命令することもある。代替実施形態では、ステップ３６０において、コンポーネントは、コンポーネントと同じ機能を有する対応するＰＤＳにリンクされて、スクリプト固有ＰＤＳを提供する。サーバリンカー１２４からの命令ごとに、サーバプロセッサ１１０は、ユーザデータベース１２７およびコンポーネントスクリプト１２８から事前入力された関連ユーザデータを含むパラメータ情報をＰＤＳにリンクさせる（リンクプロセスは、サーバおよびクライアントにおいて同じであり、以下により詳細に論じる）。
【００５８】
ステップ３７０において、適切なスクリプトが、通常、サーバプロセッサ１１０およびトランシーバー１１６によってクライアント１０２に送信される。上記提供された例において、実際のコンポーネントのスクリプトがＶｓｃｒｉｐｔにより記述され、これは本発明のランタイムエンジン１２０、１３８と併用するために作成されたスクリプトである点に注目すべきである。他のプログラミング言語によってコンポーネントを記述するのに必要とされるよりも少ないスクリプトにより記述されるコンポーネントを許容しているために、ＶＳｃｒｉｐｔが使用される。結果として、サーバからクライアントに送信されるスクリプト量が削減され、本発明は、より様々なサーバ１０８と、クライアント１０２、１０４、１０６と、通信ネットワークとにおいて具現化されうる。本発明の他の実施形態では、Ｃ言語とＦｏｒｔｒａｎとＪａｖａ（登録商標）と他の言語とを含む他のプログラミング言語がコンポーネントに使用されうると思われる。
【００５９】
本発明の一実施形態では、クライアントは、パラメータ情報と、クライアント１０２に事前入力された関連ユーザデータなどの他のパラメータ情報とを含むコンポーネントスクリプトの送信をサーバに促進するリクエストをサーバ１０８に送信する。クライアントはスクリプト内の（以下に説明される）識別子を検索し、コンポーネントをＰＤＳ１４３にリンクさせて、図４に示されるようにスクリプト固有ＰＤＳを形成し、このスクリプト固有ＰＤＳを実行する。
【００６０】
ステップ４０５において、通常、リクエストを形成するクライアントプロセッサ１１０と、リクエストをサーバ１０８に送信するクライアントトランシーバー１４６とによって、クライアント１０２は、サーバ１０８にリクエストを送信する。上記に提供されるように、サーバ１０８は、ユーザにアクセス情報の入力をリクエストすることによってクライアントのアクセスレベルを照合し、ステップ４１０において、ユーザはユーザアクセス情報を入力し、これは例えばユーザＩＤおよびパスワード情報でありうる。そして、サーバ１０８は、コンポーネントに関するパラメータ情報と、コンポーネントスクリプトにおいて参照される事前入力された関連ユーザデータに関するパラメータ情報とを含むリクエストされたコンポーネントスクリプト１２８を、ステップ４１５においてユーザに送信する。
【００６１】
[メニューコンポーネントスクリプト−スクリプト８]
特定のメニューのドロップダウンメニューと、このドロップダウンメニュー内のリンクとに関する情報を示すメニューコンポーネントスクリプトの一例を以下に提供する。
【００６２】
【数１１】
2007531147.tif 000013
【００６３】
[フォームコンポーネントスクリプト−スクリプト９]
フォームのタイトルおよびフォーム内の種々のフィールドに関する情報を示すフォームコンポーネントスクリプトの一例を以下に提供する。
【００６４】
【数１２】
2007531147.tif 000014
【数１３】
2007531147.tif 000015
【００６５】
[フォームスクリプトのトークンオブジェクト−スクリプト１０]
Ｓｃｒｉｐｔ９に示されるフォームは、トークンおよび結果オブジェクトなどの、フォーム内で参照される複数のオブジェクトを含む。以下、（Ｓｃｒｉｐｔ１０および１１に）トークンおよび結果オブジェクトの例示的スクリプトを提供する。
【００６６】
【数１４】
2007531147.tif 000016
【数１５】
2007531147.tif 000017
【００６７】
[フォームスクリプトの結果オブジェクト−スクリプト１１]  
【数１６】
2007531147.tif 000018
【００６８】
ステップ４２５において、スクリプトおよびＰＤＳは、スクリプトにおける識別子およびＰＤＳにおける対応する識別子の使用によってリンクされる。例えば、フォームスクリプトにおいて、「＃ＳＥＴＦＯＲＭ．ＴＩＴＬＥ」は、フォームの対応するタイトル（「ＴＯＫＥＮＩＳＳＵＥ」）が「*ｆｏｒｍＴｉｔｌｅ」に隣接して配置されるべきであることを示す識別子であり、これはフォームＰＤＳにおける対応する識別子である。ステップ４２０において、クライアント１０２は送信されたパラメータ情報内の識別子を検索する。一実施形態では、クライアントプロセッサ１３０はクライアントランタイムエンジン１３８を長期間メモリ１３６から短期間メモリ１３２に転送し、クライアントパーサー１４０はクライアントプロセッサ１３０に、送信されたコンポーネントスクリプトにおける識別子を検索するように命令する。クライアントパーサー１４０はまたクライアントプロセッサに、リクエストされたコンポーネントにリンクされているいずれかのコンポーネントを検索するように命令し、もしあれば、サーバからそのようなコンポーネントをリクエストして、ステップ４１５に進み、もしなければ、クライアントはステップ４２５に進む。
【００６９】
ステップ４２５において、コンポーネントに関するパラメータ情報と、事前アクセスされた関連ユーザデータに関するパラメータ情報とを含むパラメータ情報１３４は対応するＰＤＳ１４３にリンクされて、スクリプト固有ＰＤＳを提供する。上記提供された例において、トークンスクリプト（および関連オブジェクト）（Ｓｃｒｉｐｔ９〜１１）は、適切なトークンＰＤＳ（Ｓｃｒｉｐｔ１〜６）にリンクされて、フォーム固有ＰＤＳを提供するであろう。
【００７０】
ステップ４３０において、スクリプト固有ＰＤＳが実行される。一実施形態では、クライアント実行エンジン１４４は、クライアントプロセッサ１３０に対し、スクリプト固有ＰＤＳを実行するように命令する。メニュースクリプト固有ＰＤＳおよびフォームスクリプト固有ＰＤＳを実行することによって実行されるメニューおよびフォームコンポーネントの例は、図５および６にそれぞれ示される。
【００７１】
上記に提供されたように、ＰＤＳは、コンポーネントユーザインタフェースが現れ、ＰＤＳのグラフィカル表示機構が利用される様子に関する意図された機能を含む。本発明の一実施形態では、実行エンジン１４４がコンポーネントスクリプトに隣接する座標を読み取り、実行エンジン１４４がスクリプトに関する特定情報をディスプレイ上に表示すべき場所を認識する座標グラフィカル表示機構が利用される。
【００７２】
本発明の別の実施形態では、自動グラフィカル表示機構が利用される。例えば、自動グラフィカル表示機構を使用してフォームを表示する場合には、実行エンジン１４４は、スクリプトが記述される方法に応じて情報の挿入場所を判断する。図６は、自動グラフィカル表示機構を用いる実行エンジン１４４によって実行される例示的フォームを示す。Ｓｃｒｉｐｔ９のトークンを実行する場合には、「Ｂｉｌｌ  Ｎｏ」はスクリプトに提供されている第１のフィールドであるため、実行エンジン１４４は、「Ｂｉｌｌ  Ｎｏ」フィールドを、ディスプレイの左上角に第１のフィールドとして提供する。このフィールドは、Ｓｃｒｉｐｔ９に提供されるように、６個の文字長である。「Ｄａｔｅ」フィールドは「Ｂｉｌｌ  Ｎｏ」フィールドと同じライン上にあるため、６文字の「Ｄａｔｅ」フィールドは「Ｂｉｌｌ  Ｎｏ」フィールドの次に配置される。「Ｐａｔｉｅｎｔ  Ｎａｍｅ」フィールドは、Ｓｃｒｉｐｔ９に提供されるように次のライン上に提供されるため、４８文字の「Ｐａｔｉｅｎｔ  Ｎａｍｅ」は次のライン上に配置される。スクリプトがＰＤＳにリンクされた後にスクリプト構造の一体性が保存されるため、自動グラフィカル表示機構が適切にコンポーネントを実行可能である。他の実施形態では、自動グラフィック表示機構が、他のプログラムのニーズを満たすように異なって構成されうる点に留意する。
【００７３】
またステップ４３０において、実行エンジン１４４は、クライアントプロセッサ１３０に対し、ＰＤＳの式解答意図された機能を利用して、コンポーネントを実行する場合にコンポーネントスクリプトの式を解くように命令する。クライアント１０２は、スクリプトを実行する場合に式を解く。式解答器によって解かれるであろう式の一例は、Ｓｃｒｉｐｔ９において「Ｃｈａｒｇｅｓ＝（ＴＥＳＴ．Ｃｈａｒｇｅｓ＊５．０）」とラベリングされる。加えて、ステップ４３０において、スクリプト固有ＰＤＳと他のコンポーネント間の相関関係は、ＰＤＳのアプリケーションモデル機能に基づいて管理される。
【００７４】
ＰＤＳは、ユーザインタフェースと式解答とアプリケーションモデルとに関する意図された機能を含むため、パラメータ情報のみがサーバからクライアントに送信されていればよい。コンポーネントは、パラメータ情報をＰＤＳと結合させてスクリプト固有ＰＤＳを提供し、このスクリプト固有ＰＤＳを実行することによって実行されてもよい。結果として、ネットワーク帯域幅およびサーバ処理負荷が削減される。従来のシステムは、サーバがユーザインタフェースを形成し、コンポーネント構造を判断し、コンポーネント相関関係を判断し、あるいは式を解いたり、このような機能のすべてを実行したりすることのいずれかを必要としていた。従って、高密度実行ファイル、高密度バイトコード、または場合によっては大きなソースコードファイルのいずれかが、コンポーネント実行のためにネットワーク全体に送信されて、システムがネットワーク帯域幅および／またはサーバ処理ひずみによって妨害されていた。
【００７５】
本発明の一実施形態では、ステップ４３５において、クライアント１０２は、追加コンポーネントが必要か否かを判断し、必要な場合には、追加コンポーネントがステップ４１５で受信されなければリクエストされる。そして、ステップ４２０〜４２５が反復される。追加コンポーネントが必要でない場合には、ステップ４４０において、クライアント１０２はコンポーネントの使用が終了しているか否かを判断する。ユーザがコンポーネントを終了またはこれを閉じていなければ、クライアント１０２はコンポーネントの使用を終了しておらず、ステップ４５０においてコンポーネントの使用を係属する。ユーザがコンポーネントを閉じるか、終了している場合には、クライアントはコンポーネントの使用を終了しており、ステップ４４０またはステップ４５０のいずれかの後に、クライアントはステップ４４５に進み、クライアント１０２は全スクリプト１３４およびスクリプト固有ＰＤＳをクライアントの短期間メモリ１３２から自動的に削除する。
【００７６】
通常、クライアント１０２がパラメータ情報を備えるサーバ１０８からスクリプトを受信する場合には、クライアントはパラメータ情報を対応する所定の構造１４３にリンクさせて、スクリプト固有ＰＤＳを提供する。スクリプトおよびスクリプト固有ＰＤＳはクライアントの短期間メモリ１３２に記憶される。クライアント１０２がプログラムの使用を完了した後、スクリプトおよびスクリプト固有ＰＤＳはクライアントの短期間メモリ１３２から自動的に削除される。スクリプトおよびスクリプト固有ＰＤＳを自動的に削除することによって、削除するファイルを定期的にスキャンする必要があるメモリおよびプロセッサの割り当て解除を無視するプログラマーに関する問題が緩和される。
【００７７】
上記に提供されるように、図３および図４はクライアント−サーバ環境に適用された本発明の実施形態を示すことに留意する。当業者であれば、本発明はスタンドアローン環境にも適用されうることを理解するであろう。本発明の範囲は、上記の実施形態に制限されるものではなく、添付の請求項に従ってその全範囲に付与されるべきものである。
【図面の簡単な説明】
【００７８】
【図１】クライアント−サーバ環境における本発明の実施形態のブロック図を示す。
【図１ａ】図１に示されたサーバのブロック図を示す。
【図１ｂ】図１に示されたクライアントのブロック図を示す。
【図２】本発明の実施形態に従ったランタイムエンジンの一部を作成するためのステップのフロー図を示す。
【図３】本発明の実施形態においてサーバによって実行されるステップのフロー図を示す。
【図４】本発明の実施形態においてクライアントによって実行されるステップのフロー図を示す。
【図５】本発明の実施形態に従ってコンポーネントメニューが実行された後のメニューのグラフィカル表示を示す。
【図６】本発明の実施形態に従ってコンポーネントフォームが実行された後のフォームのグラフィカル表示を示す。
【図１】
2007531147.tif 000019
【図１ａ−１ｂ】
2007531147.tif 000020
【図２】
2007531147.tif 000021
【図３】
2007531147.tif 000022
【図４】
2007531147.tif 000023
【図５】
2007531147.tif 000024
【図６】
2007531147.tif 000025
【国際調査報告】
2007531147.tif 000026
2007531147.tif 000027