2つのプログラミング言語間の通信のための方法であって、各々が複数の構成要素を含む、第1のプログラミング言語の1つまたは複数のコマンドを受信するステップと、前記受信したコマンドの各々を文字列として符号化するステップであって、前記文字列が、前記コマンドの始まりの印となる第1の種類の制御文字と、前記コマンドの前記複数の構成要素を表す複数の数字と、前記複数の数字の各々を分ける第2の種類の制御文字とを含むステップと、前記符号化された文字列を第2のプログラミング言語の少なくとも1つのコマンドに復号するステップであって、前記第2のプログラミング言語の各コマンドは、前記第1のプログラミング言語の前記受信したコマンドの1つに対応し、前記第1のプログラミング言語の前記対応する受信したコマンドと類似のタスクを行うコマンドであるステップと、前記第2のプログラミング言語の前記少なくとも1つのコマンドを実行するステップとを含む方法。前記第1のプログラミング言語の1つまたは複数のコマンドを受信する前記ステップは、前記1つまたは複数のコマンドを含む待ち行列を受信するステップを含み、前記待ち行列内の前記コマンドの順番は、前記コマンドが実行される順番を示す請求項1に記載の方法。前記第2のプログラミング言語の少なくとも1つのコマンドを実行する前記ステップは、前記第1のプログラミング言語の前記対応するコマンドが前記待ち行列内に配置されたのと同じ順番で、前記少なくとも1つのコマンドを実行するステップを含む請求項2に記載の方法。前記第1のプログラミング言語の前記受信したコマンドの各々は、オブジェクトの種類を識別するクラス識別子と、前記識別されたクラス内のメンバ関数を識別するメソッド識別子と、前記識別されたメソッドで用いられる1つまたは複数の入力パラメータとを含む請求項1に記載の方法。前記コマンドの前記構成要素を表す前記複数の数字は、前記クラス識別子を識別する第1の数字と、前記メソッド識別子を識別する第2の数字と、前記識別されたクラス内のオブジェクトのインスタンスを識別する第3の数字と、前記1つまたは複数の入力パラメータの値に対応する1つまたは複数の追加の数字とを含む請求項4に記載の方法。前記コマンドの前記構成要素を表す前記複数の数字は、前記クラス識別子および前記メソッド識別子を識別する第1の数字と、前記識別されたクラス内のオブジェクトのインスタンスを識別する第2の数字と、前記1つまたは複数の入力パラメータの値に対応する1つまたは複数の追加の数字とを含む請求項4に記載の方法。高水準プログラミング言語とコンピューティングシステム上でネイティブに実行するバイナリコードとの間の通信のためのコンピューティングシステムであって、プロセッサと、インタプリタモジュールであって、各々が複数の構成要素を含む、前記高水準プログラミング言語の1つまたは複数のコマンドを受信し、前記受信したコマンドの各々を、前記コマンドの始まりの印となる第1の種類の制御文字と、前記コマンドの前記複数の構成要素を表す複数の数字と、前記複数の数字の各々を分ける第2の種類の制御文字とを含む文字列として符号化するように構成されたインタプリタモジュールと、ネイティブモジュールであって、前記インタプリタモジュールから1つまたは複数の文字列を受信し、各々が前記高水準プログラミング言語の前記受信したコマンドの1つに対応し、前記高水準プログラミング言語の前記対応するコマンドと類似のタスクを行う、前記バイナリコードによって実行可能な少なくとも1つのコマンドに、前記1つまたは複数の文字列を復号し、前記実行可能な少なくとも1つのコマンドを実行するように構成されたネイティブモジュールとを備えるコンピューティングシステム。前記高水準プログラミング言語の1つまたは複数のコマンドの前記受信は、前記1つまたは複数のコマンドを含む待ち行列を受信することを含み、前記待ち行列内の前記コマンドの順番は、前記コマンドが実行される順番を示す請求項7に記載のシステム。前記ネイティブモジュールは、前記高水準プログラミング言語の前記対応するコマンドが前記待ち行列に配置されたのと同じ順番で、前記少なくとも1つのコマンドを実行するようにさらに構成された請求項8に記載のシステム。前記高水準プログラミング言語の前記受信したコマンドの各々は、オブジェクトの種類を識別するクラス識別子と、前記識別されたクラス内のメンバ関数を識別するメソッド識別子と、前記識別されたメソッドで用いられる1つまたは複数の入力パラメータと、を含む請求項7に記載のシステム。前記コマンドの前記構成要素を表す前記複数の数字は、前記クラス識別子を識別する第1の数字と、前記メソッド識別子を識別する第2の数字と、前記識別されたクラス内のオブジェクトのインスタンスを識別する第3の数字と、前記1つまたは複数の入力パラメータの値に対応する1つまたは複数の追加の数字とを含む請求項10に記載のシステム。前記コマンドの前記構成要素を表す前記複数の数字は、前記クラス識別子および前記メソッド識別子を識別する第1の数字と、前記識別されたクラス内のオブジェクトのインスタンスを識別する第2の数字と、前記1つまたは複数の入力パラメータの値に対応する1つまたは複数の追加の数字とを含む請求項10に記載のコンピューティングシステム。前記高水準プログラミング言語で書かれた複数のコマンド高水準コマンドを含む1つまたは複数の高水準アプリケーションをさらに備える請求項7に記載のシステム。前記高水準アプリケーションの1つは、高水準コマンドを含むブートアプリケーションであり、前記高水準コマンドが、前記インタプリタモジュールによって符号化され、前記ネイティブモジュールによって復号され実行されると、前記プロセッサに、リモートアプリケーションサーバから1つまたは複数の追加の高水準コマンドを受信させ、前記高水準アプリケーションの前記複数の高水準コマンドの少なくとも1つを前記追加の高水準コマンドの少なくとも1つで置き換えることと、前記追加の高水準コマンドの少なくとも1つを前記高水準アプリケーションの前記複数の高水準コマンドに挿入することのうちの少なくとも1つを実行することによって、前記高水準アプリケーションの1つを修正させるように構成された請求項13に記載のシステム。命令を記憶するように構成された非一時的なコンピュータ可読記憶媒体であって、前記命令がプロセッサによって実行されると、前記プロセッサに、第1のプログラミング言語の1つまたは複数のコマンドを受信させ、前記受信したコマンドの各々を、前記コマンドの始まりの印となる第1の種類の制御文字と、前記コマンドの構成要素を表す複数の数字と、前記複数の数字の各々を分ける第2の種類の制御文字とを含む文字列とし符号化させ、各々が前記第1のプログラミング言語の前記受信したコマンドの1つに対応し、前記第1のプログラミング言語の前記対応するコマンドと類似のタスクを行う第2のプログラミング言語の少なくとも1つのコマンドに、前記符号化された文字列を復号させ、前記第2のプログラミング言語の前記少なくとも1つのコマンドを実行させるコンピュータ可読記憶媒体。前記第1のプログラミング言語の1つまたは複数のコマンドの前記受信は、前記1つまたは複数のコマンドを含む待ち行列を受信することを含み、前記待ち行列内の前記コマンドの順番は、前記コマンドが実行される順番を示す請求項15に記載のコンピュータ可読媒体。前記第2のプログラミング言語の前記少なくとも1つのコマンドの前記実行は、前記第1のプログラミング言語の前記対応するコマンドが前記待ち行列に配置されたのと同じ順番で、前記少なくとも1つのコマンドを実行することを含む請求項16に記載のコンピュータ可読媒体。前記第1のプログラミング言語の前記受信したコマンドの各々は、オブジェクトの種類を識別するクラス識別子と、前記識別されたクラス内のメンバ関数を識別するメソッド識別子と、前記識別されたメソッドで用いられる1つまたは複数の入力パラメータと、を含む請求項15に記載のコンピュータ可読媒体。前記コマンドの前記構成要素を表す前記複数の数字は、前記クラス識別子を識別する第1の数字と、前記メソッド識別子を識別する第2の数字と、前記識別されたクラス内のオブジェクトのインスタンスを識別する第3の数字と、前記1つまたは複数の入力パラメータの値に対応する1つまたは複数の追加の数字とを含む請求項18に記載のコンピュータ可読媒体。前記コマンドの前記構成要素を表す前記複数の数字は、前記クラス識別子および前記メソッド識別子を識別する第1の数字と、前記識別されたクラス内のオブジェクトのインスタンスを識別する第2の数字と、前記1つまたは複数の入力パラメータの値に対応する1つまたは複数の追加の数字とを含む請求項18に記載のコンピュータ可読媒体。欠点の1つとして、ユーザが不正コードを実行するのを防ぐ方法として、クライアント装置への実行可能バイナリの転送を制限しているオペレーティングシステムがある。オペレーティングシステム開発者は、ウイルスや他の悪意のコードの拡散を防ぐためのセーフガードとしてこのような制限を設けたり、オペレーティングシステムの制御強化の手段としてこれらの制限を用いたりする。オペレーティングシステムが、集中配信サービスを備えて実行可能バイナリの配信を管理したり、配信中のバイナリを配信サービスの管理者がレビューしたり、承認したりする場合もある。例えば、アップルiOSモバイルオペレーティングシステムは、アプリケーションや更新を配信するためのAPPSTOREを備え、APPSTOREに投稿されるコンテンツは、ユーザに配信される前に承認プロセスを経る。ユーザは自由に実行可能バイナリをダウンロードできるが、新しいアプリケーションを実行したり、既存のアプリケーションに更新を適用する前に、ユーザに管理者のパスワード、または他のなんらかの認証を求めるオペレーティングシステムもある。これらの制限は、ソフトウェア開発者が実行可能バイナリを配信するのを難しくする。特に、更新にレビュープロセスを行う場合、または、更新を適用する前にユーザ認証が必要な場合、更新およびパッチの公開ならびに配信のプロセスは著しく遅くなる。結果として、ユーザに迅速に更新を配信するのが難しくなる。さらに、開発者が、ユーザの装置構成、位置または人口学的情報に合わせてカスタマイズした更新を配信したい場合、カスタマイズされた更新の各置換が、配信前にレビュープロセスを必要とする場合がある。開示の実施形態は、その他の長所および特徴を有しており、それらは、詳細な説明、添付請求項、および添付の図または図面から容易に分かる。以下に図面を簡単に紹介する。図および下記の説明は、好適な実施形態の例を示すためのものである。下記の説明から、本明細書に開示の構造および方法の代替の実施形態は、請求項の原理から逸脱することなく採用できる実行可能な代替形態として認められることに留意されたい。幾つかの実施形態について詳細に述べる。実施形態の例は添付の図面に示す。図面で使われている類似のまたは同じ参照番号は、類似のまたは同じ機能を示すことに留意されたい。図は、開示のシステムまたは方法の実施形態を例示の目的のみで示している。本明細書に示されている構造および方法の代替の実施形態が、本明細書に記載の原理から逸脱することなく採用可能なことを、当業者は下記の説明から理解されよう。[構成の概略]実行可能バイナリを配信する代わりに、アプリケーションおよび更新を、JavaScript登録商標などの高水準言語で書いてクライアント装置に配信してもよい。高水準アプリケーションを実行するために、ユーザは、アプリケーションクライアントモジュールをクライアント装置にインストールする。アプリケーションクライアントモジュールは、クライアント装置でネイティブに実行するコンパイル済みコードと高水準言語を通信可能にする通信プロトコルを実装する。通信プロトコルは、ネットワーク装置や物理センサなどの典型的にはネイティブコード用であるシステムリソースに、高水準アプリケーションがアクセスするのを可能にする。結果として、高水準言語で書かれたアプリケーションは、通常、実行可能アプリケーションバイナリに制限されたタスクを行うことができ、それにより、高水準アプリケーションがバイナリアプリケーションのユーザ体験に類似したユーザ体験を提供することが可能になる。通信プロトコルは、一連の数字および制御文字を含む文字列として高水準コマンドを符号化することによって、動作する。各数字は、クラス識別子、メソッド識別子、および、メソッドに渡される1つまたは複数のパラメータなどの、コマンドの異なる構成要素を表す。符号化された文字列はアプリケーションクライアントモジュールの異なる構成要素に送信され、アプリケーションクライアントモジュールは文字列をネイティブコマンドに復号して、該コマンドを実行する。高水準コードの複雑さを軽減して、通信プロトコルを動作させるために使われるコンピューティングリソースを軽減するために、アプリケーションクライアントモジュールは、グラフィックプロセッサ、物理センサ、およびネットワークインタフェースなどの、システムリソースにアクセスするための簡易コマンドの提供を可能にする数個のAPIapplicationprogramminginterfaceも備えている。ネイティブコードは、通信プロトコルを用いてコマンドを高水準コードに発行してもよい。コマンドの符号化プロセスおよび復号プロセスは、かなりの量のコンピューティングリソースを使用するので、アプリケーションクライアントモジュールは、待ち行列機構を実装して、数個のコマンドを一度に符号化、復号してもよい。一実施形態においては、処理フレームと呼ばれる所定の時間間隔の間に発行される高水準コマンドが、発行順に待ち行列に追加される。処理フレームの終わりに、待ち行列にあるコマンドは、文字列として符号化される。次に、該文字列はネイティブコマンドに復号され、ネイティブコマンドは、対応する高水準コマンドが待ち行列に追加されたのと同じ順番で実行される。この待ち行列機構によって、アプリケーションクライアントモジュールは、複数のコマンドを一度に符号化、復号することによって性能を向上させることができ、かつ、高水準コマンドの元の順番を保持することができる。実行可能なコンテンツを高水準言語で配信することによって、コンテンツは、オペレーティングシステムがバイナリアプリケーションおよび更新の配信に課している制限を受けない。アプリケーションまたは更新が高水準言語でクライアント装置に転送されると、オペレーティングシステムは、その動作を実行可能コードの転送ではなくデータの転送として解釈し、実行可能コードの転送に関連する制限を課さずに、転送を進めることができる。結果として、アプリケーションのブートプロセスの間、高水準アプリケーションが更新をチェックして適用することが可能になり、また、ユーザの地理的な位置、人口統計学上のグループ、装置構成、および他の個人情報に合わせた高水準更新を自動的に配信することによって、開発者がカスタマイズされたユーザ体験を提供することが可能になる。高水準アプリケーションをダウンロードして実行するこのプロセスは、アプリケーション配信システムまたはオペレーティングシステムに組み込まれたセキュリティ対策を回避するかもしれないが、アプリケーションクライアントモジュールは、個々の高水準アプリケーションに与えられる権限のレベルを制限することによって、クライアント装置のセキュリティを保護する機能を有する。[システムアーキテクチャの概略]図1は、一実施形態に係る、アプリケーションおよび更新を高水準言語で配信するのに適したシステム環境を示すネットワーク図である。システム環境は、いくつかある構成要素の中で特に、アプリケーションサーバ102、ネットワーク104、クライアント装置100を含む。他の実施形態においては、このシステム環境より構成要素が少なかったり、多かったり、異なっていてもよい。具体的には、1つのクライアント装置および1つのサーバ102のみが描かれているが、追加のクライアント装置またはサーバがネットワーク104に接続されていてよい。アプリケーションサーバ102は、アプリケーションクライアントモジュール116、およびクライアント装置100に保存される任意の高水準アプリケーションをサポートするサーバベースのサービスを動作させる。具体的には、アプリケーションサーバ102は、ユーザに配信するための高水準アプリケーションおよび更新が入手できるようにし、アプリケーションクライアントモジュール116は、自動的にまたはユーザ要求に応答して、更新および新しいアプリケーションをアプリケーションサーバ102から読み出してよい。アプリケーションサーバ102は、アプリケーションに統合されたソーシャルネットワーキングまたはデータ収集および分析などの、追加のアプリケーションに関連するサービスを提供してもよい。アプリケーションサーバ102は、1つのエンティティとして描かれているが、アプリケーションサーバ102の機能は、複数のコンピューティング装置、コンピューティングクラスタ、またはデータセンタにわたって広がっていてよく、アプリケーションサーバ102の構成要素は、複数の地理的な位置に存在してよい。アプリケーションサーバ102は、複数のクライアント装置100とネットワーク104を介して通信する。ネットワーク104は、当技術分野で周知のように、標準的な通信技術とプロトコルとの任意の組み合わせを含んでよい。例えば、通信は、Ethernet登録商標、802.11、CDMA、3G、4G、またはDSLdigitalsubscriberlineなどのリンク技術によってネットワーク104を伝わる。ネットワーク104は、HTTPhpyertexttransferprotocol、TCP/IPtransmissioncontrolprotocol/internetprotocol、またはFTPfiletransferprotocolなどの、複数のネットワークプロトコルをサポートしてよく、ネットワーク104を介して転送されるデータはいずれも、TLStransportlayersecurity、SSLsecuresocketslayer、およびIPsecinternetprotocolsecurityなどの技術を用いて暗号化してよい。図1は、クライアント装置100の詳細図も含む。クライアント装置100は、いくつかある構成要素の中で特に、プロセッサ106、メモリ108、ネットワークインタフェース装置110、物理センサ112、クライアント装置API114、およびアプリケーションクライアントモジュール116を含む。クライアント装置100の構成要素106、108、110、112、114、116は、システムバス118を介して、通信可能に結合されている。全体として、クライアント装置100は、スマートフォン、PDApersonaldigitalassistant、タブレットコンピュータ、ラップトップコンピュータ、またはデスクトップコンピュータなど、これらの構成要素106、108、110、112、114、116を含む任意のコンピューティング装置であってよい。プロセッサ106は、コンピュータ可読命令を実行する。プロセッサ106は、実行するための命令を読み出したり、データを読み書きしたりするために、メモリ108にアクセスしてよい。1つのプロセッサ106のみが図1に示されているが、クライアント装置100は、並行して動作可能な複数のプロセッサ106を含んでよい。クライアント装置100は、グラフィック処理またはオーディオ処理のための専用プロセッサ106を含んでもよい。メモリ108は、データおよびプロセッサ106によって実行可能なコンピュータ可読命令を記憶することができる任意の非一時的なコンピュータ可読記憶媒体である。メモリ108は、揮発性メモリ例えば、ランダムアクセスメモリと不揮発性メモリ例えば、ハードディスクドライブ、半導体ドライブ、コンパクトディスク、磁気テープとの組み合わせを含んでよい。ネットワークインタフェース装置110は、ネットワーク104に接続し、ネットワーク104と、クライアント装置100の他の構成要素との間でデータのやり取りを行う。物理センサ112は、クライアント装置の向きや周囲環境などを監視する任意の装置を備えてよい。例えば、センサは、加速度計、ジャイロスコープ、GPSglobalpositioningservice受信機、コンパス、または、周辺光検出器を含んでよい。物理センサ112は、外部ボタン、キーボード、マウス、タッチスクリーン、マイクロフォンなど、ユーザ入力をクライアント装置100に記録するための装置も含んでよい。オペレーティングシステムは、バイナリソフトウェアアプリケーションがクライアント装置100の物理的な構成要素と相互作用するのを可能にする1つまたは複数のクライアント装置APIapplicationprogramminginterface114を提供してよい。オペレーティングシステムは、物理センサ112、ネットワークインタフェース装置110、または、専用のグラフィックプロセッサまたはオーディオプロセッサ106で制御可能な画面、スピーカなどの出力装置と相互作用するためのAPIを含んでよい。アプリケーションクライアントモジュール116は、高水準プログラミング言語で書かれた1つまたは複数のアプリケーションが、ネイティブコードと通信できるようにする通信プロトコルを実装する。通信プロトコルの利点の1つは、プロトコルによって、メモリ108に保存された他のアプリケーションを修正したり、ネットワークインタフェース装置110を介してアプリケーションサーバ102と通信するなど、通常、ネイティブコード用であるタスクを高水準アプリケーションが行うのを可能にすることである。高水準アプリケーションとネイティブコードとの間の通信を効率化するために、アプリケーションクライアントモジュール116は、高水準アプリケーションとオペレーティングシステムが備えるAPI114との間の相互作用を簡単にする一組のアプリケーションクライアントAPIを含んでもよい。アプリケーションクライアントモジュール116は、別個のエンティティとして示されているが、アプリケーションクライアントモジュール116の機能を実行する論理の全体またはその一部が、プロセッサ106またはメモリ108に存在していてもよい。さらに、アプリケーションクライアントモジュール116の全てまたは一部を、ASICapplicationspecificintegratedcircuitまたはFPGAfieldprogrammablegatearrayなどの別個のハードウェア装置として、実現してよい。[アプリケーションクライアントモジュール]図2を参照すると、一実施形態に係る、図1に示したアプリケーションクライアントモジュール116の詳細図が示されている。アプリケーションクライアントモジュール116は、いくつかある構成要素の中で特に、ブートアプリケーション200、1つまたは複数の追加の高水準アプリケーション202、高水準API204、ネイティブAPI206、高水準オブジェクトレジストリ208、ネイティブオブジェクトレジストリ210、インタプリタ212、一組の簡易装置API214を含んでよい。アプリケーションクライアントの他の実施形態は、もっと多くの、もっと少ない、または異なる構成要素を含んでよい。ブートアプリケーション200は、インタプリタ型高水準プログラミング言語例えば、JavaScriptで書かれたアプリケーションであり、高水準アプリケーション200、202への照会を受信し、照会されたアプリケーションを更新するよう試みる。アプリケーションへの照会を受信した後、ブートアプリケーション200は、アプリケーションサーバ102にクエリを行い、照会されたアプリケーションの更新版のダウンロードがあるか否かを判定する。ブートアプリケーション200は、アプリケーションサーバ102に更新を見つけると、自動的に更新版を読み出して、適用する。更新版も高水準言語で書かれているので、ユーザまたはオペレーティングシステムからの干渉や認証なしに、読み出し、適用することができる。アプリケーションクライアントモジュール116がアプリケーション202の起動の要求を受信すると、ネイティブAPI206は、ブートアプリケーション200に2つのコマンドを発行する。第1のコマンドは、ブートアプリケーション200への照会を含み、それによりブートアプリケーション200は自己を更新する。第2のコマンドは、要求されたアプリケーション202への照会を含み、それによりブートアプリケーション200は、要求されたアプリケーション202を更新する。ブートアプリケーション200および要求されたアプリケーション202の更新のプロセスを、図3を参照して詳細に記載する。高水準アプリケーション202は、ゲーム、画像エディタ、またはマルチメディア再生プログラムなどの、クライアント装置100にダウンロード可能なソフトウェアアプリケーションである。ダウンロードは、クライアント装置100のユーザによって開始されてもよく、アプリケーションクライアントモジュール116内の別のアプリケーション202によって開始されてもよい。ブートアプリケーション200と同様に、高水準アプリケーション202は、インタプリタ型高水準プログラミング言語で書かれる。本明細書では、高水準プログラミング言語は、クライアント装置に配信される前にコンパイルされる代わりにクライアント装置上のインタプリタ212によって実行可能な任意のプログラミング言語例えば、JavaScriptである。高水準コードに加えて、アプリケーション202は、画像、ビデオ、オーディオクリップまたはプレーンテキストなどの他のデータ項目も含んでよい。高水準アプリケーション202は、高水準プログラミング言語で書かれているので、オペレーティングシステムは、高水準アプリケーション202のダウンロードをデータファイルのダウンロードと解釈する。結果として、ダウンロードは、オペレーティングシステムが実行可能バイナリアプリケーションのダウンロードに課す制限を受けない。これによってオペレーティングシステムに組み込まれたセキュリティ機能を回避するかもしれないが、インタプリタ212およびネイティブAPI206は、ダウンロードされた高水準アプリケーション202に許可されるアクセスのレベルを規制するセキュリティ機能を含む。高水準API204およびネイティブAPI206は、簡易装置API214の機能に統一インタフェースを提供するAPIapplicationprogramminginterfaceである。API204、206は、マッチするクラスおよびメソッドを含むが、高水準API204はブートアプリケーション200および他のアプリケーション202と同じ高水準言語で書かれているのに対し、ネイティブAPI206はクライアント装置100でネイティブに実行するバイナリである。高水準API204およびネイティブAPI206は、1つの処理フレームのコマンドを待ち行列に配置し、該待ち行列をインタプリタ212に送信して文字列として符号化し、該文字列を復号して命令に戻す論理も含む。符号化関数については図4を参照して詳細に記載する、また、待ち行列機構については図6を参照して記載する。個々の簡易装置API214の機能を統一することによって、開発者は、1つのAPIに照会して、クライアント装置100のハードウェアと相互作用することができる。これによって、開発プロセスが簡単になり、クラスまたはメソッドが間違ったAPIに起因する可能性を減らす。高水準オブジェクトレジストリ208およびネイティブオブジェクトレジストリ210は、実行中のアプリケーション202内のライブオブジェクトのミラー化されたレジストリを維持する。一実施形態においては、オブジェクトは、最初に、高水準オブジェクトレジストリ208に登録され、次に、エントリがネイティブオブジェクトレジストリ210にミラー化される。新しいオブジェクトを登録し、2つのレジストリ208、210間でオブジェクトをミラー化するプロセスについては、図7を参照して詳細に記載する。インタプリタ212は、ブートアプリケーション200、他のアプリケーション202、および高水準API204のコードなど、高水準コードをロードし、実行する。アプリケーション200、202が、ネイティブコードが実行するコマンドを含む場合、インタプリタ212は、そのコマンドを符号化してネイティブAPI206に送信し、復号され、実行されるようにする。インタプリタ212には2つの別個のインスタンスがある。アプリケーションインタプリタ212Aは、クライアント装置100へのアクセス権が低い。例えば、アプリケーションインタプリタ212Aは、オンスクリーングラフィックス、UIuserinterface、オーディオ機能、および他のアプリケーション関連の機能にはアクセス可能としてよい。一方、システムインタプリンタ212Bは、システムを不安定にする可能性のあるクライアント装置100の部分へのアクセスを含め、クライアント装置100へのアクセス権が高い。例えば、システムインタプリンタ212Bは、ネットワークインタフェース110を用いて、認証情報をアプリケーションサーバ102に転送したり、メモリ108に記憶されているブートアプリケーション200もしくは他のアプリケーション202を修正してもよい。ブートアプリケーション200は、アプリケーションサーバ102へのアクセス、メモリ108内に記憶されているアプリケーション200、202の修正など、高い権限が必要な機能を頻繁に使用するので、システムインタプリンタ212Bによって実行される。他のアプリケーション202は、アプリケーションインタプリタ212Aによって実行される。他のアプリケーション202のうちの1つが、実行するのに高い権限が必要なコマンドを含む場合、アプリケーションインタプリタ212AはそのコマンドをネイティブAPI206に送信し、ネイティブAPI206はそのコマンドを許可するか否かを判断する。例えば、ネイティブAPI206は、アプリケーションサーバ102からソーシャルネットワーキングデータを読み出すコマンドの実行は許可するが、あるアプリケーション202が、別のアプリケーション202を任意に修正したり消したりするコマンドを実行するのは許可しないかもしれない。ネイティブAPI206が高い権限が必要なコマンドの実行を許可する場合、そのコマンドは実行のためにシステムインタプリタ212に送られる。この構成によって、アプリケーション202はクライアント装置100の高い権限が必要な機能にアクセスでき、また、同時に、不適切で害を及ぼす可能性がある高い権限が必要なコマンドから保護することによって、クライアント装置100のセキュリティを維持することができる。簡易装置API214は、高水準アプリケーション200、202がオペレーティングシステムに備わったクライアント装置API114との相互作用に使用することができる簡易インタフェースを提供する。例えば、簡易グラフィックスAPI214Aは、1つのコマンドで画面上に画像を配置する簡単な方法を提供してよく、これに対して、クライアント装置API114では、同じ画像を画面の同じ位置に配置するには、適切なグラフィックスAPIへの一連の複雑なコールを必要とする場合がある。さらに、アプリケーションクライアントモジュール116は、簡易装置API214の異なるバージョンを実装して、異なるクライアント装置100のクライアント装置API114と相互作用してよい。例えば、APPLEiOSのグラフィックスAPIは、画面に画像を配置するのに第1の一連のコマンドを必要とし、一方、GOOGLEANDROID登録商標オペレーティングシステムのグラフィックスAPIを用いて画像を配置するには、第1の一連のコマンドとは異なる第2の一連のコマンドを必要とする。この場合、簡易グラフィックスAPI214AのiOSバージョンの簡易画像配置コマンドは、第1の一連のコマンドを実行し、簡易グラフィックスAPI214AのANDORIDバージョンの画像配置コマンドは、第2の一連のコマンドを実行することとなる。結果として、簡易装置API214は、異なる装置100のハードウェア層、ファームウェア層、およびソフトウェア層、並びに異なるオペレーティングシステムと相互作用に使用可能な一組の標準コマンドを提供し、それによりブートアプリケーション200、他のアプリケーション202および高水準API204の同じ高水準コードが、異なる装置構成にわたって機能することができる。ミラー化されたAPI204、206、ミラー化されたオブジェクトレジストリ208、210、インタプリタ212および簡易API214は、一緒に、高水準アプリケーション202とオペレーティングシステムに内蔵されているAPI114との間に標準インタフェースを提供する。これは、アプリケーションクライアントモジュール116が装置にインストールされる限り、同じ高水準アプリケーション202を異なるオペレーティングシステム、および異なるクライアント装置100で実行してよいことを意味する。結果として、開発者は、アプリケーション202の複数のOS専用バーションまたは装置専用バージョンを書く必要なく、複数のオペレーティングシステムおよび複数の装置の幅広いユーザに到達することができる。[自動更新の適用]図3は、一実施形態に係る、アプリケーションのブートプロセス時に高水準アプリケーション200を自動的に更新するプロセスの例を示す、アプリケーションサーバ102、ネイティブAPI206、システムインタプリンタ212B、およびアプリケーションインタプリタ212A間の相互作用図である。アプリケーションクライアントモジュール116がアプリケーション実行の要求を受信して300、プロセスが開始される。要求は、異なるアプリケーションなどの異なるソースから発生することもあるが、典型的には、センサ112例えば、タッチスクリーンの1つからのユーザ入力として受信される。アプリケーションクライアントモジュール116が要求を受信すると、要求はネイティブAPI206に送られ、ネイティブAPI206は、それに答えて、システムインタプリンタ212Bにブートアプリケーション200の更新を指示する第1のコマンドを発行する302。ブートアプリケーション200を更新するために、システムインタプリンタ212Bは、ブートアプリケーション200自体を更新するようにという指示にともない、ブートアプリケーション200をロードし実行する。ブートアプリケーション200の高水準コードが、システムインタプリンタ212Bに、アプリケーションサーバ102をチェックさせ304、ブートアプリケーションの新しいバージョンがあるか否かを判断させる。システムインタプリンタ212Bは、システムインタプリタ212Bのアクセス権の高さを利用して、アプリケーションサーバ102にアクセスし304、ネットワークインタフェース装置110と相互作用して、適切な認証情報をアプリケーションサーバ102に送信することができる。アプリケーションサーバ102に更新が見つからない場合、システムインタプリンタ212Bは、更新プロセス308をとばして、ブートアプリケーションを閉じる310。ブートアプリケーション200への更新が見つかった場合、システムインタプリンタ212Bは、アプリケーションサーバ102から更新を受信し306、更新を適用する308。一実施形態においては、システムインタプリンタ212Bは、更新プロセス308で、ブートアプリケーション200全体を更新バージョンで置き換える。あるいは、システムインタプリンタ212Bは、更新プロセス308で、ブートアプリケーション200の高水準コードのサブセット例えば、新しいまたは異なったコードの行のみを置き換えてもよい。ここでも、システムインタプリンタ212Bは、アプリケーションインタプリタ212Aより高い権限を有するので、ブートアプリケーション200を修正することができる。システムインタプリンタ212Bは、ブートアプリケーション200を更新308した後、ブートアプリケーションを閉じて310、リターン文を用いてネイティブAPIに返信する312。次に、ネイティブAPI206は、システムインタプリンタ212Bに、要求されたアプリケーション202の更新を指示する第2のコマンドを発する314。システムインタプリンタ212Bは、類似のプロセスを用いて、要求されたアプリケーション202を更新する。最初に、システムインタプリンタ212Bは、要求されたアプリケーション202を更新するようにという指示にともない、ブートアプリケーション200をロードする。ブートアプリケーション202の高水準コードは、アプリケーションサーバ102に要求されたアプリケーション202の更新バージョンがあるか否かをシステムインタプリンタ212Bにチェックさせる316。ここでも、アプリケーションサーバ102に更新がない場合、システムインタプリンタ212Bは、更新プロセス320をとばして、要求されたアプリケーション202を修正せずにブートアプリケーションを閉じる322。更新がある場合、システムインタプリンタ212Bは、更新を受信して318、適用する320。要求されたアプリケーション202への更新は、新しいまたは異なった高水準コードに加えて、映画、オーディオクリップ、画像、またはプレーンテキストなどの追加のデータオブジェクトを含んでもよい。要求されたアプリケーション202を更新するとき、システムインタプリンタ212Bは、ユーザの個人情報例えば、ユーザの地理的位置、人口学的情報、装置構成などに合わせてカスタマイズされた更新を受信してもよい318。アプリケーションサーバ102は、更新要求316時に、クライアント装置100の様々なセンサ112例えば、GPS受信装置からユーザの個人情報を取得してもよい。あるいは、ユーザは、アプリケーションサーバ102に、事前に例えば、アプリケーションサーバのソーシャルネットワーキング機能を使用する時、自発的に情報を提供したかもしれない。更新適用後、システムインタプリタ212Bは、ブートアプリケーション200を閉じて322、第2のリターン文を用いて、ネイティブAPI206に返信する。最後に、ネイティブAPI206は、要求されたアプリケーションをロードして実行する328ように権限の低いアプリケーションインタプリタ212Aに指示する第3のコマンドを発する326。この構成は、幾つかの理由で有利である。アプリケーション202開始の前にブートアプリケーション200および要求されたアプリケーション202を自動的に更新することによって、ユーザに手動での更新を要求しなくても、ブートアプリケーション200および要求されたアプリケーション202は両方とも、最新の状態である。さらに、ユーザの個人情報に基づいてアプリケーションの更新をカスタマイズすることができるので、アプリケーション開発者は、より豊かでパーソナライズされたユーザ体験を提供することができる。[文字列としてのコマンドを符号化]図4は、一実施形態に係る、高水準言語のコマンド400から符号化された文字列410へのマッピングの例を示す。インタプリタ212は、高水準コマンド400を文字列410に符号化し、その文字列をネイティブAPI206に送信する。ネイティブAPI206で、文字列410は復号されて、ネイティブコマンドとして実行される。この符号化メソッドによって定義される通信プロトコルによって、高水準言語は典型的にはネイティブコード用であるコマンドを実行することができる。高水準言語のコマンド400は、例えば、クラス402、メソッド404、および4つの入力パラメータ406を含んでよい。符号化された文字列410は、例えば、クラス402に対応する数字のクラス識別子412、メソッド404に対応する数字のメソッド識別子414、入力パラメータ406の値416を含んでよい。インタプリタ212およびネイティブAPI206は、ネイティブAPI206が文字列410を復号したときに、パラメータ406の値を表す文字列410の数字416が、正しいパラメータにマッピングされるように、各メソッドの入力パラメータ406の順番を前もって決定する。代替の実施形態においては、コマンド400および符号化された文字列410は、より多くの、より少ない、または異なる構成要素を含んでよい。例えば、コマンド400は、追加のパラメータ406を含んでよく、そうすると、符号化された文字列は追加のパラメータ値416を含むことになる。高水準コマンドのクラス、メソッド、パラメータを表す数字に加えて、符号化された文字列410は、二種類の制御文字を含む。第1の種類の制御文字コロン418は、コマンドの始まりを表し、第2の種類の制御文字コンマ420は、文字列410の異なるエントリを分ける。図4に示すように文字列410には読みやすいようにスペースを設けてあるが、スペースには機能はなく、設けなくてもよい。符号化された文字列410は、クラス内のオブジェクトの特定のインスタンスを参照するインスタンス識別子422も含む。高水準API204は、オブジェクトを高水準オブジェクトレジストリ208に登録するとき、インスタンス識別子422をオブジェクトのインスタンスに割り当て、インタプリタ212は、コマンド400を符号化する時、インスタンス識別子422を高水準オブジェクトレジストリ208から読み出す。図4に示す実施形態においては、インスタンス識別子422は、数字のメソッド識別子414とパラメータ416の値の間に置かれる。クラス402およびメソッド404と、それぞれの数字の識別子412、414との間のマッピングは、符号化された文字列410を用いて元のコマンド400をネイティブコマンドとして再現できるように構成される。一実施形態においては、テキスト識別子402、404から数字の識別子412、414へのマッピングは、予め決められているが、インタプリタ212とネイティブAPI206との間のマッピングは、無作為に生成したり、再生してもよい。さらに、メソッド404と数字のメソッド識別子414との間のマッピングは、一対一マッピングでなくてもよい。類似の機能を有するメソッド404を、同じ数字のメソッド識別子414にマッピングしてもよい。例えば、画面上でスプライトを回転、翻訳、および拡大/縮小するメソッド404を、ネイティブAPI206の一般的なメソッドに対応する数字のメソッド識別子414にマッピングして、画面上のスプライトを変えてよい。代替の一実施形態においては、クラス402およびメソッド404を、2つの別個の数字の識別子412、414の代わりに、1つの数字の複合識別子にマッピングしてよい。ここでも、マッピングは、一対一のマッピングである必要はない。ネイティブAPI206がネイティブコマンドとして高水準コマンド400を再生できるのであれば、マッピングプロセスに任意の他の変更を行ってよい。図5は、一実施形態に係る、高水準言語で書かれたコマンドをネイティブコマンドに翻訳し、ネイティブコマンドを実行するプロセスを示すフローチャートである。インタプリタ212が高水準API204から高水準コマンドの待ち行列を受信する500と、プロセスは開始される。待ち行列内の高水準コマンドをアセンブルするプロセスを、図6を参照して詳細に記載する。インタプリタ212は、図4を参照して記載したプロセスに従って、高水準コマンドを文字列として符号化する505。インタプリタ212は、コマンドが待ち行列の順番と同じ順番で実行されるように、待ち行列内の対応する高水準コマンドと同じ順番に符号化された文字列を配置する。高水準コマンドの待ち行列を受信し500、そのコマンドを文字列として符号化した505後、インタプリタ212は、符号化されたコマンドをネイティブAPI206に送信する510。ネイティブAPI206は、符号化プロセス505で行われたマッピングプロセスを逆にして、文字列をネイティブコマンドに復号する515。最後に、ネイティブAPI206は、ネイティブAPI206およびネイティブオブジェクトレジストリ210のマッチするクラスおよびオブジェクトを利用して、復号したネイティブコマンドを実行する520。[高水準スクリプト言語とネイティブコードとの間の相互作用]図6、7を参照すると、高水準アプリケーションが図4の通信プロトコルを用いてどのようにクライアント装置100上およびアプリケーションクライアントモジュール116内のリソースと相互作用するかの2つの例が示されている。図6は、一実施形態に係る、1つの処理フレーム内の一連のコマンドを処理するプロセスを示す相互作用図である。高水準では、アプリケーション202は、一定の時間間隔に1つまたは複数のコマンドを発し、高水準API204は、そのコマンドを待ち行列に追加する。この一定の時間間隔を処理フレームと呼ぶ。処理フレームの終わりに、待ち行列のコマンドは、図4を参照して記載した通信プロトコルを用いて符号化され、ネイティブAPI206に転送され、ネイティブコマンドとして復号される。待ち行列機構は、アプリケーション202が対応する高水準コマンドを発したのと同じ順番でネイティブコマンドを実行できるように、符号化プロセスおよび復号プロセスを通して元の高水準コマンドの順番を維持する。ネイティブAPI206が次の処理フレームのコマンドを要求すると600、プロセスが開始される。要求は文字列として符号化され、インタプリタ212に送信され、インタプリタ212は、その要求を復号して高水準API204に送る602。高水準API204は、アプリケーション202の高水準コードを分析し、符号化する第1のコマンドを読み出す604。読み出されたコマンドは、画面上のスプライトの表示または修正、オーディオクリップの再生、メモリ108のファイルの読み書き、物理センサ112からの入力の監視など、典型的にはネイティブコード用である任意の機能を実行してよい。第1のコマンドを読み出した604後、高水準のAPIは、第1のコマンドを待ち行列に加える606。第1のコマンドを読み出し604、待ち行列に加えた606後、高水準API204は、同じプロセスを行って、追加のコマンドを読み出し608、待ち行列に加える610。読み出しプロセスおよび待ち行列プロセスは、合わせて2つのコマンドで示されているが、高水準API204は、処理フレームの間、追加の高水準コマンドを待ち行列に加え続けてよい。処理フレームの最後に、高水準API204は、高水準コマンドの待ち行列をインタプリタ212に送信し612、インタプリタ212は、図4を参照して記載した通信プロトコルに従って、待ち行列の各コマンドを文字列として符号化する614。インタプリタ212は、符号化された文字列の待ち行列をネイティブAPI206に送信し616、ネイティブAPI206は、文字列をネイティブコマンドに復号し618、ネイティブコマンドを実行する620、622。コマンドは、元の高水準コマンドの順番を保持したまま、待ち行列に加えられ606、610、符号化され614、転送され616、復号される618ので、ネイティブコマンドは、高水準コマンドが待ち行列に加えられたのと同じ順番で実行される620、622。不正確な順番でコマンドを実行すると不正確な結果を生むことがあるので、コマンドの順番を保持することは重要である。例えば、画像を画面に配置し、翻訳し、原点を中心に回転させるための一連のコマンドは、翻訳と回転の順番が逆になると、違った結果になる。高水準コードとネイティブコードとの間の処理境界を超える処理例えば、コマンドの符号化614、送信616、復号618のプロセスが比較的、リソース集約的なので、待ち行列機構によって、処理オーバーヘッドを減らし、アプリケーション202の性能を向上させる。クライアント装置100が処理能力と電池寿命に制約のある携帯機器である場合、これは特に重要である。1つの処理フレーム全体のコマンドを一度に処理することによって、アプリケーションクライアントモジュールは、1コマンドごとに1回ではなく、1処理フレームごとに1回、処理境界を超える。図7は、一実施形態に係る、アプリケーションクライアントモジュール116が維持している2つの異なるオブジェクトレジストリ208、210に新しいオブジェクトを登録するプロセスを示す相互作用図である。オブジェクトを登録するプロセスは、図6を参照して記載したプロセスと同じ方法で始まる。最初に、ネイティブAPI206は、次の処理フレームのコマンドを要求する700。ネイティブAPI206は、その要求を文字列として符号化して、インタプリタ212に送信し、インタプリタ212は、その要求を復号して高水準API204に送る702。高水準API204は、アプリケーション202の高水準コードを分析し、符号化する次のコマンドを読み出す704。高水準API204は、新しいオブジェクトを登録するコマンドを読み出す704と、コマンドを待ち行列に追加する708前に、オブジェクトを高水準オブジェクトレジストリ208に登録する706。一実施形態においては、高水準API204は、新しいオブジェクトを高水準レジストリ208に登録する706時に、インスタンス識別子をオブジェクトに割り当てる。登録コマンドは、登録するオブジェクトの種類を識別するクラス識別子も含んでよい。クラス識別子およびインスタンス識別子は一緒に、高水準API204がオブジェクトを一意に識別するのを可能にし、どちらの識別子もオブジェクトレジストリに保存される。代替の実施形態においては、クラス識別子およびインスタンス識別子をまとめて、一意にオブジェクトを識別するのに用いられる1つの複合識別子としてよい。処理フレームの最後に、高水準API204は、待ち行列に加えられたコマンドをインタプリタ212に送信し710、待ち行列内のコマンドは、図5、図6を参照して記載したプロセスを用いて、符号化されて712、送信され714、復号される716。図4に示すように、インスタンス識別子およびクラス識別子は、符号化され、文字列の一部として送信される。図7では1つの登録コマンドのみが示されているが、高水準API204は、処理フレーム中に、図示されているオブジェクト登録コマンドを読み出し704待ち行列に加える708前か後のどちらかに、追加のコマンドを読み出して追加してよい。その処理フレームのコマンドがネイティブコマンドに復号716された後、ネイティブAPI206は、オブジェクト登録コマンドを実行して、オブジェクトをネイティブオブジェクトレジストリ210に登録する718。同じ数字のインスタンス識別子を用いて、オブジェクトをネイティブオブジェクトレジストリ210に登録する718。このプロセスによって、アプリケーションクライアントモジュール116は、オブジェクトの1つまたは複数を照会するコマンドがネイティブコードによって実行されるように、オブジェクトレジストリの2つのミラー化されたコピー208、210を維持することができる。開示の構成によって、クライアント装置100上でネイティブに実行するアプリケーションとはユーザには区別できない高水準ソフトウェアアプリケーション202を開発者が書くことができるようになり、有益である。アプリケーションクライアントモジュール116に実装される簡易装置API214と通信プロトコルとの組み合わせによって、グラフィック機能、ユーザインタフェース機能、ネットワーク装置110、および物理センサ112などの典型的にはネイティブアプリケーションのために用意されているシステムリソースに、高水準アプリケーション202がアクセスすることが可能になる。結果として、開発者は、ネイティブアプリケーションと同じ機能を実行する高水準アプリケーション202を書くことができる。さらに、開示の構成によって、クライアント装置100のオペレーティングシステムがネイティブアプリケーションの更新に課す制限を受けることなく、高水準アプリケーション202を更新することができる。これによって、アプリケーションクライアントモジュール116は、ユーザの地理的位置、人口学的情報、クライアント装置の構成、または他の個人情報に合わせた更新を自動的に適用することができ、それにより、高水準アプリケーション202の価値を高める、よりカスタマイズされたユーザ体験が得られる。[構成に関するその他の留意事項]本明細書を通して、1つのインスタンスとして記載されている構成要素、動作、構造を複数のインスタンスで実装してよい。1つまたは複数のメソッドの個々の動作を別個の動作として示し、記載しているが例えば、図5、個々の動作の1つまたは複数を同時に実行してもよく、図に示した順番で動作を行う必要はない。例示の構成で別々の構成要素として示されている構造および機能を、組み合わせた構造または構成要素として実装してもよい。同様に、1つの構成要素として示された構造および機能を、別個の構成要素として実装してよい。これら、および他の変形形態、修正形態、追加、改良は、本明細書の発明の内容の範囲に含まれる。論理もしくは多くの構成要素、モジュール、または機構を含む一部の実施形態を本明細書に記載している例えば、図1、図2、図3、図6、および図7。モジュールは、ソフトウェアモジュール例えば、機械可読媒体で実現されるコードまたは送信信号であってもハードウェアモジュールであってもよい。ハードウェアモジュールは、一定の動作を行うことができる有形の装置で、一定の方法で構成または配置してよい。例示の実施形態においては、1つもしくは複数のコンピュータシステム例えば、スタンドアローンコンピュータシステム、クライアントコンピュータシステム、またはサーバコンピュータシステム、またはコンピュータシステムの1つもしくは複数のハードウェアモジュール例えば、プロセッサ、またはプロセッサ群を、本明細書で記載した一定の動作を行うために動作するハードウェアモジュールとして、ソフトウェア例えば、アプリケーション、またはアプリケーションの一部によって構成してよい。様々な実施形態においては、ハードウェアモジュールは、機械的に実装されても電気的に実装されてもよい。例えば、ハードウェアモジュールは、例えば、FPGAfieldprogrammablegatearrayまたはASICapplication-specificintegratedcircuitなどの専用プロセッサとして、一定の動作を行うように永続的に構成された専用回路または論理を含んでよい。ハードウェアモジュールは、一定の動作を行うようにソフトウェアによって一時的に構成された例えば、汎用プロセッサまたは他のプログラム可能なプロセッサ内に含まれるようなプログラム可能な論理または回路も含んでよい。専用の永続的に構成された回路で機械的にハードウェアモジュールを実装するか、例えばソフトウェアによって構成された一時的に構成された回路でハードウェアモジュールを実装するかの決定を、費用と時間を考慮して行ってよいのは、当然である。本明細書に記載の例示のメソッドの様々な動作は、一時的に構成された1つまたは複数のプロセッサ例えば、ソフトウェアまたは、関連する動作を行うように永続的に構成された1つまたは複数のプロセッサによって、少なくとも部分的に実行されてよい。このようなプロセッサは、一時的なものであれ永続的なものであれ、1つまたは複数の動作または機能を実行するように動作する、プロセッサ実行モジュールを構成してよい。本明細書で言及されるモジュールは、一部の例示の実施形態においては、プロセッサ実行モジュールを含んでよい。1つまたは複数のプロセッサは、クラウドコンピューティング環境で、またはSaaSsoftwareasaserviceとして、関連する動作の実行をサポートするように動作してもよい。例えば、ネットワーク例えば、インターネット、または、1つまたは複数の適切なインタフェース例えば、APIapplicationprograminterfaceを介してアクセス可能な動作の少なくとも一部を、プロセッサを含む機械の例のような一群のコンピュータで実行してもよい。動作の一部は、1つの機械に存在しているだけではなく多くの機械に配置されている1つまたは複数のプロセッサ間で分散して実行されてよい。一部の例示の実施形態においては、1つまたは複数のプロセッサまたはプロセッサ実行モジュールは、1つの地理的位置例えば、住居、オフィス、またはサーバファーム内に配置されてよい。他の例示の実施形態においては、1つまたは複数のプロセッサまたはプロセッサ実行モジュールは、多くの地理的位置に分散されてよい。本明細書の一部では、機械メモリ例えば、コンピュータメモリ内にビットまたは2値デジタル信号として記憶されたデータに関して、アルゴリズムまたは動作の記号表示で表している。これらのアルゴリズムまたは記号表示は、データ処理技術の当業者が自分の作品の内容を別の当業者に伝えるために用いる技術の例である。本明細書で用いられているアルゴリズムは、所望の結果を得るための自己矛盾のない動作シーケンスまたは同様の処理である。この文脈においては、アルゴリズムおよび動作は、物理量の物理的操作を伴う。典型的には、このような量は、記憶、アクセス、転送、結合、比較、または機械によって操作できる、電気信号、磁気信号、または光信号の形を取るが、必ずしもそうでなくてもよい。主に通常の使用においては、時には、データコンテンツビット値要素記号文字用語数数字などの言葉を用いて、そのような信号を指すのが便利である。しかしながら、これらの言葉は、単に便利なラベルであって、適切な物理量に関連づけられるべきである。特段の記載がない限り、処理コンピューティング計算する判断する示す表示するなどの言葉を用いた本明細書の記載は、情報を受信、記憶、送信、または表示する1つまたは複数のメモリ例えば、揮発性メモリ、不揮発性メモリ、またはその組み合わせ、レジスタ、または他の機械構成要素内に物理的な例えば、電子の、磁気の、光学的な量として表されたデータを操作または変換する機械例えば、コンピュータのアクションまたはプロセスを指す。本明細書で一実施形態または実施形態と言及する場合には、その実施形態に関連して記載した具体的な要素、機能、構造または特徴が、少なくとも1つの実施形態に含まれることを意味する。明細書の様々な箇所に出現する一実施形態においてという句は、必ずしも全て同じ実施形態を指すわけではない。一部の実施形態は、その実施形態から派生するものと共に、結合された接続されたという表現を用いて記載することができる。例えば、一部の実施形態は、複数の要素が直接的に物理的または電気的接触をしていることを示す結合したという語を用いて記載してよい。しかしながら、結合したという語は、複数の要素が互いに直接、接触していないが、互いに協働し、相互作用していることを意味してもよい。実施形態は、この文脈では制限を受けない。本明細書で用いられる備える備えている含む含んでいる有する有しているまたはその変形の用語は、非排他的に含むことを意図している。例えば、要素の一覧を含むプロセス、メソッド、物、または装置は、必ずしもこれらの要素に限られず、このようなプロセス、メソッド、物または装置に明示的にリストされていない、または固有でない他の要素を含んでよい。さらに、そうではないと記載されていない限り、またはは、排他的ではなく、包含的であることを指す。例えば、条件AまたはBは、以下すなわち、Aは真または存在しかつBは偽または存在しない、Aは偽または存在しないかつBは真または存在する、AもBも真または存在するの内の任意の1つによって満足される。さらに、本明細書の実施形態においては、要素および構成要素の記載にaanを使用している。この使用は、便利であるのと、発明を一般的に述べるためであって、この記載は、1つまたは少なくとも1つを含むと解釈するべきで、単数形は、別段の断りのない限り、複数形も含む。本開示を読むと、当業者は、本明細書に開示の原理を用いた高水準コードとネイティブコードとの間の通信のためのシステムおよびプロセスに関して、さらに追加の別の構造設計および機能設計が分かるであろう。従って、具体的な実施形態およびアプリケーションを図示し、記載したが、開示の実施形態は、本明細書に開示した通りの構成および構成要素に限られないことは理解されたい。本明細書に開示のメソッドおよび装置の配置、動作、および詳細において、様々な修正、変更、変形形態が、添付請求項に定義された精神および範囲から逸脱することなく可能なことは、当業者には明らかであろう。