(57)【要約】【課題】インターネットまたは他のクライアント‐サーバ環境に接続された、サーバに対するオーバヘッド処理を、最小化すること。【解決手段】サーバ側のプログラムコードを変更し、ポータブル操作の実施を、たとえば、データフォーマッティング操作、およびデータ検証操作を、サーバからクライアントに効果的に移行するためのアクティブ文書を作成することによって、アクティブ文書を介して、クライアントとサーバとの間の対話を最適化する、装置、プログラム製品および方法を提供する。【選択図】　図２
2004086878.tif 000002
【特許請求の範囲】
【請求項１】
サーバ上に常駐する、ＪＳＰ（Ｊａｖａ　Ｓｅｒｖｅｒ　Ｐａｇｅ）をコンパイルする方法であって、
（ａ）　クライアントに伝送するアクティブ文書を作成するように構成されているＪＳＰに関連付けられた第１のサーバプログラムコードを受信し、このアクティブ文書を、アクティブ文書に供給されたユーザ入力に応答して、クライアントからサーバに入力データを伝送することを開始するように構成するステップと、
（ｂ）　サーバによって、クライアントから受信した入力データを処理するように構成されているＪＳＰに関連付けられた第２のサーバプログラムコードを受信するステップと、
（ｃ）　前記入力データを処理することに関係する第２のサーバプログラムコードによって実施される、ポータブル操作を識別し、前記ポータブル操作が、前記入力データのフォーマッティング、および前記入力データの検証のうちの、少なくとも一つを含むステップと、
（ｄ）　前記第１のサーバプログラムコードを変更し、前記アクティブ文書の処理時に、前記クライアントによって、前記ポータブル動作の実行を開始するために組み込まれた、少なくとも一つの命令を有する前記アクティブ文書を作成するステップと、
（ｅ）　前記第２のサーバプログラムコードを変更し、前記第２のサーバプログラムコードによる前記ポータブル操作の実行を排除するステップと、
（ｆ）　前記変更された第１のサーバプログラムコードおよび前記変更された第２のサーバプログラムコードをコンパイルし、サーバ上で実行するための、少なくとも一つのＪａｖａ（登録商標）サーブレットを作成するステップと、
を含む方法。
【請求項２】
クライアントに伝送するためのアクティブ文書を作成し、前記作成されたアクティブ文書を介してクライアントと対話するように構成されたタイプのプログラムコードを最適化する方法であって、
（ａ）　前記プログラムコードの実行時に、サーバによって実施されるポータブル操作を識別するステップと、
（ｂ）　アクティブ文書の処理時に、前記クライアントによって、前記ポータブル操作の実施を開始するように、アクティブ文書内に少なくとも一つの命令を組み込むために、前記プログラムコードを変更するステップと、
を含む方法。
【請求項３】
前記プログラムコードを変更するステップが、前記プログラムコードによる前記ポータブル操作の実施を、排除することを含んでいる、請求項２に記載の方法。
【請求項４】
前記アクティブ文書内に少なくとも一つの命令を組み込むために、前記プログラムコードを変更するステップが、前記アクティブ文書内に少なくともひとつのＪａｖａｓｃｒｉｐｔ命令を組み込むことを含んでいる、請求項３に記載の方法。
【請求項５】
前記ポータブル操作の識別および、前記プログラムコードの変更が、前記プログラムコードを表すソースコード上で実行され、前記方法が、さらに、前記プログラムコードの前記変更されたソースコード表記を、実行可能表記にコンパイルすることを含んでいる、請求項２に記載の方法。
【請求項６】
前記プログラムコードの前記ソースコード表記が、ＪＳＰ（Ｊａｖａ　Ｓｅｒｖｅｒ　Ｐａｇｅ）に関連付けられている、請求項５に記載の方法。
【請求項７】
前記プログラムコードの前記実行可能表記が、Ｊａｖａサーブレットを含んでいる、請求項５に記載の方法。
【請求項８】
前記Ｊａｖａサーブレットが、前記アクティブ文書を作成するように構成されている第１の部分と、前記アクティブ文書を介して、前記クライアントから受信されたユーザ入力を処理するように構成されている第２の部分を含んでいる、請求項７に記載の方法。
【請求項９】
前記Ｊａｖａサーブレットが、前記アクティブ文書を作成するように構成される第１のＪａｖａサーブレットであり、前記プログラムコードの実行可能表記が、さらに、前記アクティブ文書を介して前記クライアントから受信されたユーザ入力を処理するように構成されている第２のＪａｖａサーブレットを含んでいる、請求項７に記載の方法。
【請求項１０】
前記ポータブル操作が、前記アクティブ文書を介して受信されたユーザ入力をフォーマッティングするように構成されている、請求項２に記載の方法。
【請求項１１】
前記ポータブル操作が、前記ユーザ入力を異なるデータフォーマットに変換する操作、前記ユーザ入力に日付フォーマットを適用する操作、前記ユーザ入力から文字列を切り取る操作、前記ユーザ入力にコンマを追加する操作、前記ユーザ入力に小数点を追加する操作、および前述した操作の組み合わせを含むグループから選択されたものである、請求項１０に記載の方法。
【請求項１２】
前記ポータブル操作が、前記アクティブ文書を介して受信されたユーザ入力を検証することを含んでいる、請求項２に記載の方法。
【請求項１３】
（ａ）　前記プログラムコードのために、実行時のフロー情報を収集するステップと、
（ｂ）　前記収集された実行時フロー情報に基づいて、前記プログラムコードを再コンパイルするステップとをさらに含み、前記ポータブル操作のを識別および、前記プログラムコードの変更が、前記プログラムコードの再コンパイルに関係して実施される、
請求項２に記載の方法。
【請求項１４】
前記アクティブ文書が、符号化ＨＴＭＬ文書を含んでいる、請求項２に記載の方法。
【請求項１５】
（ａ）　メモリと、
（ｂ）　プロセッサを含み、前記プロセッサが、クライアントに伝送するためのアクティブ文書を作成し、前記作成されたアクティブ文書を介して前記クライアントと対話するタイプのプログラムコードを最適化するように構成され、前記プロセッサが、前記プログラムコードの実行時に、サーバによって実施されるポータブル操作を識別し、前記アクティブ文書の処理時に前記プログラムコードを変更し前記クライアントによってポータブル操作の実施を開始するために前記アクティブ文書内に少なくとも一つの命令を組み込むことによって、前記プログラムコードを最適化するように構成される、
装置。
【請求項１６】
前記プロセッサが、前記プログラムコードを変更し、前記プログラムコードによる前記ポータブル操作の実施を排除するように構成される、請求項１５に記載の装置。
【請求項１７】
前記プロセッサが、前記プログラムコードを変更して前記アクティブ文書内に少なくとも一つのＪａｖａｓｃｒｉｐｔ命令を組み込むことによって、前記プログラムコードを変更し、前記アクティブ文書内に少なくとも一つの命令を組み込むように構成されている、請求項１６に記載の装置。
【請求項１８】
前記プロセッサが、前記ポータブル操作を識別し、前記プログラムコードのソースコード表記を使用して前記プログラムコードを変更するように構成され、前記プロセッサが、前記プログラムコードの前記変更されたソースコード表記を、実行可能表記にコンパイルするように構成される、請求項１５に記載の装置。
【請求項１９】
前記プログラムコードの前記ソースコード表記が、ＪＳＰ（Ｊａｖａ　Ｓｅｒｖｅｒ　Ｐａｇｅ）に関連付けられる、請求項１８に記載の装置。
【請求項２０】
前記プログラムコードの前記実行可能表記が、Ｊａｖａサーブレットを含んでいる、請求項１８に記載の装置。
【請求項２１】
前記Ｊａｖａサーブレットが、前記アクティブ文書を生成するように構成されている第１の部分を含み、第２の部分が、前記アクティブ文書を介して、前記クライアントから受信されたユーザ入力を処理するように構成されている、請求項２０に記載の装置。
【請求項２２】
前記Ｊａｖａサーブレットが、前記アクティブ文書を作成するように構成された第１のＪａｖａサーブレットであり、前記プログラムコードの前記実行可能表記が、前記アクティブ文書を介して、前記クライアントから受信されたユーザ入力を処理するように構成されている第２のＪａｖａサーブレットをさらに含んでいる、請求項２０に記載の装置。
【請求項２３】
前記ポータブル操作が、前記アクティブ文書を介して受信されたユーザ入力をフォーマッティングするように構成されている、請求項１５に記載の装置。
【請求項２４】
前記ポータブル操作が、前記ユーザ入力を異なるデータフォーマットに変換する操作、前記ユーザ入力に日付フォーマットを適用する操作、前記ユーザ入力から文字を切り取る操作、前記ユーザ入力にコンマを追加する操作、前記ユーザ入力に小数点を追加する操作、および前記操作の組み合わせを含むグループから選択されたものである、請求項２３に記載の装置。
【請求項２５】
前記ポータブル操作が、前記アクティブ文書を介して受信されたユーザ入力を検証することを含んでいる、請求項１５に記載の装置。
【請求項２６】
前記プロセッサが、さらに、前記プログラムコードのために実行時フロー情報を収集するように構成され、前記収集された実行時フロー情報に基づいてプログラムコードを再コンパイルするように構成され、前記プロセッサが、前記ポータブル操作を識別し、前記プログラムコードを再コンパイルすることに関係して前記プログラムコードを変更するように構成されている、請求項１５に記載の装置。
【請求項２７】
前記アクティブ文書が、符号化ＨＴＭＬ文書を含んでいる、請求項１５に記載の装置。
【請求項２８】
（ａ）　クライアントに伝送するためのアクティブ文書を生成し、前記作成されたアクティブ文書を介して前記クライアントと対話するタイプの第２のプログラムコードを、最適化するように構成されている第１のプログラムコードであって、前記第２のプログラムコード実行時に、サーバによって実施されるポータブル操作を識別し、前記アクティブ文書の処理時に前記第２のプログラムコードを変更しクライアントによってポータブル操作の実施を開始するために、少なくとも一つの命令をアクティブ文書内に組み込む、前記第１のプログラムコードと、
（ｂ）　前記第１のプログラムコードを伝達する、信号伝達媒体と、
を含んでいる、
プログラム製品。
【請求項２９】
前記信号伝達媒体が、伝送媒体および記憶可能媒体のうちの、少なくとも一つを含んでいる、請求項２８に記載のプログラム製品。
【請求項３０】
サーバと対話する方法であって、クライアント側で、
（ａ）　前記サーバからアクティブ文書を受信するステップであって、前記アクティブ文書が、前記クライアントによってポータブル操作の実施を開始するように構成されている前記アクティブ文書内に、少なくとも一つの命令を組み込むように最適化されたプログラムコードを使用して前記サーバによって動的に作成され、前記ポータブル操作が、前記プログラムコードの非最適化バージョンにおいて、前記サーバによって実施するように構成され、
（ｂ）　前記アクティブ文書を処理するステップであって、前記クライアントによって前記ポータブル操作の実施を開始するための前記命令を処理するステップを含んでいる、方法。
【請求項３１】
（ａ）　メモリと、
（ｂ）　クライアント内に常駐するプロセッサを含み、前記プロセッサが、サーバからアクティブ文書を受信し、前記クライアントによってポータブル操作の実施を開始するために、前記アクティブ文書内に組み込まれた少なくとも一つの命令を処理するように構成され、
前記アクティブ文書が、前記アクティブ文書内の前記命令を組み込むように最適化されたプログラムコードを使用して、前記サーバによって動的に作成され、前記ポータブル操作が、前記プログラムコードの非最適化バージョンにおいて、前記サーバによって実施するように構成されている、
装置。
【請求項３２】
（ａ）　アクティブ文書を受信するように構成されているクライアントと、
（ｂ）　前記クライアントに結合され、前記クライアントに伝送するための前記アクティブ文書を作成し、前記アクティブ文書を介して前記クライアントと対話するタイプのプログラムコードを、最適化するように構成されているサーバであって、前記サーバが、前記プログラムコードの実行時に、前記サーバによって実行されるポータブル操作を識別し、および、前記アクティブ文書の処理時に、前記プログラムコードを変更して、前記クライアントによって前記ポータブル操作の実施を開始するために、前記アクティブ文書内に少なくとも一つの命令を組み込むことによって、前記プログラムコードを最適化するように構成されている、
装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータおよびコンピュータシステムに関し、より詳細には、クライアント‐サーバ環境において、アクティブ文書を取り扱うことに関する。
【０００２】
【従来の技術】
インターネットは、現代社会の多くの側面を大いに変化させつつあり、多数の教育目的、娯楽目的および商業目的に対して、より重要な資源になりつつある。インターネットの人気の多くは、テキスト情報およびグラフィカル情報方法を、ユーザに提示する方法が、比較的直観的であるためであり、同様に、ユーザが、情報の、関連する他のリポジトリにナビゲートできる方法が、比較的非構造的で、自由度があるからである。
【０００３】
インターネットを介してアクセスされる情報の重要な部分は、文書もしくはウェブページの形でユーザに与えられ、それは、中心に集約した「サーバ」コンピュータから、要求に応じて、個々のクライアントコンピュータにダウンロードされ、クライアントコンピュータ上で実行する「ウェブブラウザ」として知られるアプリケーションによって、ユーザに表示される。複数のクライアントコンピュータが、一つのサーバコンピュータから、情報にアクセスできる、この方法は、一般にクライアント‐サーバコンピューティングと呼ばれ、インターネットの多くは、よく受け入れられたこのネットワーク方式に基づいている。
【０００４】
クライアントにダウンロードされた文書は、通常、ウェブブラウザ上で見るときに、文書のフォーマッティングを制御する、ＨＴＭＬ（Ｈｙｐｅｒｔｅｘｔ　Ｍａｒｋｕｐ　Ｌａｎｇｕａｇｅ）などの記述言語で定義された、一つまたは複数の組み込みタグで、符号化されている。このような文書は、通常、ハイパーテキストリンクのコンセプト上に、広範囲に示されており、この場合、文書内に表示され、様々な組み込みタグによって定義されたリンクによって、文書はともにリンクされる。一文書内に表示されたリンクを、ユーザが選択することによって、ユーザは、通常、検索され、ユーザに対して表示された、リンクによって参照された他の文書を、取得可能になる。
【０００５】
ＨＴＭＬなどのような標準化フォーマットは、ハイパーテキストおよび他のタイプの文書、および、このような文書内に組み込むことができる様々なタイプの情報のために、開発されたものであり、クライアントのコンピュータ上で使用されている、基礎となるハードウェアまたはソフトウェアのプラットフォームとは無関係に、このような文書に、広範囲に渡る様々なクライアントコンピュータによって、しばしばアクセスできるようにする。さらに、高度に直観的および柔軟的なインターフェースを、インターネットによってサポートするために、多くのプライベートネットワークは、現在、多くの同じ性能、および、標準化されたフォーマットを、組み込んでいる。さらに、インターネットおよびプライベートネットワークの両方からの情報を提示するために、同じフォーマットを使用することにより、この同じウェブブラウザを、両方のタイプの情報を表示するために使用でき、したがって、クライアントコンピュータ上にインストールすることが必要なソフトウェアの量が、最小となる。
【０００６】
新しい技術が、インターネットベースのまたは類似のインターフェースを介して利用できる、機能を拡張するために、クライアントコンピュータおよびサーバコンピュータの両方の観点から、開発され続けている。アドバンスドユーザインプットコントロール、アニメーション、オーディオ／ビデオ、などの、より複雑な表示能力は、エンドユーザに対して、全般的に、より動的におよび効果的なインターフェースを与えるよう、インターネットベースのインターフェースに組み込まれ続けている。
【０００７】
一例として、スクリプティングは、ダウンロードされた文書内の命令に組み込むために、多くの環境で使用されている。この命令は、通常、文書が最初にユーザに提示され、および／または、ユーザから受信した特定タイプの入力に応答するときに、ウェブブラウザによって、解釈される。さらに、Ｊａｖａのようなプラットフォーム独立プログラミング言語は、スクリプト命令によって実施できないより複雑なタスクを、クライアントによって実施するためにダウンロードし実施できるプログラムコードによって、実際の任意の機能をクライアントに組み込むことができる、標準化したプログラミングインターフェースを提供するために開発されてきた。
【０００８】
多くの事例では、文書自体によってその中に組み込まれもしくは参照されるプログラムコードが、クライアントに対してアクティブ機能を実施するために使用できる観点から、これらの文書を効果的に「アクティブ」にする、スクリプト、Ｊａｖａアプレットなどのような、組み込みプログラムコードもしくは参照プログラムコードの種々の形で、文書を提示することができる。たとえば、このようなアクティブ文書は、ユーザ入力に応答して、サーバにデータを送り返すことができ、同様に、たとえば、クライアントコンピュータ上の文書の表示を、動的に変更するなどの、サーバから受け取ったデータを処理する能力を有する。
【０００９】
さらに、サーバ側から見ると、ＪａｖａＳｃｒｉｐｔおよびＪａｖａなどの技術は、また、サーバによって使用され、情報の統合的な表示、および、ユーザとの対話に拡張することができる。たとえば、多くのインターネットベースのインターフェースに使用されている一つの普及している技術は、クライアントの代わりに、サーバ上で実行するように設計された、本質的なＪａｖａアプレットである、Ｊａｖａ「サーブレット」である。サーブレットは、ハイパーテキスト文書などの文書を、動的に作成するために使用でき、同様に、このような文書を介してユーザから受信した入力を取り扱うために使用できる。サーブレットは、また、アプリケーションサーバやデータベースなどの、バックエンドサービスにアクセスするために使用することもできる。
【００１０】
サーバ上で実施できる、さらに他の技術は、ＪＳＰ（Ｊａｖａ　Ｓｅｒｖｅｒ　ｐａｇｅ）技術である。ＪＳＰは、「アクティブ」タイプのサーバページ技術を基礎にしており、プログラムコードは、クライアントにダウンロードするために、カスタマイズされた文書を生成するために使用される、符号化ＨＴＭＬ「テンプレート」もしくはフォームの中に組み込まれる。
【００１１】
アクティブサーバページは、通常は、サーバ側のプログラムコードと関連付けられており、クライアントにダウンロードするために文書を生成するためと、このような文書を介してユーザから受信した入力を取り扱うための両方に使用されている。さらに、このようなページに関連付けられているサーバ側のプログラムコードは、アプリケーションサーバやデータベースなどの、バックエンドサービスにアクセスするための機能を持つことができる。
【００１２】
特にＪＳＰに関して、ＪＳＰに使用されたこの符号化ＨＴＭＬフォームは、通常、スクリプト、および／または、ＪＳＰの初期ロード時にコンパイルされるサーバ側のＪａｖａプログラムコードを組み込んでおり、サーバ上に常駐する一つまたは複数のＪａｖａサーブレットを生成し、前記ＪａｖａサーブレットがＪＳＰフォームからダウンロードできる文書を作成するのを補助し、ダウンロードされた文書を介してユーザから受信したユーザ入力を取り扱う。
【００１３】
ＪＳＰおよびアクティブサーバページの他の形式を使用する一つの利点は、このコード開発が、現在の開発から、概念的に切り離せることである。その結果、クライアントに配信すべきコンテンツの開発は、実質的に簡略化でき、コンテンツと制御がともに密接に結びついている開発と比較して、実質的に加速することができる。
【００１４】
サーブレット、ＪＳＰなどの使用は、実質的に簡略化され、より効果的で、柔軟で、複雑なユーザインターフェースの開発が、実質的に加速されている。しかし、一般的に、インターネットおよびコンピュータの使用が絶えず増加し、インターネット、および／または、他の公用のもしくは私用のネットワークを介して、コンテンツをクライアントに供給するサーバが経験するワークロードが、増大する結果、非常な不足が発生している。特に、ほとんどのサーバからタスクを要求するクライアントの数が、増加し続け、このオーバヘッドの処理量が、このようなクライアントによって要求される、より複雑なタスクを処理することを必要とする。サーブレット、ＪＳＰなどのような技術を組み込むことは、このような技術によってサポートされる多数の機能の、比較的プロセス集約的な性質のためのサーバワークロードを、さらに増大する。
【００１５】
全てのコンピュータのようなサーバは、限られた資源のみを有し、それにもかかわらず、処理力およびメモリ容量の両方の意味で連続的な利得が作成されるので、これらの資源は、クライアントによって要求される増大したワークロードによって、しばしば、即座に消費される。サーバ上の要求が増大するにつれて、クライアントへの応答時間が増加し、ユーザ生産性を低減し、しばしばユーザのフラストレーションを増大する。しかし、サーバ容量を増大することは、サーバをよりアドバンスのモデルに交換するか、または、全負荷を共有するために複数のサーバを使ってネットワークにつなぐかの、いずれかがしばしば必要になる。しかし、どちらの場合にも、容量の追加は、高額が提示されることがしばしばである。
【００１６】
【発明が解決しようとする課題】
したがって、インターネットまたは他のクライアント‐サーバ環境に接続された、サーバに対するオーバヘッド処理を、最小化する方法のための、かなりの需要が、依然として存在する。特に、アクティブ文書を作成し、このような文書を介してユーザとの対話を取り扱うことに関係している、サーバ内のオーバヘッド処理を低減するための方法に対する需要が、依然として存在する。
【００１７】
【課題を解決するための手段】
本発明は、アクティブ文書を作成するサーバ側のプログラムコードを変更し、一定の操作、本明細書では「ポータブル操作」と呼ぶ操作を、サーバからクライアントに効果的に移行することによって、アクティブ文書を介したクライアントとサーバとの間の対話が最適化される、装置、プログラム製品および方法を提供することによって、先行技術に関連するこれらのような問題に、対処するものである。この対処により、アクティブ文書を取り扱うサーバのオーバヘッド処理を、しばしばかなり低減することができ、したがって、サーバのワークロード、応答時間が減少し、しばしば、サーバのワークロード収容量が増大する。
【００１８】
ポータブル操作は、サーバおよびクライアントの両方によって、実行可能である、実際のいずれの操作も含むことができ、アクティブ文書内の組み込みプログラムコードを介して、開始するのに適している。しかし、一例では、ポータブル操作は、アクティブ文書を介して、クライアントからの、サーバによって受信した入力データをフォーマットする、たとえば、入力ストリングを整数値に変換する、ストリングー整数変換などの、データフォーマッティング操作でもよい。サーバによって実施されるときは、このストリングー整数変換は、リソースを実質的に計算することを要求してもよく、特に、この変換は、サーバに接続された数百もしくは数千のクライアントに対して、所与の時間に、要求してもよい。しかし、このような変換を実施する負荷が、ダウンロードされるアクティブ文書内に組み込まれたプログラムコードを介して、個々のクライアントに移行する場合は、このような変換を取り扱うサーバに対するオーバヘッド処理は、かなり減少し、または、排除される。
【００１９】
クライアントに送信するためのアクティブ文書を作成し、この作成されたアクティブ文書を介してクライアントと対話するように構成されたタイプのプログラムコードに対して、最適化を適用することを、本発明に含めることができる。このような最適化は、プログラムコードの実行時に、サーバによって実施されるポータブル操作のＩＤを含むことができ、アクティブ文書の処理時に、プログラムコードを変更して、クライアントによってポータブル操作の実施を開始するように、アクティブ文書内に少なくとも一つの命令を組み込むようにすることを、含むことができる。
【００２０】
これらのような利点および特徴は、本発明を特徴付けるものであるが、それは、本明細書、およびそのさらなる部分を形成している、特許請求の範囲に設定される。しかし、本発明および本明細書の使用することによって到達される有利性および目的をより理解するために、本明細書の説明に、図面を添付によって参照し、その中に、本発明の例示的な実施形態を記述する。
【００２１】
【発明の実施の形態】
以下に述べる実施形態は、クライアント‐サーバ環境内で、クライアントに配信されるアクティブ文書を介して、ユーザ対話の取り扱いを最適化する。このようなユーザ対話は、アクティブ文書と接続しているサーバによって実施される一つまたは複数のポータブル操作を識別することによって、および、その代わりとしてクライアントによって実施されるこのようなポータブル操作を可能にするように、前述のアクティブ文書を作成、および／または、対話するために使用されるコード変更が、最適化される。したがって、本明細書でのポータブル操作とは、アクティブ文書の生成、および／または、処理に関連して、クライアントまたはサーバのどちらかによって実行できる、操作である。
【００２２】
次に、アクティブ文書とは、ポータブル操作を扱うため、または、クライアントに常駐するもしくはたとえば文書に組み込まれたプログラムコードを参照するかリンクすることによるその他の方法でクライアントによって獲得された他のプログラムコードによってポータブル操作の扱いを開始するための、いずれかのための、組み込みプログラムコードを組み込むことができる文書である。通常は、アクティブ文書は、ＨＴＭＬ、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ　Ｍａｒｋｕｐ　Ｌａｎｇｕａｇｅ）などの、記述言語によって定義された、一つまたは複数の組み込みタグとともに符号化される。アクティブ文書は、さらに、しばしば他の文書への組み込みリンクを含むハイパーテキスト文書であるが、アクティブ文書は、いくつかのインスタンスの形の、いずれのハイパーテキストリンクも、含むことができない。以下に論ずる実施形態では、このアクティブ文書は、したがって、符号化ＨＴＭＬハイパーテキスト文書の形を取って作成されるが、本発明は、これらの特定のタイプのアクティブ文書に制限するものではない。
【００２３】
たとえば、以下に論ずる実施形態は、クライアントとサーバとの間で送られたたデータを形成、および／または、検証する、ポータブル操作に焦点を当てており、これらは、クライアントによって取り扱うことが可能である。しかし、本開示書の当業者は、アクティブ文書を用いて、作成、および／または、対話することに関連して実施される、様々な他の操作が、本発明と矛盾することなく、識別、および最適化を行うことができることは、理解されよう。したがって、本発明は、本明細書で説明する特定の操作に、制限するものではない。
【００２４】
次に、図面をみると、いくつかの図面を通して、参照番号は、その部分を示しているが、図１は、本発明に一致する、クライアントサーバベースコンピュータシステム、または、クライアント‐サーバベースコンピュータ環境１０を示す。システム１０は、たとえば、一つまたは複数のクライアントコンピュータ１２、および、一つまたは複数のサーバコンピュータ１４のような、少なくとも一つの装置を含んでいる。本発明の目的のためには、それぞれのコンピュータ１２、１４は、実用的ないずれのタイプのコンピュータ、コンピュータシステム、または、クライアント‐サーバ環境内のクライアントとして、および／またはサーバとして、機能できる、他のプログラム可能な電子デバイスとして表すことができる。さらに、それぞれのコンピュータ１２、１４は、たとえば、クラスタの形でまたは他の分散コンピューティングシステムの形で、一つまたは複数のネットワークに接続されたコンピュータを使用して実装できる。さらに、多くのクライアントサーバシステムで共通なように、通常は、複数のクライアントコンピュータは、一つの所与のサーバコンピュータ１４にインターフェースする。
【００２５】
コンピュータ１２は、通常は、メモリ１８に結合した少なくとも一つのマイクロプロセッサを含む、ＣＰＵ１６を含んでいる。メモリ１８は、コンピュータ１２の主記憶を構成している、ＲＡＭデバイスで表すことができ、同様に、どの補助レベルのメモリ、たとえば、キャッシュメモリ、不揮発性メモリ、バックアップメモリ（たとえば、プログラム可能メモリ、もしくは、フラッシュメモリ）、ＲＯＭなどで表すことができる。さらに、メモリ１８は、コンピュータ１２内のいずれかの場所に物理的に位置される、たとえばＣＰＵ１６内のプロセッサ内のキャッシュメモリを含むことができ、同様に、大容量記憶デバイス２０上に記憶された、もしくは、コンピュータ１２に結合された他のコンピュータ上に記憶された、仮想メモリとして使用される他の記憶容量などの、メモリ記憶を含むことを考慮することができる。コンピュータ１２は、また、通常、外部と情報通信のための、多くの入出力を受け取る。ユーザまたはオペレータとインターフェースするために、コンピュータ１２は、一つまたは複数のユーザ入力装置（たとえば、キーボード、マウス、トラックボール、ジョイスティック、タッチパッド、および／または、マイクとともに）を組み込んでいる、ユーザインターフェース２２、および、ディスプレイ（たとえば、ＣＲＴモニター、ＬＣＤディスプレイパネル、および／または、スピーカとともに）を、通常含んでいる。一方、ユーザ入力は、他のコンピュータ、または、端末を介して、受信することができる。
【００２６】
追加記憶として、コンピュータ１２は、また、たとえば、フロッピ、もしくは他の着脱可能ディスク駆動装置、ハードディスク駆動装置、ＤＡＳＤ（Ｄｉｒｅｃｔ　Ａｃｃｅｓｓ　Ｓｔｏｒａｇｅ　Ｄｅｖｉｃｅ）、光ドライブ（たとえばＣＤドライブ、ＤＶＤドライブなど）などの一つまたは複数の大容量記憶デバイス２０を、および／または、テープ駆動装置とともに、含むことができる。さらに、コンピュータ１２は、一つまたは複数のネットワーク（たとえば、ＬＡＮ、ＷＡＮ、無線ネットワーク、および／または、インターネットとともに）とのインターフェース２４を含み、他のコンピュータおよび電子デバイスとの情報通信ができる。コンピュータ１２は、通常、ＣＰＵ１６と、それぞれの構成要素１８、２０、２２、および２４との間の、適しているアナログインターフェース、および／または、デジタルインターフェースを含んでいることが、当業者には既知であることは理解されよう。
【００２７】
コンピュータ１２と同様の方式で、コンピュータ１４は、ＣＰＵ２６、メモリ２８、大容量記憶３０、ユーザインターフェース３２、およびネットワークインターフェース３４を含んでいる。しかし、コンピュータ１２およびコンピュータ１４の、クライアントおよびサーバとしての性質を鑑みると、多くの場合において、コンピュータ１４は、サーバコンピュータ、ミッドレンジコンピュータ、メインフレームなどの、マルチユーザコンピュータを使用して実施されるが、コンピュータ１２は、デスクトップもしくは他のシングルユーザコンピュータを使用して実施される。その結果、ＣＰＵ、メモリ、大容量記憶、ユーザインターフェースおよびネットワークインターフェースは、コンピュータ１２およびコンピュータ１４間で、通常異なっている。他のハードウェア環境は、本発明の内容の中で、考慮するものとする。
【００２８】
コンピュータ１２、１４は、一般に、公用の、および／または、私用の、有線の、および／または、無線の、局所的、および／または、広域的などの、ネットワーク３６を介して、お互いにインターフェースする。さらに、ネットワーク３６は、複数の相互接続ネットワークを表すことができる。たとえば、例示の目的で実施形態に示すが、ネットワーク３６は、インターネットを含んでもよい。
【００２９】
それぞれのコンピュータ１２、１４は、ＯＳ３８、４０の制御下で動作し、さまざまなコンピュータソフトウェアアプリケーション、構成要素、プログラム、オブジェクト、モジュール、データ構造などを、実行し、もしくはそうでなければ、依存している。さらに、様々な、アプリケーション、構成要素、プログラム、オブジェクト、モジュールなどは、たとえば、分散コンピューティング環境またはクライアントサーバコンピューティング環境内の、ネットワークを介して、コンピュータ１２、１４に結合された、他のコンピュータ内の一つまたは複数のプロセッサで実行することもできる。この場合、コンピュータプログラムの機能を実施するために要求される処理を、ネットワークを介して、複数のコンピュータに配置することができる。
【００３０】
一般的に、本発明の実施形態を実施するために実行されるルーチンは、ＯＳの一部として、または、指定されたアプリケーション、構成要素、プログラム、オブジェクト、モジュール、もしくは一連の命令、もしくは、それらのサブセットの形で実施されるものであっても、本明細書では、「コンピュータプログラムコード」、もしくは、簡単に、「プログラムコード」と呼ぶ。プログラムコードは、通常、コンピュータ内の様々なメモリおよび記憶デバイスに、様々な時に、常駐する、一つまたは複数の命令を含んでおり、すなわち、コンピュータ内の一つまたは複数のプロセッサによって読み込まれ、実行され、このコンピュータに、本発明の様々な側面を具体化するステップ、もしくは、要素を実行するために、必要なステップを、実施させる。さらに、本発明は、以下では、完全に機能するコンピュータおよびコンピュータシステムのコンテキストで説明するが、本発明の様々な実施形態を、様々な形のプログラム製品として配布でき、本発明は、この配布を実際に実現するために使用される、信号伝達媒体のどの種類に関わらず、等しく適用されることは、当業者には理解されよう。信号伝達媒体の例としては、とりわけ、揮発性および不揮発性メモリデバイス、フロッピおよび他の着脱可能ディスク駆動装置、ハードディスク駆動装置、磁気テープ、光ディスク（たとえばＣＤ−ＲＯＭ、ＤＶＤなど）などの記憶可能タイプ媒体、および、デジタル、アナログ通信リンクなどの伝達タイプ媒体が含まれるが、これらに制限するものではない。
【００３１】
さらに、本明細書で記述される様々なプログラムコードは、本発明の特定の実施形態で実施される、アプリケーションに基づいて識別することができる。しかし、どの特定のプログラム名であっても、単に便宜的に使用されるものであり、したがって、本発明は、このような名前によって、識別され、および／または、包含される、どの指定されたアプリケーションの形での、唯一の使用に制限すべきではない。さらに、コンピュータプログラムが、ルーチン、処理、方法、モジュール、オブジェクトなどの形で編成される形態が、典型的には無限の数であり、同様に、プログラム機能が、典型的なコンピュータの中に常駐する、様々なソフトウェア層（たとえばＯＳ、ライブラリ、ＡＰＩ、アプリケーション、アプレットなど）の間に配置する形態が多様であることに鑑みれば、本発明が、本明細書で記述するプログラム機能の、指定した編成および配置に、制限するものでないことは、理解されよう。
【００３２】
図１に示す、例示的環境が、本発明を制限することを意図するものではないことは、当業者には諒解されるであろう。実際、当業者は、本発明の主旨から外れることなく、他の代替ハードウェア環境、および／または、ソフトウェア環境を、使用できることは、諒解されよう。
【００３３】
本発明と一致する実施形態は、アクティブ文書を介して、クライアントとサーバとの間の対話を最適化するように構成され、通常は、サーバからクライアントへ、一つまたは複数のポータブル操作の伝送を介して、サーバの性能を最適化することによって構成される。以下に、より詳細に説明するが、このポータブル操作の伝送は、クライアントによってポータブル操作の実施を開始するために、アクティブ文書内に一つまたは複数の命令を組み込むことによって、実施することができる。この件に関しては、以下の説明は、Ｊａｖａサーブレット、具体的には、ＪＳＰ（Ｊａｖａ　Ｓｅｒｖｅｒ　Ｐａｇｅ）に関連するＪａｖａサーブレットを、使用することに関係して、本発明を具体的に実施することに焦点を当てている。当技術分野では既知であるが、ＪＳＰは、クライアントがサーバに伝送するための入力データを、供給できることによって、アクティブ文書を作成するために、使用することができる。ＪＳＰは、通常、サーバコンピュータ上に常駐する、Ｊａｖａ仮想マシン上で実行する、一つまたは複数のＪａｖａサーブレットを作成するために、実行時にコンパイルされる。次いで、このようなサーブレットの形のプログラムコードは、適切なアクティブ文書を作成するために、および、このようなアクティブ文書を介して受信されたユーザ入力を取り扱うために、実行する。
【００３４】
いくつかの実施形態においては、別々のＪａｖａサーブレットが、特定のアクティブ文書を作成し、それぞれの発信元から受信したユーザ入力を取り扱うことができる。たとえば、図２に示すように、図示のコンピュータシステム１０内のクライアントとサーバとの間の典型的な対話は、ブロック６０で、クライアント上で実行されたウェブブラウザにより、宛先へのリンクを選択することによって、サーブレットＡを始めることで、開始する。たとえば、リンクの選択は、表示された、ハイパーテキスト文書内の組み込みリンクを選択することや、ブックマークを選択することへの応答で、行うことができる。
【００３５】
リンクの選択は、たとえば、当技術分野では既知である、ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ　Ｔｒａｎｓｆｅｒ　Ｐｒｏｔｏｃｏｌ）要求を介するなどの、サーブレットＡに対する要求を作成する結果となる。サーバによるこのような要求の処理によって、ブロック６２に示すように、サーバ上に、サーブレットＡを呼び出す結果となる。サーブレットＡは、アクティブ文書（ＨＴＭＬページＡ）を作成し、ＨＴＴＰ応答を介して、クライアントに、この文書を伝送するように示してある。次いで、この文書は、このウェブブラウザによって、表示される（ブロック６４）。
【００３６】
その後、ユーザは、このアクティブ文書（ＨＴＭＬページＡ）を介して、入力データを供給することができる。通常は、ブロック６６に示すように、ＪＳＰ環境では、データのこのような入力によって、サーバ、この場合はサーブレットＢ上に常駐する、適切なサーブレット宛てに、ＨＴＴＰ要求を作成する結果となる。この入力データは、サーブレットＢによって処理され、通常、本質的にはアクティブあってもアクティブでなくても良い、第２のハイパーテキスト文書（本実施形態ではＨＴＭＬページＢとして示す）を作成する結果となり、このクライアントに対するＨＴＴＰ応答を介して、クライアントに戻される。次いで、この第２のハイパーテキスト文書は、ブロック６８に示すように、クライアント上のウェブブラウザによって表示される。
【００３７】
他の実施形態では、同じサーブレット内の異なるプログラムコードは、文書作成機能および対話機能の両方を、取り扱うことができる。たとえば、図２に示すように、ハイパーテキスト文書を作成する部分Ａ（ブロック７２）、および、ハイパーテキスト文書からのユーザ入力を扱う部分Ｂ（ブロック７４）を含んでいる、２つのサーブレット６２、６６ではなく、一つのサーブレット７０を使用することができる。
【００３８】
さらに他の実施形態では、Ｊａｖａサーブレット以外のサーバ側のプログラムコードは、たとえばＡＳＰ（Ａｃｔｉｖｅ　Ｓｅｒｖｅｒ　Ｐａｇｅｓ）、および他の形のプログラムコードなどの、文書作成操作および対話操作の、いずれかまたは両方を、実施するために、使用できる。また、本発明は、たとえばＣＧＩ（Ｃｏｍｍｏｎ　Ｇａｔｅｗａｙ　Ｉｎｔｅｒｆａｃｅ）ベースの、および、他の非Ｊａｖａ環境内などの、他の環境内で実施することができる。したがって、本発明は、本明細書で記述した、特定のサーバ側のプログラムコードの実装に、制限するものではない。
【００３９】
例示の実施形態では、また、ポータブル操作は、たとえばＪａｖａｓｃｒｉｐｔなどの、スクリプト言語からの、一つまたは複数の命令を使用して、アクティブ文書内に、通常実装されている。他のスクリプト言語と、同様に、他の形のプログラムコードを、ポータブル操作の、クライアント側の実施を扱うために使用することができる。さらに、ポータブル操作を実際に扱うこの命令は、文書自体に、もしくは、文書の代わりに、組み込むことができ、クライアントによってポータブル操作の実施を開始する一命令のみを、ハイパーテキスト文書に組み込むことを必要とする。たとえば、ポータブル操作を実施するプログラムコードが、既にクライアント上に常駐する場合、もしくは、アクティブ文書とは別にクライアントにダウンロードできる場合は、クライアント上にこのようなプログラムコードを呼び出すために必要な、これらの命令のみを、アクティブ文書内に組み込むことを所望することができる。
【００４０】
さらに、例示の実施形態では、サーバからクライアントへ、ポータブル操作を移行するためのプログラムコードの最適化は、実行可能な形にするためにプログラムコードをコンパイルすることに関係して、実施される。前述したように、プログラムコード中のポータブル操作の識別、および、プログラムコードの変更は、通常、このようなプログラムコードのソースコード表記上で実施される。しかし、この最適化は、本発明と一致するいくつかの実施形態中のコンパイル処理以外で実施することができ、もしくは、たとえば解釈可能プログラムコードなどのような、コンパイルされることの決してないプログラムコードを適用することができることは、理解されるだろう。
【００４１】
サーバからクライアントへの、ポータブル操作の伝送は、サーバ側のプログラムからクライアント側のプログラムに、プログラムコードを単に複製させることとすることができる。しかし、多くの場合には、クライアント上で本質的には同じ操作のポータブル操作を実行する異なるプログラムコード、（および、しばしば、異なるプログラム言語で書かれたプログラムコード）を、サーバ上の操作を実行するために置換して使用することができる。
【００４２】
次に、図１に戻ると、図にはＪＳＰベースの実装を示すが、サーバコンピュータ１４内に常駐するように示す一つまたは複数のＪＳＰ４２がコンパイルされ、サーバ上にも常駐するウェブサーバ４６によってクライアントに伝送するための一つまたは複数のアクティブ文書を作成するためにサーバ上に常駐するサーブレットエンジン４４による実行のために構成された一つまたは複数のサーブレットを作成するように、構想される。このようなアクティブ文書は、たとえば、図１のブロック４８に示すように、クライアントコンピュータにダウンロードされる。このようなアクティブ文書は、クライアントディスプレイ上に文書を返し、当技術分野では既知の方法で、ユーザ入力に応答して、サーバに入力データを供給する、サーバへの要求を作成する、クライアント側のウェブブラウザ５０によって処理される。
【００４３】
例示の実施形態では、ＪＳＰ４２は、テキストエディタと、ＪＳＰ作成用のコンパイラを含むことができる、ＩＢＭコーポレーションから入手できる、ＩＢＭ　ＷｅｂＳｐｈｅｒｅ　Ｓｔｕｄｉｏ　Ａｐｐｌｉｃａｔｉｏｎ　Ｄｅｖｅｌｏｐｅｒ環境などの、統合開発環境（ＩＤＥ）５２内で、開発される。図１にも示すように、ＩＤＥ５２は、最適化プログラム５４を含むこともできる。この最適化プログラム５４は、ＪＳＰを分析するために使用され、ＪＳＰの変更により、または、ＪＳＰと関連付けられるプログラムコードを変更することによって、クライアント側で実施できる、一つまたは複数のポータブル操作を識別する。
【００４４】
図３に、最適化プログラム５４によって実行し、本発明に一致する方式でプログラムコードを最適化することができる、最適化コードルーチン１００を示す。ルーチン１００は、たとえば、ＩＤＥ５２を使用するユーザによって、明示的に呼び出すことができ、または、たとえば実行時データ分析に応答して、それ以外ではユーザ入力とは無関係に、いくつかの事例においては、自動的に、呼び出すことができる。さらに、いくつかの場合では、ルーチン１００は、プログラムコードを実行可能な形にコンパイルすることに関係して、実行することができ、または、代わりに、どのコンパイル処理とも無関係な実行可能プログラムコードに対して、適用することができる。
【００４５】
ルーチン１００は、ブロック１０２で、本明細書で記述した最適化を適用することが望まれる、適当な非最適化コードを検索することによって、開始する。ＪＳＰ環境では、この非最適化コードは、ＪＳＰ中に組み込まれたコードを表すことができ、代替的に、ＪＳＰに参照された、もしくは、その他の方法でＪＳＰに関連付けられた、Ｊａｖａプログラムコードを表すことができる。
【００４６】
次に、ブロック１０４は、非最適化コード内の、各ステートメントを処理するためのループを開始する。このようなそれぞれのステートメントに対して、ブロック１０４は、ブロック１０６に制御を送り、次のステートメントを検索する。ブロック１０８は、次いで、このステートメントが、置換可能フォーマッティングステートメントであるかどうか、すなわち、ステートメントが、サーバ側ではなく、クライアント側での実施が適したフォーマッティングタイプのステートメントであるかどうかを判断する。置換可能フォーマッティングステートメントの場合は、ブロック１０８は、制御をブロック１１０に送り、クライアント側でフォーマッティングを実施するようにこのコードを変更し、冗長なサーバ側の機能を除去する。次いで制御は、ブロック１０４に戻り、追加のステートメントを処理する。
【００４７】
このステートメントが、置換可能フォーマッティングステートメントでない場合は、制御をブロック１１２に送り、このステートメントが、置換可能検証ステートメントであるかどうか、すなわち、ステートメントによって実施される操作が、サーバ側ではなく、クライアント側で、実施できる検証操作であるかどうかを、判断する。置換可能検証ステートメントでない場合は、制御はブロック１０４に戻り、追加のステートメントを処理する。その他の場合は、制御をブロック１１４に送り、どの生成コードが識別されなければならないかを判断する。このことに関して、生成コードは、ＪＳＰと関連付けられ、このＪＳＰを使用して、アクティブ文書を生成するように構成された、サーバ側のプログラムコードを参照する。たとえば、アクティブ文書を生成し、アクティブ文書を介してユーザとの対話を処理するために、別々のサーブレットを使用する実施においては、ブロック１１４は、このアクティブ文書生成を実施する、先行するサーブレットを調べる。
【００４８】
一つのサーブレットが使用される、他の実施形態では、ブロック１１４は、単に、このアクティブ文書の生成を扱っている、この同じサーブレット内のプログラムコードを探す。さらに他の実施形態においては、一定のフォーマッティング操作が、アクティブ文書の生成を実施するサーブレットの変更を要求でき、この場合、このような操作は、本明細書で記述された検証操作と同様の方法で扱われる。
【００４９】
どの生成コードも識別を必要としない場合は、ブロック１１４は、制御をブロック１０４に戻し、追加のステートメントを処理する。その他の場合は、ブロック１１４は、制御をブロック１１６に送り、生成コード（同じもしくは別のプログラム内の、またはサーブレット内のいずれかの）を変更し、クライアント側の検証を実施する。さらに、対応するが、この場合では冗長となった、サーバ側のコードの検証機能を、除去する。次いで、制御はブロック１０４に戻り、追加のステートメントを処理する。
【００５０】
ブロック１０４は、未処理のステートメントが残らなくなるまで、コード内の全てのステートメントを処理する。このような全てのステートメントが一度処理されると、ルーチン１００は完了する。
【００５１】
他のルーチンを、本発明と矛盾しない、前述した最適化を実施するために使用できることは、理解されよう。したがって、本発明は、本明細書に記述された、特定のルーチンに制限するものではない。
【００５２】
当業者には、ポータブル操作の広範囲に渡る変形が、本発明に一致する方法で、クライアント上で実施するために最適化できることは、理解されよう。たとえば、フォーマッティングタイプのポータブル操作の一例としては、サーブレットに、以下のようなプログラムコードを組み込んで、表示する前に、ストリングから、前に続くブランク、および、後に続くブランクをトリム（ｔｒｉｍ）するために使用する、サーバ側のｔｒｉｍ（）操作にともない、ストリングを表示することができる：
ｓｅｒｖｌｅｔＯｕｔｐｕｔＳｔｒｅａｍ．ｐｒｉｎｔｌｎ（”Ｎａｍｅ：’”＋ｎａｍｅＳｔｒ．ｔｒｉｍ（）＋”’”）
【００５３】
クライアント側のｔｒｉｍ（）操作を実施するために、アクティブ文書を作成するために使用されるフォームタグを、変更し、アクティブ文書に、以下のＪａｖａＳｃｒｉｐｔ命令を追加する：　　　ｗｈｉｌｅ（”＋ｔｈｉｓ．ｖａｌｕｅ．ｃｈａｒＡｔ（０）＝＝’’）
ｔｈｉｓ．ｖａｌｕｅ＝ｔｈｉｓ．ｖａｌｕｅ．ｓｕｂｓｔｒｉｎｇ（１，ｔｈｉｓ．ｖａｌｕｅ．ｌｅｎｇｔｈ）；
ｗｈｉｌｅ（”＋ｔｈｉｓ．ｖａｌｕｅ．ｃｈａｒＡｔ（ｔｈｉｓ．ｖａｌｕｅ．ｌｅｎｇｔｈ−１）＝＝’’）
ｔｈｉｓ．ｖａｌｕｅ＝ｔｈｉｓ．ｖａｌｕｅ．ｓｕｂｓｔｒｉｎｇ（０，ｔｈｉｓ．ｖａｌｕｅ．ｌｅｎｇｔｈ−１）；
【００５４】
検証タイプのポータブル操作の一例としては、サーブレットは、以下のようなプログラムコードを組み込み、アクティブ文書内の特定のフィールドに対して、ヌルデータが戻される場合は、ＨＴＭＬ文書エラーを戻すことができる：
2004086878.tif 000003
【００５５】
クライアント側で、このエラーチェックを実施するために、アクティブ文書を作成するために使用されるフォームタグを、変更し、ｏｎＳｕｂｍｉｔ＝”ｒｅｔｕｒｎ　ｖａｌｉｄａｔｅ（）”パラメータと、以下の機能のためのプログラムコードを追加することができる。その機能は、必要なフィールド名を含めるために、さらに更新することができる。
2004086878.tif 000004
【００５６】
交互のフォーマッティング操作、および、検証操作を広範囲にわたって変形させることにより、本発明に矛盾しないように企図することができる。フォーマッティング操作は、たとえば、ユーザ入力を異なるデータフォーマットへ変換する操作（たとえば、ストリングと整数との変換、整数と浮動小数点との変換、ストリングと文字との変換など）、日付フォーマットをユーザ入力に適用する操作（たとえば、”５−５−９８”を”Ｍａｙ　５，１９９８”に変換するなど）、ユーザ入力から一つまたは複数の文字を切り取る操作（たとえば、ブランクもしくは前に続くゼロをトリムするなど）、ユーザ入力にコンマ、もしくは、小数点を追加する操作などを、含むことができる。検証操作は、たとえば、ヌル入力、範囲外の入力、不適切なフォーマットの入力などをチェックする操作と、無効入力に応答して、さまざまな改良、通知、もしくは他の訂正アクションを、実施する操作を、含むことができる。
【００５７】
いくつかのＪａｖａＳｃｒｉｐｔ機能を、クライアント上で様々なサーバ側の操作を実施するために使用することができる。それは、たとえば、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｊａｖａｓｃｒｉｐｔ．ｉｎｔｅｒｎｅｔ．ｃｏｍ／ｆｏｒｍｓ／＞で検索した、「Ｔｈｅ　ＪａｖａＳｃｒｉｐｔ　Ｓｏｕｒｃｅ：Ｆｏｒｍ　Ｓｃｒｉｐｔｓ」「ｏｎｌｉｎｅ」、ＩＮＴ　Ｍｅｄｉａ　Ｇｒｏｕｐ、Ｉｎｃｏｒｐｏｒａｔｅｄ、２００２「検索日：２００２−０５−２９」に記述され、本明細書に参照により組み込む。
【００５８】
しかし、クライアント側で実施できる実際のいずれの操作が、サーバ側で実施されるものとして最初に構成され、本明細書で記述の方法で、クライアントに伝送することができることは理解されよう。したがって、本発明は、本明細書で記述の、特定のポータブル操作に制限するものではない。
【００５９】
前述したように、先の最適化機能の実施は、複数のコンテキストで実施できる。たとえば、図４に示すように、最適化は、たとえば、ルーチン１３０などのルーチンを介して、ＪＳＰのコンパイルに関係して実施できる。このようなコンパイルに関係して、ブロック１３２に示すように、いくつかの事例では、ユーザは、たとえば、コンパイルされる、特定のＪＳＰのために、最適化を実施すべきか否かを選択することによって、高使用コードを選択することを要求できる。たとえば、特定のＪＳＰが、特にコンピュータの使用を強調するものではない、もしくは、比較的頻繁なアクセスがされないと判断されると、このようなＪＳＰのコンパイルの際には、最適化を不能にすることを望むことができる。しかし、他の環境では、ユーザは、高使用コードを含むようなＪＳＰを指定しないように要求することができ、この場合、ブロック１３２を省略することができる。
【００６０】
さらに、コンパイル処理の際に、ブロック１３４に示すように、ＪＳＰとその関連付けられたプログラムコードとの間の関連を、ユーザが提供するように、要求できる。ＩＤＥのようなグラフィカル環境では、ユーザは、ＪＳＰファイルを、ＪＳＰの作成、および／または、ＪＳＰの対話機能を扱う、一つまたは複数のＪａｖａクラスと、関連付けることができる。一度、関連が確立されると、この最適化プログラムは、このＪＳＰと関係して実施される操作を認知し、したがって、ポータブルの性質を持つこれらの操作を識別することが可能になる。さらに、この情報を持つことにより、ＪＳＰファイルによって生成されているアクティブ文書を作成するために使用するＨＴＭＬコードに、ＪａｖａＳｃｒｉｐｔ命令などの命令を組み込むように、ＪＳＰファイルを変形することが、比較的簡単になる。
【００６１】
２つの共働サーブレットを使用して、生成および対話を扱うときは、開発者が、一つのサーブレットから、他のサーブレットへの「流れ」を指定できるように、ＩＤＥ関連概念を、追加的に使用でき、この場合、この最適化プログラムは、第２のサーブレットによって実行される、フォーマッティング操作、および／またはパラメータチェッキング操作を、第１のサーブレットによって作成されたアクティブ文書内のＪａｖａＳｃｒｉｐｔに、移行することが可能になる。さらに、パラメータチェッキングがサーバからクライアントに移行しているいくつかの事例では、無効な要求が、サーバに到着することを、効果的に防ぐことができ、さらに、コード検証をサーバから省略する目的で、この第２のサーブレットによって、どの検証要求の実行も、加速することになる。
【００６２】
一つのサーブレットを使用して、生成および対話の両方を扱う場合には、全てのＨＴＭＬ生成処理および対話処理が、同じサーブレット内で行われるので、これらのセクション間の操作の移動は、比較的簡単である。さらに他の実施形態では、たとえば、サーブレットが、静的ＨＴＭＬファイルと対話する場合は、この静的ＨＴＭＬファイルを変更し、本明細書で記述したように、ポータブル操作を実施するために、スクリプトなどのようなものを介して、アクティブ処理を組み込むことができる。
【００６３】
図４に戻ると、一度この関係を、ユーザから受信すると、制御を、ブロック１３６に送り、この関係が作成されたか否か、および、選択されたコードが高使用のものであるか否かを、判断する。否定の場合は、制御を、ブロック１３８に送り、当技術分野では既知の方法で、ＪＳＰをコンパイルする。その他の場合は、制御をブロック１４０に送り、ブロック１３８でＪＳＰをコンパイルするより先に、コードを最適化する。この最適化コードルーチン１４０は、図３のルーチン１００のフォームを含む、多くのフォームをとることができる。
【００６４】
一度、ＪＳＰがコンパイルされると、このＪＳＰは、このサーバのために、実行することによって、最初に予定された、一つまたは複数のポータブル操作を組み込んでいる、アクティブ文書を作成するように構成される。そのようにして、ポータブル操作に関連したオーバーヘッドの実施は、サーバから効果的に排除される。
【００６５】
さらに他の実施形態では、最適化処理の開始は、ＪＳＰもしくはその関連コードを実行時に分析することに応答して、実施することもできる。たとえば、図５に示すように、再コンパイルＪＳＰルーチン１５０は、ブロック１５２内の特定のＪＳＰについての、収集された実行時のフロー情報にアクセスすることができる。コンピュータ内のプログラムコードについての、実行時フロー情報の収集プロセスは、当技術分野では一般に良く知られていることは、理解されよう。このような情報は、実行時に収集でき、次に、再コンパイルを開始するために、ＦＤＰＲ（Ｆｅｅｄｂａｃ　Ｄｉｒｅｃｔｅｄ　Ｐｒｏｇｒａｍ　Ｒｅｓｔｒｕｃｔｕｒｉｎｇ）の処理と同様に、または、当技術分野では既知の他の同様のプロセスで、ＩＤＥ内にフィードバックされる。
【００６６】
このような情報に基づいて、ブロック１５４は、潜在的な性能改良が、たとえば、図３に関係した先の記述と同様の方法で、識別されたか否かを判断する。そのような実施が識別されない場合は、ルーチン１５０を、終了することができる。その他の場合は、制御をブロック１５６に送り、先の記述と同じ方法でコードを最適化し、次いで、制御をブロック１５８に送り、最適化コードを使用してＪＳＰをコンパイルする。
【００６７】
しかし、前述したように、アクティブ文書に関連するプログラムコードの最適化は、多くの他の方法で開始することができる。したがって、本発明は、本明細書で論じた、特定の実施に制限するものではない。
【００６８】
サーバから一つまたは複数のクライアントに、オフロードする処理によって、サーバ性能は、多くの方法で改善することができる。たとえば、特定のポータブル操作を実行することに関連するオーバヘッド処理は、サーバからクライアントへ、オフロードすることができる。
【００６９】
さらに、いくつかのポータブル操作に対しては、サーバからクライアントへ、または、その逆に伝送されるデータ量を、減少することができ、したがって、ネットワーク通信が改善される。たとえば、トリム操作が、ストリングから空白を除去するように実施するときは、このストリングから除去された空白は、クライアントからサーバに通信されず、したがって、伝送する情報量が減少する。
【００７０】
他の事例では、たとえば、検証操作に関連して、サーバ性能および、ネットワークトラフィックが、それ以外の方法では、クライアントからサーバへの追加要求の伝送を必要とする、一定の要求を排除することによっても、改善できる。たとえば、ユーザ入力が無効データで、検証がサーバによって実施される場合、そのような無効データを提供する第１の要求は、サーバによって検索され、無効であると宣言され、有効データを有する新規要求をクライアントが発行することが必要になる。この検証が、クライアントによって扱われる場合は、この無効要求は、この第１の場合のように発行されることはない。
【００７１】
種々の変更を、本発明の主旨および目的から外れることなく、本例示の実施形態に作成することができる。たとえば、前述した実施形態は、アクティブ文書を介して受信された入力データを扱うことに関係して実施される、ポータブル操作に焦点を当てている。他の実施形態では、ポータブル操作は、たとえば、クライアント上に表示される前に、サーバによってクライアントに送られる情報をフォーマッティングするために、サーバによってクライアントに送られる、出力データを扱うことに関係して実施できる。さらに、ポータブル操作は、たとえば、特定フォーマットの形の文書を、サーバからクライアントに戻す負荷のいくつかを移行するような、ハイパーテキスト文書の表示に関係して実施できる。
【００７２】
他の改良が、この開示の事例に関する当業者には、理解されよう。したがって、本発明は、記載の特許請求の範囲についても、考慮されるものとする。
【００７３】
【図面の簡単な説明】
【図１】本発明に一致する最適化を組み込んでいる、クライアント‐サーバコンピュータシステムのブロック図である。
【図２】図１のコンピュータシステム内の、クライアント‐サーバ対話の際に発生する、主ステップの流れ図である。
【図３】図１の最適化によって実行される、最適化コードルーチンのプログラムフローを示す、流れ図である。
【図４】図１の統合開発環境（ＩＤＥ）によって実行可能である、コンパイルＪＳＰルーチンのプログラムフローを示す、流れ図である。
【図５】図１の統合開発環境（ＩＤＥ）によって実行可能である、再コンパイルＪＳＰルーチンのプログラムフローを示す、流れ図である。
【図１】
2004086878.tif 000005
【図２】
2004086878.tif 000006
【図３】
2004086878.tif 000007
【図４】
2004086878.tif 000008
【図５】
2004086878.tif 000009