JP5459743B2 - Stream-based software application distribution and activation system - Google Patents

Stream-based software application distribution and activation system Download PDF

Info

Publication number
JP5459743B2
JP5459743B2 JP2012540153A JP2012540153A JP5459743B2 JP 5459743 B2 JP5459743 B2 JP 5459743B2 JP 2012540153 A JP2012540153 A JP 2012540153A JP 2012540153 A JP2012540153 A JP 2012540153A JP 5459743 B2 JP5459743 B2 JP 5459743B2
Authority
JP
Japan
Prior art keywords
software program
executable code
software
computer system
data stream
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012540153A
Other languages
Japanese (ja)
Other versions
JP2013511782A5 (en
JP2013511782A (en
Inventor
マイケル アーバック,ジュリアン
Original Assignee
マイケル アーバック,ジュリアン
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by マイケル アーバック,ジュリアン filed Critical マイケル アーバック,ジュリアン
Publication of JP2013511782A publication Critical patent/JP2013511782A/en
Publication of JP2013511782A5 publication Critical patent/JP2013511782A5/ja
Application granted granted Critical
Publication of JP5459743B2 publication Critical patent/JP5459743B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44589Program code verification, e.g. Java bytecode verification, proof-carrying code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Description

本発明は、コンピュータネットワークを通じた、コンピュータソフトウェアの配信に関し、特には、クライアントで実行するために、コンピュータネットワークを通じて、コンピュータソフトウェアを、サーバからクライアントへと提供することに関する。   The present invention relates to the distribution of computer software over a computer network, and more particularly to providing computer software from a server to a client over a computer network for execution on a client.

コンピュータソフトウェアは、様々な方法で、個々のコンピュータシステムへと配信され得る。例えば、一のソフトウェアは、CD(Compact Disc)又はDVD(Digital Versatile Disc)に保管され得る。ユーザは、そのようなディスクを、コンピュータシステムのディスクドライブに挿入し、ディスクに保管された一のソフトウェアを、コンピュータシステムへとインストールすることができる。最近では、コンピュータネットワークが、ソフトウェア配信のための、別のチャネルを提供する。ユーザは、別の、遠隔のコンピュータシステム(例えば、サーバ)から、コンピュータネットワーク(例えば、インターネット)を通じて、一のソフトウェアを、自らのコンピュータシステム(例えば、クライアント)へとダウンロードすることができる。ネットワークを通じてダウンロードされたファイルは、一のソフトウェアが組み込まれた、インストールスイート、スクリプト又は実行ファイルであることが多い。ユーザは、コンピュータシステムのハードドライブの、永続的な場所か、又は一時的なディレクトリに、ダウンロードしたファイルを保存することができる。そして、ユーザは、保存されたファイルを実行し、コンピュータシステムに、一のソフトウェアをインストールすることができる。   Computer software can be distributed to individual computer systems in a variety of ways. For example, a piece of software can be stored on a CD (Compact Disc) or a DVD (Digital Versatile Disc). A user can insert such a disc into the disc drive of the computer system and install a piece of software stored on the disc into the computer system. Recently, computer networks have provided another channel for software distribution. A user can download a piece of software from another, remote computer system (eg, a server) over a computer network (eg, the Internet) to his computer system (eg, a client). Often, a file downloaded through a network is an installation suite, script, or executable file in which a piece of software is incorporated. The user can save the downloaded file in a permanent location or temporary directory on the computer system hard drive. The user can then execute the stored file and install a piece of software on the computer system.

コンピュータネットワークを通じてダウンロードしたソフトウェアプログラムを、ソフトウェアを実行するために、コンピュータシステムのハードドライブに保存し、又はインストールすることは、時に、不都合で、煩わしいことがある。   It can sometimes be inconvenient and cumbersome to store or install a software program downloaded over a computer network on a hard drive of a computer system in order to execute the software.

そこで、本発明のある特定の実施形態において、実行可能なコードオブジェクトを、マルチメディアデータのようなデータストリームへと埋め込む方法を提供することを目的とする。   Accordingly, it is an object of certain embodiments of the present invention to provide a method for embedding executable code objects into a data stream such as multimedia data.

特定の実施形態において、方法は:
第一のコンピュータシステムが、第二のコンピュータシステムから、ダウンロード可能なソフトウェアプログラムを特定するURI(Uniform Resource Identifier)を含むソフトウェアスタブを受信する段階と;
前記第一のコンピュータシステムが、受信した前記ソフトウェアスタブをインストールする段階と;
前記ソフトウェアスタブが、前記URIを含む要求であって、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードについての前記要求を送信する段階と;
前記第一のコンピュータシステムと前記第二のコンピュータシステムとの間のネットワーク接続を通じて、前記第一のコンピュータシステムの前記ソフトウェアスタブが、前記第二のコンピュータシステムから送信されたデータストリームにおける前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを受信する段階であって、前記データストリームは、ソフトウェアプログラムの実行可能なコードを含む、段階と;
前記第一のコンピュータシステムが、前記データストリームから、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを抽出する段階と;
前記第一のコンピュータシステムが、動的メモリを、前記ダウンロード可能なソフトウェアプログラムの前記実行可能なコードに割り当てる段階と;
前記第一のコンピュータシステムが、前記データストリームから抽出された前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを、割り当てられた前記動的メモリへと直接ロードし、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードは、前記第一のコンピュータシステムの永続的なストレージに保管またはインストールされない、段階と;
前記第一のコンピュータシステムが、割り当てられた前記動的メモリにロードされた、前記ダウンロード可能なソフトウェアプログラムの前記実行可能なコードを起動することにより、前記ダウンロード可能なソフトウェアプログラムを実行する段階と;を含む。

In certain embodiments, the method is:
A first computer system receiving a software stub including a Uniform Resource Identifier (URI) identifying a downloadable software program from the second computer system;
The first computer system installing the received software stub;
Sending the request for executable code of the downloadable software program, wherein the software stub is a request including the URI;
Through a network connection between said first computer system and said second computer system, said software stub of the first computer system, capable the download in the data stream transmitted from the second computer system Receiving executable code of a software program, wherein the data stream includes executable code of a software program;
Said first computer system extracting executable code of said downloadable software program from said data stream;
Said first computer system allocating dynamic memory to said executable code of said downloadable software program;
The first computer system directly loads the executable code of the downloadable software program extracted from the data stream into the allocated dynamic memory and executes the downloadable software program No code is stored or installed in persistent storage of the first computer system ; and
Said first computer system, loaded into the dynamic memory allocated by activating the executable code of the downloadable software program, the method comprising executing the downloadable software programs; including.

本開示の、これらの特徴、態様及び利点及び他の特徴、態様及び利点は、以下の詳細な説明中で、次の図面とともに、より詳細に説明される。   These features, aspects and advantages and other features, aspects and advantages of the present disclosure will be described in more detail in the following detailed description in conjunction with the following drawings.

クライアントで実行するために、サーバからクライアントへ、一のコンピュータソフトウェアを提供する例示的な方法を表す図。FIG. 4 is a diagram representing an exemplary method of providing a piece of computer software from a server to a client for execution on the client. 例示的なネットワーク環境を表す図。1 is a diagram representing an exemplary network environment. FIG. 例示的なコンピュータシステムを表す図。1 is a diagram illustrating an example computer system.

本開示は、いくつかの実施形態への参照とともに、添付される図面を用いて説明される。以下の説明において、本開示の完全な理解を提供するために、多数の特定の詳細について説明される。しかしながら、当業者にとって、本開示が、これらの特定の詳細のいくつか又は全てがなくとも実行可能であることは、明らかである。他の例において、既知の処理ステップ及び/又は構造は、本開示を不要に曖昧としないよう、詳細には説明されない。さらに、本開示は、特定の実施形態に関して説明されるが、かかる説明は、説明される実施形態への開示を限定することを意図していない。一方で、かかる説明は、添付されるクレームによって定義される開示の精神及び範囲に含まれ得る、代替、修正及び均等物をカバーすることを意図している。   The present disclosure will be described with reference to the accompanying drawings, with reference to some embodiments. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present disclosure. However, it will be apparent to those skilled in the art that the present disclosure may be practiced without some or all of these specific details. In other instances, well-known processing steps and / or structures have not been described in detail so as not to unnecessarily obscure the present disclosure. Furthermore, although the present disclosure is described with respect to particular embodiments, such description is not intended to limit the disclosure to the described embodiments. On the one hand, such description is intended to cover alternatives, modifications and equivalents that may be included within the spirit and scope of the disclosure as defined by the appended claims.

コンピュータソフトウェアは、コンピュータネットワーク(例えば、インターネット)を通じて、あるコンピュータシステムから、別のコンピュータシステムへと、配信され得る。実際に、多くのソフトウェア開発者、製造者及び配信者は、ソフトウェア配信のために、コンピュータネットワークが、便利で、高速で、コストパフォーマンスの高いチャネルであると考えている。例えば、ユーザは、企業のウェブサイトから、企業によって開発された、一のコンピュータソフトウェアの最新バージョンを、ダウンロードすることができる。典型的なシナリオにおいて、ユーザは、自らのコンピュータシステムで実行されるウェブブラウザで、一のソフトウェアへのダウンロードリンクを含むウェブページを読み込み、ウェブページ内で提供されるダウンロードリンクをクリックすることができる。これにより、ファイルが、ユーザのコンピュータシステムへとダウンロードされる。このファイルは、インストールスクリプト、実行ファイル又はソフトウェア本体の実行可能なコードであり得る。ユーザは、自らのコンピュータシステムのハードドライブに、そのファイルを保存することができる。そのファイルが、インストールスクリプト又は実行ファイルである場合には、ユーザは、ダウンロードしたファイルを実行して、自らのコンピュータシステムに、ソフトウェアをインストールすることができる。一方で、そのファイルがソフトウェアの実行可能なコードである場合には、ユーザは、直接、ソフトウェアを実行することができる(例えば、実行可能なファイルをダブルクリックすることにより)。   Computer software can be distributed from one computer system to another over a computer network (eg, the Internet). In fact, many software developers, manufacturers and distributors consider computer networks as a convenient, fast and cost effective channel for software distribution. For example, a user can download the latest version of a piece of computer software developed by a company from a company website. In a typical scenario, a user can load a web page containing a download link to a piece of software with a web browser running on his computer system and click on the download link provided within the web page. . This downloads the file to the user's computer system. This file can be an install script, an executable file, or executable code of the software body. The user can save the file on the hard drive of his computer system. If the file is an installation script or an executable file, the user can execute the downloaded file to install the software on his computer system. On the other hand, if the file is an executable code of the software, the user can execute the software directly (eg, by double-clicking the executable file).

コンピュータネットワークを通じてダウンロードしたソフトウェアプログラムを、ソフトウェアを実行するために、コンピュータシステムのハードドライブに保存し、又はインストールする必要があることは、時に、不都合で、煩わしいことがある。例えば、第一に、ハードドライブへダウンロードしたファイルを保管すること、および、コンピュータシステムにソフトウェアをインストールすることは、たびたび、時間がかかる。そして、一のソフトウェアのサイズが大きい場合には(例えば、Adobe社のPDF Reader(登録商標))、インストール処理に、顕著に時間がかかる可能性がある。コンピュータシステムのユーザは、ダウンロードしたソフトウェアを実行する前に、いくつかのステップ(例えば、インストール、セットアップ等)を踏む必要がある。第二に、ファイルをハードドライブに保存し、ソフトウェアをコンピュータシステムにインストールすることは、コンピュータシステムのストレージ容量(例えば、ハードドライブ空間)を使い果たす。時に、コンピュータシステム(例えば、ネットブック又はノートブックコンピュータ)は、ユーザがコンピュータシステムにインストールしたいと思っているソフトウェアの全てに対して、十分なストレージ空間を有していないことがある。第三に、ソフトウェア開発者は、時々、ソフトウェアを更新し、そのソフトウェアの新しいバージョンをリリースし得る。一のソフトウェアの新しいバージョンは、通常、古いバージョンより、よりよい品質である。
従って、ユーザは、ソフトウェアを適度に最新に保ちたいと考え得る。しかしながら、一のソフトウェアを更新するために、ユーザは、現在、自らのコンピュータシステムにインストールされている古いバージョンのソフトウェアをアンインストールしてから、新しいバージョンのものをダウンロードし、インストールする必要がある。
It may sometimes be inconvenient and cumbersome for software programs downloaded over a computer network to be stored or installed on a hard drive of a computer system in order to execute the software. For example, first, storing downloaded files on a hard drive and installing software on a computer system is often time consuming. If the size of one software is large (for example, Adobe PDF Reader (registered trademark)), the installation process may take a significant amount of time. A computer system user needs to take several steps (eg, installation, setup, etc.) before executing the downloaded software. Second, storing files on the hard drive and installing software on the computer system uses up the storage capacity (eg, hard drive space) of the computer system. Sometimes a computer system (eg, a netbook or notebook computer) does not have enough storage space for all of the software that the user wants to install on the computer system. Third, software developers can sometimes update software and release new versions of the software. A new version of one software is usually of better quality than an older version.
Thus, the user may want to keep the software reasonably up to date. However, in order to update a piece of software, the user needs to uninstall the old version of the software currently installed on his computer system, and then download and install the new version.

これらの問題のいくつかに対処する目的で、特定の実施形態では、あるコンピュータシステム(例えば、クライアント)のユーザは、ユーザのコンピュータシステムの永続的なストレージ(例えば、ハードドライブ)へ、ダウンロードしたソフトウェアプログラムを保管し、あるいはインストールする必要なく、ユーザのコンピュータでの実行を行うために、コンピュータネットワーク(例えば、インターネット)を通じて、別のコンピュータシステム(例えば、サーバ)から、コンピュータソフトウェアプログラムをダウンロードすることができる。明確化のために、以後、ソフトウェアをダウンロードし、そのソフトウェアが実行されるコンピュータシステムを、「クライアント」と呼び、ソフトウェアがダウンロードされるコンピュータシステムを、「サーバ」と呼ぶ。しかしながら、当業者は、以下でより詳細に説明される実施形態が、あらゆる二つのコンピュータシステム(例えば、二つのサーバ、二つのクライアント、一つのサーバと一つのクライアント)にうまく適応可能であることを理解することができる。   In order to address some of these issues, in certain embodiments, a user of one computer system (eg, a client) downloads software to permanent storage (eg, a hard drive) of the user's computer system. Downloading a computer software program from another computer system (eg, a server) over a computer network (eg, the Internet) for execution on a user's computer without having to store or install the program it can. For clarity, hereinafter, a computer system that downloads software and executes the software is referred to as a “client”, and a computer system that downloads software is referred to as a “server”. However, those skilled in the art will appreciate that the embodiments described in more detail below are well adaptable to any two computer systems (eg, two servers, two clients, one server and one client). I can understand.

特定の実施形態において、ここでは「ソフトウェアスタブ」又は、単に「スタブ」と呼ばれる、ソフトウェアプログラムが、クライアントにインストールされ、実行され得る。特定の実施形態において、スタブは、クライアントとサーバの間のネットワーク接続を確立し、そのネットワーク接続を通じて、サーバからクライアントへ、コンピュータソフトウェアプログラムをダウンロードすることができる。特定の実施形態において、サーバからクライアントへダウンロードされた一のソフトウェアについての実行可能なコードは、ネットワーク接続を通じて、サーバからクライアントへ送信される、データストリームの中に組み込まれ得る。データストリームを受信すると、スタブは、一のソフトウェアの実行可能なコードを抽出し、クライアントにおける実行のために、該コードを、クライアントのランダムアクセスメモリ(RAM)に直接読込むことができる。一のソフトウェアは、クライアントの如何なる永続的なストレージ(例えば、ハードドライブ)には保存されず、または、インストールされない。一のソフトウェアは、クライアントでのコードの実行を終えると、一のソフトウェアが読込まれた実行可能なコードのRAM空間が開放され、一のソフトウェアは、クライアント上の何処にも存在しなくなる。   In certain embodiments, a software program, referred to herein as a “software stub” or simply “stub”, may be installed and executed on the client. In certain embodiments, a stub can establish a network connection between a client and a server and download a computer software program from the server to the client over the network connection. In certain embodiments, executable code for a piece of software downloaded from the server to the client may be embedded in a data stream that is sent from the server to the client over a network connection. Upon receipt of the data stream, the stub can extract a piece of software executable code and load it directly into the client's random access memory (RAM) for execution at the client. One software is not stored or installed on any persistent storage (eg, hard drive) of the client. When the one software finishes executing the code on the client, the RAM space of the executable code loaded with the one software is released, and the one software does not exist anywhere on the client.

特定の実施形態において、スタブは、クライアントに保管若しくはインストールされたスタンドアロンのソフトウェアプログラムか、又は、クライアントにインストールされたウェブブラウザのプラグイン若しくはアドオンであってもよい。スタブは、コンピュータソフトウェアプログラムを、個々のコンピュータシステムに配信するために適切な、既存のあらゆる方法(例えば、CD、DVD、ネットワークによるダウンロード等)を用いて、クライアントに保管され、あるいはインストールされてもよい。特定の実施形態において、スタブは、小さなソフトウェア(すなわち、サイズが小さい)であり得るため、クライアントのストレージ容量を多く消費しない。スタブは、スタンドアロンのソフトウェアプログラムである場合には、単独で実行され、プラグイン又はアドオンソフトウェアである場合には、ウェブブラウザを通じて実行され得る。   In certain embodiments, the stub may be a stand-alone software program stored or installed on the client, or a web browser plug-in or add-on installed on the client. A stub may be stored or installed on a client using any existing method suitable for distributing computer software programs to individual computer systems (eg, CD, DVD, network download, etc.). Good. In certain embodiments, stubs can be small software (ie, small in size) and therefore do not consume much of the client's storage capacity. The stub can be executed alone if it is a stand-alone software program, and can be executed through a web browser if it is plug-in or add-on software.

コンピュータソフトウェアプログラムをダウンロードして、起動するために、クライアント上で、スタブを用いることにより、スタブのみが、クライアント上に、永続的に保存され、あるいはインストールされる必要がある。他のソフトウェアは、クライアント上で、保管され、あるいはインストールされる必要なく、ダウンロードされ、起動され得る。このことは、クライアントで使用されるストレージ容量を減少させ得る。さらに、一のソフトウェアは、その実行の直前に、クライアント上にダウンロードされる。そのため、特定の実施形態は、そのソフトウェアがダウンロードされ、起動されるたびに、そのソフトウェアの最新のバージョン(又は、いかなる所望のバージョン)を提供することを容易にする。   By using a stub on the client to download and launch a computer software program, only the stub needs to be permanently stored or installed on the client. Other software can be downloaded and launched on the client without having to be stored or installed. This can reduce the storage capacity used by the client. Furthermore, a piece of software is downloaded on the client just before its execution. As such, certain embodiments facilitate providing the latest version of the software (or any desired version) each time the software is downloaded and launched.

図1は、クライアント上で永続的にコンピュータソフトウェアを保管し、又はインストールすることなく、クライアントの実行可能なメモリへと直接インストールして、クライアント上で実行するための、サーバからクライアントへの、例示的なコンピュータプログラムのダウンロード方法を示す。特定の実施形態において、図1に示されるステップは、クライアント上で実行されるスタブによって、実行され得る。特定の実施形態において、スタブは、図1に示されるステップを実行可能なように、スタンドアロンのアプリケーションか、又は、クライアントにインストールされたウェブブラウザのプラグイン若しくはアドオンとして、実行され得る。特定の実施形態において、ダウンロードされているソフトウェアプログラムは、アプリケーションプログラムである。   FIG. 1 is an illustration of a server-to-client, for installing directly on client executable memory and running on the client without permanently storing or installing computer software on the client. To download a typical computer program. In certain embodiments, the steps shown in FIG. 1 may be performed by a stub that is executed on the client. In certain embodiments, the stub can be run as a stand-alone application or as a web browser plug-in or add-on installed on the client so that the steps shown in FIG. 1 can be performed. In certain embodiments, the downloaded software program is an application program.

ステップ100において示されるように、特定の実施形態は、クライアントとサーバの間のネットワーク接続を確立することができる。ネットワーク接続は、コンピュータネットワークに接続された、二つのコンピュータシステムの間で、適切なハンドシェイクを行う方法により、確立され得る。例えば、クライアント上で実行中のスタブは、サーバに接続要求を送信する。そして、サーバは、接続要求を受信すると、その接続要求が受け入れられたか、拒否されたかを示す、応答を送信することができる。サーバが接続要求を受け入れると、特定の実施形態は、これに応じて、クライアントとサーバとの間のネットワーク接続を確立することができる。   As shown in step 100, certain embodiments can establish a network connection between a client and a server. A network connection can be established by a method of performing an appropriate handshake between two computer systems connected to a computer network. For example, a stub running on the client sends a connection request to the server. When the server receives the connection request, the server can transmit a response indicating whether the connection request is accepted or rejected. Once the server accepts the connection request, certain embodiments can establish a network connection between the client and the server accordingly.

特定の実施形態において、クライアント上で実行中のスタブによって、サーバからクライアントへとダウンロードされた各ソフトウェアプログラムは、固有の識別子によって、識別され得る。この固有の識別子は、クライアントのスタブがダウンロードを所望するソフトウェアが何であるかを、サーバに通知するために用いられ得る。特定の実施形態において、ダウンロード可能な各ソフトウェアは、ネットワーク資源とみなすことができる。従って、ダウンロード可能な特定のソフトウェアは、その固有のネットワークパス又はURI(Uniform Resource Identifier)によって、特定することができる。   In certain embodiments, each software program downloaded from the server to the client by a stub running on the client may be identified by a unique identifier. This unique identifier can be used to inform the server what software the client stub wants to download. In certain embodiments, each downloadable software can be considered a network resource. Therefore, specific software that can be downloaded can be specified by its unique network path or URI (Uniform Resource Identifier).

特定の実施形態において、特定のソフトウェアをダウンロードする目的で、ネットワーク接続を確立するために、クライアントのユーザは、特定のソフトウェアの固有の識別子(例えば、URI)を、スタブがスタンドアロンのアプリケーションである場合にはクライアント上で実行中のスタブへ直接提供することができ、あるいは、プラグインとしてのスタブを有するウェブブラウザへ提供することができる。このプロセスは、ウェブページのURL(Uniform Resource Locator)をウェブブラウザへ提供することによって、ウェブページを要求することに、とても似ている。例えば、ユーザは、ビデオデータストリームに対応するURLをクリックすることができる。それにより、プラグインは、URLを受け取り、以下に示される処理フローを開始する。スタブは、ユーザが要求している特定のソフトウェアの識別子に基づいて(例えば、要求されているソフトウェアのURIを、サーバのIPアドレスとマッピングすることにより)、ネットワーク接続がどの特定のサーバに対して確立されるべきかを決定する。特定の実施形態において、スタブは、ユーザが、ソフトウェアを都合よく検索できるような、ソフトウェアの個々の識別子のブックマークを可能とする、ユーザインターフェース(UI)を提供することができる。   In certain embodiments, to establish a network connection for the purpose of downloading specific software, a client user may provide a unique identifier (eg, a URI) for the specific software and if the stub is a standalone application. Can be provided directly to a stub running on the client, or can be provided to a web browser having a stub as a plug-in. This process is very similar to requesting a web page by providing the web page URL (Uniform Resource Locator) to the web browser. For example, the user can click on the URL corresponding to the video data stream. Thereby, the plug-in receives the URL and starts the processing flow shown below. The stub is based on the specific software identifier that the user is requesting (for example, by mapping the requested software URI to the server's IP address) to which specific server the network connection is. Decide what should be established. In certain embodiments, the stub can provide a user interface (UI) that allows bookmarking of individual identifiers of the software so that the user can conveniently search the software.

特定の実施形態において、特定のサーバにネットワーク接続を要求するとき、スタブは、ユーザが要求している特定のソフトウェアの固有の識別子を、接続要求とともに、あるいは接続要求の一部として、サーバに送信することができる。サーバは、どの特定のソフトウェアを要求するクライアントに送信すべきかを決定することができる。その処理は、ウェブブラウザを介して、(例えば、ウェブページに含まれた、ダウンロード可能なファイルへのURL又はURIリンクをクリックすることにより)データストリームを呼び出すことと類似し得る。   In certain embodiments, when requesting a network connection from a particular server, the stub sends a unique identifier for the particular software that the user is requesting to the server, either with the connection request or as part of the connection request. can do. The server can determine which particular software to send to the requesting client. The process can be similar to invoking a data stream via a web browser (eg, by clicking on a URL or URI link to a downloadable file contained on a web page).

ステップ102において示されるように、特定の実施形態において、サーバは、データストリームを、要求したクライアント、特に、要求したクライアント上で実行中のスタブに、送信することができる。ネットワーク接続は、TCP(Transport Control Protocol)接続、UDP(User Datagram Protocol)接続又は他の適切な接続であってもよい。特定の実施形態において、データストリームは、ビデオストリーム又はオーディオストリームであってもよい。特定の実施形態において、スタブによって要求された特定のソフトウェアは、一以上のデータパケットとして、データストリーム内に埋め込まれ得る。例えば、ソフトウェアは、ビデオコーデックによりエンコードされたビデオストリームを受信し、そのデータをデコードし、クライアントのディスプレイ上にビデオデータを描画する、ビデオデコーダであってもよい。   As shown in step 102, in certain embodiments, the server may send the data stream to the requesting client, particularly to a stub running on the requesting client. The network connection may be a Transport Control Protocol (TCP) connection, a User Datagram Protocol (UDP) connection, or other suitable connection. In certain embodiments, the data stream may be a video stream or an audio stream. In certain embodiments, the particular software requested by the stub may be embedded in the data stream as one or more data packets. For example, the software may be a video decoder that receives a video stream encoded by a video codec, decodes the data, and renders the video data on a client display.

特定の実施形態において、要求されたソフトウェアの実行可能なコードは、データストリームの中に埋め込まれ得る。特定の実施形態において、要求されたソフトウェアの実行可能なコードは、機械コード又はネイティブコードであってもよく、プラットフォーム依存であってもよい。特定の実施形態において、要求されたソフトウェアの実行可能なコードは、(例えば、クライアントのアーキテクチャとオペレーティングシステムに基づいて)ソフトウェアを要求した、特定のクライアントのプラットフォームで実行するように、コンパイルされている。   In certain embodiments, the executable code of the requested software may be embedded in the data stream. In certain embodiments, the executable code of the requested software may be machine code or native code and may be platform dependent. In certain embodiments, the executable code of the requested software is compiled to execute on the particular client platform that requested the software (eg, based on the client architecture and operating system). .

特定の実施形態において、データストリームは、二つの部分を含み得る。特定の実施形態において、データストリームの第一の部分(すなわち、データストリームの最初の部分)は、ソフトウェアの実行可能なコードを含み得る。特定の実施形態において、ソフトウェアの実行可能なコードは、適切な圧縮方法を用いて、任意に圧縮され得る。例えば、zipやgzipのような、ロスレスの圧縮方法が、ソフトウェアの実行可能なコードを圧縮するために、用いられ得る。特定の実施形態において、ソフトウェアの実行可能なコードは、ビデオストリーム内に埋め込まれ得る。ほとんどの種類のビデオストリームは、一般的なコンテナの形式であるため、データ、特にソフトウェアの実行可能なコードは、そのようなビデオストリームの中に、埋め込まれ得る。特定の実施形態において、データストリームの第一の部分は、ソフトウェアの実行可能なコードをロードして実行するために必要なメモリ空間(例えば、RAMメモリ空間)のサイズを示すパラメータのような、操作上の変数及びパラメータを、さらに含み得る。   In certain embodiments, the data stream may include two parts. In certain embodiments, the first portion of the data stream (ie, the first portion of the data stream) may include software executable code. In certain embodiments, software executable code may optionally be compressed using a suitable compression method. For example, a lossless compression method, such as zip or gzip, can be used to compress software executable code. In certain embodiments, software executable code may be embedded within a video stream. Since most types of video streams are in the form of common containers, data, especially software executable code, can be embedded in such video streams. In certain embodiments, the first portion of the data stream is an operation, such as a parameter indicating the size of memory space (eg, RAM memory space) required to load and execute the software executable code. The above variables and parameters may further be included.

特定の実施形態において、データストリームの第二の部分は、ソフトウェアの実行中に、ソフトウェアによって使用され得る、追加のデータを任意に含んでもよい。特定の実施形態において、追加のデータは、適切なエンコーディング方法又は圧縮方法を用いて、任意に、エンコード又は圧縮され、一以上のデータパケットとして、送信され得る。再び、データストリームがビデオストリームである場合には、追加のデータは、MPEGエンコーディングのような、ビデオエンコーディング方法を用いて、エンコードされ得る。   In certain embodiments, the second portion of the data stream may optionally include additional data that may be used by the software during execution of the software. In certain embodiments, the additional data may be optionally encoded or compressed and transmitted as one or more data packets using an appropriate encoding or compression method. Again, if the data stream is a video stream, the additional data can be encoded using a video encoding method, such as MPEG encoding.

特定の実施形態において、データストリームを受信すると、スタブは、そのデータストリームの第一の部分にアクセスすることができ、埋め込まれたソフトウェアの実行可能なコードを抽出する。必要であれば、スタブは、抽出された、ソフトウェアの実行可能なコードをデコードし、あるいは展開してもよい。スタブによって用いられるデコーディング方法又は展開方法は、ソフトウェアの実行可能なコードを送信するサーバによって用いられた、エンコーディング方法又は圧縮方法と対応し得る。例えば、ソフトウェアの実行可能なコードが、適切な圧縮アルゴリズム(例えば、ロスレス圧縮アルゴリズム)を用いて圧縮されている場合には、スタブは、対応する展開アルゴリズムを用いて、そのコードを展開することができる。同様に、ソフトウェアの実行可能なコードが、適切なエンコーディングアルゴリズムを用いてエンコードされている場合には、スタブは、対応するデコーディングアルゴリズムを用いて、デコードし得る。さらに、特定の実施形態において、スタブは、データストリームの第一の部分にアクセスし、ソフトウェアの実行可能なコードをロードし実行するために必要な、メモリ空間のサイズを示すパラメータを抽出することができる。   In certain embodiments, upon receiving a data stream, the stub can access a first portion of the data stream and extract the embedded software executable code. If necessary, the stub may decode or extract the extracted software executable code. The decoding method or decompression method used by the stub may correspond to the encoding method or compression method used by the server sending the software executable code. For example, if software executable code is compressed using an appropriate compression algorithm (eg, a lossless compression algorithm), the stub may decompress the code using a corresponding decompression algorithm. it can. Similarly, if the software executable code is encoded using an appropriate encoding algorithm, the stub may be decoded using a corresponding decoding algorithm. Further, in certain embodiments, the stub may access a first portion of the data stream and extract a parameter indicating the size of the memory space needed to load and execute the software executable code. it can.

ステップ104において示されるように、特定の実施形態において、クライアント上に、認可されていない、あるいは悪意のあるソフトウェアがダウンロードされることを防止するため、スタブは、適切な検証方法を用いて、データストリームの第一の部分から抽出された、ソフトウェアの実行の可能なコードを検証することができる。特定の実施形態において、信頼されるソース(例えば、信頼されるサーバのドメイン名又はIPアドレス)のホワイトリストが、スタブとともに提供され得る。ソフトウェアを受信すると、スタブは、ソフトウェアを送信するソース(例えば、サーバ又はウェブサイト)を、ホワイトリストと比較することができる。ホワイトリストに載っている、信頼されるソースにより送信されたソフトウェアのみが、クライアント上で実行され得る。ホワイトリストにないソースから受信されたソフトウェアは、破棄され、あるいは検疫され得る。特定の実施形態において、データストリームの第一の部分に埋め込まれた、ソフトウェアの実行可能なコードは、署名され、デジタル証明書と関連付けられ得る。スタブは、関連付けられたデジタル証明書を用いて、ソフトウェアの実行可能なコードを検証することができる。   As shown in step 104, in certain embodiments, to prevent unauthorized or malicious software from being downloaded on the client, the stub uses an appropriate verification method to The executable code of the software extracted from the first part of the stream can be verified. In certain embodiments, a white list of trusted sources (eg, trusted server domain names or IP addresses) may be provided with the stub. Upon receiving the software, the stub can compare the source (e.g., server or website) sending the software with the whitelist. Only software that is whitelisted and sent by a trusted source can be run on the client. Software received from sources not on the whitelist can be discarded or quarantined. In certain embodiments, software executable code embedded in the first portion of the data stream may be signed and associated with a digital certificate. The stub can verify the executable code of the software using the associated digital certificate.

ソフトウェアの実行可能なコードが有効でない場合には(ステップ106で「NO」)、ソフトウェアの実行可能なコードは、クライアント上で起動されず、破棄され得る。一方で、ソフトウェアの実行可能なコードが有効である場合には(ステップ106で「はい」)、ステップ108に示されるように、特定の実施形態において、スタブが、ソフトウェアの実行可能なコードをロードし、実行するために、十分な量のメモリを割り当てることができる。特定の実施形態において、割り当てられたメモリ量は、データストリームの第一の部分に含まれる変数によって示される、ソフトウェアの実行可能なコードをロードして実行するために必要な、メモリ空間のサイズより小さくなってはならない。特定の実施形態において、割り当てられたメモリは、クライアントの動的なメモリ、仮想メモリ又はRAMであってもよい。   If the software executable code is not valid ("NO" at step 106), the software executable code is not launched on the client and can be discarded. On the other hand, if the software executable code is valid (“Yes” in step 106), in a particular embodiment, the stub loads the software executable code, as shown in step 108. And a sufficient amount of memory can be allocated to execute. In certain embodiments, the amount of allocated memory is greater than the size of the memory space required to load and execute the software executable code, indicated by a variable included in the first part of the data stream. Don't get smaller. In certain embodiments, the allocated memory may be client dynamic memory, virtual memory or RAM.

ほとんどのオペレーティングシステムは、アプリケーションプログラムが、動的にメモリを割り当て、開放することのできる、ライブラリ関数を提供し、実行時に、メモリに関連する他の種類の関数を実行する。特定の実施形態において、スタブは、クライアントのオペレーティングシステムによって提供される、適切なライブラリ関数を起動することができ、ソフトウェアの実行可能なコードの、必要なメモリ空間を割り当てる。例えば、「malloc()」は、動的にメモリ空間を確保するための、C言語及びC++言語の標準ライブラリ関数である。マイクロソフト社のWindows(登録商標)プラットフォームにおいて、「VirtualAlloc()」は、仮想アドレス空間において、ページのある領域を予約するためのWin32ライブラリ関数である。一度メモリが割り当てられると、スタブは、割り当てられたメモリ空間に対して、「実行可能」のフラグをセットするために、適切なライブラリ関数を起動することができる。そのフラグは、割り当てられたメモリの中に保管されるデータが、実行可能なコードであるということを、オペレーティングシステムに示す。例えば、マイクロソフト社のWindows(登録商標)プラットフォームでは、オペレーティングシステムに、読み込み、書き込み、実行の権限を有する、十分な量の仮想メモリを要求するために、「PAGE-EXECUTE-READWRITE」フラグを特定することができる。   Most operating systems provide library functions that allow application programs to dynamically allocate and free memory and execute other types of memory related functions at runtime. In certain embodiments, the stub can invoke the appropriate library function provided by the client operating system and allocates the necessary memory space for the software executable code. For example, “malloc ()” is a standard library function of C language and C ++ language for dynamically allocating a memory space. In the Microsoft® Windows® platform, “VirtualAlloc ()” is a Win32 library function for reserving an area with a page in the virtual address space. Once the memory is allocated, the stub can invoke the appropriate library function to set the “executable” flag for the allocated memory space. The flag indicates to the operating system that the data stored in the allocated memory is executable code. For example, Microsoft's Windows® platform specifies the "PAGE-EXECUTE-READWRITE" flag to request the operating system a sufficient amount of virtual memory that has read, write, and execute permissions. be able to.

ステップ110において示されるように、特定の実施形態において、スタブは、ソフトウェアの実行可能なコードを、クライアントのハードドライブ上に保存する必要なく、割り当てられたメモリへと、直接にロードすることができる。特定の実施形態において、スタブは、ソフトウェアの実行可能なコードを表すバイナリデータを、割り当てられた動的なメモリ空間へと直接にコピーするために、クライアントのオペレーティングシステムによって提供される、適切なライブラリ関数を起動することができる。例えば、「memcpy()」は、一のメモリ領域から別のメモリ領域へとデータをコピーするための、C言語及びC++言語の、標準ライブラリ関数である。   As shown in step 110, in certain embodiments, the stub can load software executable code directly into the allocated memory without having to save it on the client hard drive. . In certain embodiments, the stub is a suitable library provided by the client operating system to copy binary data representing the executable code of the software directly into the allocated dynamic memory space. A function can be invoked. For example, “memcpy ()” is a standard library function in C language and C ++ language for copying data from one memory area to another memory area.

特定の実施形態において、スタブは、割り当てられたメモリの中にロードされた、ソフトウェアの実行可能なコードに関する情報を含むための、分岐テーブル(又はジャンプテーブルとも呼ばれる)をさらに調整することができる。かかる処理は、「フィックスアップ(fix−up)」処理と呼ばれる。分岐テーブルは、プログラムの制御を、プログラムのある部分から別の部分へ、又は、あるプログラムから別のプログラムへ、転送する効率的な方法である。適切な分岐テーブルのエントリを調整することにより、オペレーションシステムは、現在、割り当てられたメモリにロードされたソフトウェアの実行可能なコードを知ることができる。   In certain embodiments, the stub may further adjust a branch table (also referred to as a jump table) to contain information about the software executable code loaded into the allocated memory. Such a process is called a “fix-up” process. A branch table is an efficient way to transfer program control from one part of a program to another, or from one program to another. By adjusting the appropriate branch table entries, the operating system can now know the executable code of the software loaded into the allocated memory.

フィックスアップ処理の間に実行される実際のステップは、コンピュータシステムのプラットフォーム又はOSによって異なる可能性がある。例えば、マイクロソフト社のWindows(登録商標)プラットフォームでは、実行可能な形式は、典型的に、再配置(relocation)テーブルとインポートテーブルを含む。一般に、実行可能なコードは、固定されたアドレスへロードされることを前提に、リンクされる。実行可能なコードを異なるアドレスへロードするために、実行可能なコードによって使用される絶対アドレスの全てが検出され、ベースのアドレス内での変更に応じるよう、「フィックスアップ」される。
このことは、再配置テーブルを用いることで、達成され得る。特定の実施形態において、実行可能なコードがロードされたとき、全ての絶対アドレスがフィックスアップされるように、再配置テーブルは、実行可能なコードの中の、全ての絶対アドレスのリストを編集する。インポートテーブルは、実行可能なコードが呼び出す可能性のある全てのルーチンの絶対アドレスをリストする。これにより、APIルーチンと、他のダイナミックリンクライブラリ(DLL)の中のルーチンの両方を含むことができる。これらのインポートアドレスは、現在のプロセスについてのアドレス空間内の、ルーチンの実際のアドレスで置き換えられる。インポートテーブルは、実行可能なコードの中の、それらのアドレスの位置のリストである(アドレスは、ジャンプテーブル又はトランポリン領域内に存在し得るが、間接呼び出しのためのデータのリストでもあり得る)。
The actual steps performed during the fixup process may vary depending on the platform or OS of the computer system. For example, on Microsoft's Windows platform, the executable formats typically include a relocation table and an import table. In general, executable code is linked on the assumption that it is loaded into a fixed address. In order to load executable code to a different address, all of the absolute addresses used by the executable code are detected and “fixed up” to respond to changes in the base address.
This can be achieved by using a relocation table. In certain embodiments, the relocation table edits a list of all absolute addresses in the executable code so that when the executable code is loaded, all absolute addresses are fixed up. . The import table lists the absolute addresses of all routines that can be called by executable code. This can include both API routines and routines in other dynamic link libraries (DLLs). These import addresses are replaced with the actual addresses of the routines in the address space for the current process. The import table is a list of the locations of those addresses in the executable code (addresses can be in the jump table or trampoline area, but can also be a list of data for indirect calls).

特定の実施形態は、マイクロソフト社のWindows(登録商標)オペレーティングシステムにおいて使用される、実行可能ファイル、オブジェクトコード及びDLLのための一つのファイルフォーマットである、PE(Portable Executable)フォーマットを活用する。PEフォーマットは、オペレーティングシステムのソフトウェアアーキテクチャの多数の環境において、幅広い用途を有する。一般に、PEフォーマットは、ラップされた実行可能なコードを管理するための、マイクロソフト社のWindows(登録商標)オペレーションシステムローダのために必要な情報をカプセル化する、データ構造である。特定の実施形態は、PEフォーマットを用いて、ソフトウェアの実行可能なコードをコンパイルし、保存することができる。   Certain embodiments take advantage of the PE (Portable Executable) format, which is one file format for executable files, object code and DLLs used in the Microsoft Windows operating system. The PE format has wide application in many environments of operating system software architecture. In general, the PE format is a data structure that encapsulates the information necessary for Microsoft's Windows® operating system loader to manage wrapped executable code. Certain embodiments may use PE format to compile and save software executable code.

ステップ112において示されるように、特定の実施形態において、ソフトウェアは、クライアント上で実行され得る。特定の実施形態において、ソフトウェアの実行可能なコードは、自身が保管される、割り当てられた動的なメモリから、直接に起動され得る。特定の実施形態において、スタブは、割り当てられたメモリ内にロードされたソフトウェアの実行可能なコードに、実行を開始させることができる。したがって、スタブは、その実行を、ソフトウェアへと移すことができる。   As shown in step 112, in certain embodiments, the software may be executed on the client. In certain embodiments, the executable code of the software can be launched directly from the allocated dynamic memory where it is stored. In certain embodiments, the stub may cause software executable code loaded in the allocated memory to begin execution. Thus, the stub can move its execution to software.

114において示されるように、特定の実施形態において、スタブは、ソケット、より正確には、クライアントとサーバ間のネットワーク接続と関連付けられた、インターネットソケット又はネットワークソケットを、クライアント上で現在実行されているソフトウェアに、渡す(pass)ことができる。ネットワークソケットは、入ってくるデータパケットを、適切なアプリケーションプロセス又はスレッドに、伝達するためのメカニズムを構成する。データストリームと関連付けられたネットワークソケットをソフトウェアに渡すことにより、ソフトウェアは、データストリームの第二の部分の中の追加のデータを含む、追加のデータパケットを、受け取ることができる。ソフトウェアは、データストリームの第二の部分に含まれる追加のデータを使う(例えば、処理する)ことができる。特定の実施形態において、スタブは、クライアントのオペレーティングシステムによって提供される、適切なライブラリ関数を呼び出し、ネットワークソケットを、現在実行中のソフトウェアに渡すことができる。例えば、Winsockとも呼ばれる,Windows(登録商標)ソケットアプリケーションプログラミングインターフェース(API)では、ネットワークソケットは、「WSADuplicateSocket()」関数により、一のプロセスから別のプロセスへ、渡され得る。   As shown at 114, in a particular embodiment, the stub is currently running on the client a socket, more precisely an internet socket or network socket associated with the network connection between the client and server. Can be passed to software. Network sockets constitute a mechanism for communicating incoming data packets to the appropriate application process or thread. By passing the network socket associated with the data stream to the software, the software can receive additional data packets that include additional data in the second portion of the data stream. The software can use (eg, process) additional data contained in the second portion of the data stream. In certain embodiments, the stub can call the appropriate library function provided by the client operating system and pass the network socket to the currently running software. For example, in the Windows socket application programming interface (API), also called Winsock, network sockets can be passed from one process to another by the “WSADuplicateSocket ()” function.

ソフトウェアプログラムは、完了するまで、その実行を継続することができる。特定の実施形態において、ソフトウェアプログラムが、その実行を完了すると(すなわち、終了すると)、ソフトウェアの実行可能なコードをロードするために使用されていた動的なメモリ空間は、(例えば、クライアントのオペレーティングシステムにより)開放され得る。後に、かかるメモリ空間は、他の目的のために使用され得る。他のデータは、そのメモリ空間にロードされ、ソフトウェアプログラムの実行可能なコードを上書きする。この点において、ソフトウェアプログラムは、クライアントへあらゆる状態の変更(例えば、ドライブ上のファイル、システムのレジストリの変更等)を加えることなく、クライアント上に存在しないものとなる。なぜならば、ソフトウェアプログラムは、スタブ232によって、メモリに直接にインストールされており、いくつかの実施形態における、ブラウザキャッシュ又は他の一時的なデータ記憶方式を含む、クライアント上の永続的な媒体には、保管されていないためである。   The software program can continue to run until it is complete. In certain embodiments, when a software program completes its execution (i.e., terminates), the dynamic memory space that was used to load the software executable code (e.g., the client operating system) Can be opened by the system). Later, such memory space can be used for other purposes. Other data is loaded into that memory space and overwrites the executable code of the software program. In this regard, the software program does not exist on the client without making any state changes (eg, files on the drive, system registry changes, etc.) to the client. Because software programs are installed directly into memory by stub 232, in some embodiments persistent media on the client, including browser cache or other temporary data storage schemes. This is because they are not stored.

ユーザのプリファレンス、設定、及びダウンロードされた、データストリームからの実行可能なコードのモジュールそのもののような、様々な状態やアプリケーションデータのキャッシュを可能にするために、スタブ230は、リソースフォークを介して、自らのファイルコンテナの中に、そのようなデータを保管することができる。この方式により、スタブ232は、複数のシステムにわたって、完全にポータブルとなる。例えば、スタブの既知のインスタンス(ファイルコンテナを含む)は、電子メールに添付され、又は、USBドライブにロード等されて、別のシステムへと移転させられ得る。   To enable caching of various state and application data, such as user preferences, settings, and downloaded modules of code from the data stream itself, the stub 230 is routed via a resource fork. You can store such data in your own file container. In this manner, the stub 232 is completely portable across multiple systems. For example, a known instance of a stub (including a file container) can be attached to an email, loaded onto a USB drive, etc., and transferred to another system.

いくつかの実装において、ストリームに埋め込まれ、スタブ232によって起動される、第一の実行可能なコードオブジェクトは、それ自身が、第二の実行可能なコードオブジェクトを含む、別のデータストリームを要求することによって、別のプロセスを生成させることができる。第二の実行可能なコードは、第一のコードのオブジェクトの子プロセスとして、起動され、第一の実行可能なコードオブジェクトにより生成された、同一のサンドボックスのファイルシステムを共有することができる。例えば、第一の実行可能なコードオブジェクトは、仮想マシンであり、該コードオブジェクトは、一以上の第二の実行可能なコードオブジェクトを、メモリ内で、かつ、第一の仮想マシンのコードオブジェクトによるサンドボックスの中で、完全に実行させることができる。特定の実装において、例えば、第二のコードオブジェクトによるデータ記憶サブシステムへの書き込みは、仮想マシンによって、メモリへとなされ、ユーザがクライアント230からログオフした場合に分析され得る、周辺機器にはなされない。例えば、この実施形態は、ソフトウェアのデモ版を準備するために用いられ得る。第一の実行可能なコードオブジェクトが、デモ又はテストされる第二のプログラムのサンドボックスを提供する仮想マシンであり得るためである。上述したように、第一及び第二のコードオブジェクトが終了したとき、メモリ内のそれらの全ての形跡は消去される。上述の実施形態は、一般的に、アプリケーションの実行中にキャッシュされるデータへの、認可されないアクセスを防ぐためにも、用いられ得る。   In some implementations, the first executable code object that is embedded in the stream and activated by the stub 232 itself requests another data stream that includes the second executable code object. By doing so, another process can be generated. The second executable code may be launched as a child process of the first code object and share the same sandbox file system created by the first executable code object. For example, the first executable code object is a virtual machine, and the code object includes one or more second executable code objects in memory and by the code object of the first virtual machine. It can be run completely in the sandbox. In certain implementations, for example, writing to the data storage subsystem by the second code object is made to memory by the virtual machine and not to the peripheral device that can be analyzed when the user logs off from the client 230. . For example, this embodiment can be used to prepare a demo version of the software. This is because the first executable code object can be a virtual machine that provides a sandbox of a second program to be demod or tested. As described above, when the first and second code objects are finished, all their traces in memory are erased. The embodiments described above can also be used to prevent unauthorized access to data that is typically cached during application execution.

特定の実施形態は、ネットワーク環境において、実装され得る。図2は、例示的なネットワーク環境200を示す。ネットワーク環境200は、一以上のサーバ220と、一以上のクライアント230とを、互いに接続するネットワーク210を含む。特定の実施形態において、ネットワーク210は、イントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、ローカルエリアネットワーク(LAN)、無線LAN(WLAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエラアネットワーク(MAN)、通信ネットワーク、衛星ネットワーク、インターネットの一部、別のネットワーク210又はそのようなネットワーク210の二以上の組み合わせである。本開示は、あらゆる適切なネットワーク210を意図している。   Certain embodiments may be implemented in a network environment. FIG. 2 illustrates an example network environment 200. The network environment 200 includes a network 210 that connects one or more servers 220 and one or more clients 230 to each other. In certain embodiments, the network 210 is an intranet, extranet, virtual private network (VPN), local area network (LAN), wireless LAN (WLAN), wide area network (WAN), metropolitan area network (MAN), A communication network, satellite network, part of the Internet, another network 210 or a combination of two or more such networks 210. This disclosure contemplates any suitable network 210.

一以上のリンク250は、サーバ220又はクライアント230を、ネットワーク210に接続する。特定の実施形態において、一以上のリンク250のそれぞれは、一以上の、有線、無線又は光学のリンク250を含む。特定の実施形態において、一以上のリンク250のそれぞれは、イントラネット、エクストラネット、VPN、LAN、WLAN、WAN、MAN、通信ネットワーク、衛星ネットワーク、イントラネットの一部、別のリンク250又はそのようなリンク250の二以上の組み合わせを含む。本開示は、サーバ220とクライアント230をネットワーク210に接続する、あらゆる適切なリンク250を意図している。   One or more links 250 connect the server 220 or the client 230 to the network 210. In certain embodiments, each of the one or more links 250 includes one or more wired, wireless, or optical links 250. In certain embodiments, each of the one or more links 250 is an intranet, extranet, VPN, LAN, WLAN, WAN, MAN, communication network, satellite network, part of an intranet, another link 250 or such link. Including two or more combinations of 250. This disclosure contemplates any suitable link 250 that connects server 220 and client 230 to network 210.

特定の実施形態において、各サーバ220は、集中型のサーバであるか、又は、複数のコンピュータ又は複数のデータセンタにわたる、分散型のサーバであり得る。サーバ220は、ウェブサーバ、ニュースサーバ、メールサーバ、メッセージサーバ、広告サーバ、ファイルサーバ、アプリケーションサーバ、交換サーバ、データベースサーバ又はプロキシサーバのような、様々な種類のサーバであってもよい(但しこれに限られない)。特定の実施形態において、各サーバ220は、サーバ220によって実現され、又はサポートされる、適切な機能を実行するために、ハードウェア、ソフトウェア若しくは組み込みロジック部品又はそのような部品の二以上の組み合わせを含み得る。例えば、ウェブサーバは、一般に、ウェブページ又はウェブページの特定の要素を含む、ウェブサイトをホストすることができる。より明確には、ウェブサーバは、HTMLファイル又は他の種類のファイルをホストし、あるいは、要求に応じてファイルを動的に生成若しくは構成することができ、クライアント230からのHTTP要求又は他の要求に応じて、クライアントへそれらのファイルを送信することができる。メールサーバは、一般に、電子メールサービスを、様々なクライアント230へ提供することができる。データベースサーバは、一般に、一以上のデータストアに保管されたデータを管理するインターフェースを提供することができる。   In certain embodiments, each server 220 can be a centralized server or a distributed server across multiple computers or multiple data centers. The server 220 may be various types of servers such as a web server, news server, mail server, message server, advertisement server, file server, application server, exchange server, database server or proxy server (however, Not limited to). In certain embodiments, each server 220 may comprise hardware, software or embedded logic components or a combination of two or more such components to perform the appropriate functions implemented or supported by the server 220. May be included. For example, a web server can generally host a web site that includes a web page or specific elements of a web page. More specifically, the web server can host HTML files or other types of files, or can dynamically generate or configure files upon request, such as HTTP requests or other requests from clients 230. Depending on the, you can send those files to the client. A mail server can generally provide electronic mail services to various clients 230. A database server can generally provide an interface for managing data stored in one or more data stores.

特定の実施形態において、各クライアント230は、ハードウェア、ソフトウェア若しくは組み込みロジック部品又はそのような部品の二以上の組み合わせを含む、電子デバイスであり、クライアント230によって実現され、あるいはサポートされる、適切な機能を実行することができる。例えば、クライアント230は、デスクトップコンピュータシステム、ノートブックコンピュータシステム、ネットブックコンピュータシステム、ハンドヘルド電子デバイス又は携帯電話であり得るが、これに限られない。クライアント230は、クライアント230のネットワークユーザが、ネットワーク210にアクセスすることを可能にする。クライアント230は、マイクロソフトインターネットエクスプローラ又はMozilla Firefoxのようなウェブブラウザを有し、Googleツールバー又はYahooツールバーのような、一以上のアドオン、プラグイン又は他の拡張を有し得る。クライアント230は、そのユーザが、他のクライアント230の他のユーザとやりとりすることを可能にする。本開示は、あらゆる適切なクライアント230を意図している。   In certain embodiments, each client 230 is an electronic device that includes hardware, software or embedded logic components, or a combination of two or more such components, and is implemented or supported by the client 230 as appropriate. The function can be executed. For example, the client 230 can be, but is not limited to, a desktop computer system, a notebook computer system, a netbook computer system, a handheld electronic device, or a mobile phone. Client 230 allows network users of client 230 to access network 210. Client 230 has a web browser, such as Microsoft Internet Explorer or Mozilla Firefox, and may have one or more add-ons, plug-ins, or other extensions, such as Google Toolbar or Yahoo Toolbar. Client 230 allows that user to interact with other users of other clients 230. This disclosure contemplates any suitable client 230.

特定の実施形態において、一以上のデータ記憶装置240が、一以上のリンク250を通じて、一以上のサーバ220と、通信でリンクされ得る。特定の実施形態において、データ記憶装置240は、様々な種類の情報を保管するために用いられ得る。特定の実施形態において、データ記憶装置240に保管される情報は、特定のデータ構造に従って、組織化される。いくつかの特定の実施形態は、サーバ220又はクライアント230に、データ記憶装置240に格納される情報を管理(例えば、検索、修正、追加又は削除)させる、インターフェースを提供することができる。   In certain embodiments, one or more data storage devices 240 may be communicatively linked to one or more servers 220 through one or more links 250. In certain embodiments, the data storage device 240 can be used to store various types of information. In certain embodiments, the information stored in data storage device 240 is organized according to a particular data structure. Some specific embodiments may provide an interface that allows the server 220 or client 230 to manage (eg, search, modify, add or delete) information stored in the data storage device 240.

特定の実施形態において、スタブ232は、クライアント230上でインストールされ、実行され得る。特定の実施形態では、スタブ232は、スタンドアロンのソフトウェアプログラムであるか、又は、クライアント230上でインストールされて実行される、ウェブブラウザのような他のソフトウェアプログラムへのプラグイン若しくはアドオンであってもよい。スタブ232は、クライアント230上で実行されるとき、図1に示されるステップを実行することができる。特定の実施形態において、スタブ232は、データストリームに埋め込まれた、ソフトウェアプログラムの実行可能なコードを展開するための、一以上の追加のモジュールを含み得る。別の実施例において、展開モジュールは、そのものがデータストリーム内で符号化されており、データストリームの中に埋め込まれた、一以上の追加のコードモジュールを展開するために、スタブ232によって起動されてもよい。   In certain embodiments, the stub 232 may be installed and executed on the client 230. In certain embodiments, the stub 232 may be a stand-alone software program or may be a plug-in or add-on to other software programs such as a web browser that are installed and run on the client 230. Good. When executed on the client 230, the stub 232 may perform the steps shown in FIG. In certain embodiments, the stub 232 may include one or more additional modules for deploying executable code of software programs embedded in the data stream. In another embodiment, the decompression module is itself encoded in the data stream and is invoked by the stub 232 to decompress one or more additional code modules embedded in the data stream. Also good.

さらに、特定の実施形態では、データストリーム内に埋め込まれた、実行可能なコードモジュールが、例えばデバイス種別、ハードウェア能力、表示モード、周辺機器、グラフィックアクセラレータの能力等のような、一以上のクライアント230の属性に基づいて、動的に決定することができる。例えば、異なった実行可能なコードモジュールが、データストリーム内に埋め込まれていてもよく、異なるクライアントに、同一のメディアストリームを使用させることができる。   Further, in certain embodiments, the executable code module embedded in the data stream is one or more clients, such as device type, hardware capabilities, display mode, peripherals, graphics accelerator capabilities, etc. Based on 230 attributes, it can be determined dynamically. For example, different executable code modules may be embedded in the data stream, allowing different clients to use the same media stream.

特定の実施形態は、ハードウェア、ソフトウェア又はハードウェアとソフトウェアの組み合わせとして、実装され得る。例えば、一以上のコンピュータシステムは、特定のロジック又はソフトウェアを実行することができ、ここで記述され、あるいは説明された、一以上のプロセスについての、一以上のステップを実行する(但しこれに制限されない)。一以上のコンピュータシステムは、集中型か、あるいは適切な場所にある複数のコンピュータシステム又は複数のデータセンタを結ぶ、分散型であってもよい。本明細書は、あらゆる適切なコンピュータシステムを意図している。特定の実施形態において、ここで記述され、あるいは説明された、一以上のプロセスについての、一以上のステップの実行は、必ずしも、一以上の特定の地理的な場所に限定される必要は無く、また、必ずしも、時間的に限定される必要は無い。例として、一以上のコンピュータシステムは、リアルタイム、オフライン、バッチモード、又は、それらの適切な組み合わせで、機能を実行することができる(但しこれに制限されない)。一以上のコンピュータシステムは、異なる時間に、異なる場所で、必要に応じて、異なる処理を用いて、一以上の機能の一部を実行することができる。ここで、ロジックとは、ソフトウェアを包含し、適切な場合には、その逆も成り立つ。ソフトウェアとは、一以上のコンピュータプログラムを包含し、必要に応じて、その逆も成り立つ。ソフトウェアとは、データ、命令又はその両方を包含し、必要に応じて、その逆も成り立つ。同様に、データとは、命令を包含し、必要に応じて、その逆も成り立つ。   Certain embodiments may be implemented as hardware, software, or a combination of hardware and software. For example, one or more computer systems can execute specific logic or software, and perform (but are not limited to) one or more steps for one or more processes described or described herein. Not) The one or more computer systems may be centralized or distributed, connecting multiple computer systems or multiple data centers in appropriate locations. This document contemplates any suitable computer system. In certain embodiments, the execution of one or more steps for one or more processes described or described herein need not necessarily be limited to one or more specific geographic locations; Moreover, it is not necessarily limited in terms of time. By way of example, one or more computer systems can perform (but is not limited to) functions in real time, offline, batch mode, or any suitable combination thereof. One or more computer systems may perform some of the functions of one or more at different times and at different locations, using different processes as needed. Here, logic includes software, and vice versa when appropriate. Software includes one or more computer programs, and vice versa, if necessary. Software includes data, instructions, or both, and vice versa if necessary. Similarly, data includes instructions and vice versa if necessary.

一以上のコンピュータ読取可能な記憶媒体は、特定の実施形態を実現するソフトウェアを保管するか、別の方法でそのようなソフトウェアを具体化し得る。コンピュータ読取可能な媒体は、必要に応じて、ソフトウェアを、運び、通信し、包含し、収容し、維持し、伝播し、保持し、保管し、送信し、輸送し、あるいは別の方法で具体化することができる、あらゆる媒体であってもよい。コンピュータ読取可能な媒体は、生物学的、化学的、電子、電磁気、赤外線、磁気、光学、量子若しくは他の適切な媒体又はそのような媒体の二以上の組み合わせであってもよい。コンピュータ読取可能な媒体は、一以上のナノメートル規模の部品を含むか、あるいは、ナノメートル規模の設計又は製造を具体化し得る。例示的なコンピュータ読取可能な記憶媒体は、コンパクトディスク(CD)、FPGA(field-progRAMmable gate arrays)、フロッピーディスク、フロプティカル(floptical)ディスク、ハードディスク、ホログラフィック記憶装置、(ASIC(application-specific integrated circuits)のような)集積回路(IC)、磁気テープ、キャッシュ、プログラマブルロジックデバイス(PLD)、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、半導体メモリ及び他の適切なコンピュータ読取可能な記憶媒体を含むが、これに限られない。   One or more computer-readable storage media may store software that implements a particular embodiment or otherwise embody such software. A computer-readable medium may carry, communicate, contain, contain, maintain, propagate, retain, store, transmit, transport, or otherwise implement the software as appropriate. It can be any medium that can be converted. The computer readable medium may be a biological, chemical, electronic, electromagnetic, infrared, magnetic, optical, quantum or other suitable medium or a combination of two or more such media. The computer readable medium may include one or more nanometer scale components or may embody a nanometer scale design or manufacture. Exemplary computer readable storage media include compact disks (CDs), field-progRAMmable gate arrays (FPGAs), floppy disks, floptical disks, hard disks, holographic storage devices, (application-specific integrated circuits, ASICs). Integrated circuit (IC), magnetic tape, cache, programmable logic device (PLD), random access memory (RAM), read only memory (ROM), semiconductor memory and other suitable computer readable storage media Including, but not limited to.

特定の実施形態を実現するソフトウェアは、あらゆる適切な(手続き型又はオブジェクト指向の)プログラミング言語で記述され、あるいは、必要に応じて、複数のプログラミング言語の組み合わせによって記述される。(シングルプロセッサ又はマルチプロセッサのコンピュータシステムのような)適切な種類のコンピュータシステム又は複数のシステムは、必要に応じて、特定の実施形態を実現するソフトウェアを実行することができる。汎用のコンピュータシステムは、必要に応じて、特定の実施形態を実現するソフトウェアを実行することができる。   The software that implements a particular embodiment is written in any suitable (procedural or object-oriented) programming language, or, if necessary, a combination of multiple programming languages. Any suitable type of computer system or systems (such as a single processor or multiprocessor computer system) may execute software implementing particular embodiments, if desired. A general purpose computer system may execute software that implements a particular embodiment, if desired.

例えば、図3は、特定の実施形態の一以上の部品を実現するために適する、例示的名コンピュータシステム300を示している。本明細書は、ある特定の構成において、特定の部品を有する、特定のコンピュータシステム300を記述し、説明するが、本明細書は、あらゆる適切な構成おいて、あらゆる適切な部品を有する、あらゆる適切なコンピュータシステムを意図する。さらに、コンピュータシステム300は、例えば、一以上の集積回路(IC)、一以上のプリント基板(PCB)、(携帯電話又はPDAのような)一以上のハンドヘルドデバイス若しくは他のデバイス、一以上のPC又は一以上のスーパーコンピュータのような、適切な物理的な形状をとり得る。   For example, FIG. 3 illustrates an exemplary name computer system 300 that is suitable for implementing one or more components of a particular embodiment. Although this specification describes and describes a particular computer system 300 having a particular part in a particular configuration, this specification describes any particular component having any suitable part in any suitable configuration. Intended for an appropriate computer system. Further, the computer system 300 may include, for example, one or more integrated circuits (ICs), one or more printed circuit boards (PCBs), one or more handheld devices (such as a mobile phone or PDA) or other devices, one or more PCs. Or it can take any suitable physical form, such as one or more supercomputers.

システムバス310は、コンピュータシステム300のサブシステムを、互いに接続する。ここでのバスとは、共通の機能を提供する、一以上のデジタル信号線を包含する。本明細書は、適切なバスアーキテクチャを有する、(一以上のメモリバス、一以上の周辺バス、一以上のローカルバス又はそれらの組み合わせのような)あらゆる適切なバスアーキテクチャを含む、あらゆる適切なシステムバス310を意図する。例示的なバスアーキテクチャは、ISA(Industry Standard Architecture)バス、EISA(Enhanced ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、ビデオエレクトロニクススタンダーズアソシエーションバス(VLB)、PCI(Peripheral Component Interconnect)バス、PCIエクスプレス(PCI−X)バス、AGP(Accelerated Graphics Port)バスを含むが、これに限られない。   A system bus 310 connects subsystems of the computer system 300 to each other. The bus here includes one or more digital signal lines that provide a common function. This specification describes any suitable system, including any suitable bus architecture (such as one or more memory buses, one or more peripheral buses, one or more local buses, or combinations thereof) having a suitable bus architecture. Bus 310 is intended. Exemplary bus architectures include Industry Standard Architecture (ISA) bus, Enhanced ISA (EISA) bus, Micro Channel Architecture (MCA) bus, Video Electronics Standards Association Bus (VLB), Peripheral Component Interconnect (PCI) bus, PCI Express ( PCI-X) bus and AGP (Accelerated Graphics Port) bus, but not limited to this.

コンピュータシステム300は、一以上のプロセッサ320(又は中央処理装置(CPU))を含む。プロセッサ320は、命令、データ又はコンピュータのアドレスの、一時的なローカルでの記憶のための、キャッシュ322を含み得る。プロセッサ320は、メモリ330を含む、一以上の記憶装置と接続される。メモリ330は、ランダムアクセスメモリ(RAM)332と、リードオンリーメモリ(ROM)334とを含み得る。データと命令は、プロセッサ320とRAM332との間で、双方向にデータを転送し得る。データと命令は、ROM334からプロセッサ320へ、一方向に、データを転送し得る。RAM332とROM334は、あらゆる適切なコンピュータ読取可能な記憶媒体を含み得る。   Computer system 300 includes one or more processors 320 (or central processing units (CPUs)). The processor 320 may include a cache 322 for temporary local storage of instructions, data or computer addresses. The processor 320 is connected to one or more storage devices including the memory 330. The memory 330 may include random access memory (RAM) 332 and read only memory (ROM) 334. Data and instructions may transfer data bi-directionally between processor 320 and RAM 332. Data and instructions may transfer data from ROM 334 to processor 320 in one direction. RAM 332 and ROM 334 may include any suitable computer-readable storage medium.

コンピュータシステム300は、プロセッサ320へ、双方向に接続された、固定記憶装置340を含む。固定記憶装置340は、記憶装置制御ユニット352を介して、プロセッサ320と接続され得る。固定記憶装置340は、追加のデータ記憶容量を提供することができ、あらゆる適切なコンピュータ読取可能な媒体を含むことができる。固定記憶装置340は、オペレーティングシステム(OS)342、一以上の実行可能ファイル344、一以上のアプリケーション又はプログラム346、データ348等を保管することができる。固定記憶装置340は、一般的に、一次記憶装置より低速な、(ハードディスクのような)二次記憶媒体である。適切な場合には、固定記憶装置340に保管される情報は、仮想メモリとして、メモリ330に結合され得る。   Computer system 300 includes a persistent storage device 340 that is bi-directionally connected to processor 320. The fixed storage device 340 can be connected to the processor 320 via the storage device control unit 352. Permanent storage 340 can provide additional data storage capacity and can include any suitable computer-readable medium. The persistent storage 340 can store an operating system (OS) 342, one or more executable files 344, one or more applications or programs 346, data 348, and the like. Fixed storage 340 is typically a secondary storage medium (such as a hard disk) that is slower than primary storage. Where appropriate, information stored in persistent storage 340 may be coupled to memory 330 as virtual memory.

プロセッサ320は、例えば、グラフィックスコントロール354、ビデオインターフェース358、入力インターフェース360、出力インターフェース362及び記憶装置インターフェース364のような、様々なインターフェースへと接続され得る。それらは、それぞれ、順に、適切な装置へと接続され得る、例示的な入力装置又は出力装置は、ビデオディスプレイ、トラックボール、マウス、キーボード、マイク、タッチディスプレイ、トランスデューサカードリーダ、磁気テープ又は紙テープリーダ、タブレット、スタイラス、音声又は手書き認識装置、バイオメトリクスリーダ又はコンピュータシステムを含むが、これに限られない。ネットワークインターフェース356は、プロセッサ320を、別のコンピュータシステム又はネットワーク380と接続し得る。ネットワークインターフェース356により、プロセッサ320は、特定の実施形態についてのステップを実行する間に、ネットワーク380から情報を読み出し、ネットワーク380へ情報を送信することができる。特定の実施形態は、プロセッサ320において、単独で実行し得る。特定の実施形態は、プロセッサ320と、一以上のリモートプロセッサにおいて、ともに実行し得る。   The processor 320 may be connected to various interfaces such as, for example, a graphics control 354, a video interface 358, an input interface 360, an output interface 362, and a storage device interface 364. They can each be connected in turn to a suitable device. Exemplary input or output devices are: video display, trackball, mouse, keyboard, microphone, touch display, transducer card reader, magnetic tape or paper tape reader , Tablet, stylus, speech or handwriting recognition device, biometric reader, or computer system. Network interface 356 may connect processor 320 with another computer system or network 380. Network interface 356 allows processor 320 to read information from network 380 and send information to network 380 while performing steps for a particular embodiment. Certain embodiments may execute alone in processor 320. Certain embodiments may execute together on processor 320 and one or more remote processors.

ネットワーク環境において、コンピュータシステム300がネットワーク380に接続されているとき、コンピュータシステム300は、ネットワーク380に接続されている、他の装置と通信することができる。コンピュータシステム300は、ネットワークインターフェース356を介して、ネットワーク380と通信することができる。例えば、コンピュータシステム300は、(別の装置からの要求又は応答のような)ネットワーク380からの情報を、ネットワークインターフェース356で、一以上の着信パケットとして、受信することができる。そして、メモリ330は、後続の処理のために、その着信パケットを保管することができる。コンピュータシステム300は、(別の装置への要求又は応答のような)情報を、ネットワークインターフェース356から、一以上の発信パケットとして、ネットワーク380へ送信することができる。メモリ330は、送信に先立って、これを保管することができる。プロセッサ320は、メモリ330の着信パケット又は発信パケットにアクセスすることができ、必要に応じて、それを処理する。   In a network environment, when the computer system 300 is connected to the network 380, the computer system 300 can communicate with other devices connected to the network 380. Computer system 300 can communicate with network 380 via network interface 356. For example, computer system 300 can receive information from network 380 (such as a request or response from another device) at network interface 356 as one or more incoming packets. The memory 330 can then store the incoming packet for subsequent processing. The computer system 300 can send information (such as a request or response to another device) from the network interface 356 to the network 380 as one or more outgoing packets. The memory 330 can store it prior to transmission. The processor 320 can access incoming or outgoing packets in the memory 330 and process them as needed.

コンピュータシステム300は、一以上の入力装置366(キーパッド、キーボード、マウス、スタイラスを含む)、一以上の出力装置368(一以上のディスプレイ、一以上のスピーカ、一以上のプリンタ等を含む)、一以上の記憶装置370及び一以上の記憶媒体372を有してもよい。入力装置366は、コンピュータシステム300に外付けされていてもよく、あるいは内蔵されていてもよい。出力装置368は、コンピュータシステム300に外付けされていてもよく、あるいは内蔵されていてもよい。記憶装置370は、コンピュータシステム300に外付けされていてもよく、あるいは内蔵されていてもよい。記憶媒体372は、コンピュータシステム300に外付けされていてもよく、あるいは内蔵されていてもよい。   The computer system 300 includes one or more input devices 366 (including a keypad, keyboard, mouse, stylus), one or more output devices 368 (including one or more displays, one or more speakers, one or more printers, etc.), One or more storage devices 370 and one or more storage media 372 may be included. The input device 366 may be externally attached to the computer system 300 or may be built therein. The output device 368 may be externally attached to the computer system 300 or may be built therein. The storage device 370 may be externally attached to the computer system 300 or may be built therein. The storage medium 372 may be externally attached to the computer system 300 or may be built therein.

特定の実施形態は、本明細書で記述され、説明された、一以上の処理についての、一以上のステップを実行するソフトウェアを具体化する、一以上のコンピュータ読取可能な記録媒体を含む、一以上のコンピュータ記憶製品(computer-storage product)を含む。特定の実施形態において、媒体、ソフトウェア又はその両方の、一以上の部品は、本明細書で記述され、説明された、一以上の処理についての、一以上のステップを特に実行するよう設計され、製造され得る。さらに、あるいは代替として、特定の実施形態において、媒体、ソフトウェア又はその両方の、一以上の部品は、本明細書で記述され、説明された処理専用の設計又は製造ではなく、一般的に利用可能なものであってもよい。例示的な、コンピュータ読取可能な記憶媒体は、(CD−ROMのような)CD、FPGA、フロッピーディスク、フロプティカルディスク、ハードディスク、ホログラフィック記憶装置、(ASICのような)IC、磁気テープ、キャッシュ、PDL、RAM、ROM、半導体メモリ及び他の適切なコンピュータ読取可能な記憶媒体を含むが、これに限られない。特定の実施形態において、ソフトウェアは、コンパイラが生成する機械語又はコンパイラがインタプリタを用いて実行可能な高級コードを含む一以上のファイルであり得る。   Certain embodiments include one or more computer-readable storage media that embody software that performs one or more steps for one or more processes described and described herein. Includes the above computer-storage products. In certain embodiments, one or more components of media, software, or both are specifically designed to perform one or more steps for one or more processes described and described herein, Can be manufactured. Additionally or alternatively, in certain embodiments, one or more components of media, software, or both are generally available rather than the process-specific design or manufacture described and described herein. It may be anything. Exemplary computer readable storage media include CD (such as CD-ROM), FPGA, floppy disk, floppy disk, hard disk, holographic storage device, IC (such as ASIC), magnetic tape, This includes but is not limited to cache, PDL, RAM, ROM, semiconductor memory, and other suitable computer readable storage media. In certain embodiments, the software may be a machine language generated by a compiler or one or more files containing high-level code that the compiler can execute using an interpreter.

例として、メモリ330は、ソフトウェアを具体化する、一以上のコンピュータ読取可能な記憶媒体を含んでもよい。そして、コンピュータシステム300は、プロセッサ320がそのソフトウェアを実行した結果として、本明細書で記述され、あるいは説明された、特定の機能を提供することができる。メモリ330は、そのソフトウェアを保管することができ、プロセッサ320は、そのソフトウェアを実行することができる。メモリ330は、そのソフトウェアを具体化する大容量記憶装置330中の、コンピュータ読取可能な記憶媒体から、あるいは、ネットワークインターフェース356を介して、一以上の他のソースから、そのソフトウェアを読み出すことができる。ソフトウェアを実行するとき、プロセッサ320は、本明細書で記述され、又は説明された、一以上の処理についての、一以上のステップを実行することができる。その処理は、メモリ330内に、記憶のための、一以上のデータ構造を定義する段階と、必要に応じて、そのソフトウェアの一以上の部品によって指示される通りに、一以上のデータ構造を修正する段階とを含む。追加で、あるいは代替として、コンピュータシステム300は、本明細書で記述され、又は説明された、特定の機能を、ハードウェアに組み込まれたロジックか、あるいは回路内に具体化されたロジックの結果として、提供することができる。そのロジックは、ソフトウェアの代わりに、あるいはソフトウェアとともに動作し、本明細書で記述され、又は説明された、一以上の処理についての、一以上のステップを実行する。本明細書は、必要に応じて、ハードウェアとソフトウェアの適切な組み合わせを含む。   By way of example, memory 330 may include one or more computer readable storage media that embody software. The computer system 300 can then provide the specific functions described or described herein as a result of the processor 320 executing its software. The memory 330 can store the software and the processor 320 can execute the software. Memory 330 may read the software from a computer readable storage medium in mass storage device 330 that embodies the software, or from one or more other sources via network interface 356. . When executing the software, the processor 320 may perform one or more steps for one or more processes described or illustrated herein. The process includes defining one or more data structures for storage in the memory 330, and optionally, one or more data structures as directed by one or more components of the software. Including the step of modifying. Additionally or alternatively, the computer system 300 may perform certain functions described or described herein as a result of logic embedded in the hardware or logic embodied in the circuit. Can be offered. The logic operates in place of or in conjunction with software and performs one or more steps for one or more processes described or described herein. This specification includes the appropriate combination of hardware and software, where appropriate.

本明細書は、特定の順序で生ずる特定の演算について記述し、あるいは説明したが、あらゆる適切な順序で行われる、適切な演算を意図している。さらに、本明細書は、適切な順序で、一回以上、繰り返される、適切な演算を意図している。本明細書は、順番に生ずる特定の演算について記述し、あるいは説明したが、必要に応じて、略同時に行われる、適切な演算を意図している。本明細書で記述され、あるいは説明される、あらゆる適切な演算又は演算の連続は、中断され、一時停止され、あるいは、必要に応じて、オペレーティングシステム又はカーネルのような、他の処理によって制御され得る。かかる動作は、オペレーティングシステム環境において動作し得る。あるいは、システム処理の全て又は本質的な部分を占める独立した手順として動作し得る。   Although this specification describes or describes particular operations that occur in a particular order, it is intended that appropriate operations be performed in any suitable order. In addition, this specification contemplates appropriate operations that are repeated one or more times in an appropriate order. This specification describes or describes specific operations that occur in sequence, but is intended to be appropriate operations that are performed substantially simultaneously, if desired. Any suitable operation or sequence of operations described or illustrated herein may be interrupted, suspended, or controlled by other processes, such as an operating system or kernel, as appropriate. obtain. Such an operation may operate in an operating system environment. Alternatively, it can operate as an independent procedure that occupies all or an essential part of the system processing.

本明細書は、当業者が理解するであろう、例示的な本実施形態への全ての変更、置換、バリエーション、代替又は改良を包含する。同様に、必要に応じて、添付されたクレームは、当業者が理解するであろう、例示的な本実施形態への全ての変更、置換、バリエーション、代替又は改良を包含する。   This specification includes all modifications, substitutions, variations, alternatives or improvements to the present exemplary embodiments that will be understood by those skilled in the art. Similarly, where appropriate, the appended claims encompass all modifications, substitutions, variations, alternatives or improvements to the present exemplary embodiments that would be understood by one of ordinary skill in the art.

Claims (28)

第一のコンピュータシステムが、第二のコンピュータシステムから、ダウンロード可能なソフトウェアプログラムを特定するURI(Uniform Resource Identifier)を含むソフトウェアスタブを受信する段階と;
前記第一のコンピュータシステムが、受信した前記ソフトウェアスタブをインストールする段階と;
前記ソフトウェアスタブが、前記URIを含む要求であって、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードについての前記要求を送信する段階と;
前記第一のコンピュータシステムと前記第二のコンピュータシステムとの間のネットワーク接続を通じて、前記第一のコンピュータシステムの前記ソフトウェアスタブが、前記第二のコンピュータシステムから送信されたデータストリームにおける前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを受信する段階であって、前記データストリームは、ソフトウェアプログラムの実行可能なコードを含む、段階と;
前記第一のコンピュータシステムが、前記データストリームから、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを抽出する段階と;
前記第一のコンピュータシステムが、動的メモリを、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードのために割り当てる段階と;
前記第一のコンピュータシステムが、前記データストリームから抽出された前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを、割り当てられた前記動的メモリへと直接ロードし、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードは、前記第一のコンピュータシステムの永続的なストレージに保管またはインストールされない、段階と;
前記第一のコンピュータシステムが、割り当てられた前記動的メモリにロードされた、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを起動することにより、前記ダウンロード可能なソフトウェアプログラムを実行する段階と;
を含む、方法。
A first computer system receiving a software stub including a Uniform Resource Identifier (URI) identifying a downloadable software program from the second computer system;
The first computer system installing the received software stub;
Sending the request for executable code of the downloadable software program, wherein the software stub is a request including the URI;
Through a network connection between said first computer system and said second computer system, said software stub of the first computer system, capable the download in the data stream transmitted from the second computer system Receiving executable code of a software program, wherein the data stream includes executable code of a software program;
Said first computer system extracting executable code of said downloadable software program from said data stream;
Said first computer system allocating dynamic memory for executable code of said downloadable software program;
Execution of the first computer system, the executable code of the downloadable software programs extracted from the data stream, and the direct loading into a dynamic memory allocated, the downloadable software program Possible code is not stored or installed in persistent storage of the first computer system ; and
Said first computer system, loaded into the dynamic memory allocated, by activating the executable code of the downloadable software program, the method comprising executing the downloadable software programs;
Including a method.
前記データストリームは、ビデオストリームであり、
前記ダウンロード可能なソフトウェアプログラムの実行可能なコードは、前記ビデオストリームに埋め込まれる、
請求項1に記載の方法。
The data stream is a video stream;
The executable code of the downloadable software program is embedded in the video stream.
The method of claim 1.
前記ダウンロード可能なソフトウェアプログラムの実行可能なコードは、機械コード又はネイティブコードである、
請求項1に記載の方法。
The executable code of the downloadable software program is machine code or native code.
The method of claim 1.
前記ダウンロード可能なソフトウェアプログラムの実行の可能なコードは、前記第二のコンピュータシステムによって圧縮されており、
前記第一のコンピュータシステムが、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを展開する段階
をさらに含む、請求項1に記載の方法。
The executable code of the downloadable software program is compressed by the second computer system,
The method of claim 1, further comprising the first computer system deploying executable code of the downloadable software program.
前記第一のコンピュータシステムが、実行可能なコードを含むものとして、割り当てられた前記動的メモリをマークする段階と;
前記第一のコンピュータシステムが、分岐テーブルの一以上のエントリを調整して、割り当てられた前記動的メモリと、割り当てられた前記動的メモリにロードされた前記ダウンロード可能なソフトウェアプログラムの実行可能なコードに反映させる段階と;
をさらに含む、請求項1に記載の方法。
The first computer system marking the allocated dynamic memory as containing executable code;
The first computer system coordinates one or more entries in the branch table to execute the allocated dynamic memory and the downloadable software program loaded into the allocated dynamic memory Reflecting in the code;
The method of claim 1, further comprising:
前記データストリームは、第一の部分と第二の部分を含み;
前記データストリームの前記第一の部分は、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを含み、
前記データストリームの前記第二の部分は、前記ダウンロード可能なソフトウェアプログラムによって使用される複数のデータを含む、
請求項1に記載の方法。
The data stream includes a first portion and a second portion;
The first portion of the data stream includes executable code of the downloadable software program;
The second portion of the data stream includes a plurality of data used by the downloadable software program;
The method of claim 1.
前記第一のコンピュータシステムが、前記データストリームと関連付けられたネットワークソケットを、前記ダウンロード可能なソフトウェアプログラムに渡す段階であって、前記データストリームの前記第二の部分に含まれる前記データが、前記ソフトウェアプログラムの実行中に、前記ダウンロード可能なソフトウェアプログラムによって使用される、段階
をさらに含む、請求項6に記載の方法。
The first computer system passes a network socket associated with the data stream to the downloadable software program, wherein the data contained in the second portion of the data stream is the software; The method of claim 6, further comprising the step of being used by the downloadable software program during program execution.
前記第一のコンピュータシステムが、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを検証する段階
をさらに含む、請求項1に記載の方法。
The method of claim 1, further comprising: the first computer system verifying executable code of the downloadable software program.
前記第一のコンピュータシステムが、前記ダウンロード可能なソフトウェアプログラムの実行が完了した後に、割り当てられた前記動的メモリを開放する段階
をさらに含む、請求項1に記載の方法。
The method of claim 1, further comprising: the first computer system freeing the allocated dynamic memory after execution of the downloadable software program is complete.
第一のシステムであって:
一以上のプロセッサにより実行可能な命令を有するメモリと;
前記メモリに接続され、前記命令を実行するよう機能する、一以上のプロセッサと;
を有し、
前記一以上のプロセッサは、前記命令を実行するとき:
第二のシステムから、ダウンロード可能なソフトウェアプログラムを特定するURI(Uniform Resource Identifier)を含むソフトウェアスタブを受信し;
受信した前記ソフトウェアスタブをインストールし;
前記ソフトウェアスタブが、前記URIを含む要求であって、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードについての前記要求を送信し;
当該第一のシステムと第二のシステムとの間のネットワーク接続を通じて、前記第二のシステムから送信されたデータストリームにおける前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを受信し、前記データストリームは、ソフトウェアプログラムの実行可能なコードを含み;
前記データストリームから、前記ソフトウェアプログラムの実行可能なコードを抽出し;
動的メモリを、前記ソフトウェアプログラムの実行可能なコードのために割り当て;
前記データストリームから抽出された前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを、割り当てられた前記動的メモリへと直接ロードし、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードは、前記第一のシステムの永続的なストレージに保管またはインストールされず
割り当てられた前記動的メモリにロードされた、前記ソフトウェアプログラムの実行可能なコードを起動することにより、前記ソフトウェアプログラムを実行する;
よう機能する、システム。
The first system is:
Memory having instructions executable by one or more processors;
One or more processors connected to the memory and operative to execute the instructions;
Have
When the one or more processors execute the instructions:
Receiving from the second system a software stub containing a URI (Uniform Resource Identifier) identifying a downloadable software program;
Install the received software stub;
The software stub sends a request for the executable code of the downloadable software program, the request including the URI;
Receiving executable code of the downloadable software program in a data stream transmitted from the second system over a network connection between the first system and the second system, the data stream comprising : Including executable code for software programs;
Extracting executable code of the software program from the data stream;
Allocate dynamic memory for the executable code of the software program;
The executable code of the downloadable software program extracted from the data stream is loaded directly into the allocated dynamic memory, and the executable code of the downloadable software program is the first code Not stored or installed in the system's persistent storage ;
Executing the software program by invoking executable code of the software program loaded into the allocated dynamic memory;
The system that works like
前記データストリームは、ビデオストリームであり、
前記ソフトウェアプログラムの実行可能なコードは、前記ビデオストリームに埋め込まれる、
請求項10に記載のシステム。
The data stream is a video stream;
The executable code of the software program is embedded in the video stream.
The system according to claim 10.
前記ソフトウェアプログラムの実行可能なコードは、機械コード又はネイティブコードである、
請求項10に記載のシステム。
The executable code of the software program is machine code or native code.
The system according to claim 10.
前記ソフトウェアプログラムの実行の可能なコードは、前記第二のシステムによって圧縮されており、
前記一以上のプロセッサは、前記命令を実行するとき、前記ソフトウェアプログラムの実行可能なコードを展開するようさらに機能する、
請求項10に記載のシステム。
The executable code of the software program is compressed by the second system,
The one or more processors further function to deploy executable code of the software program when executing the instructions;
The system according to claim 10.
前記一以上のプロセッサは、前記命令を実行するとき:
実行可能なコードを含むものとして、割り当てられた前記動的メモリをマークし;
分岐テーブルの一以上のエントリを調整して、割り当てられた前記動的メモリと、割り当てられた前記動的メモリにロードされた前記ソフトウェアプログラムの実行可能なコードに反映させる;
ようさらに機能する、請求項10に記載のシステム。
When the one or more processors execute the instructions:
Marking the allocated dynamic memory as containing executable code;
Adjusting one or more entries in the branch table to reflect the allocated dynamic memory and the executable code of the software program loaded into the allocated dynamic memory;
The system of claim 10, further functioning as follows.
前記データストリームは、第一の部分と第二の部分を含み;
前記データストリームの前記第一の部分は、前記ソフトウェアプログラムの実行可能なコードを含み;
前記データストリームの前記第二の部分は、前記ソフトウェアプログラムによって使用される複数のデータを含む;
請求項10に記載のシステム。
The data stream includes a first portion and a second portion;
The first portion of the data stream includes executable code of the software program;
The second portion of the data stream includes a plurality of data used by the software program;
The system according to claim 10.
前記一以上のプロセッサは、前記命令を実行するとき:
前記データストリームと関連付けられたネットワークソケットを、前記ソフトウェアプログラムに渡すようさらに機能し、
前記データストリームの前記第二の部分に含まれる前記データが、前記ソフトウェアプログラムの実行中に、前記ソフトウェアプログラムによって使用される、
請求項15に記載のシステム。
When the one or more processors execute the instructions:
Further functioning to pass a network socket associated with the data stream to the software program;
The data contained in the second part of the data stream is used by the software program during execution of the software program;
The system according to claim 15.
前記一以上のプロセッサは、前記命令を実行するとき、前記ソフトウェアプログラムの実行可能なコードを検証する
ようさらに機能する、請求項10に記載のシステム。
The system of claim 10, wherein the one or more processors are further operative to verify executable code of the software program when executing the instructions.
前記一以上のプロセッサは、前記命令を実行するとき、前記ソフトウェアプログラムの実行が完了した後に、割り当てられた前記動的メモリを開放する
ようさらに機能する、請求項10に記載のシステム。
The system of claim 10, wherein the one or more processors are further operative to free the allocated dynamic memory after execution of the software program is complete when executing the instructions.
一以上のコンピュータ読取可能な記憶媒体であって、第一のコンピュータシステムによって実行されるとき、
第二のコンピュータシステムから、ダウンロード可能なソフトウェアプログラムを特定するURI(Uniform Resource Identifier)を含むソフトウェアスタブを受信し;
受信した前記ソフトウェアスタブをインストールし;
前記URIを含む要求であって、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードについての前記要求を送信し;
前記第一のコンピュータシステムと第二のコンピュータシステムとの間のネットワーク接続を通じて、前記第二のコンピュータシステムから送信されたデータストリームにおける前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを受信し、前記データストリームは、ソフトウェアプログラムの実行可能なコードを含み;
前記データストリームから、前記ソフトウェアプログラムの実行可能なコードを抽出し;
動的メモリを、前記ソフトウェアプログラムの実行可能なコードのために割り当て;
前記データストリームから抽出された前記ソフトウェアプログラムの実行可能なコードを、割り当てられた前記動的メモリへと直接ロードし、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードは、前記第一のコンピュータシステムの永続的なストレージに保管またはインストールされず
割り当てられた前記動的メモリにロードされた、前記ソフトウェアプログラムの実行可能なコードを起動することにより、前記ソフトウェアプログラムを実行する;
よう機能するソフトウェアを具体化する、コンピュータ読取可能な記憶媒体。
One or more computer-readable storage media when executed by a first computer system;
Receiving a software stub from a second computer system including a URI (Uniform Resource Identifier) identifying a downloadable software program;
Install the received software stub;
Sending the request for the executable code of the downloadable software program, the request including the URI;
Receiving executable code of the downloadable software program in a data stream transmitted from the second computer system over a network connection between the first computer system and the second computer system; and The stream contains the executable code of the software program;
Extracting executable code of the software program from the data stream;
Allocate dynamic memory for the executable code of the software program;
The executable code of the software program extracted from the data stream is loaded directly into the allocated dynamic memory, and the executable code of the downloadable software program is stored in the first computer system. Not stored or installed in persistent storage ;
Executing the software program by invoking executable code of the software program loaded into the allocated dynamic memory;
A computer-readable storage medium embodying software that functions as follows.
前記データストリームは、ビデオストリームであり、
前記ソフトウェアプログラムの実行可能なコードは、前記ビデオストリームに埋め込まれる、
請求項19に記載の記憶媒体。
The data stream is a video stream;
The executable code of the software program is embedded in the video stream.
The storage medium according to claim 19.
前記ソフトウェアプログラムの実行可能なコードは、機械コード又はネイティブコードである、
請求項19に記載の記憶媒体。
The executable code of the software program is machine code or native code.
The storage medium according to claim 19.
前記ソフトウェアプログラムの実行の可能なコードは、前記第二のコンピュータシステムによって圧縮されており、
前記ソフトウェアは、前記第一のコンピュータシステムによって実行されるとき、前記ソフトウェアプログラムの実行可能なコードを展開するようさらに機能する、
請求項19に記載の記憶媒体。
The executable code of the software program is compressed by the second computer system,
The software further functions to deploy executable code of the software program when executed by the first computer system;
The storage medium according to claim 19.
前記ソフトウェアは、前記第一のコンピュータシステムによって実行されるとき:
実行可能なコードを含むものとして、割り当てられた前記動的メモリをマークし;
分岐テーブルの一以上のエントリを調整して、割り当てられた前記動的メモリと、割り当てられた前記動的メモリにロードされた前記ソフトウェアプログラムの実行可能なコードに反映させる;
ようさらに機能する、請求項19に記載の記憶媒体。
When the software is executed by the first computer system:
Marking the allocated dynamic memory as containing executable code;
Adjusting one or more entries in the branch table to reflect the allocated dynamic memory and the executable code of the software program loaded into the allocated dynamic memory;
The storage medium of claim 19, further functioning as follows.
前記データストリームは、第一の部分と第二の部分を含み;
前記データストリームの前記第一の部分は、前記ソフトウェアプログラムの実行可能なコードを含み;
前記データストリームの前記第二の部分は、前記ソフトウェアプログラムによって使用される複数のデータを含む;
請求項19に記載の記憶媒体。
The data stream includes a first portion and a second portion;
The first portion of the data stream includes executable code of the software program;
The second portion of the data stream includes a plurality of data used by the software program;
The storage medium according to claim 19.
前記ソフトウェアは、前記第一のコンピュータシステムによって実行されるとき:
前記データストリームと関連付けられたネットワークソケットを、前記ソフトウェアプログラムに渡すようさらに機能し、
前記データストリームの前記第二の部分に含まれる前記データが、前記ソフトウェアプログラムの実行中に、前記ソフトウェアプログラムによって使用される、
請求項24に記載の記憶媒体。
When the software is executed by the first computer system:
Further functioning to pass a network socket associated with the data stream to the software program;
The data contained in the second part of the data stream is used by the software program during execution of the software program;
The storage medium according to claim 24.
前記ソフトウェアは、前記第一のコンピュータシステムによって実行されるとき、前記ソフトウェアプログラムの実行可能なコードを検証する、
請求項19に記載の記憶媒体。
The software verifies executable code of the software program when executed by the first computer system;
The storage medium according to claim 19.
前記ソフトウェアは、前記第一のコンピュータシステムによって実行されるとき、前記ソフトウェアプログラムの実行が完了した後に、割り当てられた前記動的メモリを開放する、
請求項19に記載の記憶媒体。
The software, when executed by the first computer system, releases the allocated dynamic memory after the execution of the software program is completed;
The storage medium according to claim 19.
コンピュータネットワークを通じてソフトウェアを配信する方法であって、A method for distributing software over a computer network,
サーバシステムと関連付けられたプロセッサが、ダウンロード可能なソフトウェアプログラムを特定するURI(Uniform Resource Identifier)を含むソフトウェアスタブを構成し;A processor associated with the server system constitutes a software stub including a URI (Uniform Resource Identifier) identifying a downloadable software program;
前記プロセッサが、クライアントシステムに対してインストールのために前記ソフトウェアスタブを送信し;The processor sends the software stub for installation to a client system;
前記プロセッサは、前記クライアントシステムが前記URIを前記サーバシステムのIP(Internet Protocol)アドレスにマップできるようにし;The processor enables the client system to map the URI to an IP (Internet Protocol) address of the server system;
前記プロセッサは、前記URIを含む要求であって、前記ソフトウェアスタブからの、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードについての前記要求を受信し;The processor receives the request for executable code of the downloadable software program from the software stub, the request including the URI;
前記ダウンロード可能なソフトウェアプログラムの実行可能なコードが、データストリームから抽出され、かつ、前記クライアントシステムの割り当てられた動的メモリに直接ロードされるように、前記プロセッサは、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードを含むデータストリームを構成し、前記ダウンロード可能なソフトウェアプログラムの実行可能なコードは、前記クライアントシステムの永続的なストレージに保管またはインストールされず;The processor includes the downloadable software program such that executable code of the downloadable software program is extracted from a data stream and loaded directly into the allocated dynamic memory of the client system. Constructing a data stream containing executable code, wherein the executable code of the downloadable software program is not stored or installed in persistent storage of the client system;
前記プロセッサは、前記データストリームを前記クライアントシステムに送信する;The processor sends the data stream to the client system;
方法。Method.
JP2012540153A 2009-11-23 2010-11-23 Stream-based software application distribution and activation system Active JP5459743B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/624,133 US8584120B2 (en) 2009-11-23 2009-11-23 Stream-based software application delivery and launching system
US12/624,133 2009-11-23
PCT/US2010/057822 WO2011063396A2 (en) 2009-11-23 2010-11-23 Stream-based software application delivery and launching system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2014001864A Division JP5850955B2 (en) 2009-11-23 2014-01-08 Stream-based software application distribution and activation system

Publications (3)

Publication Number Publication Date
JP2013511782A JP2013511782A (en) 2013-04-04
JP2013511782A5 JP2013511782A5 (en) 2014-01-09
JP5459743B2 true JP5459743B2 (en) 2014-04-02

Family

ID=44060414

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2012540153A Active JP5459743B2 (en) 2009-11-23 2010-11-23 Stream-based software application distribution and activation system
JP2014001864A Active JP5850955B2 (en) 2009-11-23 2014-01-08 Stream-based software application distribution and activation system

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2014001864A Active JP5850955B2 (en) 2009-11-23 2014-01-08 Stream-based software application distribution and activation system

Country Status (7)

Country Link
US (3) US8584120B2 (en)
EP (2) EP3151129A1 (en)
JP (2) JP5459743B2 (en)
KR (2) KR101494504B1 (en)
AU (1) AU2010321569B2 (en)
NZ (3) NZ704644A (en)
WO (1) WO2011063396A2 (en)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9098297B2 (en) * 1997-05-08 2015-08-04 Nvidia Corporation Hardware accelerator for an object-oriented programming language
US10580051B2 (en) 2010-05-18 2020-03-03 Google Llc Background element associated with an application installed in a browser application
US10241894B2 (en) * 2010-06-25 2019-03-26 Microsoft Technology Licensing, Llc Data-scoped dynamic data race detection
CN101984405A (en) * 2010-10-11 2011-03-09 中兴通讯股份有限公司 Method of software version upgrade and terminal and system
US9118713B2 (en) * 2011-09-26 2015-08-25 The Board Of Trustees Of The University Of Illinois System and a method for automatically detecting security vulnerabilities in client-server applications
JP5890648B2 (en) * 2011-10-21 2016-03-22 キヤノンイメージングシステムズ株式会社 Information processing apparatus, control method therefor, and device control system
US9158563B2 (en) * 2012-03-27 2015-10-13 Microsoft Technology Licensing, Llc Dynamic plugin(s) for cloud application(s)
US10127082B2 (en) * 2012-04-05 2018-11-13 Electronic Arts Inc. Distributed realization of digital content
US9751011B2 (en) 2012-05-25 2017-09-05 Electronics Arts, Inc. Systems and methods for a unified game experience in a multiplayer game
US10862731B1 (en) * 2013-06-27 2020-12-08 EMC IP Holding Company LLC Utilizing demonstration data based on dynamically determining feature availability
US10108409B2 (en) * 2014-01-03 2018-10-23 Visa International Service Association Systems and methods for updatable applets
US9553882B2 (en) * 2014-09-08 2017-01-24 Empire Technology Development Llc Correlation of advertising content to malicious software
US9575740B2 (en) * 2015-01-21 2017-02-21 Samsung Electronics Co., Ltd. Apparatus and method for running multiple instances of a same application in mobile devices
US9886376B2 (en) * 2015-07-29 2018-02-06 Red Hat Israel, Ltd. Host virtual address reservation for guest memory hot-plugging
EP3338386A4 (en) * 2015-09-21 2018-10-24 Huawei Technologies Co., Ltd. Fast and scalable database cluster communication path
CN108351792A (en) * 2016-01-15 2018-07-31 谷歌有限责任公司 Use the transmission of application container management code and dependency data
WO2017130033A1 (en) * 2016-01-26 2017-08-03 Ale International Service delivery through wireless access systems
US9614919B1 (en) 2016-01-26 2017-04-04 Ale International Service delivery through wireless access systems
US10740048B2 (en) 2016-02-04 2020-08-11 PrinterLogic, Inc. Software-as-a-service deployment of printer drivers and printer profiles
KR102092721B1 (en) * 2016-03-23 2020-04-23 포그혼 시스템스 인코포레이티드 Configuration of pattern-driven reaction in real-time data flow programming
US20180338166A1 (en) * 2017-05-22 2018-11-22 Symantec Corporation Remotely validating a webpage video stream
US10972553B2 (en) * 2017-09-29 2021-04-06 PrinterLogic, Inc. Software-as-a-service deployment of printing services in a local network
US10537799B1 (en) * 2018-03-23 2020-01-21 Electronic Arts Inc. User interface rendering and post processing during video game streaming
US10589171B1 (en) 2018-03-23 2020-03-17 Electronic Arts Inc. User interface rendering and post processing during video game streaming
US10987579B1 (en) 2018-03-28 2021-04-27 Electronic Arts Inc. 2.5D graphics rendering system
US11019066B2 (en) * 2018-11-16 2021-05-25 Citrix Systems, Inc. Systems and methods for securely managing browser plugins via embedded browser
US10918938B2 (en) 2019-03-29 2021-02-16 Electronic Arts Inc. Dynamic streaming video game client
KR20210151077A (en) 2019-05-03 2021-12-13 라인플러스 주식회사 Method and system for loading executable image in memory
JP7415356B2 (en) * 2019-07-29 2024-01-17 セイコーエプソン株式会社 Program transfer system and robot system
US11159628B1 (en) * 2020-03-30 2021-10-26 Amazon Technologies, Inc. Edge intelligence-based resource modification for transmitting data streams to a provider network

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870609A (en) * 1993-12-17 1999-02-09 Xircom, Inc. Technique for bootstrapping executable code to an adapter
FR2738367B1 (en) * 1995-09-05 1997-10-17 Scm Microsystems METHOD AND APPARATUS FOR FAST DOWNLOADING OF FUNCTIONS IN A VOLATILE MEMORY
US5829013A (en) * 1995-12-26 1998-10-27 Intel Corporation Memory manager to allow non-volatile memory to be used to supplement main memory
US5734822A (en) * 1995-12-29 1998-03-31 Powertv, Inc. Apparatus and method for preprocessing computer programs prior to transmission across a network
US6446070B1 (en) * 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6226665B1 (en) * 1996-09-19 2001-05-01 Microsoft Corporation Application execution environment for a small device with partial program loading by a resident operating system
IL131948A (en) * 1997-03-21 2003-12-10 Canal Plus Sa Transmission and reception of television programmes and other data
US20010044850A1 (en) 1998-07-22 2001-11-22 Uri Raz Method and apparatus for determining the order of streaming modules
CZ2001721A3 (en) * 1998-08-27 2002-05-15 International Business Machines Corporation System and method for introducing additional information into video data
US6637023B1 (en) * 1999-03-03 2003-10-21 Microsoft Corporation Method and system for updating read-only software modules
US7188186B1 (en) * 1999-09-03 2007-03-06 Meyer Thomas W Process of and system for seamlessly embedding executable program code into media file formats such as MP3 and the like for execution by digital media player and viewing systems
US6493871B1 (en) * 1999-09-16 2002-12-10 Microsoft Corporation Method and system for downloading updates for software installation
EP1292892A4 (en) * 2000-04-14 2006-11-15 Goahead Software Inc A system and method for upgrading networked devices
US6598130B2 (en) 2000-07-31 2003-07-22 Hewlett-Packard Development Company, L.P. Technique for referencing distributed shared memory locally rather than remotely
US7051315B2 (en) 2000-09-26 2006-05-23 Appstream, Inc. Network streaming of multi-application program code
US7039116B1 (en) * 2000-11-07 2006-05-02 Cisco Technology, Inc. Methods and apparatus for embedding and format conversion of compressed video data
US7861303B2 (en) * 2001-08-01 2010-12-28 Mcafee, Inc. Malware scanning wireless service agent system and method
US20040010587A1 (en) * 2002-07-09 2004-01-15 Arturo Altamirano Method and apparatus for displaying real time graphical and digital wellbore information responsive to browser initiated client requests via the internet
AU2003242768A1 (en) * 2002-08-02 2004-02-25 Telefonaktiebolaget Lm Ericsson (Publ) Optimised code generation
US7150014B2 (en) * 2002-10-04 2006-12-12 Hewlett-Packard Development Company, L.P. Automatically deploying software packages used in computer systems
WO2004092897A2 (en) * 2003-04-11 2004-10-28 Mirra, Inc. Service platform application distribution manager
US7735057B2 (en) 2003-05-16 2010-06-08 Symantec Corporation Method and apparatus for packaging and streaming installation software
CN101241735B (en) * 2003-07-07 2012-07-18 罗威所罗生股份有限公司 Method for replaying encrypted video and audio content
US7886287B1 (en) * 2003-08-27 2011-02-08 Avaya Inc. Method and apparatus for hot updating of running processes
US7673297B1 (en) * 2003-09-03 2010-03-02 The Directv Group, Inc. Automatic software update detection and flexible installer for set-top boxes
US7810089B2 (en) 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US7735136B2 (en) * 2005-04-18 2010-06-08 Vmware, Inc. 0-touch and 1-touch techniques for improving the availability of computer programs under protection without compromising security
KR20090003094A (en) * 2006-12-04 2009-01-09 한국전자통신연구원 Server, terminal and method for software group service
CN100464522C (en) * 2007-05-17 2009-02-25 华为技术有限公司 Process upgrading method and system
US20080301672A1 (en) * 2007-05-30 2008-12-04 Google Inc. Installation of a Software Product on a Device with Minimal User Interaction
US8185886B2 (en) * 2007-06-26 2012-05-22 Intel Corporation Method and apparatus to enable dynamically activated firmware updates
US20090083474A1 (en) * 2007-09-21 2009-03-26 Thomas Cooke File allocation table management
FR2923042B1 (en) * 2007-10-31 2010-12-31 Thales Sa SYSTEM FOR DEPLOYING SOFTWARE COMPONENTS ON CALCULATION UNITS LIMITED IN PROCESS CAPACITY.
KR100936239B1 (en) 2007-12-18 2010-01-12 한국전자통신연구원 System And Method For Providing Portable SW With Streaming
US20090172637A1 (en) 2007-12-28 2009-07-02 Microsoft Corporation Markup-based language for manifests
US20090183182A1 (en) 2008-01-10 2009-07-16 Microsoft Corporation Dynamic Composition of Virtualized Applications
US8413138B2 (en) * 2008-02-06 2013-04-02 Mformation Software Technologies, Inc. System and method to securely load a management client from a stub client to facilitate remote device management
US8346897B2 (en) * 2008-02-25 2013-01-01 Jon Jaroker System and method for deploying and maintaining software applications
US8839227B2 (en) * 2008-02-29 2014-09-16 Arris Enterprises, Inc. Preventing overwrite of nonessential code during essential code update
EP2274674A1 (en) 2008-04-25 2011-01-19 VMWare, Inc. Linking virtualized application namespaces at runtime
US8776038B2 (en) 2008-08-07 2014-07-08 Code Systems Corporation Method and system for configuration of virtualized software applications
US20110004701A1 (en) * 2008-12-29 2011-01-06 Debashish Panda Provisioning highly available services for integrated enterprise and communication
US9049478B2 (en) * 2009-04-08 2015-06-02 Dialogic Corporation System and method for implementing a dynamic media link
US9152401B2 (en) * 2009-05-02 2015-10-06 Citrix Systems, Inc. Methods and systems for generating and delivering an interactive application delivery store
US20110047540A1 (en) * 2009-08-24 2011-02-24 Embarcadero Technologies Inc. System and Methodology for Automating Delivery, Licensing, and Availability of Software Products

Also Published As

Publication number Publication date
KR20140088623A (en) 2014-07-10
EP2497033A4 (en) 2013-06-05
EP3151129A1 (en) 2017-04-05
US9195449B1 (en) 2015-11-24
JP5850955B2 (en) 2016-02-03
AU2010321569B2 (en) 2014-07-17
JP2014112397A (en) 2014-06-19
NZ704644A (en) 2016-02-26
EP2497033A2 (en) 2012-09-12
WO2011063396A3 (en) 2011-10-20
US20110126190A1 (en) 2011-05-26
WO2011063396A2 (en) 2011-05-26
KR20120123655A (en) 2012-11-09
US8584120B2 (en) 2013-11-12
KR101494504B1 (en) 2015-03-02
US9009700B2 (en) 2015-04-14
JP2013511782A (en) 2013-04-04
NZ617451A (en) 2015-02-27
NZ600170A (en) 2013-11-29
EP2497033B1 (en) 2017-01-04
US20140047435A1 (en) 2014-02-13
KR101618486B1 (en) 2016-05-04
AU2010321569A1 (en) 2012-06-14

Similar Documents

Publication Publication Date Title
JP5459743B2 (en) Stream-based software application distribution and activation system
JP5916002B2 (en) Software application distribution and launch system
CN106406961B (en) Method and device for loading and providing application program based on browser
US20190334938A1 (en) System, method, and computer program product for dynamically configuring a virtual environment for identifying unwanted data
AU2014203156B2 (en) Stream-based software application delivery and launching system
Bhardwaj et al. Ephemeral apps
NZ705843B2 (en) Software application delivery and launching system
NZ614445B2 (en) Software application delivery and launching system

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20131017

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131113

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131113

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20131113

TRDD Decision of grant or rejection written
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20131205

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131210

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131216

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140108

R150 Certificate of patent or registration of utility model

Ref document number: 5459743

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250