(57)【要約】      （修正有）【課題】ダウンロードしたソフトウェアプログラムを、ハードドライブに保存し、又はインストールすることなく実行する。【解決手段】第一のコンピュータシステムと第二のコンピュータシステムとの間のネットワーク接続を通じて、第一のコンピュータシステムが、第二のコンピュータシステムから送信されたデータストリームを受信する段階であって、データストリームは、ソフトウェアプログラムの実行可能なコードを含む、段階と、データストリームからソフトウェアプログラムの実行可能なコードを抽出する段階と、動的メモリを、ソフトウェアプログラムの実行可能なコードのために割り当てる段階と、ソフトウェアプログラムの実行可能なコードを、割り当てられた動的メモリへと直接ロードする段階と、割り当てられた動的メモリにロードされた、ソフトウェアプログラムの実行可能なコードを起動することにより、ソフトウェアプログラムを実行する段階と、を含む。【選択図】図１
2014112397.tif 000002
【特許請求の範囲】
【請求項１】
第一のコンピュータシステムが、第二のコンピュータシステムから、ダウンロード可能なソフトウェアプログラムを特定するＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）を含むソフトウェアスタブを受信する段階と；
前記第一のコンピュータシステムが、受信した前記ソフトウェアスタブをインストールする段階と； 
前記ソフトウェアスタブが、前記ＵＲＩを含む要求であって、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードについての前記要求を送信する段階と； 
前記第一のコンピュータシステムと前記第二のコンピュータシステムとの間のネットワーク接続を通じて、前記第一のコンピュータシステムの前記ソフトウェアスタブが、前記第二のコンピュータシステムから送信されたデータストリームにおける前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを受信する段階であって、前記データストリームは、ソフトウェアプログラムの実行可能なコードを含む、段階と；
前記第一のコンピュータシステムが、前記データストリームから、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを抽出する段階と；
前記第一のコンピュータシステムが、動的メモリを、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードのために割り当てる段階と；
前記第一のコンピュータシステムが、前記データストリームから抽出された前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを、割り当てられた前記動的メモリへと直接ロードし、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードは、前記第一のコンピュータシステムの永続的なストレージに保管またはインストールされない、段階と； 
前記第一のコンピュータシステムが、割り当てられた前記動的メモリにロードされた、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを起動することにより、前記ダウンロード可能なソフトウェアプログラムを実行する段階と；
を含む、方法。
【請求項２】
前記データストリームは、ビデオストリームであり、
前記ダウンロード可能なソフトウェアプログラムの実行可能なコードは、前記ビデオストリームに埋め込まれる、
請求項１に記載の方法。
【請求項３】
前記ダウンロード可能なソフトウェアプログラムの実行可能なコードは、機械コード又はネイティブコードである、
請求項１に記載の方法。
【請求項４】
前記ダウンロード可能なソフトウェアプログラムの実行の可能なコードは、前記第二のコンピュータシステムによって圧縮されており、
前記第一のコンピュータシステムが、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを展開する段階
をさらに含む、請求項１に記載の方法。
【請求項５】
前記第一のコンピュータシステムが、実行可能なコードを含むものとして、割り当てられた前記動的メモリをマークする段階と；
前記第一のコンピュータシステムが、分岐テーブルの一以上のエントリを調整して、割り当てられた前記動的メモリと、割り当てられた前記動的メモリにロードされた前記ダウンロード可能なソフトウェアプログラムの実行可能なコードに反映させる段階と； 
をさらに含む、請求項１に記載の方法。
【請求項６】
前記データストリームは、第一の部分と第二の部分を含み；
前記データストリームの前記第一の部分は、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを含み、
前記データストリームの前記第二の部分は、前記ダウンロード可能なソフトウェアプログラムによって使用される複数のデータを含む、
請求項１に記載の方法。
【請求項７】
前記第一のコンピュータシステムが、前記データストリームと関連付けられたネットワークソケットを、前記ダウンロード可能なソフトウェアプログラムに渡す段階であって、前記データストリームの前記第二の部分に含まれる前記データが、前記ソフトウェアプログラムの実行中に、前記ダウンロード可能なソフトウェアプログラムによって使用される、段階
をさらに含む、請求項６に記載の方法。
【請求項８】
前記第一のコンピュータシステムが、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを検証する段階
をさらに含む、請求項１に記載の方法。
【請求項９】
前記第一のコンピュータシステムが、前記ダウンロード可能なソフトウェアプログラムの実行が完了した後に、割り当てられた前記動的メモリを開放する段階
をさらに含む、請求項１に記載の方法。
【請求項１０】
第一のシステムであって：
一以上のプロセッサにより実行可能な命令を有するメモリと；
前記メモリに接続され、前記命令を実行するよう機能する、一以上のプロセッサと；
を有し、
前記一以上のプロセッサは、前記命令を実行するとき：
第二のシステムから、ダウンロード可能なソフトウェアプログラムを特定するＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）を含むソフトウェアスタブを受信し；
受信した前記ソフトウェアスタブをインストールし；
前記ソフトウェアスタブが、前記ＵＲＩを含む要求であって、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードについての前記要求を送信し； 
当該第一のシステムと第二のシステムとの間のネットワーク接続を通じて、前記第二のシステムから送信されたデータストリームにおける前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを受信し、前記データストリームは、ソフトウェアプログラムの実行可能なコードを含み； 
前記データストリームから、前記ソフトウェアプログラムの実行可能なコードを抽出し；
動的メモリを、前記ソフトウェアプログラムの実行可能なコードのために割り当て；
前記データストリームから抽出された前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを、割り当てられた前記動的メモリへと直接ロードし、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードは、前記第一のシステムの永続的なストレージに保管またはインストールされず；
割り当てられた前記動的メモリにロードされた、前記ソフトウェアプログラムの実行可能なコードを起動することにより、前記ソフトウェアプログラムを実行する；
よう機能する、システム。
【請求項１１】
前記データストリームは、ビデオストリームであり、
前記ソフトウェアプログラムの実行可能なコードは、前記ビデオストリームに埋め込まれる、
請求項１０に記載のシステム。
【請求項１２】
前記ソフトウェアプログラムの実行可能なコードは、機械コード又はネイティブコードである、
請求項１０に記載のシステム。
【請求項１３】
前記ソフトウェアプログラムの実行の可能なコードは、前記第二のシステムによって圧縮されており、
前記一以上のプロセッサは、前記命令を実行するとき、前記ソフトウェアプログラムの実行可能なコードを展開するようさらに機能する、
請求項１０に記載のシステム。
【請求項１４】
前記一以上のプロセッサは、前記命令を実行するとき：
実行可能なコードを含むものとして、割り当てられた前記動的メモリをマークし；
分岐テーブルの一以上のエントリを調整して、割り当てられた前記動的メモリと、割り当てられた前記動的メモリにロードされた前記ソフトウェアプログラムの実行可能なコードに反映させる；
ようさらに機能する、請求項１０に記載のシステム。
【請求項１５】
前記データストリームは、第一の部分と第二の部分を含み；
前記データストリームの前記第一の部分は、前記ソフトウェアプログラムの実行可能なコードを含み；
前記データストリームの前記第二の部分は、前記ソフトウェアプログラムによって使用される複数のデータを含む；
請求項１０に記載のシステム。
【請求項１６】
前記一以上のプロセッサは、前記命令を実行するとき：
前記データストリームと関連付けられたネットワークソケットを、前記ソフトウェアプログラムに渡すようさらに機能し、
前記データストリームの前記第二の部分に含まれる前記データが、前記ソフトウェアプログラムの実行中に、前記ソフトウェアプログラムによって使用される、
請求項１５に記載のシステム。
【請求項１７】
前記一以上のプロセッサは、前記命令を実行するとき、前記ソフトウェアプログラムの実行可能なコードを検証する
ようさらに機能する、請求項１０に記載のシステム。
【請求項１８】
前記一以上のプロセッサは、前記命令を実行するとき、前記ソフトウェアプログラムの実行が完了した後に、割り当てられた前記動的メモリを開放する
ようさらに機能する、請求項１０に記載のシステム。
【請求項１９】
一以上のコンピュータ読取可能な記憶媒体であって、第一のコンピュータシステムによって実行されるとき、
第二のコンピュータシステムから、ダウンロード可能なソフトウェアプログラムを特定するＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）を含むソフトウェアスタブを受信し；
受信した前記ソフトウェアスタブをインストールし；
前記ＵＲＩを含む要求であって、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードについての前記要求を送信し；
前記第一のコンピュータシステムと第二のコンピュータシステムとの間のネットワーク接続を通じて、前記第二のコンピュータシステムから送信されたデータストリームにおける前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを受信し、前記データストリームは、ソフトウェアプログラムの実行可能なコードを含み；
前記データストリームから、前記ソフトウェアプログラムの実行可能なコードを抽出し；
動的メモリを、前記ソフトウェアプログラムの実行可能なコードのために割り当て；
前記データストリームから抽出された前記ソフトウェアプログラムの実行可能なコードを、割り当てられた前記動的メモリへと直接ロードし、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードは、前記第一のコンピュータシステムの永続的なストレージに保管またはインストールされず；
割り当てられた前記動的メモリにロードされた、前記ソフトウェアプログラムの実行可能なコードを起動することにより、前記ソフトウェアプログラムを実行する；
よう機能するソフトウェアを具体化する、コンピュータ読取可能な記憶媒体。
【請求項２０】
前記データストリームは、ビデオストリームであり、
前記ソフトウェアプログラムの実行可能なコードは、前記ビデオストリームに埋め込まれる、
請求項１９に記載の記憶媒体。
【請求項２１】
前記ソフトウェアプログラムの実行可能なコードは、機械コード又はネイティブコードである、
請求項１９に記載の記憶媒体。
【請求項２２】
前記ソフトウェアプログラムの実行の可能なコードは、前記第二のコンピュータシステムによって圧縮されており、
前記ソフトウェアは、前記第一のコンピュータシステムによって実行されるとき、前記ソフトウェアプログラムの実行可能なコードを展開するようさらに機能する、
請求項１９に記載の記憶媒体。
【請求項２３】
前記ソフトウェアは、前記第一のコンピュータシステムによって実行されるとき：
実行可能なコードを含むものとして、割り当てられた前記動的メモリをマークし；
分岐テーブルの一以上のエントリを調整して、割り当てられた前記動的メモリと、割り当てられた前記動的メモリにロードされた前記ソフトウェアプログラムの実行可能なコードに反映させる；
ようさらに機能する、請求項１９に記載の記憶媒体。
【請求項２４】
前記データストリームは、第一の部分と第二の部分を含み；
前記データストリームの前記第一の部分は、前記ソフトウェアプログラムの実行可能なコードを含み；
前記データストリームの前記第二の部分は、前記ソフトウェアプログラムによって使用される複数のデータを含む；
請求項１９に記載の記憶媒体。
【請求項２５】
前記ソフトウェアは、前記第一のコンピュータシステムによって実行されるとき：
前記データストリームと関連付けられたネットワークソケットを、前記ソフトウェアプログラムに渡すようさらに機能し、
前記データストリームの前記第二の部分に含まれる前記データが、前記ソフトウェアプログラムの実行中に、前記ソフトウェアプログラムによって使用される、
請求項２４に記載の記憶媒体。
【請求項２６】
前記ソフトウェアは、前記第一のコンピュータシステムによって実行されるとき、前記ソフトウェアプログラムの実行可能なコードを検証する、
請求項１９に記載の記憶媒体。
【請求項２７】
前記ソフトウェアは、前記第一のコンピュータシステムによって実行されるとき、前記ソフトウェアプログラムの実行が完了した後に、割り当てられた前記動的メモリを開放する、
請求項１９に記載の記憶媒体。
【請求項２８】
コンピュータネットワークを通じてソフトウェアを配信する方法であって、
サーバシステムと関連付けられたプロセッサが、ダウンロード可能なソフトウェアプログラムを特定するＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）を含むソフトウェアスタブを構成し；
前記プロセッサが、クライアントシステムに対してインストールのために前記ソフトウェアスタブを送信し；
前記プロセッサは、前記クライアントシステムが前記ＵＲＩを前記サーバシステムのＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスにマップできるようにし；
前記プロセッサは、前記ＵＲＩを含む要求であって、前記ソフトウェアスタブからの、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードについての前記要求を受信し； 
前記ダウンロード可能なソフトウェアプログラムの実行可能なコードが、データストリームから抽出され、かつ、前記クライアントシステムの割り当てられた動的メモリに直接ロードされるように、前記プロセッサは、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを含むデータストリームを構成し、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードは、前記クライアントシステムの永続的なストレージに保管またはインストールされず；
前記プロセッサは、前記データストリームを前記クライアントシステムに送信する；
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータネットワークを通じた、コンピュータソフトウェアの配信に関
し、特には、クライアントで実行するために、コンピュータネットワークを通じて、コン
ピュータソフトウェアを、サーバからクライアントへと提供することに関する。
【背景技術】
【０００２】
コンピュータソフトウェアは、様々な方法で、個々のコンピュータシステムへと配信さ
れ得る。例えば、一のソフトウェアは、ＣＤ（Compact  Disc）又はＤＶＤ（Digital  Ve
rsatile  Disc）に保管され得る。ユーザは、そのようなディスクを、コンピュータシス
テムのディスクドライブに挿入し、ディスクに保管された一のソフトウェアを、コンピュ
ータシステムへとインストールすることができる。最近では、コンピュータネットワーク
が、ソフトウェア配信のための、別のチャネルを提供する。ユーザは、別の、遠隔のコン
ピュータシステム（例えば、サーバ）から、コンピュータネットワーク（例えば、インタ
ーネット）を通じて、一のソフトウェアを、自らのコンピュータシステム（例えば、クラ
イアント）へとダウンロードすることができる。ネットワークを通じてダウンロードされ
たファイルは、一のソフトウェアが組み込まれた、インストールスイート、スクリプト又
は実行ファイルであることが多い。ユーザは、コンピュータシステムのハードドライブの
、永続的な場所か、又は一時的なディレクトリに、ダウンロードしたファイルを保存する
ことができる。そして、ユーザは、保存されたファイルを実行し、コンピュータシステム
に、一のソフトウェアをインストールすることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
コンピュータネットワークを通じてダウンロードしたソフトウェアプログラムを、ソフ
トウェアを実行するために、コンピュータシステムのハードドライブに保存し、又はイン
ストールすることは、時に、不都合で、煩わしいことがある。
【０００４】
そこで、本発明のある特定の実施形態において、実行可能なコードオブジェクトを、マ
ルチメディアデータのようなデータストリームへと埋め込む方法を提供することを目的と
する。
【課題を解決するための手段】
【０００５】
特定の実施形態において、方法は：
第一のコンピュータシステムが、第二のコンピュータシステムから、ダウンロード可能なソフトウェアプログラムを特定するＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）を含むソフトウェアスタブを受信する段階と；
前記第一のコンピュータシステムが、受信した前記ソフトウェアスタブをインストールする段階と；
前記ソフトウェアスタブが、前記ＵＲＩを含む要求であって、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードについての前記要求を送信する段階と； 
前記第一のコンピュータシステムと前記第二のコンピュータシステムとの間のネットワーク接続を通じて、前記第一のコンピュータシステムの前記ソフトウェアスタブが、前記第二のコンピュータシステムから送信されたデータストリームにおける前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを受信する段階であって、前記データストリームは、ソフトウェアプログラムの実行可能なコードを含む、段階と；
前記第一のコンピュータシステムが、前記データストリームから、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを抽出する段階と；
前記第一のコンピュータシステムが、動的メモリを、前記ダウンロード可能なソフトウェアプログラムの前記実行可能なコードに割り当てる段階と；
前記第一のコンピュータシステムが、前記データストリームから抽出された前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを、割り当てられた前記動的メモリへと直接ロードし、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードは、前記第一のコンピュータシステムの永続的なストレージに保管またはインストールされない、段階と；
前記第一のコンピュータシステムが、割り当てられた前記動的メモリにロードされた、前記ダウンロード可能なソフトウェアプログラムの前記実行可能なコードを起動することにより、前記ダウンロード可能なソフトウェアプログラムを実行する段階と；を含む。
【０００６】
本開示の、これらの特徴、態様及び利点及び他の特徴、態様及び利点は、以下の詳細な
説明中で、次の図面とともに、より詳細に説明される。
【図面の簡単な説明】
【０００７】
【図１】クライアントで実行するために、サーバからクライアントへ、一のコンピュータソフトウェアを提供する例示的な方法を表す図。
【図２】例示的なネットワーク環境を表す図。
【図３】例示的なコンピュータシステムを表す図。
【発明を実施するための形態】
【０００８】
本開示は、いくつかの実施形態への参照とともに、添付される図面を用いて説明される
。以下の説明において、本開示の完全な理解を提供するために、多数の特定の詳細につい
て説明される。しかしながら、当業者にとって、本開示が、これらの特定の詳細のいくつ
か又は全てがなくとも実行可能であることは、明らかである。他の例において、既知の処
理ステップ及び／又は構造は、本開示を不要に曖昧としないよう、詳細には説明されない
。さらに、本開示は、特定の実施形態に関して説明されるが、かかる説明は、説明される
実施形態への開示を限定することを意図していない。一方で、かかる説明は、添付される
クレームによって定義される開示の精神及び範囲に含まれ得る、代替、修正及び均等物を
カバーすることを意図している。
【０００９】
コンピュータソフトウェアは、コンピュータネットワーク（例えば、インターネット）
を通じて、あるコンピュータシステムから、別のコンピュータシステムへと、配信され得
る。実際に、多くのソフトウェア開発者、製造者及び配信者は、ソフトウェア配信のため
に、コンピュータネットワークが、便利で、高速で、コストパフォーマンスの高いチャネ
ルであると考えている。例えば、ユーザは、企業のウェブサイトから、企業によって開発
された、一のコンピュータソフトウェアの最新バージョンを、ダウンロードすることがで
きる。典型的なシナリオにおいて、ユーザは、自らのコンピュータシステムで実行される
ウェブブラウザで、一のソフトウェアへのダウンロードリンクを含むウェブページを読み
込み、ウェブページ内で提供されるダウンロードリンクをクリックすることができる。こ
れにより、ファイルが、ユーザのコンピュータシステムへとダウンロードされる。このフ
ァイルは、インストールスクリプト、実行ファイル又はソフトウェア本体の実行可能なコ
ードであり得る。ユーザは、自らのコンピュータシステムのハードドライブに、そのファ
イルを保存することができる。そのファイルが、インストールスクリプト又は実行ファイ
ルである場合には、ユーザは、ダウンロードしたファイルを実行して、自らのコンピュー
タシステムに、ソフトウェアをインストールすることができる。一方で、そのファイルが
ソフトウェアの実行可能なコードである場合には、ユーザは、直接、ソフトウェアを実行
することができる（例えば、実行可能なファイルをダブルクリックすることにより）。
【００１０】
コンピュータネットワークを通じてダウンロードしたソフトウェアプログラムを、ソフ
トウェアを実行するために、コンピュータシステムのハードドライブに保存し、又はイン
ストールする必要があることは、時に、不都合で、煩わしいことがある。例えば、第一に
、ハードドライブへダウンロードしたファイルを保管すること、および、コンピュータシ
ステムにソフトウェアをインストールすることは、たびたび、時間がかかる。そして、一
のソフトウェアのサイズが大きい場合には（例えば、Adobe社のPDF  Reader（登録商標）
）、インストール処理に、顕著に時間がかかる可能性がある。コンピュータシステムのユ
ーザは、ダウンロードしたソフトウェアを実行する前に、いくつかのステップ（例えば、
インストール、セットアップ等）を踏む必要がある。第二に、ファイルをハードドライブ
に保存し、ソフトウェアをコンピュータシステムにインストールすることは、コンピュー
タシステムのストレージ容量（例えば、ハードドライブ空間）を使い果たす。時に、コン
ピュータシステム（例えば、ネットブック又はノートブックコンピュータ）は、ユーザが
コンピュータシステムにインストールしたいと思っているソフトウェアの全てに対して、
十分なストレージ空間を有していないことがある。第三に、ソフトウェア開発者は、時々
、ソフトウェアを更新し、そのソフトウェアの新しいバージョンをリリースし得る。一の
ソフトウェアの新しいバージョンは、通常、古いバージョンより、よりよい品質である。
従って、ユーザは、ソフトウェアを適度に最新に保ちたいと考え得る。しかしながら、一
のソフトウェアを更新するために、ユーザは、現在、自らのコンピュータシステムにイン
ストールされている古いバージョンのソフトウェアをアンインストールしてから、新しい
バージョンのものをダウンロードし、インストールする必要がある。
【００１１】
これらの問題のいくつかに対処する目的で、特定の実施形態では、あるコンピュータシ
ステム（例えば、クライアント）のユーザは、ユーザのコンピュータシステムの永続的な
ストレージ（例えば、ハードドライブ）へ、ダウンロードしたソフトウェアプログラムを
保管し、あるいはインストールする必要なく、ユーザのコンピュータでの実行を行うため
に、コンピュータネットワーク（例えば、インターネット）を通じて、別のコンピュータ
システム（例えば、サーバ）から、コンピュータソフトウェアプログラムをダウンロード
することができる。明確化のために、以後、ソフトウェアをダウンロードし、そのソフト
ウェアが実行されるコンピュータシステムを、「クライアント」と呼び、ソフトウェアが
ダウンロードされるコンピュータシステムを、「サーバ」と呼ぶ。しかしながら、当業者
は、以下でより詳細に説明される実施形態が、あらゆる二つのコンピュータシステム（例
えば、二つのサーバ、二つのクライアント、一つのサーバと一つのクライアント）にうま
く適応可能であることを理解することができる。
【００１２】
特定の実施形態において、ここでは「ソフトウェアスタブ」又は、単に「スタブ」と呼
ばれる、ソフトウェアプログラムが、クライアントにインストールされ、実行され得る。
特定の実施形態において、スタブは、クライアントとサーバの間のネットワーク接続を確
立し、そのネットワーク接続を通じて、サーバからクライアントへ、コンピュータソフト
ウェアプログラムをダウンロードすることができる。特定の実施形態において、サーバか
らクライアントへダウンロードされた一のソフトウェアについての実行可能なコードは、
ネットワーク接続を通じて、サーバからクライアントへ送信される、データストリームの
中に組み込まれ得る。データストリームを受信すると、スタブは、一のソフトウェアの実
行可能なコードを抽出し、クライアントにおける実行のために、該コードを、クライアン
トのランダムアクセスメモリ（ＲＡＭ）に直接読込むことができる。一のソフトウェアは
、クライアントの如何なる永続的なストレージ（例えば、ハードドライブ）には保存され
ず、または、インストールされない。一のソフトウェアは、クライアントでのコードの実
行を終えると、一のソフトウェアが読込まれた実行可能なコードのＲＡＭ空間が開放され
、一のソフトウェアは、クライアント上の何処にも存在しなくなる。
【００１３】
特定の実施形態において、スタブは、クライアントに保管若しくはインストールされた
スタンドアロンのソフトウェアプログラムか、又は、クライアントにインストールされた
ウェブブラウザのプラグイン若しくはアドオンであってもよい。スタブは、コンピュータ
ソフトウェアプログラムを、個々のコンピュータシステムに配信するために適切な、既存
のあらゆる方法（例えば、ＣＤ、ＤＶＤ、ネットワークによるダウンロード等）を用いて
、クライアントに保管され、あるいはインストールされてもよい。特定の実施形態におい
て、スタブは、小さなソフトウェア（すなわち、サイズが小さい）であり得るため、クラ
イアントのストレージ容量を多く消費しない。スタブは、スタンドアロンのソフトウェア
プログラムである場合には、単独で実行され、プラグイン又はアドオンソフトウェアであ
る場合には、ウェブブラウザを通じて実行され得る。
【００１４】
コンピュータソフトウェアプログラムをダウンロードして、起動するために、クライア
ント上で、スタブを用いることにより、スタブのみが、クライアント上に、永続的に保存
され、あるいはインストールされる必要がある。他のソフトウェアは、クライアント上で
、保管され、あるいはインストールされる必要なく、ダウンロードされ、起動され得る。
このことは、クライアントで使用されるストレージ容量を減少させ得る。さらに、一のソ
フトウェアは、その実行の直前に、クライアント上にダウンロードされる。そのため、特
定の実施形態は、そのソフトウェアがダウンロードされ、起動されるたびに、そのソフト
ウェアの最新のバージョン（又は、いかなる所望のバージョン）を提供することを容易に
する。
【００１５】
図１は、クライアント上で永続的にコンピュータソフトウェアを保管し、又はインスト
ールすることなく、クライアントの実行可能なメモリへと直接インストールして、クライ
アント上で実行するための、サーバからクライアントへの、例示的なコンピュータプログ
ラムのダウンロード方法を示す。特定の実施形態において、図１に示されるステップは、
クライアント上で実行されるスタブによって、実行され得る。特定の実施形態において、
スタブは、図１に示されるステップを実行可能なように、スタンドアロンのアプリケーシ
ョンか、又は、クライアントにインストールされたウェブブラウザのプラグイン若しくは
アドオンとして、実行され得る。特定の実施形態において、ダウンロードされているソフ
トウェアプログラムは、アプリケーションプログラムである。
【００１６】
ステップ１００において示されるように、特定の実施形態は、クライアントとサーバの
間のネットワーク接続を確立することができる。ネットワーク接続は、コンピュータネッ
トワークに接続された、二つのコンピュータシステムの間で、適切なハンドシェイクを行
う方法により、確立され得る。例えば、クライアント上で実行中のスタブは、サーバに接
続要求を送信する。そして、サーバは、接続要求を受信すると、その接続要求が受け入れ
られたか、拒否されたかを示す、応答を送信することができる。サーバが接続要求を受け
入れると、特定の実施形態は、これに応じて、クライアントとサーバとの間のネットワー
ク接続を確立することができる。
【００１７】
特定の実施形態において、クライアント上で実行中のスタブによって、サーバからクラ
イアントへとダウンロードされた各ソフトウェアプログラムは、固有の識別子によって、
識別され得る。この固有の識別子は、クライアントのスタブがダウンロードを所望するソ
フトウェアが何であるかを、サーバに通知するために用いられ得る。特定の実施形態にお
いて、ダウンロード可能な各ソフトウェアは、ネットワーク資源とみなすことができる。
従って、ダウンロード可能な特定のソフトウェアは、その固有のネットワークパス又はＵ
ＲＩ（Uniform  Resource  Identifier）によって、特定することができる。
【００１８】
特定の実施形態において、特定のソフトウェアをダウンロードする目的で、ネットワー
ク接続を確立するために、クライアントのユーザは、特定のソフトウェアの固有の識別子
（例えば、ＵＲＩ）を、スタブがスタンドアロンのアプリケーションである場合にはクラ
イアント上で実行中のスタブへ直接提供することができ、あるいは、プラグインとしての
スタブを有するウェブブラウザへ提供することができる。このプロセスは、ウェブページ
のＵＲＬ（Uniform  Resource  Locator）をウェブブラウザへ提供することによって、ウ
ェブページを要求することに、とても似ている。例えば、ユーザは、ビデオデータストリ
ームに対応するＵＲＬをクリックすることができる。それにより、プラグインは、ＵＲＬ
を受け取り、以下に示される処理フローを開始する。スタブは、ユーザが要求している特
定のソフトウェアの識別子に基づいて（例えば、要求されているソフトウェアのＵＲＩを
、サーバのＩＰアドレスとマッピングすることにより）、ネットワーク接続がどの特定の
サーバに対して確立されるべきかを決定する。特定の実施形態において、スタブは、ユー
ザが、ソフトウェアを都合よく検索できるような、ソフトウェアの個々の識別子のブック
マークを可能とする、ユーザインターフェース（UI）を提供することができる。
【００１９】
特定の実施形態において、特定のサーバにネットワーク接続を要求するとき、スタブは
、ユーザが要求している特定のソフトウェアの固有の識別子を、接続要求とともに、ある
いは接続要求の一部として、サーバに送信することができる。サーバは、どの特定のソフ
トウェアを要求するクライアントに送信すべきかを決定することができる。その処理は、
ウェブブラウザを介して、（例えば、ウェブページに含まれた、ダウンロード可能なファ
イルへのＵＲＬ又はＵＲＩリンクをクリックすることにより）データストリームを呼び出
すことと類似し得る。
【００２０】
ステップ１０２において示されるように、特定の実施形態において、サーバは、データ
ストリームを、要求したクライアント、特に、要求したクライアント上で実行中のスタブ
に、送信することができる。ネットワーク接続は、ＴＣＰ（Transport  Control  Protoc
ol）接続、ＵＤＰ（User  Datagram  Protocol）接続又は他の適切な接続であってもよい
。特定の実施形態において、データストリームは、ビデオストリーム又はオーディオスト
リームであってもよい。特定の実施形態において、スタブによって要求された特定のソフ
トウェアは、一以上のデータパケットとして、データストリーム内に埋め込まれ得る。例
えば、ソフトウェアは、ビデオコーデックによりエンコードされたビデオストリームを受
信し、そのデータをデコードし、クライアントのディスプレイ上にビデオデータを描画す
る、ビデオデコーダであってもよい。
【００２１】
特定の実施形態において、要求されたソフトウェアの実行可能なコードは、データスト
リームの中に埋め込まれ得る。特定の実施形態において、要求されたソフトウェアの実行
可能なコードは、機械コード又はネイティブコードであってもよく、プラットフォーム依
存であってもよい。特定の実施形態において、要求されたソフトウェアの実行可能なコー
ドは、（例えば、クライアントのアーキテクチャとオペレーティングシステムに基づいて
）ソフトウェアを要求した、特定のクライアントのプラットフォームで実行するように、
コンパイルされている。
【００２２】
特定の実施形態において、データストリームは、二つの部分を含み得る。特定の実施形
態において、データストリームの第一の部分（すなわち、データストリームの最初の部分
）は、ソフトウェアの実行可能なコードを含み得る。特定の実施形態において、ソフトウ
ェアの実行可能なコードは、適切な圧縮方法を用いて、任意に圧縮され得る。例えば、zi
pやgzipのような、ロスレスの圧縮方法が、ソフトウェアの実行可能なコードを圧縮する
ために、用いられ得る。特定の実施形態において、ソフトウェアの実行可能なコードは、
ビデオストリーム内に埋め込まれ得る。ほとんどの種類のビデオストリームは、一般的な
コンテナの形式であるため、データ、特にソフトウェアの実行可能なコードは、そのよう
なビデオストリームの中に、埋め込まれ得る。特定の実施形態において、データストリー
ムの第一の部分は、ソフトウェアの実行可能なコードをロードして実行するために必要な
メモリ空間（例えば、ＲＡＭメモリ空間）のサイズを示すパラメータのような、操作上の
変数及びパラメータを、さらに含み得る。
【００２３】
特定の実施形態において、データストリームの第二の部分は、ソフトウェアの実行中に
、ソフトウェアによって使用され得る、追加のデータを任意に含んでもよい。特定の実施
形態において、追加のデータは、適切なエンコーディング方法又は圧縮方法を用いて、任
意に、エンコード又は圧縮され、一以上のデータパケットとして、送信され得る。再び、
データストリームがビデオストリームである場合には、追加のデータは、ＭＰＥＧエンコ
ーディングのような、ビデオエンコーディング方法を用いて、エンコードされ得る。
【００２４】
特定の実施形態において、データストリームを受信すると、スタブは、そのデータスト
リームの第一の部分にアクセスすることができ、埋め込まれたソフトウェアの実行可能な
コードを抽出する。必要であれば、スタブは、抽出された、ソフトウェアの実行可能なコ
ードをデコードし、あるいは展開してもよい。スタブによって用いられるデコーディング
方法又は展開方法は、ソフトウェアの実行可能なコードを送信するサーバによって用いら
れた、エンコーディング方法又は圧縮方法と対応し得る。例えば、ソフトウェアの実行可
能なコードが、適切な圧縮アルゴリズム（例えば、ロスレス圧縮アルゴリズム）を用いて
圧縮されている場合には、スタブは、対応する展開アルゴリズムを用いて、そのコードを
展開することができる。同様に、ソフトウェアの実行可能なコードが、適切なエンコーデ
ィングアルゴリズムを用いてエンコードされている場合には、スタブは、対応するデコー
ディングアルゴリズムを用いて、デコードし得る。さらに、特定の実施形態において、ス
タブは、データストリームの第一の部分にアクセスし、ソフトウェアの実行可能なコード
をロードし実行するために必要な、メモリ空間のサイズを示すパラメータを抽出すること
ができる。
【００２５】
ステップ１０４において示されるように、特定の実施形態において、クライアント上に
、認可されていない、あるいは悪意のあるソフトウェアがダウンロードされることを防止
するため、スタブは、適切な検証方法を用いて、データストリームの第一の部分から抽出
された、ソフトウェアの実行の可能なコードを検証することができる。特定の実施形態に
おいて、信頼されるソース（例えば、信頼されるサーバのドメイン名又はＩＰアドレス）
のホワイトリストが、スタブとともに提供され得る。ソフトウェアを受信すると、スタブ
は、ソフトウェアを送信するソース（例えば、サーバ又はウェブサイト）を、ホワイトリ
ストと比較することができる。ホワイトリストに載っている、信頼されるソースにより送
信されたソフトウェアのみが、クライアント上で実行され得る。ホワイトリストにないソ
ースから受信されたソフトウェアは、破棄され、あるいは検疫され得る。特定の実施形態
において、データストリームの第一の部分に埋め込まれた、ソフトウェアの実行可能なコ
ードは、署名され、デジタル証明書と関連付けられ得る。スタブは、関連付けられたデジ
タル証明書を用いて、ソフトウェアの実行可能なコードを検証することができる。
【００２６】
ソフトウェアの実行可能なコードが有効でない場合には（ステップ１０６で「ＮＯ」）
、ソフトウェアの実行可能なコードは、クライアント上で起動されず、破棄され得る。一
方で、ソフトウェアの実行可能なコードが有効である場合には（ステップ１０６で「はい
」）、ステップ１０８に示されるように、特定の実施形態において、スタブが、ソフトウ
ェアの実行可能なコードをロードし、実行するために、十分な量のメモリを割り当てるこ
とができる。特定の実施形態において、割り当てられたメモリ量は、データストリームの
第一の部分に含まれる変数によって示される、ソフトウェアの実行可能なコードをロード
して実行するために必要な、メモリ空間のサイズより小さくなってはならない。特定の実
施形態において、割り当てられたメモリは、クライアントの動的なメモリ、仮想メモリ又
はＲＡＭであってもよい。
【００２７】
ほとんどのオペレーティングシステムは、アプリケーションプログラムが、動的にメモ
リを割り当て、開放することのできる、ライブラリ関数を提供し、実行時に、メモリに関
連する他の種類の関数を実行する。特定の実施形態において、スタブは、クライアントの
オペレーティングシステムによって提供される、適切なライブラリ関数を起動することが
でき、ソフトウェアの実行可能なコードの、必要なメモリ空間を割り当てる。例えば、「
malloc()」は、動的にメモリ空間を確保するための、Ｃ言語及びＣ＋＋言語の標準ライブ
ラリ関数である。マイクロソフト社のWindows（登録商標）プラットフォームにおいて、
「VirtualAlloc()」は、仮想アドレス空間において、ページのある領域を予約するための
Ｗｉｎ３２ライブラリ関数である。一度メモリが割り当てられると、スタブは、割り当て
られたメモリ空間に対して、「実行可能」のフラグをセットするために、適切なライブラ
リ関数を起動することができる。そのフラグは、割り当てられたメモリの中に保管される
データが、実行可能なコードであるということを、オペレーティングシステムに示す。例
えば、マイクロソフト社のWindows（登録商標）プラットフォームでは、オペレーティン
グシステムに、読み込み、書き込み、実行の権限を有する、十分な量の仮想メモリを要求
するために、「PAGE-EXECUTE-READWRITE」フラグを特定することができる。
【００２８】
ステップ１１０において示されるように、特定の実施形態において、スタブは、ソフト
ウェアの実行可能なコードを、クライアントのハードドライブ上に保存する必要なく、割
り当てられたメモリへと、直接にロードすることができる。特定の実施形態において、ス
タブは、ソフトウェアの実行可能なコードを表すバイナリデータを、割り当てられた動的
なメモリ空間へと直接にコピーするために、クライアントのオペレーティングシステムに
よって提供される、適切なライブラリ関数を起動することができる。例えば、「memcpy（
）」は、一のメモリ領域から別のメモリ領域へとデータをコピーするための、Ｃ言語及び
Ｃ＋＋言語の、標準ライブラリ関数である。
【００２９】
特定の実施形態において、スタブは、割り当てられたメモリの中にロードされた、ソフ
トウェアの実行可能なコードに関する情報を含むための、分岐テーブル（又はジャンプテ
ーブルとも呼ばれる）をさらに調整することができる。かかる処理は、「フィックスアッ
プ（ｆｉｘ−ｕｐ）」処理と呼ばれる。分岐テーブルは、プログラムの制御を、プログラ
ムのある部分から別の部分へ、又は、あるプログラムから別のプログラムへ、転送する効
率的な方法である。適切な分岐テーブルのエントリを調整することにより、オペレーショ
ンシステムは、現在、割り当てられたメモリにロードされたソフトウェアの実行可能なコ
ードを知ることができる。
【００３０】
フィックスアップ処理の間に実行される実際のステップは、コンピュータシステムのプ
ラットフォーム又はOSによって異なる可能性がある。例えば、マイクロソフト社のWindow
s（登録商標）プラットフォームでは、実行可能な形式は、典型的に、再配置（relocatio
n）テーブルとインポートテーブルを含む。一般に、実行可能なコードは、固定されたア
ドレスへロードされることを前提に、リンクされる。実行可能なコードを異なるアドレス
へロードするために、実行可能なコードによって使用される絶対アドレスの全てが検出さ
れ、ベースのアドレス内での変更に応じるよう、「フィックスアップ」される。
このことは、再配置テーブルを用いることで、達成され得る。特定の実施形態において、
実行可能なコードがロードされたとき、全ての絶対アドレスがフィックスアップされるよ
うに、再配置テーブルは、実行可能なコードの中の、全ての絶対アドレスのリストを編集
する。インポートテーブルは、実行可能なコードが呼び出す可能性のある全てのルーチン
の絶対アドレスをリストする。これにより、ＡＰＩルーチンと、他のダイナミックリンク
ライブラリ（ＤＬＬ）の中のルーチンの両方を含むことができる。これらのインポートア
ドレスは、現在のプロセスについてのアドレス空間内の、ルーチンの実際のアドレスで置
き換えられる。インポートテーブルは、実行可能なコードの中の、それらのアドレスの位
置のリストである（アドレスは、ジャンプテーブル又はトランポリン領域内に存在し得る
が、間接呼び出しのためのデータのリストでもあり得る）。
【００３１】
特定の実施形態は、マイクロソフト社のWindows（登録商標）オペレーティングシステ
ムにおいて使用される、実行可能ファイル、オブジェクトコード及びＤＬＬのための一つ
のファイルフォーマットである、ＰＥ（Portable  Executable）フォーマットを活用する
。ＰＥフォーマットは、オペレーティングシステムのソフトウェアアーキテクチャの多数
の環境において、幅広い用途を有する。一般に、ＰＥフォーマットは、ラップされた実行
可能なコードを管理するための、マイクロソフト社のWindows（登録商標）オペレーショ
ンシステムローダのために必要な情報をカプセル化する、データ構造である。特定の実施
形態は、ＰＥフォーマットを用いて、ソフトウェアの実行可能なコードをコンパイルし、
保存することができる。
【００３２】
ステップ１１２において示されるように、特定の実施形態において、ソフトウェアは、
クライアント上で実行され得る。特定の実施形態において、ソフトウェアの実行可能なコ
ードは、自身が保管される、割り当てられた動的なメモリから、直接に起動され得る。特
定の実施形態において、スタブは、割り当てられたメモリ内にロードされたソフトウェア
の実行可能なコードに、実行を開始させることができる。したがって、スタブは、その実
行を、ソフトウェアへと移すことができる。
【００３３】
１１４において示されるように、特定の実施形態において、スタブは、ソケット、より
正確には、クライアントとサーバ間のネットワーク接続と関連付けられた、インターネッ
トソケット又はネットワークソケットを、クライアント上で現在実行されているソフトウ
ェアに、渡す（pass）ことができる。ネットワークソケットは、入ってくるデータパケッ
トを、適切なアプリケーションプロセス又はスレッドに、伝達するためのメカニズムを構
成する。データストリームと関連付けられたネットワークソケットをソフトウェアに渡す
ことにより、ソフトウェアは、データストリームの第二の部分の中の追加のデータを含む
、追加のデータパケットを、受け取ることができる。ソフトウェアは、データストリーム
の第二の部分に含まれる追加のデータを使う（例えば、処理する）ことができる。特定の
実施形態において、スタブは、クライアントのオペレーティングシステムによって提供さ
れる、適切なライブラリ関数を呼び出し、ネットワークソケットを、現在実行中のソフト
ウェアに渡すことができる。例えば、Ｗｉｎｓｏｃｋとも呼ばれる，Windows（登録商標
）ソケットアプリケーションプログラミングインターフェース（ＡＰＩ）では、ネットワ
ークソケットは、「WSADuplicateSocket()」関数により、一のプロセスから別のプロセス
へ、渡され得る。
【００３４】
ソフトウェアプログラムは、完了するまで、その実行を継続することができる。特定の
実施形態において、ソフトウェアプログラムが、その実行を完了すると（すなわち、終了
すると）、ソフトウェアの実行可能なコードをロードするために使用されていた動的なメ
モリ空間は、（例えば、クライアントのオペレーティングシステムにより）開放され得る
。後に、かかるメモリ空間は、他の目的のために使用され得る。他のデータは、そのメモ
リ空間にロードされ、ソフトウェアプログラムの実行可能なコードを上書きする。この点
において、ソフトウェアプログラムは、クライアントへあらゆる状態の変更（例えば、ド
ライブ上のファイル、システムのレジストリの変更等）を加えることなく、クライアント
上に存在しないものとなる。なぜならば、ソフトウェアプログラムは、スタブ２３２によ
って、メモリに直接にインストールされており、いくつかの実施形態における、ブラウザ
キャッシュ又は他の一時的なデータ記憶方式を含む、クライアント上の永続的な媒体には
、保管されていないためである。
【００３５】
ユーザのプリファレンス、設定、及びダウンロードされた、データストリームからの実
行可能なコードのモジュールそのもののような、様々な状態やアプリケーションデータの
キャッシュを可能にするために、スタブ２３０は、リソースフォークを介して、自らのフ
ァイルコンテナの中に、そのようなデータを保管することができる。この方式により、ス
タブ２３２は、複数のシステムにわたって、完全にポータブルとなる。例えば、スタブの
既知のインスタンス（ファイルコンテナを含む）は、電子メールに添付され、又は、ＵＳ
Ｂドライブにロード等されて、別のシステムへと移転させられ得る。
【００３６】
いくつかの実装において、ストリームに埋め込まれ、スタブ２３２によって起動される
、第一の実行可能なコードオブジェクトは、それ自身が、第二の実行可能なコードオブジ
ェクトを含む、別のデータストリームを要求することによって、別のプロセスを生成させ
ることができる。第二の実行可能なコードは、第一のコードのオブジェクトの子プロセス
として、起動され、第一の実行可能なコードオブジェクトにより生成された、同一のサン
ドボックスのファイルシステムを共有することができる。例えば、第一の実行可能なコー
ドオブジェクトは、仮想マシンであり、該コードオブジェクトは、一以上の第二の実行可
能なコードオブジェクトを、メモリ内で、かつ、第一の仮想マシンのコードオブジェクト
によるサンドボックスの中で、完全に実行させることができる。特定の実装において、例
えば、第二のコードオブジェクトによるデータ記憶サブシステムへの書き込みは、仮想マ
シンによって、メモリへとなされ、ユーザがクライアント２３０からログオフした場合に
分析され得る、周辺機器にはなされない。例えば、この実施形態は、ソフトウェアのデモ
版を準備するために用いられ得る。第一の実行可能なコードオブジェクトが、デモ又はテ
ストされる第二のプログラムのサンドボックスを提供する仮想マシンであり得るためであ
る。上述したように、第一及び第二のコードオブジェクトが終了したとき、メモリ内のそ
れらの全ての形跡は消去される。上述の実施形態は、一般的に、アプリケーションの実行
中にキャッシュされるデータへの、認可されないアクセスを防ぐためにも、用いられ得る
。
【００３７】
特定の実施形態は、ネットワーク環境において、実装され得る。図２は、例示的なネッ
トワーク環境２００を示す。ネットワーク環境２００は、一以上のサーバ２２０と、一以
上のクライアント２３０とを、互いに接続するネットワーク２１０を含む。特定の実施形
態において、ネットワーク２１０は、イントラネット、エクストラネット、仮想プライベ
ートネットワーク（ＶＰＮ）、ローカルエリアネットワーク（ＬＡＮ）、無線ＬＡＮ（Ｗ
ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトロポリタンエラアネットワーク（
ＭＡＮ）、通信ネットワーク、衛星ネットワーク、インターネットの一部、別のネットワ
ーク２１０又はそのようなネットワーク２１０の二以上の組み合わせである。本開示は、
あらゆる適切なネットワーク２１０を意図している。
【００３８】
一以上のリンク２５０は、サーバ２２０又はクライアント２３０を、ネットワーク２１
０に接続する。特定の実施形態において、一以上のリンク２５０のそれぞれは、一以上の
、有線、無線又は光学のリンク２５０を含む。特定の実施形態において、一以上のリンク
２５０のそれぞれは、イントラネット、エクストラネット、ＶＰＮ、ＬＡＮ、ＷＬＡＮ、
ＷＡＮ、ＭＡＮ、通信ネットワーク、衛星ネットワーク、イントラネットの一部、別のリ
ンク２５０又はそのようなリンク２５０の二以上の組み合わせを含む。本開示は、サーバ
２２０とクライアント２３０をネットワーク２１０に接続する、あらゆる適切なリンク２
５０を意図している。
【００３９】
特定の実施形態において、各サーバ２２０は、集中型のサーバであるか、又は、複数の
コンピュータ又は複数のデータセンタにわたる、分散型のサーバであり得る。サーバ２２
０は、ウェブサーバ、ニュースサーバ、メールサーバ、メッセージサーバ、広告サーバ、
ファイルサーバ、アプリケーションサーバ、交換サーバ、データベースサーバ又はプロキ
シサーバのような、様々な種類のサーバであってもよい（但しこれに限られない）。特定
の実施形態において、各サーバ２２０は、サーバ２２０によって実現され、又はサポート
される、適切な機能を実行するために、ハードウェア、ソフトウェア若しくは組み込みロ
ジック部品又はそのような部品の二以上の組み合わせを含み得る。例えば、ウェブサーバ
は、一般に、ウェブページ又はウェブページの特定の要素を含む、ウェブサイトをホスト
することができる。より明確には、ウェブサーバは、ＨＴＭＬファイル又は他の種類のフ
ァイルをホストし、あるいは、要求に応じてファイルを動的に生成若しくは構成すること
ができ、クライアント２３０からのＨＴＴＰ要求又は他の要求に応じて、クライアントへ
それらのファイルを送信することができる。メールサーバは、一般に、電子メールサービ
スを、様々なクライアント２３０へ提供することができる。データベースサーバは、一般
に、一以上のデータストアに保管されたデータを管理するインターフェースを提供するこ
とができる。
【００４０】
特定の実施形態において、各クライアント２３０は、ハードウェア、ソフトウェア若し
くは組み込みロジック部品又はそのような部品の二以上の組み合わせを含む、電子デバイ
スであり、クライアント２３０によって実現され、あるいはサポートされる、適切な機能
を実行することができる。例えば、クライアント２３０は、デスクトップコンピュータシ
ステム、ノートブックコンピュータシステム、ネットブックコンピュータシステム、ハン
ドヘルド電子デバイス又は携帯電話であり得るが、これに限られない。クライアント２３
０は、クライアント２３０のネットワークユーザが、ネットワーク２１０にアクセスする
ことを可能にする。クライアント２３０は、マイクロソフトインターネットエクスプロー
ラ又はMozilla  Firefoxのようなウェブブラウザを有し、Googleツールバー又はYahooツ
ールバーのような、一以上のアドオン、プラグイン又は他の拡張を有し得る。クライアン
ト２３０は、そのユーザが、他のクライアント２３０の他のユーザとやりとりすることを
可能にする。本開示は、あらゆる適切なクライアント２３０を意図している。
【００４１】
特定の実施形態において、一以上のデータ記憶装置２４０が、一以上のリンク２５０を
通じて、一以上のサーバ２２０と、通信でリンクされ得る。特定の実施形態において、デ
ータ記憶装置２４０は、様々な種類の情報を保管するために用いられ得る。特定の実施形
態において、データ記憶装置２４０に保管される情報は、特定のデータ構造に従って、組
織化される。いくつかの特定の実施形態は、サーバ２２０又はクライアント２３０に、デ
ータ記憶装置２４０に格納される情報を管理（例えば、検索、修正、追加又は削除）させ
る、インターフェースを提供することができる。
【００４２】
特定の実施形態において、スタブ２３２は、クライアント２３０上でインストールされ
、実行され得る。特定の実施形態では、スタブ２３２は、スタンドアロンのソフトウェア
プログラムであるか、又は、クライアント２３０上でインストールされて実行される、ウ
ェブブラウザのような他のソフトウェアプログラムへのプラグイン若しくはアドオンであ
ってもよい。スタブ２３２は、クライアント２３０上で実行されるとき、図１に示される
ステップを実行することができる。特定の実施形態において、スタブ２３２は、データス
トリームに埋め込まれた、ソフトウェアプログラムの実行可能なコードを展開するための
、一以上の追加のモジュールを含み得る。別の実施例において、展開モジュールは、その
ものがデータストリーム内で符号化されており、データストリームの中に埋め込まれた、
一以上の追加のコードモジュールを展開するために、スタブ２３２によって起動されても
よい。
【００４３】
さらに、特定の実施形態では、データストリーム内に埋め込まれた、実行可能なコード
モジュールが、例えばデバイス種別、ハードウェア能力、表示モード、周辺機器、グラフ
ィックアクセラレータの能力等のような、一以上のクライアント２３０の属性に基づいて
、動的に決定することができる。例えば、異なった実行可能なコードモジュールが、デー
タストリーム内に埋め込まれていてもよく、異なるクライアントに、同一のメディアスト
リームを使用させることができる。
【００４４】
特定の実施形態は、ハードウェア、ソフトウェア又はハードウェアとソフトウェアの組
み合わせとして、実装され得る。例えば、一以上のコンピュータシステムは、特定のロジ
ック又はソフトウェアを実行することができ、ここで記述され、あるいは説明された、一
以上のプロセスについての、一以上のステップを実行する（但しこれに制限されない）。
一以上のコンピュータシステムは、集中型か、あるいは適切な場所にある複数のコンピュ
ータシステム又は複数のデータセンタを結ぶ、分散型であってもよい。本明細書は、あら
ゆる適切なコンピュータシステムを意図している。特定の実施形態において、ここで記述
され、あるいは説明された、一以上のプロセスについての、一以上のステップの実行は、
必ずしも、一以上の特定の地理的な場所に限定される必要は無く、また、必ずしも、時間
的に限定される必要は無い。例として、一以上のコンピュータシステムは、リアルタイム
、オフライン、バッチモード、又は、それらの適切な組み合わせで、機能を実行すること
ができる（但しこれに制限されない）。一以上のコンピュータシステムは、異なる時間に
、異なる場所で、必要に応じて、異なる処理を用いて、一以上の機能の一部を実行するこ
とができる。ここで、ロジックとは、ソフトウェアを包含し、適切な場合には、その逆も
成り立つ。ソフトウェアとは、一以上のコンピュータプログラムを包含し、必要に応じて
、その逆も成り立つ。ソフトウェアとは、データ、命令又はその両方を包含し、必要に応
じて、その逆も成り立つ。同様に、データとは、命令を包含し、必要に応じて、その逆も
成り立つ。
【００４５】
一以上のコンピュータ読取可能な記憶媒体は、特定の実施形態を実現するソフトウェア
を保管するか、別の方法でそのようなソフトウェアを具体化し得る。コンピュータ読取可
能な媒体は、必要に応じて、ソフトウェアを、運び、通信し、包含し、収容し、維持し、
伝播し、保持し、保管し、送信し、輸送し、あるいは別の方法で具体化することができる
、あらゆる媒体であってもよい。コンピュータ読取可能な媒体は、生物学的、化学的、電
子、電磁気、赤外線、磁気、光学、量子若しくは他の適切な媒体又はそのような媒体の二
以上の組み合わせであってもよい。コンピュータ読取可能な媒体は、一以上のナノメート
ル規模の部品を含むか、あるいは、ナノメートル規模の設計又は製造を具体化し得る。例
示的なコンピュータ読取可能な記憶媒体は、コンパクトディスク（ＣＤ）、ＦＰＧＡ（fi
eld-progＲＡＭmable  gate  arrays）、フロッピーディスク、フロプティカル（floptic
al）ディスク、ハードディスク、ホログラフィック記憶装置、（ＡＳＩＣ（application-
specific  integrated  circuits）のような）集積回路（ＩＣ）、磁気テープ、キャッシ
ュ、プログラマブルロジックデバイス（ＰＬＤ）、ランダムアクセスメモリ（ＲＡＭ）、
リードオンリーメモリ（ＲＯＭ）、半導体メモリ及び他の適切なコンピュータ読取可能な
記憶媒体を含むが、これに限られない。
【００４６】
特定の実施形態を実現するソフトウェアは、あらゆる適切な（手続き型又はオブジェク
ト指向の）プログラミング言語で記述され、あるいは、必要に応じて、複数のプログラミ
ング言語の組み合わせによって記述される。（シングルプロセッサ又はマルチプロセッサ
のコンピュータシステムのような）適切な種類のコンピュータシステム又は複数のシステ
ムは、必要に応じて、特定の実施形態を実現するソフトウェアを実行することができる。
汎用のコンピュータシステムは、必要に応じて、特定の実施形態を実現するソフトウェア
を実行することができる。
【００４７】
例えば、図３は、特定の実施形態の一以上の部品を実現するために適する、例示的名コ
ンピュータシステム３００を示している。本明細書は、ある特定の構成において、特定の
部品を有する、特定のコンピュータシステム３００を記述し、説明するが、本明細書は、
あらゆる適切な構成おいて、あらゆる適切な部品を有する、あらゆる適切なコンピュータ
システムを意図する。さらに、コンピュータシステム３００は、例えば、一以上の集積回
路（ＩＣ）、一以上のプリント基板（ＰＣＢ）、（携帯電話又はＰＤＡのような）一以上
のハンドヘルドデバイス若しくは他のデバイス、一以上のＰＣ又は一以上のスーパーコン
ピュータのような、適切な物理的な形状をとり得る。
【００４８】
システムバス３１０は、コンピュータシステム３００のサブシステムを、互いに接続す
る。ここでのバスとは、共通の機能を提供する、一以上のデジタル信号線を包含する。本
明細書は、適切なバスアーキテクチャを有する、（一以上のメモリバス、一以上の周辺バ
ス、一以上のローカルバス又はそれらの組み合わせのような）あらゆる適切なバスアーキ
テクチャを含む、あらゆる適切なシステムバス３１０を意図する。例示的なバスアーキテ
クチャは、ＩＳＡ（Industry  Standard  Architecture）バス、ＥＩＳＡ（Enhanced  IS
A）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、ビデオエレクトロニクスス
タンダーズアソシエーションバス（ＶＬＢ）、ＰＣＩ（Peripheral  Component  Interco
nnect）バス、ＰＣＩエクスプレス（ＰＣＩ−Ｘ）バス、ＡＧＰ（Accelerated  Graphics
Port）バスを含むが、これに限られない。
【００４９】
コンピュータシステム３００は、一以上のプロセッサ３２０（又は中央処理装置（ＣＰ
Ｕ））を含む。プロセッサ３２０は、命令、データ又はコンピュータのアドレスの、一時
的なローカルでの記憶のための、キャッシュ３２２を含み得る。プロセッサ３２０は、メ
モリ３３０を含む、一以上の記憶装置と接続される。メモリ３３０は、ランダムアクセス
メモリ（ＲＡＭ）３３２と、リードオンリーメモリ（ＲＯＭ）３３４とを含み得る。デー
タと命令は、プロセッサ３２０とＲＡＭ３３２との間で、双方向にデータを転送し得る。
データと命令は、ＲＯＭ３３４からプロセッサ３２０へ、一方向に、データを転送し得る
。ＲＡＭ３３２とＲＯＭ３３４は、あらゆる適切なコンピュータ読取可能な記憶媒体を含
み得る。
【００５０】
コンピュータシステム３００は、プロセッサ３２０へ、双方向に接続された、固定記憶
装置３４０を含む。固定記憶装置３４０は、記憶装置制御ユニット３５２を介して、プロ
セッサ３２０と接続され得る。固定記憶装置３４０は、追加のデータ記憶容量を提供する
ことができ、あらゆる適切なコンピュータ読取可能な媒体を含むことができる。固定記憶
装置３４０は、オペレーティングシステム（ＯＳ）３４２、一以上の実行可能ファイル３
４４、一以上のアプリケーション又はプログラム３４６、データ３４８等を保管すること
ができる。固定記憶装置３４０は、一般的に、一次記憶装置より低速な、（ハードディス
クのような）二次記憶媒体である。適切な場合には、固定記憶装置３４０に保管される情
報は、仮想メモリとして、メモリ３３０に結合され得る。
【００５１】
プロセッサ３２０は、例えば、グラフィックスコントロール３５４、ビデオインターフ
ェース３５８、入力インターフェース３６０、出力インターフェース３６２及び記憶装置
インターフェース３６４のような、様々なインターフェースへと接続され得る。それらは
、それぞれ、順に、適切な装置へと接続され得る、例示的な入力装置又は出力装置は、ビ
デオディスプレイ、トラックボール、マウス、キーボード、マイク、タッチディスプレイ
、トランスデューサカードリーダ、磁気テープ又は紙テープリーダ、タブレット、スタイ
ラス、音声又は手書き認識装置、バイオメトリクスリーダ又はコンピュータシステムを含
むが、これに限られない。ネットワークインターフェース３５６は、プロセッサ３２０を
、別のコンピュータシステム又はネットワーク３８０と接続し得る。ネットワークインタ
ーフェース３５６により、プロセッサ３２０は、特定の実施形態についてのステップを実
行する間に、ネットワーク３８０から情報を読み出し、ネットワーク３８０へ情報を送信
することができる。特定の実施形態は、プロセッサ３２０において、単独で実行し得る。
特定の実施形態は、プロセッサ３２０と、一以上のリモートプロセッサにおいて、ともに
実行し得る。
【００５２】
ネットワーク環境において、コンピュータシステム３００がネットワーク３８０に接続
されているとき、コンピュータシステム３００は、ネットワーク３８０に接続されている
、他の装置と通信することができる。コンピュータシステム３００は、ネットワークイン
ターフェース３５６を介して、ネットワーク３８０と通信することができる。例えば、コ
ンピュータシステム３００は、（別の装置からの要求又は応答のような）ネットワーク３
８０からの情報を、ネットワークインターフェース３５６で、一以上の着信パケットとし
て、受信することができる。そして、メモリ３３０は、後続の処理のために、その着信パ
ケットを保管することができる。コンピュータシステム３００は、（別の装置への要求又
は応答のような）情報を、ネットワークインターフェース３５６から、一以上の発信パケ
ットとして、ネットワーク３８０へ送信することができる。メモリ３３０は、送信に先立
って、これを保管することができる。プロセッサ３２０は、メモリ３３０の着信パケット
又は発信パケットにアクセスすることができ、必要に応じて、それを処理する。
【００５３】
コンピュータシステム３００は、一以上の入力装置３６６（キーパッド、キーボード、
マウス、スタイラスを含む）、一以上の出力装置３６８（一以上のディスプレイ、一以上
のスピーカ、一以上のプリンタ等を含む）、一以上の記憶装置３７０及び一以上の記憶媒
体３７２を有してもよい。入力装置３６６は、コンピュータシステム３００に外付けされ
ていてもよく、あるいは内蔵されていてもよい。出力装置３６８は、コンピュータシステ
ム３００に外付けされていてもよく、あるいは内蔵されていてもよい。記憶装置３７０は
、コンピュータシステム３００に外付けされていてもよく、あるいは内蔵されていてもよ
い。記憶媒体３７２は、コンピュータシステム３００に外付けされていてもよく、あるい
は内蔵されていてもよい。
【００５４】
特定の実施形態は、本明細書で記述され、説明された、一以上の処理についての、一以
上のステップを実行するソフトウェアを具体化する、一以上のコンピュータ読取可能な記
録媒体を含む、一以上のコンピュータ記憶製品（computer-storage  product）を含む。
特定の実施形態において、媒体、ソフトウェア又はその両方の、一以上の部品は、本明細
書で記述され、説明された、一以上の処理についての、一以上のステップを特に実行する
よう設計され、製造され得る。さらに、あるいは代替として、特定の実施形態において、
媒体、ソフトウェア又はその両方の、一以上の部品は、本明細書で記述され、説明された
処理専用の設計又は製造ではなく、一般的に利用可能なものであってもよい。例示的な、
コンピュータ読取可能な記憶媒体は、（ＣＤ−ＲＯＭのような）ＣＤ、ＦＰＧＡ、フロッ
ピーディスク、フロプティカルディスク、ハードディスク、ホログラフィック記憶装置、
（ＡＳＩＣのような）ＩＣ、磁気テープ、キャッシュ、ＰＤＬ、ＲＡＭ、ＲＯＭ、半導体
メモリ及び他の適切なコンピュータ読取可能な記憶媒体を含むが、これに限られない。特
定の実施形態において、ソフトウェアは、コンパイラが生成する機械語又はコンパイラが
インタプリタを用いて実行可能な高級コードを含む一以上のファイルであり得る。
【００５５】
例として、メモリ３３０は、ソフトウェアを具体化する、一以上のコンピュータ読取可
能な記憶媒体を含んでもよい。そして、コンピュータシステム３００は、プロセッサ３２
０がそのソフトウェアを実行した結果として、本明細書で記述され、あるいは説明された
、特定の機能を提供することができる。メモリ３３０は、そのソフトウェアを保管するこ
とができ、プロセッサ３２０は、そのソフトウェアを実行することができる。メモリ３３
０は、そのソフトウェアを具体化する大容量記憶装置３３０中の、コンピュータ読取可能
な記憶媒体から、あるいは、ネットワークインターフェース３５６を介して、一以上の他
のソースから、そのソフトウェアを読み出すことができる。ソフトウェアを実行するとき
、プロセッサ３２０は、本明細書で記述され、又は説明された、一以上の処理についての
、一以上のステップを実行することができる。その処理は、メモリ３３０内に、記憶のた
めの、一以上のデータ構造を定義する段階と、必要に応じて、そのソフトウェアの一以上
の部品によって指示される通りに、一以上のデータ構造を修正する段階とを含む。追加で
、あるいは代替として、コンピュータシステム３００は、本明細書で記述され、又は説明
された、特定の機能を、ハードウェアに組み込まれたロジックか、あるいは回路内に具体
化されたロジックの結果として、提供することができる。そのロジックは、ソフトウェア
の代わりに、あるいはソフトウェアとともに動作し、本明細書で記述され、又は説明され
た、一以上の処理についての、一以上のステップを実行する。本明細書は、必要に応じて
、ハードウェアとソフトウェアの適切な組み合わせを含む。
【００５６】
本明細書は、特定の順序で生ずる特定の演算について記述し、あるいは説明したが、あ
らゆる適切な順序で行われる、適切な演算を意図している。さらに、本明細書は、適切な
順序で、一回以上、繰り返される、適切な演算を意図している。本明細書は、順番に生ず
る特定の演算について記述し、あるいは説明したが、必要に応じて、略同時に行われる、
適切な演算を意図している。本明細書で記述され、あるいは説明される、あらゆる適切な
演算又は演算の連続は、中断され、一時停止され、あるいは、必要に応じて、オペレーテ
ィングシステム又はカーネルのような、他の処理によって制御され得る。かかる動作は、
オペレーティングシステム環境において動作し得る。あるいは、システム処理の全て又は
本質的な部分を占める独立した手順として動作し得る。
【００５７】
本明細書は、当業者が理解するであろう、例示的な本実施形態への全ての変更、置換、
バリエーション、代替又は改良を包含する。同様に、必要に応じて、添付されたクレーム
は、当業者が理解するであろう、例示的な本実施形態への全ての変更、置換、バリエーシ
ョン、代替又は改良を包含する。
【図１】
2014112397.tif 000003
【図２】
2014112397.tif 000004
【図３】
2014112397.tif 000005
【手続補正書】
【提出日】平成26年2月6日(2014.2.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第一のコンピュータのプロセッサが、第二のコンピュータのプロセッサにおけるストレージ、インストールおよび実行のためのソフトウェアスタブを構成する段階と、
前記第一のコンピュータが、前記ソフトウェアスタブを前記第二のコンピュータに送信する段階と
を備え、
前記ソフトウェアスタブが、
ネットワーク接続を通じて、前記第一のコンピュータおよび前記第二のコンピュータとは異なる第三のコンピュータから、少なくとも一つのソフトウェアプログラムの実行可能なコードを含むデータストリームを受信する段階と、
前記データストリームから前記少なくとも一つのソフトウェアプログラムの前記実行可能なコードを抽出する段階と、
前記データストリームから前記実行可能なコードに必要な動的メモリの量を決定する段階と、
前記第二のコンピュータに、前記少なくとも一つのソフトウェアプログラムの前記実行可能なコードのために動的メモリの特定量を割り当てさせる段階と、
割り当てられた前記動的メモリに、前記少なくとも一つのソフトウェアプログラムの前記実行可能なコードを、前記データストリームから直接ロードする段階と、
前記動的メモリから前記少なくとも一つのソフトウェアプログラムを実行する段階と
を有するように構成される、方法。
【請求項２】
ソフトウェアスタブを構成する段階は、
前記第一のコンピュータの前記プロセッサが、前記第二のコンピュータにおいて実行される前記少なくとも一つのソフトウェアプログラムの統一資源識別子（ＵＲＩ）を受信する前記ソフトウェアスタブを構成する段階をさらに備える、
請求項１に記載の方法。
【請求項３】
ＵＲＩを受信する前記ソフトウェアスタブを構成する段階は、
ユーザインターフェース（ＵＩ）が複数のソフトウェアプログラムの各個々の識別子をブックマークすることを促進するように、前記第一のコンピュータの前記プロセッサが、前記ユーザインターフェースを前記ソフトウェアスタブに関連付ける段階をさらに備え、
前記少なくとも一つのソフトウェアプログラムは、前記複数のソフトウェアプログラムを含み、受信された前記ＵＲＩはブックマークされた前記個々の識別子に含まれている、
請求項２に記載の方法。
【請求項４】
前記個々の識別子は、前記数のソフトウェアプログラムを提供するサーバの各インターネットプロトコル（ＩＰ）アドレスにマッピングされる、
請求項３に記載の方法。
【請求項５】
前記実行可能なコードは、前記少なくとも一つのソフトウェアプログラムの最新バージョンに関連付けされている、
請求項１に記載の方法。
【請求項６】
前記ソフトウェアスタブを構成する段階は、
前記少なくとも一つのソフトウェアプログラムの実行を終えると、前記少なくとも一つのソフトウェアプログラムが前記第二のコンピュータ上にもう存在しないように前記動的メモリを開放するよう、前記第一のコンピュータのプロセッサが前記ソフトウェアスタブを構成することをさらに含む、
請求項１に記載の方法。
【請求項７】
前記ソフトウェアスタブを構成する段階は、
リソースフォークを介して、前記ソフトウェアスタブのファイルコンテナ内の前記少なくとも一つのソフトウェアプログラムに関連付けされた、状態およびアプリケーションデータをキャッシュするよう、前記第一のコンピュータのプロセッサが前記ソフトウェアスタブを構成することをさらに含む、
請求項１に記載の方法。
【請求項８】
前記ソフトウェアスタブを構成する段階は、
前記少なくとも一つのソフトウェアプログラムが、前記データストリームの第二の部分に含まれる追加のデータを使うように、実行中に、前記データストリームに関連付けされたネットワークソケットを前記ソフトウェアプログラムに渡すよう、前記第一のコンピュータのプロセッサが前記ソフトウェアスタブを構成することをさらに含む、
請求項１に記載の方法。
【請求項９】
前記ソフトウェアスタブを構成する段階は、
第二の実行可能なコードオブジェクトを含む他のデータストリームを要求することにより、第一の実行可能なコードオブジェクトは第二のプロセスが生成されるように、前記データストリームに埋め込まれた第一の実行可能なコードを起動するよう、前記第一のコンピュータのプロセッサが前記ソフトウェアスタブを構成することをさらに含み、
前記第二の実行可能なコードオブジェクトは、
前記第一の実行可能なコードオブジェクトの子であり、
前記第一の実行可能なコードオブジェクトにより生成される同一のサンドボックスシステムを共有する、
請求項１に記載の方法。
【請求項１０】
前記ソフトウェアスタブを構成する段階は、
前記第二のコンピュータにおけるウェブブラウザにより実行されるプラグインとしての前記ソフトウェアスタブを、前記第一のコンピュータのプロセッサが構成することをさらに含む、
請求項１に記載の方法。
【請求項１１】
第一のコンピュータ装置であって、
前記第一のコンピュータ装置は、
メモリと、
前記メモリに接続される一以上のプロセッサと
を備え、
前記メモリは、前記一以上のプロセッサによって実行されるプログラムロジックを格納し、
前記プログラムロジックは、
前記一以上のプロセッサにより実行される、ソフトウェアスタブを構成する構成ロジックと、
前記一以上のプロセッサにより実行される、第二のコンピュータ装置に前記ソフトウェアスタブを送信する送信ロジックと
を有し、
前記ソフトウェアスタブは、
ネットワーク接続を通じて、前記第一のコンピュータ装置および前記第二のコンピュータ装置とは異なる第三のコンピュータ装置から、少なくとも一つのソフトウェアプログラムの実行可能なコードを含むデータストリームを受信する受信ロジックと、
前記データストリームから前記少なくとも一つのソフトウェアプログラムの前記実行可能なコードを抽出する抽出ロジックと、
前記データストリームから前記実行可能なコードに必要な動的メモリの量を決定する決定ロジックと、
前記第二のコンピュータ装置に、前記少なくとも一つのソフトウェアプログラムの前記実行可能なコードのために動的メモリの特定量を割り当てさせる割当ロジックと、
割り当てられた前記動的メモリに、前記少なくとも一つのソフトウェアプログラムの前記実行可能なコードを、前記データストリームから直接ロードするローディングロジックと、
前記動的メモリから前記少なくとも一つのソフトウェアプログラムを実行する実行ロジックと
を含む、装置。
【請求項１２】
前記ソフトウェアスタブの前記受信ロジックは、
前記第二のコンピュータ装置において実行される前記少なくとも一つのソフトウェアプログラムの統一資源識別子（ＵＲＩ）を受信するロジックと、
前記少なくとも一つのソフトウェアプログラムの前記統一資源識別子（ＵＲＩ）を含む要求を送信するロジックと
をさらに含む、
請求項１１に記載の装置。
【請求項１３】
前記構成ロジックは、
ユーザインターフェース（ＵＩ）が複数のソフトウェアプログラムの各個々の識別子をブックマークすることを促進するように、前記一以上のプロセッサによって実行される、前記ユーザインターフェースを前記ソフトウェアスタブに関連付ける関連付ロジックをさらに備え、
前記少なくとも一つのソフトウェアプログラムは、前記複数のソフトウェアプログラムを含み、受信された前記ＵＲＩはブックマークされた前記個々の識別子に含まれている、
請求項１２に記載の装置。
【請求項１４】
前記ソフトウェアスタブは、
前記少なくとも一つのソフトウェアプログラムの実行を終えると、前記少なくとも一つのソフトウェアプログラムが前記第二のコンピュータ装置上にもう存在しないように前記動的メモリを開放する、開放ロジックをさらに含む、
請求項１１に記載の装置。
【請求項１５】
前記ソフトウェアスタブは、
リソースフォークを介して、前記ソフトウェアスタブのファイルコンテナ内の前記少なくとも一つのソフトウェアプログラムに関連付けされた状態およびアプリケーションデータをキャッシュするキャッシュロジックをさらに含む、
請求項１１に記載の装置。
【請求項１６】
サーバコンピュータのプロセッサに、
第一のコンピュータのプロセッサにおけるストレージ、インストールおよび実行のためのソフトウェアスタブを構成させ、
前記ソフトウェアスタブを前記第一のコンピュータに送信させるためのプログラムであって、
前記ソフトウェアスタブは、
ネットワーク接続を通じて、前記第一のコンピュータとは異なる第二のコンピュータから、少なくとも一つのソフトウェアプログラムの実行可能なコードを含むデータストリームを受信し、
前記データストリームから前記少なくとも一つのソフトウェアプログラムの前記実行可能なコードを抽出し、
前記データストリームから前記実行可能なコードに必要な動的メモリの量を決定し、
前記第一のコンピュータに、前記少なくとも一つのソフトウェアプログラムの前記実行可能なコードのために動的メモリの特定量を割り当てさせ、
割り当てられた前記動的メモリに、前記少なくとも一つのソフトウェアプログラムの前記実行可能なコードを、前記データストリームから直接ロードし、
前記動的メモリから前記少なくとも一つのソフトウェアプログラムを実行する、プログラム。
【請求項１７】
第一のコンピュータシステムが、第二のコンピュータシステムからソフトウェアスタブを受信する段階と、
第一のコンピュータシステムが、受信した前記ソフトウェアスタブをインストールする段階と、
前記ソフトウェアスタブが、ダウンロード可能なソフトウェアプログラムの実行可能なコードの要求であって、前記ダウンロード可能なソフトウェアプログラムを識別する統一資源識別子（ＵＲＩ）を含む要求を送信する段階と、
前記第一のコンピュータシステムにおける前記ソフトウェアスタブが、前記第一のコンピュータシステムと前記第二のコンピュータシステムとの間のネットワーク接続を通じて、前記第二のコンピュータシステムから送信されたデータストリームにおける前記ダウンロード可能なソフトウェアプログラムの前記実行可能なコードを受信する段階と、
前記第二のコンピュータシステムからの前記データストリームにおいて受信した前記ダウンロード可能なソフトウェアプログラムの前記実行可能なコードを、前記第一のコンピュータシステムが抽出する段階と、
前記第一のコンピュータシステムが、前記ダウンロード可能なソフトウェアプログラムの前記実行可能なコードに対する動的メモリの量を割り当てる段階と、
前記第一のコンピュータシステムが、前記データストリームから抽出された前記ダウンロード可能なプログラムの前記実行可能なコードを、割り当てられた前記動的メモリから直接ロードする段階と、
割り当てられた前記動的メモリにロードされた前記ダウンロード可能なソフトウェアプログラムの前記実行可能なコードを起動することにより、前記第一のコンピュータシステムが、前記ダウンロード可能なソフトウェアプログラムを実行する段階と
を備える、方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００５７
【補正方法】変更
【補正の内容】
【００５７】
本明細書は、当業者が理解するであろう、例示的な本実施形態への全ての変更、置換、バリエーション、代替又は改良を包含する。同様に、必要に応じて、添付されたクレームは、当業者が理解するであろう、例示的な本実施形態への全ての変更、置換、バリエーション、代替又は改良を包含する。なお、上記の実施形態によれば、以下の構成もまた開示される。
［項目１］
第一のコンピュータシステムと第二のコンピュータシステムとの間のネットワーク接続を通じて、前記第一のコンピュータシステムが、前記第二のコンピュータシステムから送信されたデータストリームを受信する段階であって、前記データストリームは、ソフトウェアプログラムの実行可能なコードを含む、段階と；
前記第一のコンピュータシステムが、前記データストリームから、前記ソフトウェアプログラムの実行可能なコードを抽出する段階と；
前記第一のコンピュータシステムが、動的メモリを、前記ソフトウェアプログラムの実行可能なコードのために割り当てる段階と；
前記第一のコンピュータシステムが、前記ソフトウェアプログラムの実行可能なコードを、割り当てられた前記動的メモリへと直接ロードする段階と；
前記第一のコンピュータシステムが、割り当てられた前記動的メモリにロードされた、前記ソフトウェアプログラムの実行可能なコードを起動することにより、前記ソフトウェアプログラムを実行する段階と；
を含む、方法。
［項目２］
前記データストリームは、ビデオストリームであり、
前記ソフトウェアプログラムの実行可能なコードは、前記ビデオストリームに埋め込まれる、
項目１に記載の方法。
［項目３］
前記ソフトウェアプログラムの実行可能なコードは、機械コード又はネイティブコードである、
項目１に記載の方法。
［項目４］
前記ソフトウェアプログラムの実行の可能なコードは、前記第二のコンピュータシステムによって圧縮されており、
前記第一のコンピュータシステムが、前記ソフトウェアプログラムの実行可能なコードを展開する段階
をさらに含む、項目１に記載の方法。
［項目５］
前記第一のコンピュータシステムが、実行可能なコードを含むものとして、割り当てられた前記動的メモリをマークする段階と；
前記第一のコンピュータシステムが、分岐テーブルの一以上のエントリを調整して、割り当てられた前記動的メモリと、割り当てられた前記動的メモリにロードされた前記ソフトウェアプログラムの実行可能なコードに反映させる段階と；
をさらに含む、項目１に記載の方法。
［項目６］
前記データストリームは、第一の部分と第二の部分を含み；
前記データストリームの前記第一の部分は、前記ソフトウェアプログラムの実行可能なコードを含み、
前記データストリームの前記第二の部分は、前記ソフトウェアプログラムによって使用される複数のデータを含む、
項目１に記載の方法。
［項目７］
前記第一のコンピュータシステムが、前記データストリームと関連付けられたネットワークソケットを、前記ソフトウェアプログラムに渡す段階であって、前記データストリームの前記第二の部分に含まれる前記データが、前記ソフトウェアプログラムの実行中に、前記ソフトウェアプログラムによって使用される、段階
をさらに含む、項目６に記載の方法。
［項目８］
前記第一のコンピュータシステムが、前記ソフトウェアプログラムの実行可能なコードを検証する段階
をさらに含む、項目１に記載の方法。
［項目９］
前記第一のコンピュータシステムが、前記ソフトウェアプログラムの実行が完了した後に、割り当てられた前記動的メモリを開放する段階
をさらに含む、項目１に記載の方法。
［項目１０］
第一のシステムであって：
一以上のプロセッサにより実行可能な命令を有するメモリと；
前記メモリに接続され、前記命令を実行するよう機能する、一以上のプロセッサと；
を有し、
前記一以上のプロセッサは、前記命令を実行するとき：
当該第一のシステムと第二のシステムとの間のネットワーク接続を通じて、前記第二のシステムから送信されたデータストリームを受信し、前記データストリームは、ソフトウェアプログラムの実行可能なコードを含み；
前記データストリームから、前記ソフトウェアプログラムの実行可能なコードを抽出し；
動的メモリを、前記ソフトウェアプログラムの実行可能なコードのために割り当て；
前記ソフトウェアプログラムの実行可能なコードを、割り当てられた前記動的メモリへと直接ロードし；
割り当てられた前記動的メモリにロードされた、前記ソフトウェアプログラムの実行可能なコードを起動することにより、前記ソフトウェアプログラムを実行する；
よう機能する、システム。
［項目１１］
前記データストリームは、ビデオストリームであり、
前記ソフトウェアプログラムの実行可能なコードは、前記ビデオストリームに埋め込まれる、
項目１０に記載のシステム。
［項目１２］
前記ソフトウェアプログラムの実行可能なコードは、機械コード又はネイティブコードである、
項目１０に記載のシステム。
［項目１３］
前記ソフトウェアプログラムの実行の可能なコードは、前記第二のシステムによって圧縮されており、
前記一以上のプロセッサは、前記命令を実行するとき、前記ソフトウェアプログラムの実行可能なコードを展開するようさらに機能する、
項目１０に記載のシステム。
［項目１４］
前記一以上のプロセッサは、前記命令を実行するとき：
実行可能なコードを含むものとして、割り当てられた前記動的メモリをマークし；
分岐テーブルの一以上のエントリを調整して、割り当てられた前記動的メモリと、割り当てられた前記動的メモリにロードされた前記ソフトウェアプログラムの実行可能なコードに反映させる；
ようさらに機能する、項目１０に記載のシステム。
［項目１５］
前記データストリームは、第一の部分と第二の部分を含み；
前記データストリームの前記第一の部分は、前記ソフトウェアプログラムの実行可能なコードを含み；
前記データストリームの前記第二の部分は、前記ソフトウェアプログラムによって使用される複数のデータを含む；
項目１０に記載のシステム。
［項目１６］
前記一以上のプロセッサは、前記命令を実行するとき：
前記データストリームと関連付けられたネットワークソケットを、前記ソフトウェアプログラムに渡すようさらに機能し、
前記データストリームの前記第二の部分に含まれる前記データが、前記ソフトウェアプログラムの実行中に、前記ソフトウェアプログラムによって使用される、
項目１５に記載のシステム。
［項目１７］
前記一以上のプロセッサは、前記命令を実行するとき、前記ソフトウェアプログラムの実行可能なコードを検証する
ようさらに機能する、項目１０に記載のシステム。
［項目１８］
前記一以上のプロセッサは、前記命令を実行するとき、前記ソフトウェアプログラムの実行が完了した後に、割り当てられた前記動的メモリを開放する
ようさらに機能する、項目１０に記載のシステム。
［項目１９］
一以上のコンピュータ読取可能な記憶媒体であって、第一のコンピュータシステムによって実行されるとき、
前記第一のコンピュータシステムと第二のコンピュータシステムとの間のネットワーク接続を通じて、前記第二のコンピュータシステムから送信されたデータストリームを受信し、前記データストリームは、ソフトウェアプログラムの実行可能なコードを含み；
前記データストリームから、前記ソフトウェアプログラムの実行可能なコードを抽出し；
動的メモリを、前記ソフトウェアプログラムの実行可能なコードのために割り当て；
前記ソフトウェアプログラムの実行可能なコードを、割り当てられた前記動的メモリへと直接ロードし；
割り当てられた前記動的メモリにロードされた、前記ソフトウェアプログラムの実行可能なコードを起動することにより、前記ソフトウェアプログラムを実行する；
よう機能するソフトウェアを具体化する、コンピュータ読取可能な記憶媒体。
［項目２０］
前記データストリームは、ビデオストリームであり、
前記ソフトウェアプログラムの実行可能なコードは、前記ビデオストリームに埋め込まれる、
項目１９に記載の記憶媒体。
［項目２１］
前記ソフトウェアプログラムの実行可能なコードは、機械コード又はネイティブコードである、
項目１９に記載の記憶媒体。
［項目２２］
前記ソフトウェアプログラムの実行の可能なコードは、前記第二のコンピュータシステムによって圧縮されており、
前記ソフトウェアは、前記第一のコンピュータシステムによって実行されるとき、前記ソフトウェアプログラムの実行可能なコードを展開するようさらに機能する、
項目１９に記載の記憶媒体。
［項目２３］
前記ソフトウェアは、前記第一のコンピュータシステムによって実行されるとき：
実行可能なコードを含むものとして、割り当てられた前記動的メモリをマークし；
分岐テーブルの一以上のエントリを調整して、割り当てられた前記動的メモリと、割り当てられた前記動的メモリにロードされた前記ソフトウェアプログラムの実行可能なコードに反映させる；
ようさらに機能する、項目１９に記載の記憶媒体。
［項目２４］
前記データストリームは、第一の部分と第二の部分を含み；
前記データストリームの前記第一の部分は、前記ソフトウェアプログラムの実行可能なコードを含み；
前記データストリームの前記第二の部分は、前記ソフトウェアプログラムによって使用される複数のデータを含む；
項目１９に記載の記憶媒体。
［項目２５］
前記ソフトウェアは、前記第一のコンピュータシステムによって実行されるとき：
前記データストリームと関連付けられたネットワークソケットを、前記ソフトウェアプログラムに渡すようさらに機能し、
前記データストリームの前記第二の部分に含まれる前記データが、前記ソフトウェアプログラムの実行中に、前記ソフトウェアプログラムによって使用される、
項目２４に記載の記憶媒体。
［項目２６］
前記ソフトウェアは、前記第一のコンピュータシステムによって実行されるとき、前記ソフトウェアプログラムの実行可能なコードを検証する、
項目１９に記載の記憶媒体。
［項目２７］
前記ソフトウェアは、前記第一のコンピュータシステムによって実行されるとき、前記ソフトウェアプログラムの実行が完了した後に、割り当てられた前記動的メモリを開放する、
項目１９に記載の記憶媒体。