(58)【調査した分野】(Int.Cl.,DB名)
前記ソフトウェアスタブが、前記少なくとも一つのソフトウェアプログラムの実行を終えると、前記少なくとも一つのソフトウェアプログラムが前記第一のコンピュータ上にもう存在しないように前記動的メモリを開放する段階をさらに含む、
請求項1から5のいずれか一項に記載の方法。
前記ソフトウェアスタブが、リソースフォークを介して、前記ソフトウェアスタブのファイルコンテナ内の前記少なくとも一つのソフトウェアプログラムに関連付けされた、状態およびアプリケーションデータをキャッシュする段階をさらに含む、
請求項1から6のいずれか一項に記載の方法。
前記少なくとも一つのソフトウェアプログラムが、前記データストリームの第二の部分に含まれる追加のデータを使うように、実行中に、前記ソフトウェアスタブが、前記データストリームに関連付けされたネットワークソケットを前記少なくとも一つのソフトウェアプログラムに渡す段階をさらに含む、
請求項1から7のいずれか一項に記載の方法。
第二の実行可能なコードオブジェクトを含む他のデータストリームを要求することにより、第一の実行可能なコードオブジェクトは第二のプロセスが生成されるように、前記ソフトウェアスタブが、前記データストリームに埋め込まれた第一の実行可能なコードを起動する段階をさらに含み、
前記第二の実行可能なコードオブジェクトは、
前記第一の実行可能なコードオブジェクトの子であり、
前記第一の実行可能なコードオブジェクトにより生成される同一のサンドボックスシステムを共有する、
請求項1から8のいずれか一項に記載の方法。
【発明を実施するための形態】
【0008】
本開示は、いくつかの実施形態への参照とともに、添付される図面を用いて説明される
。以下の説明において、本開示の完全な理解を提供するために、多数の特定の詳細につい
て説明される。しかしながら、当業者にとって、本開示が、これらの特定の詳細のいくつ
か又は全てがなくとも実行可能であることは、明らかである。他の例において、既知の処
理ステップ及び/又は構造は、本開示を不要に曖昧としないよう、詳細には説明されない
。さらに、本開示は、特定の実施形態に関して説明されるが、かかる説明は、説明される
実施形態への開示を限定することを意図していない。一方で、かかる説明は、添付される
クレームによって定義される開示の精神及び範囲に含まれ得る、代替、修正及び均等物を
カバーすることを意図している。
【0009】
コンピュータソフトウェアは、コンピュータネットワーク(例えば、インターネット)
を通じて、あるコンピュータシステムから、別のコンピュータシステムへと、配信され得
る。実際に、多くのソフトウェア開発者、製造者及び配信者は、ソフトウェア配信のため
に、コンピュータネットワークが、便利で、高速で、コストパフォーマンスの高いチャネ
ルであると考えている。例えば、ユーザは、企業のウェブサイトから、企業によって開発
された、一のコンピュータソフトウェアの最新バージョンを、ダウンロードすることがで
きる。典型的なシナリオにおいて、ユーザは、自らのコンピュータシステムで実行される
ウェブブラウザで、一のソフトウェアへのダウンロードリンクを含むウェブページを読み
込み、ウェブページ内で提供されるダウンロードリンクをクリックすることができる。こ
れにより、ファイルが、ユーザのコンピュータシステムへとダウンロードされる。このフ
ァイルは、インストールスクリプト、実行ファイル又はソフトウェア本体の実行可能なコ
ードであり得る。ユーザは、自らのコンピュータシステムのハードドライブに、そのファ
イルを保存することができる。そのファイルが、インストールスクリプト又は実行ファイ
ルである場合には、ユーザは、ダウンロードしたファイルを実行して、自らのコンピュー
タシステムに、ソフトウェアをインストールすることができる。一方で、そのファイルが
ソフトウェアの実行可能なコードである場合には、ユーザは、直接、ソフトウェアを実行
することができる(例えば、実行可能なファイルをダブルクリックすることにより)。
【0010】
コンピュータネットワークを通じてダウンロードしたソフトウェアプログラムを、ソフ
トウェアを実行するために、コンピュータシステムのハードドライブに保存し、又はイン
ストールする必要があることは、時に、不都合で、煩わしいことがある。例えば、第一に
、ハードドライブへダウンロードしたファイルを保管すること、および、コンピュータシ
ステムにソフトウェアをインストールすることは、たびたび、時間がかかる。そして、一
のソフトウェアのサイズが大きい場合には(例えば、Adobe社のPDF Reader(登録商標)
)、インストール処理に、顕著に時間がかかる可能性がある。コンピュータシステムのユ
ーザは、ダウンロードしたソフトウェアを実行する前に、いくつかのステップ(例えば、
インストール、セットアップ等)を踏む必要がある。第二に、ファイルをハードドライブ
に保存し、ソフトウェアをコンピュータシステムにインストールすることは、コンピュー
タシステムのストレージ容量(例えば、ハードドライブ空間)を使い果たす。時に、コン
ピュータシステム(例えば、ネットブック又はノートブックコンピュータ)は、ユーザが
コンピュータシステムにインストールしたいと思っているソフトウェアの全てに対して、
十分なストレージ空間を有していないことがある。第三に、ソフトウェア開発者は、時々
、ソフトウェアを更新し、そのソフトウェアの新しいバージョンをリリースし得る。一の
ソフトウェアの新しいバージョンは、通常、古いバージョンより、よりよい品質である。
従って、ユーザは、ソフトウェアを適度に最新に保ちたいと考え得る。しかしながら、一
のソフトウェアを更新するために、ユーザは、現在、自らのコンピュータシステムにイン
ストールされている古いバージョンのソフトウェアをアンインストールしてから、新しい
バージョンのものをダウンロードし、インストールする必要がある。
【0011】
これらの問題のいくつかに対処する目的で、特定の実施形態では、あるコンピュータシ
ステム(例えば、クライアント)のユーザは、ユーザのコンピュータシステムの永続的な
ストレージ(例えば、ハードドライブ)へ、ダウンロードしたソフトウェアプログラムを
保管し、あるいはインストールする必要なく、ユーザのコンピュータでの実行を行うため
に、コンピュータネットワーク(例えば、インターネット)を通じて、別のコンピュータ
システム(例えば、サーバ)から、コンピュータソフトウェアプログラムをダウンロード
することができる。明確化のために、以後、ソフトウェアをダウンロードし、そのソフト
ウェアが実行されるコンピュータシステムを、「クライアント」と呼び、ソフトウェアが
ダウンロードされるコンピュータシステムを、「サーバ」と呼ぶ。しかしながら、当業者
は、以下でより詳細に説明される実施形態が、あらゆる二つのコンピュータシステム(例
えば、二つのサーバ、二つのクライアント、一つのサーバと一つのクライアント)にうま
く適応可能であることを理解することができる。
【0012】
特定の実施形態において、ここでは「ソフトウェアスタブ」又は、単に「スタブ」と呼
ばれる、ソフトウェアプログラムが、クライアントにインストールされ、実行され得る。
特定の実施形態において、スタブは、クライアントとサーバの間のネットワーク接続を確
立し、そのネットワーク接続を通じて、サーバからクライアントへ、コンピュータソフト
ウェアプログラムをダウンロードすることができる。特定の実施形態において、サーバか
らクライアントへダウンロードされた一のソフトウェアについての実行可能なコードは、
ネットワーク接続を通じて、サーバからクライアントへ送信される、データストリームの
中に組み込まれ得る。データストリームを受信すると、スタブは、一のソフトウェアの実
行可能なコードを抽出し、クライアントにおける実行のために、該コードを、クライアン
トのランダムアクセスメモリ(RAM)に直接読込むことができる。一のソフトウェアは
、クライアントの如何なる永続的なストレージ(例えば、ハードドライブ)には保存され
ず、または、インストールされない。一のソフトウェアは、クライアントでのコードの実
行を終えると、一のソフトウェアが読込まれた実行可能なコードのRAM空間が開放され
、一のソフトウェアは、クライアント上の何処にも存在しなくなる。
【0013】
特定の実施形態において、スタブは、クライアントに保管若しくはインストールされた
スタンドアロンのソフトウェアプログラムか、又は、クライアントにインストールされた
ウェブブラウザのプラグイン若しくはアドオンであってもよい。スタブは、コンピュータ
ソフトウェアプログラムを、個々のコンピュータシステムに配信するために適切な、既存
のあらゆる方法(例えば、CD、DVD、ネットワークによるダウンロード等)を用いて
、クライアントに保管され、あるいはインストールされてもよい。特定の実施形態におい
て、スタブは、小さなソフトウェア(すなわち、サイズが小さい)であり得るため、クラ
イアントのストレージ容量を多く消費しない。スタブは、スタンドアロンのソフトウェア
プログラムである場合には、単独で実行され、プラグイン又はアドオンソフトウェアであ
る場合には、ウェブブラウザを通じて実行され得る。
【0014】
コンピュータソフトウェアプログラムをダウンロードして、起動するために、クライア
ント上で、スタブを用いることにより、スタブのみが、クライアント上に、永続的に保存
され、あるいはインストールされる必要がある。他のソフトウェアは、クライアント上で
、保管され、あるいはインストールされる必要なく、ダウンロードされ、起動され得る。
このことは、クライアントで使用されるストレージ容量を減少させ得る。さらに、一のソ
フトウェアは、その実行の直前に、クライアント上にダウンロードされる。そのため、特
定の実施形態は、そのソフトウェアがダウンロードされ、起動されるたびに、そのソフト
ウェアの最新のバージョン(又は、いかなる所望のバージョン)を提供することを容易に
する。
【0015】
図1は、クライアント上で永続的にコンピュータソフトウェアを保管し、又はインスト
ールすることなく、クライアントの実行可能なメモリへと直接インストールして、クライ
アント上で実行するための、サーバからクライアントへの、例示的なコンピュータプログ
ラムのダウンロード方法を示す。特定の実施形態において、
図1に示されるステップは、
クライアント上で実行されるスタブによって、実行され得る。特定の実施形態において、
スタブは、
図1に示されるステップを実行可能なように、スタンドアロンのアプリケーシ
ョンか、又は、クライアントにインストールされたウェブブラウザのプラグイン若しくは
アドオンとして、実行され得る。特定の実施形態において、ダウンロードされているソフ
トウェアプログラムは、アプリケーションプログラムである。
【0016】
ステップ100において示されるように、特定の実施形態は、クライアントとサーバの
間のネットワーク接続を確立することができる。ネットワーク接続は、コンピュータネッ
トワークに接続された、二つのコンピュータシステムの間で、適切なハンドシェイクを行
う方法により、確立され得る。例えば、クライアント上で実行中のスタブは、サーバに接
続要求を送信する。そして、サーバは、接続要求を受信すると、その接続要求が受け入れ
られたか、拒否されたかを示す、応答を送信することができる。サーバが接続要求を受け
入れると、特定の実施形態は、これに応じて、クライアントとサーバとの間のネットワー
ク接続を確立することができる。
【0017】
特定の実施形態において、クライアント上で実行中のスタブによって、サーバからクラ
イアントへとダウンロードされた各ソフトウェアプログラムは、固有の識別子によって、
識別され得る。この固有の識別子は、クライアントのスタブがダウンロードを所望するソ
フトウェアが何であるかを、サーバに通知するために用いられ得る。特定の実施形態にお
いて、ダウンロード可能な各ソフトウェアは、ネットワーク資源とみなすことができる。
従って、ダウンロード可能な特定のソフトウェアは、その固有のネットワークパス又はU
RI(Uniform Resource Identifier)によって、特定することができる。
【0018】
特定の実施形態において、特定のソフトウェアをダウンロードする目的で、ネットワー
ク接続を確立するために、クライアントのユーザは、特定のソフトウェアの固有の識別子
(例えば、URI)を、スタブがスタンドアロンのアプリケーションである場合にはクラ
イアント上で実行中のスタブへ直接提供することができ、あるいは、プラグインとしての
スタブを有するウェブブラウザへ提供することができる。このプロセスは、ウェブページ
のURL(Uniform Resource Locator)をウェブブラウザへ提供することによって、ウ
ェブページを要求することに、とても似ている。例えば、ユーザは、ビデオデータストリ
ームに対応するURLをクリックすることができる。それにより、プラグインは、URL
を受け取り、以下に示される処理フローを開始する。スタブは、ユーザが要求している特
定のソフトウェアの識別子に基づいて(例えば、要求されているソフトウェアのURIを
、サーバのIPアドレスとマッピングすることにより)、ネットワーク接続がどの特定の
サーバに対して確立されるべきかを決定する。特定の実施形態において、スタブは、ユー
ザが、ソフトウェアを都合よく検索できるような、ソフトウェアの個々の識別子のブック
マークを可能とする、ユーザインターフェース(UI)を提供することができる。
【0019】
特定の実施形態において、特定のサーバにネットワーク接続を要求するとき、スタブは
、ユーザが要求している特定のソフトウェアの固有の識別子を、接続要求とともに、ある
いは接続要求の一部として、サーバに送信することができる。サーバは、どの特定のソフ
トウェアを要求するクライアントに送信すべきかを決定することができる。その処理は、
ウェブブラウザを介して、(例えば、ウェブページに含まれた、ダウンロード可能なファ
イルへのURL又はURIリンクをクリックすることにより)データストリームを呼び出
すことと類似し得る。
【0020】
ステップ102において示されるように、特定の実施形態において、サーバは、データ
ストリームを、要求したクライアント、特に、要求したクライアント上で実行中のスタブ
に、送信することができる。ネットワーク接続は、TCP(Transport Control Protoc
ol)接続、UDP(User Datagram Protocol)接続又は他の適切な接続であってもよい
。特定の実施形態において、データストリームは、ビデオストリーム又はオーディオスト
リームであってもよい。特定の実施形態において、スタブによって要求された特定のソフ
トウェアは、一以上のデータパケットとして、データストリーム内に埋め込まれ得る。例
えば、ソフトウェアは、ビデオコーデックによりエンコードされたビデオストリームを受
信し、そのデータをデコードし、クライアントのディスプレイ上にビデオデータを描画す
る、ビデオデコーダであってもよい。
【0021】
特定の実施形態において、要求されたソフトウェアの実行可能なコードは、データスト
リームの中に埋め込まれ得る。特定の実施形態において、要求されたソフトウェアの実行
可能なコードは、機械コード又はネイティブコードであってもよく、プラットフォーム依
存であってもよい。特定の実施形態において、要求されたソフトウェアの実行可能なコー
ドは、(例えば、クライアントのアーキテクチャとオペレーティングシステムに基づいて
)ソフトウェアを要求した、特定のクライアントのプラットフォームで実行するように、
コンパイルされている。
【0022】
特定の実施形態において、データストリームは、二つの部分を含み得る。特定の実施形
態において、データストリームの第一の部分(すなわち、データストリームの最初の部分
)は、ソフトウェアの実行可能なコードを含み得る。特定の実施形態において、ソフトウ
ェアの実行可能なコードは、適切な圧縮方法を用いて、任意に圧縮され得る。例えば、zi
pやgzipのような、ロスレスの圧縮方法が、ソフトウェアの実行可能なコードを圧縮する
ために、用いられ得る。特定の実施形態において、ソフトウェアの実行可能なコードは、
ビデオストリーム内に埋め込まれ得る。ほとんどの種類のビデオストリームは、一般的な
コンテナの形式であるため、データ、特にソフトウェアの実行可能なコードは、そのよう
なビデオストリームの中に、埋め込まれ得る。特定の実施形態において、データストリー
ムの第一の部分は、ソフトウェアの実行可能なコードをロードして実行するために必要な
メモリ空間(例えば、RAMメモリ空間)のサイズを示すパラメータのような、操作上の
変数及びパラメータを、さらに含み得る。
【0023】
特定の実施形態において、データストリームの第二の部分は、ソフトウェアの実行中に
、ソフトウェアによって使用され得る、追加のデータを任意に含んでもよい。特定の実施
形態において、追加のデータは、適切なエンコーディング方法又は圧縮方法を用いて、任
意に、エンコード又は圧縮され、一以上のデータパケットとして、送信され得る。再び、
データストリームがビデオストリームである場合には、追加のデータは、MPEGエンコ
ーディングのような、ビデオエンコーディング方法を用いて、エンコードされ得る。
【0024】
特定の実施形態において、データストリームを受信すると、スタブは、そのデータスト
リームの第一の部分にアクセスすることができ、埋め込まれたソフトウェアの実行可能な
コードを抽出する。必要であれば、スタブは、抽出された、ソフトウェアの実行可能なコ
ードをデコードし、あるいは展開してもよい。スタブによって用いられるデコーディング
方法又は展開方法は、ソフトウェアの実行可能なコードを送信するサーバによって用いら
れた、エンコーディング方法又は圧縮方法と対応し得る。例えば、ソフトウェアの実行可
能なコードが、適切な圧縮アルゴリズム(例えば、ロスレス圧縮アルゴリズム)を用いて
圧縮されている場合には、スタブは、対応する展開アルゴリズムを用いて、そのコードを
展開することができる。同様に、ソフトウェアの実行可能なコードが、適切なエンコーデ
ィングアルゴリズムを用いてエンコードされている場合には、スタブは、対応するデコー
ディングアルゴリズムを用いて、デコードし得る。さらに、特定の実施形態において、ス
タブは、データストリームの第一の部分にアクセスし、ソフトウェアの実行可能なコード
をロードし実行するために必要な、メモリ空間のサイズを示すパラメータを抽出すること
ができる。
【0025】
ステップ104において示されるように、特定の実施形態において、クライアント上に
、認可されていない、あるいは悪意のあるソフトウェアがダウンロードされることを防止
するため、スタブは、適切な検証方法を用いて、データストリームの第一の部分から抽出
された、ソフトウェアの実行の可能なコードを検証することができる。特定の実施形態に
おいて、信頼されるソース(例えば、信頼されるサーバのドメイン名又はIPアドレス)
のホワイトリストが、スタブとともに提供され得る。ソフトウェアを受信すると、スタブ
は、ソフトウェアを送信するソース(例えば、サーバ又はウェブサイト)を、ホワイトリ
ストと比較することができる。ホワイトリストに載っている、信頼されるソースにより送
信されたソフトウェアのみが、クライアント上で実行され得る。ホワイトリストにないソ
ースから受信されたソフトウェアは、破棄され、あるいは検疫され得る。特定の実施形態
において、データストリームの第一の部分に埋め込まれた、ソフトウェアの実行可能なコ
ードは、署名され、デジタル証明書と関連付けられ得る。スタブは、関連付けられたデジ
タル証明書を用いて、ソフトウェアの実行可能なコードを検証することができる。
【0026】
ソフトウェアの実行可能なコードが有効でない場合には(ステップ106で「NO」)
、ソフトウェアの実行可能なコードは、クライアント上で起動されず、破棄され得る。一
方で、ソフトウェアの実行可能なコードが有効である場合には(ステップ106で「はい
」)、ステップ108に示されるように、特定の実施形態において、スタブが、ソフトウ
ェアの実行可能なコードをロードし、実行するために、十分な量のメモリを割り当てるこ
とができる。特定の実施形態において、割り当てられたメモリ量は、データストリームの
第一の部分に含まれる変数によって示される、ソフトウェアの実行可能なコードをロード
して実行するために必要な、メモリ空間のサイズより小さくなってはならない。特定の実
施形態において、割り当てられたメモリは、クライアントの動的なメモリ、仮想メモリ又
はRAMであってもよい。
【0027】
ほとんどのオペレーティングシステムは、アプリケーションプログラムが、動的にメモ
リを割り当て、開放することのできる、ライブラリ関数を提供し、実行時に、メモリに関
連する他の種類の関数を実行する。特定の実施形態において、スタブは、クライアントの
オペレーティングシステムによって提供される、適切なライブラリ関数を起動することが
でき、ソフトウェアの実行可能なコードの、必要なメモリ空間を割り当てる。例えば、「
malloc()」は、動的にメモリ空間を確保するための、C言語及びC++言語の標準ライブ
ラリ関数である。マイクロソフト社のWindows(登録商標)プラットフォームにおいて、
「VirtualAlloc()」は、仮想アドレス空間において、ページのある領域を予約するための
Win32ライブラリ関数である。一度メモリが割り当てられると、スタブは、割り当て
られたメモリ空間に対して、「実行可能」のフラグをセットするために、適切なライブラ
リ関数を起動することができる。そのフラグは、割り当てられたメモリの中に保管される
データが、実行可能なコードであるということを、オペレーティングシステムに示す。例
えば、マイクロソフト社のWindows(登録商標)プラットフォームでは、オペレーティン
グシステムに、読み込み、書き込み、実行の権限を有する、十分な量の仮想メモリを要求
するために、「PAGE-EXECUTE-READWRITE」フラグを特定することができる。
【0028】
ステップ110において示されるように、特定の実施形態において、スタブは、ソフト
ウェアの実行可能なコードを、クライアントのハードドライブ上に保存する必要なく、割
り当てられたメモリへと、直接にロードすることができる。特定の実施形態において、ス
タブは、ソフトウェアの実行可能なコードを表すバイナリデータを、割り当てられた動的
なメモリ空間へと直接にコピーするために、クライアントのオペレーティングシステムに
よって提供される、適切なライブラリ関数を起動することができる。例えば、「memcpy(
)」は、一のメモリ領域から別のメモリ領域へとデータをコピーするための、C言語及び
C++言語の、標準ライブラリ関数である。
【0029】
特定の実施形態において、スタブは、割り当てられたメモリの中にロードされた、ソフ
トウェアの実行可能なコードに関する情報を含むための、分岐テーブル(又はジャンプテ
ーブルとも呼ばれる)をさらに調整することができる。かかる処理は、「フィックスアッ
プ(fix−up)」処理と呼ばれる。分岐テーブルは、プログラムの制御を、プログラ
ムのある部分から別の部分へ、又は、あるプログラムから別のプログラムへ、転送する効
率的な方法である。適切な分岐テーブルのエントリを調整することにより、オペレーショ
ンシステムは、現在、割り当てられたメモリにロードされたソフトウェアの実行可能なコ
ードを知ることができる。
【0030】
フィックスアップ処理の間に実行される実際のステップは、コンピュータシステムのプ
ラットフォーム又はOSによって異なる可能性がある。例えば、マイクロソフト社のWindow
s(登録商標)プラットフォームでは、実行可能な形式は、典型的に、再配置(relocatio
n)テーブルとインポートテーブルを含む。一般に、実行可能なコードは、固定されたア
ドレスへロードされることを前提に、リンクされる。実行可能なコードを異なるアドレス
へロードするために、実行可能なコードによって使用される絶対アドレスの全てが検出さ
れ、ベースのアドレス内での変更に応じるよう、「フィックスアップ」される。
このことは、再配置テーブルを用いることで、達成され得る。特定の実施形態において、
実行可能なコードがロードされたとき、全ての絶対アドレスがフィックスアップされるよ
うに、再配置テーブルは、実行可能なコードの中の、全ての絶対アドレスのリストを編集
する。インポートテーブルは、実行可能なコードが呼び出す可能性のある全てのルーチン
の絶対アドレスをリストする。これにより、APIルーチンと、他のダイナミックリンク
ライブラリ(DLL)の中のルーチンの両方を含むことができる。これらのインポートア
ドレスは、現在のプロセスについてのアドレス空間内の、ルーチンの実際のアドレスで置
き換えられる。インポートテーブルは、実行可能なコードの中の、それらのアドレスの位
置のリストである(アドレスは、ジャンプテーブル又はトランポリン領域内に存在し得る
が、間接呼び出しのためのデータのリストでもあり得る)。
【0031】
特定の実施形態は、マイクロソフト社のWindows(登録商標)オペレーティングシステ
ムにおいて使用される、実行可能ファイル、オブジェクトコード及びDLLのための一つ
のファイルフォーマットである、PE(Portable Executable)フォーマットを活用する
。PEフォーマットは、オペレーティングシステムのソフトウェアアーキテクチャの多数
の環境において、幅広い用途を有する。一般に、PEフォーマットは、ラップされた実行
可能なコードを管理するための、マイクロソフト社のWindows(登録商標)オペレーショ
ンシステムローダのために必要な情報をカプセル化する、データ構造である。特定の実施
形態は、PEフォーマットを用いて、ソフトウェアの実行可能なコードをコンパイルし、
保存することができる。
【0032】
ステップ112において示されるように、特定の実施形態において、ソフトウェアは、
クライアント上で実行され得る。特定の実施形態において、ソフトウェアの実行可能なコ
ードは、自身が保管される、割り当てられた動的なメモリから、直接に起動され得る。特
定の実施形態において、スタブは、割り当てられたメモリ内にロードされたソフトウェア
の実行可能なコードに、実行を開始させることができる。したがって、スタブは、その実
行を、ソフトウェアへと移すことができる。
【0033】
114において示されるように、特定の実施形態において、スタブは、ソケット、より
正確には、クライアントとサーバ間のネットワーク接続と関連付けられた、インターネッ
トソケット又はネットワークソケットを、クライアント上で現在実行されているソフトウ
ェアに、渡す(pass)ことができる。ネットワークソケットは、入ってくるデータパケッ
トを、適切なアプリケーションプロセス又はスレッドに、伝達するためのメカニズムを構
成する。データストリームと関連付けられたネットワークソケットをソフトウェアに渡す
ことにより、ソフトウェアは、データストリームの第二の部分の中の追加のデータを含む
、追加のデータパケットを、受け取ることができる。ソフトウェアは、データストリーム
の第二の部分に含まれる追加のデータを使う(例えば、処理する)ことができる。特定の
実施形態において、スタブは、クライアントのオペレーティングシステムによって提供さ
れる、適切なライブラリ関数を呼び出し、ネットワークソケットを、現在実行中のソフト
ウェアに渡すことができる。例えば、Winsockとも呼ばれる,Windows(登録商標
)ソケットアプリケーションプログラミングインターフェース(API)では、ネットワ
ークソケットは、「WSADuplicateSocket()」関数により、一のプロセスから別のプロセス
へ、渡され得る。
【0034】
ソフトウェアプログラムは、完了するまで、その実行を継続することができる。特定の
実施形態において、ソフトウェアプログラムが、その実行を完了すると(すなわち、終了
すると)、ソフトウェアの実行可能なコードをロードするために使用されていた動的なメ
モリ空間は、(例えば、クライアントのオペレーティングシステムにより)開放され得る
。後に、かかるメモリ空間は、他の目的のために使用され得る。他のデータは、そのメモ
リ空間にロードされ、ソフトウェアプログラムの実行可能なコードを上書きする。この点
において、ソフトウェアプログラムは、クライアントへあらゆる状態の変更(例えば、ド
ライブ上のファイル、システムのレジストリの変更等)を加えることなく、クライアント
上に存在しないものとなる。なぜならば、ソフトウェアプログラムは、スタブ232によ
って、メモリに直接にインストールされており、いくつかの実施形態における、ブラウザ
キャッシュ又は他の一時的なデータ記憶方式を含む、クライアント上の永続的な媒体には
、保管されていないためである。
【0035】
ユーザのプリファレンス、設定、及びダウンロードされた、データストリームからの実
行可能なコードのモジュールそのもののような、様々な状態やアプリケーションデータの
キャッシュを可能にするために、スタブ230は、リソースフォークを介して、自らのフ
ァイルコンテナの中に、そのようなデータを保管することができる。この方式により、ス
タブ232は、複数のシステムにわたって、完全にポータブルとなる。例えば、スタブの
既知のインスタンス(ファイルコンテナを含む)は、電子メールに添付され、又は、US
Bドライブにロード等されて、別のシステムへと移転させられ得る。
【0036】
いくつかの実装において、ストリームに埋め込まれ、スタブ232によって起動される
、第一の実行可能なコードオブジェクトは、それ自身が、第二の実行可能なコードオブジ
ェクトを含む、別のデータストリームを要求することによって、別のプロセスを生成させ
ることができる。第二の実行可能なコードは、第一のコードのオブジェクトの子プロセス
として、起動され、第一の実行可能なコードオブジェクトにより生成された、同一のサン
ドボックスのファイルシステムを共有することができる。例えば、第一の実行可能なコー
ドオブジェクトは、仮想マシンであり、該コードオブジェクトは、一以上の第二の実行可
能なコードオブジェクトを、メモリ内で、かつ、第一の仮想マシンのコードオブジェクト
によるサンドボックスの中で、完全に実行させることができる。特定の実装において、例
えば、第二のコードオブジェクトによるデータ記憶サブシステムへの書き込みは、仮想マ
シンによって、メモリへとなされ、ユーザがクライアント230からログオフした場合に
分析され得る、周辺機器にはなされない。例えば、この実施形態は、ソフトウェアのデモ
版を準備するために用いられ得る。第一の実行可能なコードオブジェクトが、デモ又はテ
ストされる第二のプログラムのサンドボックスを提供する仮想マシンであり得るためであ
る。上述したように、第一及び第二のコードオブジェクトが終了したとき、メモリ内のそ
れらの全ての形跡は消去される。上述の実施形態は、一般的に、アプリケーションの実行
中にキャッシュされるデータへの、認可されないアクセスを防ぐためにも、用いられ得る
。
【0037】
特定の実施形態は、ネットワーク環境において、実装され得る。
図2は、例示的なネッ
トワーク環境200を示す。ネットワーク環境200は、一以上のサーバ220と、一以
上のクライアント230とを、互いに接続するネットワーク210を含む。特定の実施形
態において、ネットワーク210は、イントラネット、エクストラネット、仮想プライベ
ートネットワーク(VPN)、ローカルエリアネットワーク(LAN)、無線LAN(W
LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエラアネットワーク(
MAN)、通信ネットワーク、衛星ネットワーク、インターネットの一部、別のネットワ
ーク210又はそのようなネットワーク210の二以上の組み合わせである。本開示は、
あらゆる適切なネットワーク210を意図している。
【0038】
一以上のリンク250は、サーバ220又はクライアント230を、ネットワーク21
0に接続する。特定の実施形態において、一以上のリンク250のそれぞれは、一以上の
、有線、無線又は光学のリンク250を含む。特定の実施形態において、一以上のリンク
250のそれぞれは、イントラネット、エクストラネット、VPN、LAN、WLAN、
WAN、MAN、通信ネットワーク、衛星ネットワーク、イントラネットの一部、別のリ
ンク250又はそのようなリンク250の二以上の組み合わせを含む。本開示は、サーバ
220とクライアント230をネットワーク210に接続する、あらゆる適切なリンク2
50を意図している。
【0039】
特定の実施形態において、各サーバ220は、集中型のサーバであるか、又は、複数の
コンピュータ又は複数のデータセンタにわたる、分散型のサーバであり得る。サーバ22
0は、ウェブサーバ、ニュースサーバ、メールサーバ、メッセージサーバ、広告サーバ、
ファイルサーバ、アプリケーションサーバ、交換サーバ、データベースサーバ又はプロキ
シサーバのような、様々な種類のサーバであってもよい(但しこれに限られない)。特定
の実施形態において、各サーバ220は、サーバ220によって実現され、又はサポート
される、適切な機能を実行するために、ハードウェア、ソフトウェア若しくは組み込みロ
ジック部品又はそのような部品の二以上の組み合わせを含み得る。例えば、ウェブサーバ
は、一般に、ウェブページ又はウェブページの特定の要素を含む、ウェブサイトをホスト
することができる。より明確には、ウェブサーバは、HTMLファイル又は他の種類のフ
ァイルをホストし、あるいは、要求に応じてファイルを動的に生成若しくは構成すること
ができ、クライアント230からのHTTP要求又は他の要求に応じて、クライアントへ
それらのファイルを送信することができる。メールサーバは、一般に、電子メールサービ
スを、様々なクライアント230へ提供することができる。データベースサーバは、一般
に、一以上のデータストアに保管されたデータを管理するインターフェースを提供するこ
とができる。
【0040】
特定の実施形態において、各クライアント230は、ハードウェア、ソフトウェア若し
くは組み込みロジック部品又はそのような部品の二以上の組み合わせを含む、電子デバイ
スであり、クライアント230によって実現され、あるいはサポートされる、適切な機能
を実行することができる。例えば、クライアント230は、デスクトップコンピュータシ
ステム、ノートブックコンピュータシステム、ネットブックコンピュータシステム、ハン
ドヘルド電子デバイス又は携帯電話であり得るが、これに限られない。クライアント23
0は、クライアント230のネットワークユーザが、ネットワーク210にアクセスする
ことを可能にする。クライアント230は、マイクロソフトインターネットエクスプロー
ラ又はMozilla Firefoxのようなウェブブラウザを有し、Googleツールバー又はYahooツ
ールバーのような、一以上のアドオン、プラグイン又は他の拡張を有し得る。クライアン
ト230は、そのユーザが、他のクライアント230の他のユーザとやりとりすることを
可能にする。本開示は、あらゆる適切なクライアント230を意図している。
【0041】
特定の実施形態において、一以上のデータ記憶装置240が、一以上のリンク250を
通じて、一以上のサーバ220と、通信でリンクされ得る。特定の実施形態において、デ
ータ記憶装置240は、様々な種類の情報を保管するために用いられ得る。特定の実施形
態において、データ記憶装置240に保管される情報は、特定のデータ構造に従って、組
織化される。いくつかの特定の実施形態は、サーバ220又はクライアント230に、デ
ータ記憶装置240に格納される情報を管理(例えば、検索、修正、追加又は削除)させ
る、インターフェースを提供することができる。
【0042】
特定の実施形態において、スタブ232は、クライアント230上でインストールされ
、実行され得る。特定の実施形態では、スタブ232は、スタンドアロンのソフトウェア
プログラムであるか、又は、クライアント230上でインストールされて実行される、ウ
ェブブラウザのような他のソフトウェアプログラムへのプラグイン若しくはアドオンであ
ってもよい。スタブ232は、クライアント230上で実行されるとき、
図1に示される
ステップを実行することができる。特定の実施形態において、スタブ232は、データス
トリームに埋め込まれた、ソフトウェアプログラムの実行可能なコードを展開するための
、一以上の追加のモジュールを含み得る。別の実施例において、展開モジュールは、その
ものがデータストリーム内で符号化されており、データストリームの中に埋め込まれた、
一以上の追加のコードモジュールを展開するために、スタブ232によって起動されても
よい。
【0043】
さらに、特定の実施形態では、データストリーム内に埋め込まれた、実行可能なコード
モジュールが、例えばデバイス種別、ハードウェア能力、表示モード、周辺機器、グラフ
ィックアクセラレータの能力等のような、一以上のクライアント230の属性に基づいて
、動的に決定することができる。例えば、異なった実行可能なコードモジュールが、デー
タストリーム内に埋め込まれていてもよく、異なるクライアントに、同一のメディアスト
リームを使用させることができる。
【0044】
特定の実施形態は、ハードウェア、ソフトウェア又はハードウェアとソフトウェアの組
み合わせとして、実装され得る。例えば、一以上のコンピュータシステムは、特定のロジ
ック又はソフトウェアを実行することができ、ここで記述され、あるいは説明された、一
以上のプロセスについての、一以上のステップを実行する(但しこれに制限されない)。
一以上のコンピュータシステムは、集中型か、あるいは適切な場所にある複数のコンピュ
ータシステム又は複数のデータセンタを結ぶ、分散型であってもよい。本明細書は、あら
ゆる適切なコンピュータシステムを意図している。特定の実施形態において、ここで記述
され、あるいは説明された、一以上のプロセスについての、一以上のステップの実行は、
必ずしも、一以上の特定の地理的な場所に限定される必要は無く、また、必ずしも、時間
的に限定される必要は無い。例として、一以上のコンピュータシステムは、リアルタイム
、オフライン、バッチモード、又は、それらの適切な組み合わせで、機能を実行すること
ができる(但しこれに制限されない)。一以上のコンピュータシステムは、異なる時間に
、異なる場所で、必要に応じて、異なる処理を用いて、一以上の機能の一部を実行するこ
とができる。ここで、ロジックとは、ソフトウェアを包含し、適切な場合には、その逆も
成り立つ。ソフトウェアとは、一以上のコンピュータプログラムを包含し、必要に応じて
、その逆も成り立つ。ソフトウェアとは、データ、命令又はその両方を包含し、必要に応
じて、その逆も成り立つ。同様に、データとは、命令を包含し、必要に応じて、その逆も
成り立つ。
【0045】
一以上のコンピュータ読取可能な記憶媒体は、特定の実施形態を実現するソフトウェア
を保管するか、別の方法でそのようなソフトウェアを具体化し得る。コンピュータ読取可
能な媒体は、必要に応じて、ソフトウェアを、運び、通信し、包含し、収容し、維持し、
伝播し、保持し、保管し、送信し、輸送し、あるいは別の方法で具体化することができる
、あらゆる媒体であってもよい。コンピュータ読取可能な媒体は、生物学的、化学的、電
子、電磁気、赤外線、磁気、光学、量子若しくは他の適切な媒体又はそのような媒体の二
以上の組み合わせであってもよい。コンピュータ読取可能な媒体は、一以上のナノメート
ル規模の部品を含むか、あるいは、ナノメートル規模の設計又は製造を具体化し得る。例
示的なコンピュータ読取可能な記憶媒体は、コンパクトディスク(CD)、FPGA(fi
eld-progRAMmable gate arrays)、フロッピーディスク、フロプティカル(floptic
al)ディスク、ハードディスク、ホログラフィック記憶装置、(ASIC(application-
specific integrated circuits)のような)集積回路(IC)、磁気テープ、キャッシ
ュ、プログラマブルロジックデバイス(PLD)、ランダムアクセスメモリ(RAM)、
リードオンリーメモリ(ROM)、半導体メモリ及び他の適切なコンピュータ読取可能な
記憶媒体を含むが、これに限られない。
【0046】
特定の実施形態を実現するソフトウェアは、あらゆる適切な(手続き型又はオブジェク
ト指向の)プログラミング言語で記述され、あるいは、必要に応じて、複数のプログラミ
ング言語の組み合わせによって記述される。(シングルプロセッサ又はマルチプロセッサ
のコンピュータシステムのような)適切な種類のコンピュータシステム又は複数のシステ
ムは、必要に応じて、特定の実施形態を実現するソフトウェアを実行することができる。
汎用のコンピュータシステムは、必要に応じて、特定の実施形態を実現するソフトウェア
を実行することができる。
【0047】
例えば、
図3は、特定の実施形態の一以上の部品を実現するために適する、例示的名コ
ンピュータシステム300を示している。本明細書は、ある特定の構成において、特定の
部品を有する、特定のコンピュータシステム300を記述し、説明するが、本明細書は、
あらゆる適切な構成おいて、あらゆる適切な部品を有する、あらゆる適切なコンピュータ
システムを意図する。さらに、コンピュータシステム300は、例えば、一以上の集積回
路(IC)、一以上のプリント基板(PCB)、(携帯電話又はPDAのような)一以上
のハンドヘルドデバイス若しくは他のデバイス、一以上のPC又は一以上のスーパーコン
ピュータのような、適切な物理的な形状をとり得る。
【0048】
システムバス310は、コンピュータシステム300のサブシステムを、互いに接続す
る。ここでのバスとは、共通の機能を提供する、一以上のデジタル信号線を包含する。本
明細書は、適切なバスアーキテクチャを有する、(一以上のメモリバス、一以上の周辺バ
ス、一以上のローカルバス又はそれらの組み合わせのような)あらゆる適切なバスアーキ
テクチャを含む、あらゆる適切なシステムバス310を意図する。例示的なバスアーキテ
クチャは、ISA(Industry Standard Architecture)バス、EISA(Enhanced IS
A)バス、マイクロチャネルアーキテクチャ(MCA)バス、ビデオエレクトロニクスス
タンダーズアソシエーションバス(VLB)、PCI(Peripheral Component Interco
nnect)バス、PCIエクスプレス(PCI−X)バス、AGP(Accelerated Graphics
Port)バスを含むが、これに限られない。
【0049】
コンピュータシステム300は、一以上のプロセッサ320(又は中央処理装置(CP
U))を含む。プロセッサ320は、命令、データ又はコンピュータのアドレスの、一時
的なローカルでの記憶のための、キャッシュ322を含み得る。プロセッサ320は、メ
モリ330を含む、一以上の記憶装置と接続される。メモリ330は、ランダムアクセス
メモリ(RAM)332と、リードオンリーメモリ(ROM)334とを含み得る。デー
タと命令は、プロセッサ320とRAM332との間で、双方向にデータを転送し得る。
データと命令は、ROM334からプロセッサ320へ、一方向に、データを転送し得る
。RAM332とROM334は、あらゆる適切なコンピュータ読取可能な記憶媒体を含
み得る。
【0050】
コンピュータシステム300は、プロセッサ320へ、双方向に接続された、固定記憶
装置340を含む。固定記憶装置340は、記憶装置制御ユニット352を介して、プロ
セッサ320と接続され得る。固定記憶装置340は、追加のデータ記憶容量を提供する
ことができ、あらゆる適切なコンピュータ読取可能な媒体を含むことができる。固定記憶
装置340は、オペレーティングシステム(OS)342、一以上の実行可能ファイル3
44、一以上のアプリケーション又はプログラム346、データ348等を保管すること
ができる。固定記憶装置340は、一般的に、一次記憶装置より低速な、(ハードディス
クのような)二次記憶媒体である。適切な場合には、固定記憶装置340に保管される情
報は、仮想メモリとして、メモリ330に結合され得る。
【0051】
プロセッサ320は、例えば、グラフィックスコントロール354、ビデオインターフ
ェース358、入力インターフェース360、出力インターフェース362及び記憶装置
インターフェース364のような、様々なインターフェースへと接続され得る。それらは
、それぞれ、順に、適切な装置へと接続され得る、例示的な入力装置又は出力装置は、ビ
デオディスプレイ、トラックボール、マウス、キーボード、マイク、タッチディスプレイ
、トランスデューサカードリーダ、磁気テープ又は紙テープリーダ、タブレット、スタイ
ラス、音声又は手書き認識装置、バイオメトリクスリーダ又はコンピュータシステムを含
むが、これに限られない。ネットワークインターフェース356は、プロセッサ320を
、別のコンピュータシステム又はネットワーク380と接続し得る。ネットワークインタ
ーフェース356により、プロセッサ320は、特定の実施形態についてのステップを実
行する間に、ネットワーク380から情報を読み出し、ネットワーク380へ情報を送信
することができる。特定の実施形態は、プロセッサ320において、単独で実行し得る。
特定の実施形態は、プロセッサ320と、一以上のリモートプロセッサにおいて、ともに
実行し得る。
【0052】
ネットワーク環境において、コンピュータシステム300がネットワーク380に接続
されているとき、コンピュータシステム300は、ネットワーク380に接続されている
、他の装置と通信することができる。コンピュータシステム300は、ネットワークイン
ターフェース356を介して、ネットワーク380と通信することができる。例えば、コ
ンピュータシステム300は、(別の装置からの要求又は応答のような)ネットワーク3
80からの情報を、ネットワークインターフェース356で、一以上の着信パケットとし
て、受信することができる。そして、メモリ330は、後続の処理のために、その着信パ
ケットを保管することができる。コンピュータシステム300は、(別の装置への要求又
は応答のような)情報を、ネットワークインターフェース356から、一以上の発信パケ
ットとして、ネットワーク380へ送信することができる。メモリ330は、送信に先立
って、これを保管することができる。プロセッサ320は、メモリ330の着信パケット
又は発信パケットにアクセスすることができ、必要に応じて、それを処理する。
【0053】
コンピュータシステム300は、一以上の入力装置366(キーパッド、キーボード、
マウス、スタイラスを含む)、一以上の出力装置368(一以上のディスプレイ、一以上
のスピーカ、一以上のプリンタ等を含む)、一以上の記憶装置370及び一以上の記憶媒
体372を有してもよい。入力装置366は、コンピュータシステム300に外付けされ
ていてもよく、あるいは内蔵されていてもよい。出力装置368は、コンピュータシステ
ム300に外付けされていてもよく、あるいは内蔵されていてもよい。記憶装置370は
、コンピュータシステム300に外付けされていてもよく、あるいは内蔵されていてもよ
い。記憶媒体372は、コンピュータシステム300に外付けされていてもよく、あるい
は内蔵されていてもよい。
【0054】
特定の実施形態は、本明細書で記述され、説明された、一以上の処理についての、一以
上のステップを実行するソフトウェアを具体化する、一以上のコンピュータ読取可能な記
録媒体を含む、一以上のコンピュータ記憶製品(computer-storage product)を含む。
特定の実施形態において、媒体、ソフトウェア又はその両方の、一以上の部品は、本明細
書で記述され、説明された、一以上の処理についての、一以上のステップを特に実行する
よう設計され、製造され得る。さらに、あるいは代替として、特定の実施形態において、
媒体、ソフトウェア又はその両方の、一以上の部品は、本明細書で記述され、説明された
処理専用の設計又は製造ではなく、一般的に利用可能なものであってもよい。例示的な、
コンピュータ読取可能な記憶媒体は、(CD−ROMのような)CD、FPGA、フロッ
ピーディスク、フロプティカルディスク、ハードディスク、ホログラフィック記憶装置、
(ASICのような)IC、磁気テープ、キャッシュ、PDL、RAM、ROM、半導体
メモリ及び他の適切なコンピュータ読取可能な記憶媒体を含むが、これに限られない。特
定の実施形態において、ソフトウェアは、コンパイラが生成する機械語又はコンパイラが
インタプリタを用いて実行可能な高級コードを含む一以上のファイルであり得る。
【0055】
例として、メモリ330は、ソフトウェアを具体化する、一以上のコンピュータ読取可
能な記憶媒体を含んでもよい。そして、コンピュータシステム300は、プロセッサ32
0がそのソフトウェアを実行した結果として、本明細書で記述され、あるいは説明された
、特定の機能を提供することができる。メモリ330は、そのソフトウェアを保管するこ
とができ、プロセッサ320は、そのソフトウェアを実行することができる。メモリ33
0は、そのソフトウェアを具体化する大容量記憶装置330中の、コンピュータ読取可能
な記憶媒体から、あるいは、ネットワークインターフェース356を介して、一以上の他
のソースから、そのソフトウェアを読み出すことができる。ソフトウェアを実行するとき
、プロセッサ320は、本明細書で記述され、又は説明された、一以上の処理についての
、一以上のステップを実行することができる。その処理は、メモリ330内に、記憶のた
めの、一以上のデータ構造を定義する段階と、必要に応じて、そのソフトウェアの一以上
の部品によって指示される通りに、一以上のデータ構造を修正する段階とを含む。追加で
、あるいは代替として、コンピュータシステム300は、本明細書で記述され、又は説明
された、特定の機能を、ハードウェアに組み込まれたロジックか、あるいは回路内に具体
化されたロジックの結果として、提供することができる。そのロジックは、ソフトウェア
の代わりに、あるいはソフトウェアとともに動作し、本明細書で記述され、又は説明され
た、一以上の処理についての、一以上のステップを実行する。本明細書は、必要に応じて
、ハードウェアとソフトウェアの適切な組み合わせを含む。
【0056】
本明細書は、特定の順序で生ずる特定の演算について記述し、あるいは説明したが、あ
らゆる適切な順序で行われる、適切な演算を意図している。さらに、本明細書は、適切な
順序で、一回以上、繰り返される、適切な演算を意図している。本明細書は、順番に生ず
る特定の演算について記述し、あるいは説明したが、必要に応じて、略同時に行われる、
適切な演算を意図している。本明細書で記述され、あるいは説明される、あらゆる適切な
演算又は演算の連続は、中断され、一時停止され、あるいは、必要に応じて、オペレーテ
ィングシステム又はカーネルのような、他の処理によって制御され得る。かかる動作は、
オペレーティングシステム環境において動作し得る。あるいは、システム処理の全て又は
本質的な部分を占める独立した手順として動作し得る。
【0057】
本明細書は、当業者が理解するであろう、例示的な本実施形態への全ての変更、置換、バリエーション、代替又は改良を包含する。同様に、必要に応じて、添付されたクレームは、当業者が理解するであろう、例示的な本実施形態への全ての変更、置換、バリエーション、代替又は改良を包含する。
なお、上記の実施形態によれば、以下の構成もまた開示される。
[項目1]
第一のコンピュータシステムと第二のコンピュータシステムとの間のネットワーク接続を通じて、前記第一のコンピュータシステムが、前記第二のコンピュータシステムから送信されたデータストリームを受信する段階であって、前記データストリームは、ソフトウェアプログラムの実行可能なコードを含む、段階と;
前記第一のコンピュータシステムが、前記データストリームから、前記ソフトウェアプログラムの実行可能なコードを抽出する段階と;
前記第一のコンピュータシステムが、動的メモリを、前記ソフトウェアプログラムの実行可能なコードのために割り当てる段階と;
前記第一のコンピュータシステムが、前記ソフトウェアプログラムの実行可能なコードを、割り当てられた前記動的メモリへと直接ロードする段階と;
前記第一のコンピュータシステムが、割り当てられた前記動的メモリにロードされた、前記ソフトウェアプログラムの実行可能なコードを起動することにより、前記ソフトウェアプログラムを実行する段階と;
を含む、方法。
[項目2]
前記データストリームは、ビデオストリームであり、
前記ソフトウェアプログラムの実行可能なコードは、前記ビデオストリームに埋め込まれる、
項目1に記載の方法。
[項目3]
前記ソフトウェアプログラムの実行可能なコードは、機械コード又はネイティブコードである、
項目1に記載の方法。
[項目4]
前記ソフトウェアプログラムの実行の可能なコードは、前記第二のコンピュータシステムによって圧縮されており、
前記第一のコンピュータシステムが、前記ソフトウェアプログラムの実行可能なコードを展開する段階
をさらに含む、項目1に記載の方法。
[項目5]
前記第一のコンピュータシステムが、実行可能なコードを含むものとして、割り当てられた前記動的メモリをマークする段階と;
前記第一のコンピュータシステムが、分岐テーブルの一以上のエントリを調整して、割り当てられた前記動的メモリと、割り当てられた前記動的メモリにロードされた前記ソフトウェアプログラムの実行可能なコードに反映させる段階と;
をさらに含む、項目1に記載の方法。
[項目6]
前記データストリームは、第一の部分と第二の部分を含み;
前記データストリームの前記第一の部分は、前記ソフトウェアプログラムの実行可能なコードを含み、
前記データストリームの前記第二の部分は、前記ソフトウェアプログラムによって使用される複数のデータを含む、
項目1に記載の方法。
[項目7]
前記第一のコンピュータシステムが、前記データストリームと関連付けられたネットワークソケットを、前記ソフトウェアプログラムに渡す段階であって、前記データストリームの前記第二の部分に含まれる前記データが、前記ソフトウェアプログラムの実行中に、前記ソフトウェアプログラムによって使用される、段階
をさらに含む、項目6に記載の方法。
[項目8]
前記第一のコンピュータシステムが、前記ソフトウェアプログラムの実行可能なコードを検証する段階
をさらに含む、項目1に記載の方法。
[項目9]
前記第一のコンピュータシステムが、前記ソフトウェアプログラムの実行が完了した後に、割り当てられた前記動的メモリを開放する段階
をさらに含む、項目1に記載の方法。
[項目10]
第一のシステムであって:
一以上のプロセッサにより実行可能な命令を有するメモリと;
前記メモリに接続され、前記命令を実行するよう機能する、一以上のプロセッサと;
を有し、
前記一以上のプロセッサは、前記命令を実行するとき:
当該第一のシステムと第二のシステムとの間のネットワーク接続を通じて、前記第二のシステムから送信されたデータストリームを受信し、前記データストリームは、ソフトウェアプログラムの実行可能なコードを含み;
前記データストリームから、前記ソフトウェアプログラムの実行可能なコードを抽出し;
動的メモリを、前記ソフトウェアプログラムの実行可能なコードのために割り当て;
前記ソフトウェアプログラムの実行可能なコードを、割り当てられた前記動的メモリへと直接ロードし;
割り当てられた前記動的メモリにロードされた、前記ソフトウェアプログラムの実行可能なコードを起動することにより、前記ソフトウェアプログラムを実行する;
よう機能する、システム。
[項目11]
前記データストリームは、ビデオストリームであり、
前記ソフトウェアプログラムの実行可能なコードは、前記ビデオストリームに埋め込まれる、
項目10に記載のシステム。
[項目12]
前記ソフトウェアプログラムの実行可能なコードは、機械コード又はネイティブコードである、
項目10に記載のシステム。
[項目13]
前記ソフトウェアプログラムの実行の可能なコードは、前記第二のシステムによって圧縮されており、
前記一以上のプロセッサは、前記命令を実行するとき、前記ソフトウェアプログラムの実行可能なコードを展開するようさらに機能する、
項目10に記載のシステム。
[項目14]
前記一以上のプロセッサは、前記命令を実行するとき:
実行可能なコードを含むものとして、割り当てられた前記動的メモリをマークし;
分岐テーブルの一以上のエントリを調整して、割り当てられた前記動的メモリと、割り当てられた前記動的メモリにロードされた前記ソフトウェアプログラムの実行可能なコードに反映させる;
ようさらに機能する、項目10に記載のシステム。
[項目15]
前記データストリームは、第一の部分と第二の部分を含み;
前記データストリームの前記第一の部分は、前記ソフトウェアプログラムの実行可能なコードを含み;
前記データストリームの前記第二の部分は、前記ソフトウェアプログラムによって使用される複数のデータを含む;
項目10に記載のシステム。
[項目16]
前記一以上のプロセッサは、前記命令を実行するとき:
前記データストリームと関連付けられたネットワークソケットを、前記ソフトウェアプログラムに渡すようさらに機能し、
前記データストリームの前記第二の部分に含まれる前記データが、前記ソフトウェアプログラムの実行中に、前記ソフトウェアプログラムによって使用される、
項目15に記載のシステム。
[項目17]
前記一以上のプロセッサは、前記命令を実行するとき、前記ソフトウェアプログラムの実行可能なコードを検証する
ようさらに機能する、項目10に記載のシステム。
[項目18]
前記一以上のプロセッサは、前記命令を実行するとき、前記ソフトウェアプログラムの実行が完了した後に、割り当てられた前記動的メモリを開放する
ようさらに機能する、項目10に記載のシステム。
[項目19]
一以上のコンピュータ読取可能な記憶媒体であって、第一のコンピュータシステムによって実行されるとき、
前記第一のコンピュータシステムと第二のコンピュータシステムとの間のネットワーク接続を通じて、前記第二のコンピュータシステムから送信されたデータストリームを受信し、前記データストリームは、ソフトウェアプログラムの実行可能なコードを含み;
前記データストリームから、前記ソフトウェアプログラムの実行可能なコードを抽出し;
動的メモリを、前記ソフトウェアプログラムの実行可能なコードのために割り当て;
前記ソフトウェアプログラムの実行可能なコードを、割り当てられた前記動的メモリへと直接ロードし;
割り当てられた前記動的メモリにロードされた、前記ソフトウェアプログラムの実行可能なコードを起動することにより、前記ソフトウェアプログラムを実行する;
よう機能するソフトウェアを具体化する、コンピュータ読取可能な記憶媒体。
[項目20]
前記データストリームは、ビデオストリームであり、
前記ソフトウェアプログラムの実行可能なコードは、前記ビデオストリームに埋め込まれる、
項目19に記載の記憶媒体。
[項目21]
前記ソフトウェアプログラムの実行可能なコードは、機械コード又はネイティブコードである、
項目19に記載の記憶媒体。
[項目22]
前記ソフトウェアプログラムの実行の可能なコードは、前記第二のコンピュータシステムによって圧縮されており、
前記ソフトウェアは、前記第一のコンピュータシステムによって実行されるとき、前記ソフトウェアプログラムの実行可能なコードを展開するようさらに機能する、
項目19に記載の記憶媒体。
[項目23]
前記ソフトウェアは、前記第一のコンピュータシステムによって実行されるとき:
実行可能なコードを含むものとして、割り当てられた前記動的メモリをマークし;
分岐テーブルの一以上のエントリを調整して、割り当てられた前記動的メモリと、割り当てられた前記動的メモリにロードされた前記ソフトウェアプログラムの実行可能なコードに反映させる;
ようさらに機能する、項目19に記載の記憶媒体。
[項目24]
前記データストリームは、第一の部分と第二の部分を含み;
前記データストリームの前記第一の部分は、前記ソフトウェアプログラムの実行可能なコードを含み;
前記データストリームの前記第二の部分は、前記ソフトウェアプログラムによって使用される複数のデータを含む;
項目19に記載の記憶媒体。
[項目25]
前記ソフトウェアは、前記第一のコンピュータシステムによって実行されるとき:
前記データストリームと関連付けられたネットワークソケットを、前記ソフトウェアプログラムに渡すようさらに機能し、
前記データストリームの前記第二の部分に含まれる前記データが、前記ソフトウェアプログラムの実行中に、前記ソフトウェアプログラムによって使用される、
項目24に記載の記憶媒体。
[項目26]
前記ソフトウェアは、前記第一のコンピュータシステムによって実行されるとき、前記ソフトウェアプログラムの実行可能なコードを検証する、
項目19に記載の記憶媒体。
[項目27]
前記ソフトウェアは、前記第一のコンピュータシステムによって実行されるとき、前記ソフトウェアプログラムの実行が完了した後に、割り当てられた前記動的メモリを開放する、
項目19に記載の記憶媒体。