JP2014522063A - ランタイムシステム - Google Patents

ランタイムシステム Download PDF

Info

Publication number
JP2014522063A
JP2014522063A JP2014524995A JP2014524995A JP2014522063A JP 2014522063 A JP2014522063 A JP 2014522063A JP 2014524995 A JP2014524995 A JP 2014524995A JP 2014524995 A JP2014524995 A JP 2014524995A JP 2014522063 A JP2014522063 A JP 2014522063A
Authority
JP
Japan
Prior art keywords
operating system
interface
abstract
interfaces
information
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.)
Granted
Application number
JP2014524995A
Other languages
English (en)
Other versions
JP5933002B2 (ja
JP2014522063A5 (ja
Inventor
イー レクター,ブレント
エイチ オミヤ,エリオット
ジェイ デュニーツ,ジェリー
エス ロヴェル,マーティン
ホレチェク,アレス
プラクリヤ,マヘッシ
シー ロー,スティーヴン
エフ スプリングフィールド,ジェームズ
アール クロス,ノエル
エイチ バス,タッサデュク
エイチ デュスッド,パトリック
クリシュナスワミー,ラジャ
エドワード ルッコ,スティーブン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2014522063A publication Critical patent/JP2014522063A/ja
Publication of JP2014522063A5 publication Critical patent/JP2014522063A5/ja
Application granted granted Critical
Publication of JP5933002B2 publication Critical patent/JP5933002B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/541Interprogram communication via adapters, e.g. between incompatible applications
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

種々の実施例が、プログラミング言語とは独立して、オペレーティングシステムに関する一つまたはそれ以上のインターフェイスを記述する能力を提供する。代替的又は追加的に、所定のプログラミング言語に関するコンパイラーは、独立したインターフェイス記述を所定のプログラミング言語にマップするように構成されてよい。いくつかの実施例において、アプリケーションは、オペレーティングシステムの一つまたはそれ以上のインターフェイスをプログラムで決定するように構成されてよい。

Description

本発明は、ランタイムシステムに関する。
今日のコンピューターは、しばしば、ハードウェア及びソフトウェアリソースへのアクセスを管理するためのオペレーティングシステム含んでいる。同様に、オペレーティングシステムは、アプリケーションプログラミングインターフェイス(AIP)といった、種々のタイプのインターフェイスを含んでおり、プログラマー及び/又はアプリケーションが、こうしたリソースにアクセスすることができる。いくつかの場合において、インターフェイスは、念頭にある所定のプログラミング言語を用いてプログラムされる。クライアントアプリケーションが所定のプログラミング言語で書かれている場合、クライアントアプリケーションは、その所定のプログラミング言語にネイティブ(native)なやり方でインターフェイスにアクセスすることができる。しかしながら、クライアントアプリケーションが、インターフェイスとは異なる言語で書かれている場合は、そのインターフェイスを招き入れるために、ときどき、追加的なコード及び/又はラッパー関数(wrapper function)を利用することになってしまう。
典型的に、インターフェイスは、オペレーティングシステムに対して外部で記述される。インターフェイスを成功裡にコール(call)するためには、ラッパー関数を書くことと同様に、プログラマーは、何のインターフェイスが利用可能であるか、関連するコールパラメーターは何であるか、等を判断するために、外部の文書を調査する。オペレーティングシステムの新しいバージョンは、新たなインターフェイス、古いインターフェイスに対する変更を、廃止したインターフェイスの除去と同様に、含むことができる。従って、現行のAPIセットを維持するために、プログラマーは、オペレーティングシステムの新たなバージョンそれぞれについて、外部の文書を調査する必要がある。
このことは、ときどき、インターフェイスがオペレーティングシステムの中にリリースされる時間と、そのインターフェイスがプログラムの中に包含される時間との間の遅延を結果として生じている。
本概要は、以降の詳細な説明でより詳しく記述される本発明の概念について、簡素化された形式において代表的な概念の選択を紹介するものである。本概要は、特許請求された技術的事項の主要な特徴または本質的な特徴を特定することを意図するものではない。また、特許請求された技術的事項の範囲を限定するために使用されることを意図するものではない。
種々の実施例は、プログラミング言語とは独立して、オペレーティングシステムに関する一つまたはそれ以上のインターフェイスを記述する能力を提供する。代替的又は追加的に、所定のプログラミング言語に関するコンパイラーは、独立したインターフェイス記述を所定のプログラミング言語にマップするように構成されてよい。いくつかの実施例において、アプリケーションは、オペレーティングシステムの一つまたはそれ以上のインターフェイスをプログラムで決定するように構成されてよい。
いくつかの実施例は、オブジェクト志向(object−oriented)のやり方で、抽象型(abstract type)システムを利用してオペレーティングシステムの一つまたはそれ以上のインターフェイスをモデル化する能力を提供する。いくつかの実施例において、拡張インターフェイス定義言語(IDL:Interface Definition Language)は、一つまたはそれ以上のインターフェイス間の関係を記述する文法を含んでよい。いくつかの実施例においては、抽象型システムに関する振る舞いを表すように、バイナリーコントラクト(contract)が構成され得る。
類似の機能を参照するために、全ての図面にわたって同一の番号が使用されている。
図1は、本発明の一つまたはそれ以上の実施例に従って、ここにおいて説明された種々の原理が使用され得る、オペレーティング環境を示している。 図2は、本発明の一つまたはそれ以上の実施例に従ったアーキテクチャーを示している。 図3は、本発明の一つまたはそれ以上の実施例に従った方法におけるステップを説明するフローチャートである。 図4は、本発明の一つまたはそれ以上の実施例に従った関係の模式図を示している。 図5は、本発明の一つまたはそれ以上の実施例を実行するために利用され得るシステム例を示している。
概要
種々の実施例は、プログラミング言語とは独立して、オペレーティングシステムに関する一つまたはそれ以上のインターフェイスを記述する能力を提供する。抽象型システムは、インターフェイス定義言語(IDL)と組み合わされて、インターフェイスを記述、及び/又は、定義するように構成されてよい。いくつかの実施例において、インターフェイスは、オブジェクト志向なやり方で記述され得る。代替的又は追加的に、プログラミングアプリケーションのランタイム環境は、言語とは独立したインターフェイス記述を、所定のランタイム環境における好適なコンストラクト(construct)に対して動的に(例えば、ランタイム実行の最中に)マップするように構成されてよい。いくつかの実施例において、アプリケーションは、独立したインターフェイスの記述ををプログラムで決定するように構成されてよい。いくつかの場合において、独立したインターフェイスの記述は、マシンで読取り可能なフォーマットで保管され得る。
後に続く説明において、「オペレーティング環境」というタイトルのセクションが備えられ、一つまたはそれ以上の実施例が使用され得る一つの環境を説明している。これに続いて、「オペレーティングシステムのコンポーネントアクセス」というタイトルのセクションは、複数のプログラミング言語がシステムコンポーネントに対してプログラムでアクセスできるアーキテクチャーを説明している。次に、「抽象型システムを用いたオブジェクト志向言語のモデリング」というタイトルのセクションでは、拡張IDLと併せて、オブジェクト志向なやり方でオペレーティングシステムインターフェイスを記述するために抽象型タイプシステムがどのように使用されるかを説明する。最後に、「システム例」というタイトルのセクションでは、一つまたはそれ以上の実施例を実行するために使用され得るシステム例を説明する。
以降に説明される種々の実施例についての概要を提供してきたので、一つまたはそれ以上の実施例が実行され得るオペレーティング環境の例についてこれから検討する。
オペレーティング環境
図1は、本発明の一つまたはそれ以上の実施例に従ったオペレーティング環境を示しており、全般的に参照番号100である。環境100は、一つまたはそれ以上のプロセッサ104を有するコンピューターデバイス102、および、一つまたはそれ以上のコンピューターで読取り可能なストレージ媒体106を含んでいる。コンピューターで読取り可能なストレージ媒体は、例示であって限定するものではないが、コンピューターデバイスと典型的に関連する揮発性及び不揮発性メモリー及び/又はストレージ媒体に係る全ての形式を含んでいる。そうした媒体は、ROM、RAM、フラッシュメモリー、ハードディスク、リムーバブル媒体、等を含んでよい。コンピューターデバイスの一つの所定の実施例が、以降の図5において示され、説明される。
加えて、コンピューターデバイス102は、オペレーティングシステム(OS)108、および、関連するオペレーティングシステムインターフェイス110を含んでいる。これらは別個のモジュールとして示されているが、オペレーティングシステム108とオペレーティングシステムインターフェイス110は、本発明で請求される技術的事項の範囲を逸脱することなく、別個のモジュール、結合したモジュール、または、あらゆる組み合わせとして実施し得ることが正しく理解されるべきである。オペレーティングシステム108は、コンピューターデバイス102のソフトウェア及び/又はハードウェアリソースを管理するように構成された機能性を表している。オペレーティングシステムインターフェイス110は、オペレーティングシステム108によって提供されるサービス及び/又は機能性に対してプログラムでアクセスすることを表している。メモリー管理、ファイル管理、サービス、機能、リソース管理、周辺機器管理、等といったものである。
コンピューターデバイス102は、また、記述的言語ファイル112を含んでおり、一つまたはそれ以上のインターフェイスを記述するように構成されている一つまたはそれ以上のファイルを表している。いくつかの実施例において、インターフェイスは、オペレーティングシステムインターフェイス110といった、オペレーティングシステムに関連付けられ得る。記述的言語ファイルは、あらゆる好適な記述、マークアップ言語、及び/又は、文法を使用してインターフェイスを記述することができる。インターフェイス定義言語(IDL)、拡張マークアップ言語(XML)、等を用いるものである。
加えて、コンピューターデバイス102は、また、一つまたはそれ以上のエディター/コンパイラーモジュール114を含んでいる。いくつかの実施例において、エディター/コンパイラーモジュール114は、記述的言語ファイル112を読み出し、及び/又は、解釈して、ファイル112に基づいて、一つまたはそれ以上のバイナリーメタデータファイル116といった、出力を生成する機能性を表している。バイナリーメタデータファイル116は、オペレーティングシステムインターフェイス110及び/又はオペレーティングシステム108に関する情報を含んでいる一つまたはそれ以上のマシンで読取り可能なファイルを表している。情報は、入力パラメータータイプ、パラメーターコールオーダー、インターフェイス間の関係、等である。
代替的又は追加的に、エディター/コンパイラーモジュール114は、一つまたはそれ以上のソースコード118を読み出し、及び/又は、解読する機能性を表している。ソースコードファイル118は、少なくとも一つのプログラミング言語に関するプログラミングステートメントを含む一つまたはそれ以上のファイルに対応している。エディター/コンパイラーモジュール114は、ソースコード118を解釈して、そのソースコードに基づいてマシンで実行可能なコードを生成する。
コンピューターデバイス102は、あらゆる好適なコンピューターデバイスとして実施され得る。例示であって限定するものではないが、デスクトップコンピューター、ポータブルコンピューター、ノートブックコンピューター、パーソナルデジタルアシスタント(PDA)といったハンドヘルドコンピューター、携帯電話、等といったものである。
オペレーティング環境の実施例について説明してきたので、一つまたはそれ以上のプログラミング言語に対して、オペレーティングシステムコンポーネントをプログラムで公開することについてこれから検討する。
オペレーティングシステムのコンポーネントアクセス
コンピューターデバイス上で実行されているアプリケーションは、しばしば、そのコンピューターデバイス上で稼働しているオペレーティングシステムに備えられた機能を利用している。オペレーティングシステムは、コンピューターデバイス上で関連のリソースに対する簡素なアクセスを可能にし、同様に、サービスを提供する。ときどき、これらの機能、サービス、及び/又は、リソースは、プログラムでアクセスされ得る。しかしながら、オペレーティングシステムが、こうした機能性を、アプリケーションが書かれたプログラミング言語とは異なるプログラミング言語フォーマットにおいて、公開する場合に、プログラマーは、典型的に、異なるプログラミング言語間での転換を援助するラッパー関数を書くであろう。例えば、フラットで、エクスポートされた、「C」関数として、書かれ、及び/又は、公開されたインターフェイスを検討する。「C」スタイル関数の使用を望んでいるC#またはビジュアルベーシックのプログラマーは、それらのプログラミング言語が成功裡に「C」スタイル関数をコールできるようにするために、特別なステートメント及び/又は追加コードを含んでよい。結果として、公開されたインターフェイスとは異なるプログラミング言語で書かれたアプリケーションは、追加的なステートメント及び/又はラッパー関数が書かれるまでは、インターフェイスに対してアクセスできない。
種々の実施例は、プログラミング言語とは独立して、オペレーティングシステムに関する一つまたはそれ以上のインターフェイスを記述する能力を備えている。プログラム言語とは独立したインターフェイスを記述することで、複数のプログラミング言語がインターフェイスに対して容易にアクセスすることができる。プログラミング言語がインターフェイスに係る言語とは独立した記述をどのように解釈するか学習した場合、この知識は、言語とは独立した記述を使用する既存及び将来のインターフェイスについて適用することができる。いくつかの実施例において、インターフェイスは、抽象型システムを使用して記述することができる。同様に、所定のプログラミング言語、または、関連のプログラミング言語コンパイラーは、インターフェイスを解釈及び/又はアクセスするために、抽象型システムを関連するタイプのシステムに対してマップし得る。
図2は、アーキテクチャー200を示しているが、一つまたはそれ以上の実施例と関連して検討する。アーキテクチャー200は、コンピューターデバイス上で実行されるように構成されたオペレーティングシステム202を含んでいる。簡素化の目的のために、オペレーティングシステム202は、その全体が示されていないことを理解すべきである。オペレーティングシステム202は、コンピューターデバイスと関連するリソースを管理するように構成された一つまたはそれ以上のオペレーティングシステムコンポーネント204を含んでいる。いくつかの実施例においてオペレーティングシステムコンポーネント204は、リソースに対するプログラムのアクセスを提供することができる。リソース管理に関する一つまたはそれ以上のサービス及び/又は機能も同様に提供し得る。オペレーティングシステムコンポーネント204は、また、オペレーティングシステム202に関するベーシックエレメントを、そのベーシックエレメントから作成された複雑なエレメントと同様に、含むことができる。
いくつかの実施例において、オペレーティングシステムコンポーネント204は、APIといった、一つまたはそれ以上のインターフェイスを介して公開され得る。この実施例において、オペレーティングシステム202は、新たなAPIファミリー206、COMベースのAPIファミリー208、および、フラットエクスポートベースのAPIファミリー210を含んでいる。新たなAPIファミリー206は、以下に詳しく説明されるように、機能性(つまり、クラス、インターフェイス、メソッド、プロパティ、イベント、等)が、抽象型システムを使用して直接的に記述されている、一つまたはそれ以上の関連するAPIを表している。COMベースのAPIファミリー208は、コンポーネントオブジェクトモデル(COM)タイプシステムを使用して機能性が記述されている一つまたはそれ以上のAPIを表している。フラットエクスポートベースのAPIファミリー210は、メソッド署名(つまり、メソッド名、コールコンベンション、メソッドアーギュメント(argument)の数とタイプ、を含むメソッド署名)を使用して機能性が記述されている一つまたはそれ以上のAPIを表している。フラットエクスポートベースのAPIは、さらに、名前によってだけ識別されるAPIを表しており、クラスの中に、及び/又は、オブジェクト志向のやり方では、配置されない。どのAPIが利用可能であるか判断したいプログラマーは、手動、及び/又は、プログラムでそれぞれのAPIの記述にアクセスすることができる。例えば、新たなAPIファミリー206に対してどんなインターフェイスが存在するか、そして、それらをどのようにコールするかを判断するために、プログラマーは、関連のメタデータ212にアクセスすることができる。COMベースのAPIファミリー208とフラットエクスポートベースのAPIファミリー210は、それぞれに、メタデータ214と216において、関連する言語独立タイプのシステムの記述を有している。一方で、プログラマーは、最初に、言語独立タイプのシステム記述をCOMベース及び/又はフラットエクスポートベースのAPIに対してマップするためにラッパーコードを書く。
メタデータ212、214、および、216は、関連するインターフェイスの種々の態様を記述する情報を含むように構成されてよい。バージョン情報、どの方法が利用可能か、どのパラメーターをインターフェイスが獲得するか、パラメーターのデータタイプ、パラメーターをパスする順序、等といった情報である。いくつかの実施例において、メタデータは、インターフェイスに関連する階層的な情報を含んでよい。インターフェイス間の関係を記述している情報、及び/又は、オブジェクト志向のやり方でインターフェイスを記述している情報といったものである。メタデータは、クラス記述、クラスの関連する方法とパラメーター、等を含むように構成されてよい。いくつかの実施例において、一つまたはそれ以上のIDLファイルは、こうした記述のいくつかを含むように拡張され、一つまたはそれ以上のメタデータファイルの生成において使用され得る。いくつかの場合において、メタデータは、以降に詳しく説明されるように、少なくとも部分的には、一つまたはそれ以上のIDLファイルに基づくものであり得る。
オペレーティングシステム202は、また、アプリケーションバイナリーインターフェイス(ABI)218を含んでいる。ABIは、マシンレベルで、ファンクション、メソッド、API、等をコールするためのバイナリーコントラクト(bainary contract)を記述する。バイナリーコントラクトは、ファンクションに関する識別子又は名前、ファンクションをコールするために使用される署名、パラメーターに関連するファンクション及び/又はデータタイプに対してパスされるパラメーターの順序、等を含んでいる。代替的又は追加的に、バイナリーコントラクトは、型システムの少なくとも一つのタイプに関連する振る舞いを公開するための定義及び/又は規則を含んでよい。典型的に、バイナリーコードに関連し、及び/又は、バイナリーコントラクトによって定義される振る舞いは、変化しない。例えば、バイナリーコントラクトの署名及び/又は識別子が一定のままである場合、コントラクトの関連する振る舞いも同様に一定のままである。
アプリケーションバイナリーインターフェイス218は、他のアプリケーションによって信頼して実施され得るバイナリーを通じて公開される機能性を表している。この実施例において、アプリケーションバイナリーインターフェイス218は、オペレーティングシステムコンポーネント204に関連するインターフェイス、ベースタイプ、および、ベースパターンを含んでいる。アプリケーション220といった、オペレーティングシステム202の外部の一つまたはそれ以上のアプリケーションは、一つまたはそれ以上のアプリケーションバイナリーインターフェイス218を介してオペレーティングシステム204にアクセスできる。
アプリケーション220は、HTML、JavaScript(登録商標)、Visual Basic、C#、C++、等といった、一つまたはそれ以上のプログラミング言語から生成される一つまたはそれ以上のアプリケーションを含んでいる。いくつかの実施例において、アプリケーション220は、オペレーティングシステムコンポーネントへの一つまたはそれ以上のコールを含んでいる。いくつかの場合では、アプリケーション220は、最初に、何のインターフェイスが利用可能であるかをプログラムで判断し、次に、一つまたはそれ以上の判断されたインターフェイスへのコールを行うように構成されてよい。いくつかの場合では、アプリケーション220は、アプリケーションバイナリーインターフェイス218を通じてインターフェイスにアクセスする。以下に詳しく説明されるように、一つまたはそれ以上の生成された言語プロジェクションモジュール222からの手助けを伴うものである。
一つまたはそれ以上の実施例において、生成された言語プロジェクションモジュール222は、抽象型システム定義を所定のプログラミング言語に対してマップする。あらゆる好適なプログラミング言語がマップされ得るが、実施例は上記に提供されている。いくつかの実施例において、生成された言語プロジェクションモジュールは、それぞれのプログラミング言語に対して唯一つであり得る。他の実施例において、生成された言語プロジェクションモジュールは、多目的のものであり、複数のプログラミング言語によって利用され得る。マッピングにより、抽象型システムを使用して記述される現在及び将来のインターフェイスは、追加のプログラミングステートメント(つまり、ラッパー関数)なしで、所定のプログラミング言語にアクセスすることができる。マッピングにより、さらに、所定のプログラミング言語は、その所定のプログラミング言語のネイティブなやり方でインターフェイスをコールすることができる。クラス、データタイプ、ファンクションポインター、ストラクチャー、等といった、あらゆる好適な情報のタイプはマップされ得る。
プログラマーがオペレーティングシステムコンポーネントへのアクセスを望む実施例について検討する。アプリケーション220といった、アプリケーションを書くときに、プログラマーは、少なくとも一つの所定のプログラミング言語に関するエディター/コンパイラーでソースコードを生成する。エディター/コンパイラーは、オペレーティングシステムに関連する何のインターフェイス及び/又はAPIが利用可能であるかに関する情報を取得するために、メタデータファイルにアクセスするように構成されてよい。例えば、いくつかの実施例において、プログラマーが、オペレーティングシステムコンポーネントの一部として実施されるクラスへのコールを含むコード行を書くと、エディター/コンパイラーは、そのクラスに関連するメタデータを問い合わせすることができ、何のメソッド、プロパティ、等がクラスに関連するかのリストをプログラマーに返す。リストは、あらゆる種類の情報を含むことができる。情報は、関連メソッド、及び/又は、クラスのプロパティ、等である。代替的又は追加的に、リストは、利用可能なクラスのリストを含んでいる。いくつかの実施例において、情報は、選択のためにユーザーに対するインターフェイスの適切なメソッド、プロパティ、等を視覚的に示すように構成されたオートコンプリーション(auto−completion)機能の一部として提供され得る。メソッド及び/又はプロパティの選択に際して、コンパイラー/エディターは、より効率的で正確なソースコードの生成のために、ソースコードの中に対応する文法を挿入することができる。
いくつかの実施例において、プログラマーは、オペレーティングシステムコンポーネントのクラスオブジェクトをインスタンス化するように構成されたソースコードを書いてよい。ランタイムにおいてコールされた場合、オペレーティングシステムは、コーリングコードに返すために、クラスのインスタンスを動的に作成する。しかしながら、コードリングコードに返されたインスタンスは、「抽象的なオブジェクト(”abstract objet”)」であるか、以降に詳しく説明されるように、オペレーティングシステムコンポーネントに関連する抽象型システムにおいて記述されるオブジェクトであり得る。抽象オブジェクトタイプとコーリングコードに関するプログラミング言語の具体的なデータタイプとの間をブリッジするために、コンパイラーは、抽象オブジェクトを関連のプログラミング言語における類似のタイプに変換及び/又はマップするように構成され得る。生成された言語プロジェクションモジュール22を通じてといったことである。いくつかの場合には、オペレーティングシステムコンポーネントの抽象オブジェクトと、プログラミング言語に関する具体的なオブジェクトとの間でコールをブリッジするためにプロキシー(proxy)が使用され得る。
オペレーティングシステムコンポーネントクラスの振る舞いをエミュレートするように構成されたプロキシーを検討する。いくつかの場合には、プロキシーは、クラスの関連するタイプ、メソッド、プロパティ、イベント、等のスタブ(stub)を含むように作成され得る。プロキシーは、コーリングコードに係るプログラミング言語で構成され、従って、コーリングコードに対してネイティブなやり方でコーリングコードがプロキシーにアクセスすることができる。スタブは、これらのコールをオペレーティングシステムに対して(かつ、オペレーティングシステムから)変換及び/又はマップするための好適な知識及び/又はコードを含み得る。例えば、いくつかの実施例において、プロキシーはアプリケーションバイナリーインターフェイス218と通信することができる。
いくつかの実施例において、プログラミング言語は、上述のように、抽象型をプログラミング言語にネイティブなタイプにマップするためのラッパー関数及び/又はプロキシーを差し挟むことができる。プログラミング言語のエディター/コンパイラーは、以下のように構成され得る。すなわち、メタデータファイル212、214、および、216といった、メタデータを読み出し、何の抽象型が使用されているか判断し、抽象型を関連するプログラミング言語における一つまたはそれ以上の類似のタイプにマップし、かつ、関連のラッパー関数及び/又はプロキシーをオペレーティングシステムコンポーネントに関連する抽象型に知らせる。それぞれのタイプに対するマッピングがプログラミング言語と抽象型システムとの間に一旦存在すれば、抽象型システムによって定義されるあらゆる現行又は将来のインターフェイスは、プログラマーからの追加的なコーディングを必要としないで、プログラミング言語によって自動的にアクセスすることができる。
実施例として図3を検討する。図3は、本発明の一つまたはそれ以上の実施例に従った方法におけるステップを説明するフローチャートである。本方法は、あらゆる好適なハードウェア、ソフトウェア、または、それらの組み合わせによって実行され得る。少なくともいくつかの実施例において、本発明の態様は、エディター/コンパイラー114といった、コンピューターデバイス102上で稼働しているソフトウェアによって実行される。
ステップ302では、利用可能なオペレーティングシステムインターフェイスに関する情報に対するリクエストを受け取る。例えば、リクエストは、何のインターフェイスが利用可能であるか、及び/又は、利用可能なインストラクションに関する他の情報を要求するように構成されてよい。このことは、あらゆる好適なやり方で達成されてよい。いくつかの実施例において、リクエストは、ソースコードによって自動的に生成され得るが、そのソースコードは開発されているものである。コードエディターは、オペレーティングシステムインターフェイス及び/又はコンポーネントに対するコールを特定することができ、かつ、特定の際に、オペレーティングシステムインターフェイスに関して利用可能なメソッド、プロパティ、等を求めるリクエストを送付することができる。いくつかの実施例において、リクエストは、ドロップダウンメニュー、ラジオボタン、等の選択を介して手動で生成され得る。リクエストは、全ての利用可能なオペレーティングシステムインターフェイス、いくつかの利用可能なオペレーティングシステムインターフェイス、個々のオペレーティングシステムインターフェイス、または、それらのあらゆる組み合わせに関する情報を要求するように構成されてよい。いくつかの実施例において、リクエストは、図2のアプリケーション220といった、稼働しているアプリケーションを介して生成され得る。
ステップ304では、一つまたはそれ以上のオペレーティングシステムインターフェイスに関する情報を取得する。例えば、いくつかの実施例において、オペレーティングシステムは、情報を求めて問い合わせされ得る。代替的又は追加的に、情報は、一つまたはそれ以上のメタデータファイルの中に含まれてよく、そのメタデータファイルのクエリ(query)及び/又は読み出しによって獲得され得る。上記及び下記に説明するように、メタデータファイルは、マシンで読取り可能なフォーマットであってよく、インターフェイスに伴うオブジェクト関係フォーメーションといった、階層的な情報を含んでいる。
ステップ306では、獲得した情報に応じて、一つまたはそれ以上のオペレーティングシステムインターフェイスに関する一つまたはそれ以上の抽象型を判断する。上述のように、いくつかの実施例において、オペレーティングシステムインターフェイスは、抽象型システムの使用を通じて、所定のプログラミング言語とは独立して記述され得る。一つまたはそれ以上のオペレーティングシステムインターフェイスに伴う一つまたはそれ以上の抽象型の判断に応じて、ステップ308では、一つまたはそれ以上の抽象型のそれぞれが、所定のプログラミング言語に関するタイプに対してマップされる。
OpenPickerランタイムクラス(runtime class)に対するABIを記述しているインターフェイス記述言語に係る実施例を検討する。OpenPickerランタイムクラスの中には、FileItemオブジェクトの集合をリターンするように構成されたPickMultipleItemsが含まれている。この所定の実施例においては、以下のように、FileItemクラスは、Name値を有するFileItemPropertiesをリターンするように構成されたGetPropertiesメソッドを含んでいる。
runtimeclass OpenPicker{
interface IOpenPicker;
}
interface IOpenPicker:IInspectable{
HRESULT PickMultipleItems([out,retval]IVentor<IFileItem*>*folder);
}
interface IFileItem:IInspectable{
HRESULT GetProperties([out,retval]FileItemProperties**retVal);
}
interface IFileItemProperties:IInspectable{
[propget]HRESULT Name([out,retval]HSTRING*value);
}
いくつかの実施例において、C#言語コンパイラーは、記述をC#言語構造体にマップすることができる。記述を言語特定の構造体に対してマッピングすることにより、以下に示すように、オペレーティングシステムインターフェイスは、C#プログラミング言語に対してネイティブなやり方でアクセスされ得る。
OpenPicker picker=new OpenPicker();
var items=picker.PickMultipleItems();
foreach(FileItem item in items){
Display(item.GetProperties().Name);
}
さらに別の実施例において、言語とは独立な方法で定義された構造は、JavaScriptオブジェクトに対してマップされ得る。以下のように定義されるFrameRate構造の実施例を検討する。
typedef struct FrameRate{
UNIT32 Numerator;
UNIT32 Denominator;
}FrameRate;
FrameRate構造は、2つのUNIT32フィールドを含んでいる。すなわち、NumeratorとDenominatorである。FrameRate構造は、言語とは独立した用語を使用して定義されているので、JavaScriptを通じてアクセスされるといった、好適なマッピングを使用している場合に、本構造は、種々の言語特定のプログラミングによってアクセスされ得る。しかしながら、JavaScriptは、フィールドを含む構造のコンセプト、または、符号なし(unsigned)32ビット整数のコンセプトを含んでいない。代わりに、JavaScriptは、プロパティを伴うオブジェクトのコンセプトとナンバー(Number)のコンセプトを含んでいる。この実施例において、上記の構造定義は、Numerator及びDenominatorと名付けられた2つのプロパティを伴うオブジェクトであり得る。両方のNumberタイプは以下のとおりである。
//JavaScript use of the above
var framerate=videoType.Framerate;//Get a framerate object
var ratio=framerate.Numeraot/framerate.Denominator;
一つまたはそれ以上のプログラミング言語に対するオペレーティングシステムコンポーネントのプログラムでの公開を検討してきたので、これから、一つまたはそれ以上の実施例に従って、抽象型システムを伴うオブジェクト志向言語のモデリングについて検討する。
抽象型システムを用いたオブジェクト志向言語のモデリング
オペレーティングシステムインターフェイスが、所定のプログラミング言語を使用して定義されている場合、インターフェイスに関するパラメーターは、所定のプログラミング言語のデータタイプによって特徴付けられる。つまり、インターフェイスのコーラー(caller)は、所定のプログラミング言語がどのようにデータタイプを定義しているかに準じている。インターフェイスとして所定のプログラミング言語で書かれたプログラムにとって、データタイプに準じることはありふれたことである。プログラムは、同一のデータタイプ定義を有しているからである。所定のプログラミング言語で書かれておらず、インターフェイスをコールするプログラムは、ときどき、データタイプに準じるための能力を減じてしまう。例えば、異なるプログラミング言語からインターフェイスをコールするプログラマーは、異なるプログラミング言語間、及び/又は、データタイプ間において、変換及び/又はブリッジを行うためのコードを追加してよい。結果として、データタイプ間をブリッジするプロセスは、しばしば、コールしているプログラミング言語のデータタイプに固有の機能性を減じてしまう。加えて、この変換は、ときどき、複雑であり、いくつかの場合においては、異なるプログラミング言語がオブジェクトが何であるかについて異なるコンセプトを有しているとすれば、現実性が無いものとなり得る。
種々の実施例は、オブジェクト志向のやり方で、抽象型システムを利用してオペレーティングシステムの一つまたはそれ以上のインターフェイスをモデル化するための能力を提供する。いくつかの実施例において、拡張IDLは、一つまたはそれ以上のインターフェイス間の関係を記述するための文法を含んでよい。代替的又は追加的に、拡張IDLは、どのようにインターフェイスが記述及び/又は定義され得るかを支配する規則を含み得る。いくつかの実施例において、バイナリーコントラクトは、抽象型システムに関する振る舞いを公開するように構成され、さらに、集められたデータタイプに伴う情報を含むように構成され得る。
オブジェクト志向モデルは、クラス階級制を使用してオブジェクトを記述する。ここで、クラスは、メソッド、プロパティ、インヘリタンス(inheritance)等を含んでよい。典型的には、必ずしも必要でないが、オブジェクト志向クラスは一つまたはそれ以上のコンストラクタ(constructor)を含んでいる。。コンストラクタは、クラス機能であり、コールされるとき、使用されるメモリーの中にクラスのインスタンス/オブジェクトを作成する。クラスのコンストラクタのいくつかは、作成されたインスタンス/オブジェクトの使用に備える追加のコードを含んでいる。例えば、追加のコードは、クラスのメンバー変数の初期化、クラスの関連するスタートアップルーチンの実行、等をすることができる。デフォルトのコンストラクタは入力パラメーターを有していないが、一方、デフォルトでないコンストラクタは一つまたはそれ以上の入力パラメーターを有している。
いくつかの実施例において、オペレーティングシステムコンポーネントの一つまたはそれ以上のコンストラクタは、所定の実施、及び/又は、デザインに従うように制約され得る。所定の実施に従うことによって、コンストラクタのコーラーは、そのコンストラクタ、及び/又は、結果とし生じるオブジェクトがどのように振る舞うかに依存し得る。例えば、オペレーティングシステムコンポーネントのデフォルトコンストラクタは、クラスファクトリーオブジェクトのIActivationFactoryインターフェイスに係るActivateInstanceメソッドのデフォルトコンストラクタについて、制約及び/又はマップされ得る。クラスファクトリーオブジェクトは、作成されるオブジェクトの正確なクラスを規定することなく、オブジェクトを作成するようにモデル化されたデザインパターンである。クラスファクトリーモデルを使用することにより、デフォルトコンストラクタは、十分なレベルの抽象化を維持することができる。オペレーティングシステムコンポーネントのデフォルトでないコンストラクタは、また、クラスファクトリーの代替のインターフェイスといった、一つまたはそれ以上の特別に指定されたインターフェイス上に置かれるように制約され得る。
インターフェイスの記述を規定する一つのやり方は、IDL及び/又はXMLのような拡張記述言語といった、記述的な言語の使用を通じたものである。いくつかの実施例において、拡張記述言語は、オペレーティングシステムコンポーネントの一つまたはそれ以上のコンストラクタインターフェイスを記述及び/又は指定する能力を可能にするように構成されてよい。例えば、以下に説明するように、Compressorクラスを検討する。この実施例において、Compressorクラスは、クラスに関するデフォルトでないコンストラクタメソッドの少なくとも一つの定義を含むICompressorFactoryインターフェイスを宣言する。
[version(NTDDI_WIN8), activatable(ICompressorFactory, NTDDI_WIN8)]
runtimeclass Compressor {
[default] interface ICompressor;
}
[version(NTDDI_WrN8), uuid(5F3D96A4-2CFB-442C-A8BA-D7Dl lB039DA0)] interface ICompressorFactory : Ilnspectable {
HRESULT CreateCompressor([in] Windows. Foundation.IOutputStream*
UnderlyingStream, [in] CompressAlgorithm Algorithm, [out, retval] Compressor
**CreatedCompressor);
}
オブジェクト志向クラスは、少なくとも一つの静的メソッド、少なくとも一つの静的プロパティ、少なくとも一つの静的イベント、または、これらのあらゆる組み合わせを含むように構成されてよい。コンストラクタに係る定義の制約と同様に、静的メソッド、静的プロパティ、及び/又は、静的イベントは、一つまたはそれ以上の特に指定されたインターフェイスに従うようにデザインされ得る。静的メソッド、プロパティ、および、イベントを宣言するCallControlクラスの実施例を検討する。この実施例において、静的メソッド、プロパティ、および、イベントは、CallControlStaticsインターフェイスにおいて、以下のように定義される。
[version(NTDDI_WTN8), uuid("03945AD5-85AB-40E1-AF19-56C94303B019"), exclusiveto(CallControl)]
interface ICallControlStatics: Ilnspectable
{
HRESULT GetDefault([out, retval] CallControl**callControl);
HRESULT FromId([in] HSTRTNG devicelnterfaceld, [out, retval] CallControl**callControl);
}
//Runtime classes
[version(TDDI_WIN8),
static(ICallControlStatics, NTDDI_WIN8)]
runtimeclass CallControl {
[default] interface ICallControl;
}
オブジェクト志向クラスは、少なくとも一つのインスタンスメソッド、少なくとも一つのインスタンスプロパティ、少なくとも一つのインスタンスイベント、または、これらのあらゆる組み合わせを含むように構成されてよい。インスタンスメンバー(メソッド、プロパティ、および、イベント)は、クラスの所定のインスタンス上で動作し、一方、静的なメンバーはクラスの全てのメンバーによって共有される。クラスは、一つまたはそれ以上の特に指定されたインターフェイスに従うようにデザインされ得る。関連するインスタンスメソッド、プロパティ、および、イベントがICallControlインターフェイスにおいて定義されることをCallControlクラスが宣言する上記の実施例といったインターフェイスである。いくつかの実施例において、一つまたはそれ以上のオペレーティングシステムコンポーネントは、クラスファクトリーデザインパターンの後/上にこれらのインターフェイスをモデル化/実施することができる。
所定のプログラミング言語が、言語固有のコンストラクタ、静的又はインスタンスメンバー、言語プロジェクションモジュール、図2に係る生成された言語プロジェクションモジュールといったもの、をコールするかどうかは、プログラミング言語固有のコールを好適なクラスファクトリーオブジェクト又はインスタンスに関する好適なメソッド及び/又はインターフェイスに対してマップすることができる。いくつかの実施例において、クラスファクトリーオブジェクトは、オペレーティングシステムコンポーネント及び/又はランタイムクラスと関連している。例えば、ランタイムクラスのインスタンスを作成するようにコンパイラーに指示しているコードのメソッド署名を、クラスファクトリーオブジェクトの好適なコンストラクタインターフェイスメソッドに調和させることができる。さらに別の実施例において、言語プロジェクションモジュールは、静的メソッドをコールするようにコンパイラーに指示している言語固有のメソッド署名を、オペレーティングシステムコンポーネントに関連する静的インターフェイス上の好適な整合インターフェイスメソッドに調和させるように構成され得る。さらに別の実施例において、、言語プロジェクションモジュールは、インスタンスメソッドをコールするようにコンパイラーに指示している言語固有のメソッド署名を、オペレーティングシステムコンポーネントの所定のインスタンスに関連するインターフェイス上の好適な整合インターフェイスメソッドに調和させるように構成され得る。
いくつかの実施例において、IDLコンパイラーは、少なくとも一つのオペレーティングシステムコンポーネントインターフェイス記述に関連する一つまた生成するように構成され得る。あらゆる好適な情報のタイプが拡張IDLファイルの中に含まれてよい。タイプ、メソッド、プロパティ、イベント、および、関連のオペレーティングシステムコンポーネントのインターフェイスを記述している情報といったものである。いくつかの場合には、コンパイラーは、マシンで読取り可能なメタデータファイルを生成することができる。一つまたはそれ以上のアプリケーションは、何のインターフェイスが利用可能であるかをプログラムで判断するための関連のマシンで読取り可能なファイル、インターフェイスに係る関連の記述及び/又は宣言、インターフェイスに係るパラメーターのデータタイプ、等を読み出すように構成され得る。一つまたはそれ以上のアプリケーションは、あらゆる好適なプログラミング言語で書かれてよく、実施例が上記に提供されている。
いくつかの実施例において、IDLコンパイラーは、タイプ、メソッド、プロパティ、イベント、及び/又は、インターフェイスに関連する一つまたはそれ以上のコミュニケーションプロキシー及び/又はコードスタブを生成することができる。コミュニケーションプロキシー及び/又はコードスタブは、オペレーティングシステムコンポーネントによるアクセスのために追加的に構成され得る。
図4について検討する。図4は、本発明の一つまたはそれ以上の実施例に従って、拡張IDLファイル402、コンパイラー404、および、メタデータファイル406との間の関係を示している。ここで、拡張IDLファイル402は、メタデータファイル406を生成するために、コンパイラー4040によって受け取られ、処理される。少なくともいくつかの実施例において、関係図に示されたモジュールは、コンピューターデバイス102上で動作する、ソフトウェア、ハードウェア、または、エディター/コンパイラーモジュール114といった、これらのあらゆる組み合わせとして実施例され得る。
図示され説明される実施例において、拡張IDLファイル402は、オペレーティングシステムAPIといった、一つまたはそれ以上のオペレーティングシステムコンポーネントインターフェイスを定義する一つまたはそれ以上のファイルを含んでよい。オペレーティングシステムコンポーネントのあらゆる好適なタイプが記述され得る。ファイルオブジェクト/クラス、ストリングオブジェクト/クラス、グラフィックオブジェクト/クラス、カルチャーオブジェクト/クラス、等といったものである。それぞれのオブジェクトは、オブジェクト志向クラスに関連付けされ得るメソッド、プロパティ、インヘリタンス情報、等を含んでよい。拡張IDLは、一つまたはそれ以上のインターフェイス間の関係に係るこれらのタイプが記述できるようにする文法を含み得る。
いくつかの実施例において、抽象型システムは、種々のデータタイプをサポート及び/又は記述するように構成され得る。例えば、メソッドインターフェイスは、全てのインターフェイスがオブジェクトのインスタンス上で動作するという物理的な要求をマップするように定義され得る。別の実施例において、抽象型システムは、プログラミング言語とコンポーネント境界をまたいでコールされ得るようにファンクションポインターを定義するために使用されてよい。第1のコンポーネントは、ファンクションポインター、または、デリゲート(delegate)から生じてよく、メソッドに結び付けられている。デリゲートは、次に、バイナリーコンピレーション(compilation)境界をまたいで任意のプログラミング言語で書かれた第2のコンポーネントに対してパス(pass)され、実施される。種々の実施例によって、拡張IDLは、これらのデータタイプを定義及び/又は記述することができ、データタイプを集合体の型の中へ混ぜ合わせるのと同様に、基本的なデータタイプを構成するための規則を定義することができる。
図示され説明される実施例において、コンパイラー404は、拡張IDLファイル402といった、一つまたはそれ以上の入力ファイルを受け容れ、一つまたはそれ以上のメタデータファイル406を生成する。メタデータファイル406は、自動アクセスのための構成されてよい。例えば、メタデータファイルは、マシンで読取り可能なフォーマットで保管され得る。いくつかの実施例において、メタデータファイル406は、一つまたはそれ以上のオペレーティングシステムコンポーネントと関連している。代替的又は追加的に、コンパイラー404は、上述のように、スタブアウト(stubbed out)コミュニケーションプロキシーを生成することができる。
アプリケーション408は、何のAPIが利用可能であるかを動的に判断することができる。メタデータファイル406の読み出しを通じて、といったものである。いくつかの実施例において、アプリケーション408は、図1に係るエディター/コンパイラーとして構成され得る。メタデータファイル406を通じて、アプリケーションは、機能性について以降のバージョンが存在するかどうか、どんなパラメーターをAPIが取るか、を判断し、同様に、ランタイムにおいてAPIの何の機能性が存在するかをユーザーに知らせることができる。従って、抽象型システムを用いてAPIを記述することと同様に、APIの記述をマシンで読取り可能なフォーマットに含めることによって、抽象型システムと所定のプログラミング言語との間のマッピングをサポートするアプリケーション及び/又は言語は、プログラマーからの少ない労力でAPIに容易にアクセスできる。
抽象型システムを用いたオブジェクト志向言語のモデル化について検討してきたので、これから、一つまたはそれ以上の実施例に従ったシステム例について検討する。
システム例
図5は、上述の種々の実施例を実行するために利用され得るコンピューターデバイス500を例示している。コンピューターデバイス500は、例えば、図1に係るコンピューターデバイス、または、あらゆる他の好適なコンピューターデバイスであってよい。
コンピューターデバイス500は、一つまたはそれ以上のプロセッサ又は処理ユニット502、一つまたはそれ以上のメモリー及び/又はストレージコンポーネント504、一つまたはそれ以上の入力/出力(I/O)デバイス506、および、種々のコンポーネントとデバイスがお互いにコミュニケーションできるようにするバス508、を含んでいる。バス508は、バス構成のいくつかのタイプに係るあらゆる一つまたはそれ以上のものを表しており、メモリーバス又はメモリーコントローラー、ペリフェラルバス、加速グラフィックポート、および、あらゆる種類のバスアーキテクチャーを使用しているプロセッサ又はローカルバス、を含んでいる。バス508は、有線及び/又は無線バスを含んでよい。
メモリー/ストレージコンポーネント504は、一つまたはそれ以上のコンピューターストレージ媒体を表している。コンポーネント504は、揮発性媒体(ランダムアクセスメモリー(RAM)といったもの)、及び/又は、不揮発性媒体(読み出し専用メモリー(ROM)、フラッシュメモリー、光ディスク、磁気ディスク、等といったもの)を含み得る。コンポーネント504は、固定媒体(例えば、RAM、ROM、固定ハードドライブ、等)を、リムーバブル媒体(例えば、フラッシュメモリードライブ、リムーバブルハードドライブ、光ディスク、等)と同様に含んでよい。
一つまたはそれ以上の入力/出力デバイス506により、ユーザーは、コンピューターデバイス500に対してコマンド及び情報を入力することができ、また、情報をユーザー及び/又は他のコンポーネントまたはデバイスに対して示すことができる。入力デバイスの実施例は、キーボード、カーソルコントロールデバイス(例えば、マウス)、マイクロフォン、スキャナー、等を含んでいる。出力デバイスの実施例は、ディスプレイ装置(例えば、モニター又はプロジェクター)、スピーカー、プリンター、ネットワークカード、等を含んでいる。
種々の技術が、ソフトウェアまたはプログラムモジュールの一般的な内容で、ここにおいて説明された。一般的に、ソフトウェアは、ルーチン、プログラム、アプリケーション、オブジェクト、コンポーネント、データ構造、などといった所定のタスクを実行するもの、または所定の抽象的なデータタイプを実行するものを含む。これらのモジュールおよび技術の実施は、コンピューターで読み取り可能な媒体のいくつかの形式で保管され、または媒体にわたり伝送される。コンピューターで読み取り可能な媒体は、コンピューティングデバイスによってアクセスすることができる、あらゆる利用可能な媒体またはメディアであってよい。実施例として、かつ、限定するものではなく、コンピューターで読み取り可能な媒体は、「コンピューターで読取り可能なストレージ媒体(“computer−readable storgae media”)」を含み得る。
「コンピューターで読取り可能なストレージ媒体」は、コンピューターで読み取り可能なインストラクション、データ構造、プログラムモジュール、または、他のデータといった情報を保管するためのあらゆる方法または従来技術において実施される、揮発性および不揮発性媒体、取出し可能および取出し不能媒体を含む。コンピューターで読取り可能なストレージ媒体は、これらに限定されるわけではないが、RAM、ROM、EEPROM、フラッシュメモリー、または他のメモリー技術、CD−ROM、デジタル多目的ディスク(DVD)、磁気カセット、磁気テープ、磁気ディスクストレージまたは磁気ストレージデバイス、または、所望の情報を保管するために使用でき、コンピューターによってアクセスされ得る他のあらゆる媒体、を含んでいる。
結論
種々の実施例が、プログラミング言語とは独立して、オペレーティングシステムに関連する一つまたはそれ以上のインターフェイスを記述するための能力を提供する。代替的又は追加的に、所定のプログラミング言語に関連するコンパイラーは、独立したインターフェイス記述をプログラミング言語に特有な好適なコンストラクトに対してマップするように構成され得る。いくつかの実施例において、アプリケーションは、オペレーティングシステムの一つまたはそれ以上のインターフェイスをプログラムで判断するように構成され得る。
技術的事項が構造的特徴及び/又は方法論的アクトに特有の言葉で説明されてきたが、添付の特許請求の範囲において定められる技術的事項は、上述された特定の特徴またはアクトに必ずしも限定される必要はないことが理解されるべきである。むしろ、上述の特定の特徴およびアクトは、請求項に係る発明の実施例として開示されたものである。

Claims (10)

  1. コンピューターで実施される方法であって:
    一つまたはそれ以上の利用可能なオペレーティングシステムインターフェイスに関連する情報に対するリクエストを受け取るステップと;
    前記一つまたはそれ以上の利用可能なオペレーティングシステムインターフェイスに関連する情報を取得するステップであり、前記オペレーティングシステムインターフェイスは抽象型システムを使用して記述されているステップと;
    前記一つまたはそれ以上の利用可能なオペレーティングシステムシステムに関連する一つまたはそれ以上の抽象型を判断するステップと;
    判断された個々の抽象型を、少なくとも一つの所定のプログラミング言語に関連するそれぞれのタイプにマップするステップと、を含む、
    ことを特徴とする方法。
  2. 前記一つまたはそれ以上の抽象型を判断する前記ステップは、さらに、
    前記一つまたはそれ以上の抽象型に関連する振る舞いを判断するステップ、を含む、
    請求項1に記載の方法。
  3. 前記一つまたはそれ以上の抽象型に関連する振る舞いを判断する前記ステップは、さらに、
    少なくとも一つのバイナリーコントラクトを通じて、振る舞いをプログラムで判断するステップ、を含む、
    請求項2に記載の方法。
  4. 前記一つまたはそれ以上の利用可能なオペレーティングシステムインターフェイスに関連する前記情報は、さらに、階層的な情報を含んでいる、
    請求項1に記載の方法。
  5. 前記情報は、少なくとも一つのインターフェイスに関するバージョン情報、前記少なくとも一つのインターフェイスに関する個々のパラメーターのデータタイプ、前記少なくとも一つのインターフェイスに関する前記個々のパラメーターのコール順序、を含む、
    請求項1に記載の方法。
  6. 前記一つまたはそれ以上の利用可能なオペレーティングシステムインターフェイスに関連する情報を取得する前記ステップは、少なくとも一つのメタデータファイルからプログラムで情報を取得するステップを含む、
    請求項1に記載の方法。
  7. コンピューターで読取り可能なインストラクションを含む一つまたはそれ以上のコンピューターで読取り可能なストレージ媒体であって、
    前記インストラクションが実行されると:
    オペレーティングシステムに関連する機能性にプログラムでアクセスできるように構成されている、一つまたはそれ以上のアプリケーションプログラミングインターフェイス(API)と;
    前記一つまたはそれ以上のAPIに関連する一つまたはそれ以上のメタデータであり、前記メタデータは、前記一つまたはそれ以上のAPIに係る少なくとも一つの記述を含むように構成されており、前記少なくとも一つの記述は抽象型システムを使用している、メタデータと;
    前記一つまたはそれ以上のAPIをコールするための一つまたはそれ以上のマシンレベルのバイナリーコントラクトを含むように構成されている、一つまたはそれ以上のアプリケーションバイナリーインターフェイス(ABI)モジュールと;
    前記抽象型システムの少なくとも一つのタイプを一つまたはそれ以上の所定のプログラミング言語の少なくとも一つのタイプにマップするように構成されている、一つまたはそれ以上の生成された言語プロジェクションモジュールと、
    を実行する、
    ことを特徴とするコンピューターで読取り可能なストレージ媒体。
  8. 前記一つまたはそれ以上のコンピューターで読取り可能なストレージ媒体は、さらに、インストラクションを含み、
    前記インストラクションが実行されると:
    前記一つまたはそれ以上のメタデータファイルを通じて、前記少なくとも一つのAPIモジュールの中に含まれ、少なくとも一つのインターフェイスをプログラムで判断するように構成されている少なくとも一つのアプリケーション、を実行する、
    請求項7に記載のコンピューターで読取り可能なストレージ媒体。
  9. 前記生成された言語プロジェクションモジュールは、前記一つまたはそれ以上のプログラミング言語にネイティブなやり方で、前記抽象型システムの少なくとも一つのタイプをエミュレートするように構成されている少なくとも一つのプロキシーを含んでいる、
    請求項7に記載のコンピューターで読取り可能なストレージ媒体。
  10. 前記一つまたはそれ以上のAPIをコールするための前記バイナリーコントラクトは、前記抽象型システムの少なくとも一つのタイプに関する少なくとも一つの振る舞い定義を含んでいる、請求項7に記載のコンピューターで読取り可能なストレージ媒体。
JP2014524995A 2011-08-11 2011-10-08 ランタイムシステム Active JP5933002B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/207,806 2011-08-11
US13/207,806 US8776094B2 (en) 2011-08-11 2011-08-11 Runtime system
PCT/US2011/055492 WO2013022465A1 (en) 2011-08-11 2011-10-08 Runtime system

Publications (3)

Publication Number Publication Date
JP2014522063A true JP2014522063A (ja) 2014-08-28
JP2014522063A5 JP2014522063A5 (ja) 2014-10-30
JP5933002B2 JP5933002B2 (ja) 2016-06-08

Family

ID=47668756

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014524995A Active JP5933002B2 (ja) 2011-08-11 2011-10-08 ランタイムシステム

Country Status (13)

Country Link
US (2) US8776094B2 (ja)
EP (1) EP2742420B1 (ja)
JP (1) JP5933002B2 (ja)
KR (1) KR101795844B1 (ja)
CN (1) CN103718155B (ja)
AU (2) AU2011374897B2 (ja)
BR (1) BR112014003123B1 (ja)
CA (1) CA2844492C (ja)
IN (1) IN2014CN00797A (ja)
MX (1) MX336195B (ja)
RU (1) RU2601198C2 (ja)
TW (2) TWI533217B (ja)
WO (1) WO2013022465A1 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10089119B2 (en) 2009-12-18 2018-10-02 Microsoft Technology Licensing, Llc API namespace virtualization
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US8695021B2 (en) 2011-08-31 2014-04-08 Microsoft Corporation Projecting native application programming interfaces of an operating system into other programming languages
US20140237368A1 (en) * 2013-02-19 2014-08-21 Microsoft Corporation Proxying non-interactive controls to enable narration
US9442700B2 (en) * 2013-09-30 2016-09-13 MuleSoft, Inc. API notebook tool
US10228920B2 (en) * 2014-05-13 2019-03-12 Oracle International Corporation Automatic selection of an abstract data type
US10635504B2 (en) 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
US10452409B2 (en) * 2015-10-23 2019-10-22 Oracle International Corporation Universal adapter for native calling
US10120655B2 (en) * 2016-06-03 2018-11-06 Microsoft Technology Licensing, Llc. Seamless high performance interoperability between different type graphs that share a garbage collector
US11343352B1 (en) * 2017-06-21 2022-05-24 Amazon Technologies, Inc. Customer-facing service for service coordination
US11050607B2 (en) * 2017-06-21 2021-06-29 Red Hat, Inc. Proxy with a function as a service (FAAS) support
CN109814861A (zh) * 2017-11-21 2019-05-28 海云数据 为终端用户提供能力的开放平台
US10635416B2 (en) * 2018-07-31 2020-04-28 Microsoft Technology Licensing, Llc Property filtering
CN111400162B (zh) * 2019-01-02 2023-04-25 阿里巴巴集团控股有限公司 一种测试方法及测试系统
DE112019006805A5 (de) * 2019-01-31 2021-11-04 Bayerische Motoren Werke Aktiengesellschaft Verfahren zum Ausführen von Programmkomponenten auf einem Steuergerät, ein computerlesbares-Speichermedium, ein Steuergerät und ein System
CN111857662B (zh) * 2020-07-15 2023-06-30 曹蕤 基于map和接口来描述对象特定构成的程序设计方法
CN111949253B (zh) * 2020-08-07 2023-12-01 抖音视界有限公司 组合idl文件的方法、装置、计算机设备和存储介质
US10963228B1 (en) * 2020-12-22 2021-03-30 Temper Systems, Inc. Preventing garbage object accumulation on minimal runtimes
US11036482B1 (en) 2020-12-22 2021-06-15 Temper Systems, Inc. Deriving many idiomatic programming language interfaces
US11163559B1 (en) * 2020-12-28 2021-11-02 Temper Systems, Inc. Cross-publishing software libraries to module repositories
CN117453708A (zh) * 2023-12-25 2024-01-26 成都深瑞同华科技有限公司 一种gis图形与cad图形的双向联动互转方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010037417A1 (en) * 2000-01-14 2001-11-01 Markus Meyer Method and system for dynamically dispatching function calls from a first execution environment to a second execution environment
JP2006216030A (ja) * 2005-02-04 2006-08-17 Microsoft Corp サービスおよびクライアント・ランタイムを生成、交換、構成するための抽象的な記述の利用
US7783720B1 (en) * 2000-04-21 2010-08-24 Oracle America, Inc. CORBA metadata gateway to telecommunications management network

Family Cites Families (153)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5097533A (en) 1988-11-29 1992-03-17 International Business Machines Corporation System and method for interfacing computer application programs written in different languages to a software system
US5371885A (en) 1989-08-29 1994-12-06 Microsoft Corporation High performance file system
JPH0540682A (ja) 1990-06-08 1993-02-19 Internatl Business Mach Corp <Ibm> アトミシテイを有する記憶装置の高可用性耐故障再配置
US5339422A (en) 1991-03-07 1994-08-16 Digital Equipment Corporation System and method for jacketing cross-domain calls in a multi-code execution and debugging system within a multi-architecture environment
US5964835A (en) 1992-12-17 1999-10-12 Tandem Computers Incorporated Storage access validation to data messages using partial storage address data indexed entries containing permissible address range validation for message source
US5594863A (en) 1995-06-26 1997-01-14 Novell, Inc. Method and apparatus for network file recovery
US5910180A (en) 1995-11-21 1999-06-08 Diamond Multimedia Systems, Inc. Context virtualizing device driver architecture
US5887172A (en) 1996-01-10 1999-03-23 Sun Microsystems, Inc. Remote procedure call system and method for RPC mechanism independent client and server interfaces interoperable with any of a plurality of remote procedure call backends
CA2199675C (en) 1996-05-08 2002-03-26 John C. Goodwin, Iii System and method for managing electronic price label overlays
US6035342A (en) * 1997-03-19 2000-03-07 Microsoft Corporation Method and computer program product for implementing object relationships
US6026238A (en) 1997-08-18 2000-02-15 Microsoft Corporatrion Interface conversion modules based upon generalized templates for multiple platform computer systems
US6269431B1 (en) 1998-08-13 2001-07-31 Emc Corporation Virtual storage and block level direct access of secondary storage for recovery of backup data
US6920537B2 (en) 1998-12-31 2005-07-19 Emc Corporation Apparatus and methods for copying, backing up and restoring logical objects in a computer storage system by transferring blocks out of order or in parallel
US20050182828A1 (en) 1999-04-21 2005-08-18 Interactual Technologies, Inc. Platform specific execution
US6745385B1 (en) 1999-09-01 2004-06-01 Microsoft Corporation Fixing incompatible applications by providing stubs for APIs
US6629264B1 (en) 2000-03-30 2003-09-30 Hewlett-Packard Development Company, L.P. Controller-based remote copy system with logical unit grouping
JP3562435B2 (ja) 2000-04-12 2004-09-08 日本電気株式会社 コンポーネントの自動生成装置
US6813770B1 (en) 2000-04-21 2004-11-02 Sun Microsystems, Inc. Abstract syntax notation to interface definition language converter framework for network management
US7577834B1 (en) 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
US6691302B1 (en) 2000-05-31 2004-02-10 Siemens Information & Communications Networks, Inc. Interfacing a service component to a native API
US6643672B1 (en) 2000-07-31 2003-11-04 Hewlett-Packard Development Company, Lp. Method and apparatus for asynchronous file writes in a distributed file system
US6925476B1 (en) 2000-08-17 2005-08-02 Fusionone, Inc. Updating application data including adding first change log to aggreagate change log comprising summary of changes
US6928555B1 (en) 2000-09-18 2005-08-09 Networks Associates Technology, Inc. Method and apparatus for minimizing file scanning by anti-virus programs
US7574346B2 (en) 2000-10-30 2009-08-11 Microsoft Corporation Kernel emulator for non-native program modules
US7065742B1 (en) 2000-10-30 2006-06-20 Microsoft Corporation System and method for dynamically processing declarative language instance data
US7730213B2 (en) 2000-12-18 2010-06-01 Oracle America, Inc. Object-based storage device with improved reliability and fast crash recovery
US6993744B2 (en) 2000-12-19 2006-01-31 Tajen Corporation Method for enabling a compiler or interpreter to use identifiers found at run time in a map container object in a manner similar or identical to identifiers declared at compile time
US20020161596A1 (en) 2001-04-30 2002-10-31 Johnson Robert E. System and method for validation of storage device addresses
US6996832B2 (en) 2001-05-30 2006-02-07 Bea Systems, Inc. System and method for software component plug-in framework
CA2349905A1 (en) 2001-06-07 2002-12-07 Ibm Canada Limited-Ibm Canada Limitee System and method of mapping between software objects and structured language element based documents
US6643612B1 (en) 2001-06-28 2003-11-04 Atrica Ireland Limited Mechanism and protocol for per connection based service level agreement measurement
US7546602B2 (en) 2001-07-10 2009-06-09 Microsoft Corporation Application program interface for network software platform
US7581231B2 (en) 2001-07-10 2009-08-25 Microsoft Corporation Computing system and method for allowing plurality of applications written in different programming languages to communicate and request resources or services via a common language runtime layer
US7165239B2 (en) 2001-07-10 2007-01-16 Microsoft Corporation Application program interface for network software platform
US7631084B2 (en) 2001-11-02 2009-12-08 Juniper Networks, Inc. Method and system for providing secure access to private networks with client redirection
US20040201600A1 (en) 2001-12-14 2004-10-14 Microsoft Corporation Methods and system for providing an XML-based interface description language
US7330971B1 (en) 2002-01-11 2008-02-12 Microsoft Corporation Delegated administration of namespace management
US7072915B2 (en) 2002-01-22 2006-07-04 International Business Machines Corporation Copy method supplementing outboard data copy with previously instituted copy-on-write logical snapshot to create duplicate consistent with source data as of designated time
JP2003223350A (ja) 2002-01-29 2003-08-08 Ricoh Co Ltd データベースシステム
US20030188043A1 (en) 2002-03-27 2003-10-02 Woodall Thomas R. Two layer middleware architecture with an intermediate target independent interface
US7320123B2 (en) 2002-04-01 2008-01-15 Sun Microsystems, Inc. Method and system for detecting deprecated elements during runtime
US7424717B2 (en) 2002-05-01 2008-09-09 Bea Systems, Inc. Systems and methods for business process plug-in development
US7334124B2 (en) 2002-07-22 2008-02-19 Vormetric, Inc. Logical access block processing protocol for transparent secure file storage
US7219339B1 (en) 2002-10-29 2007-05-15 Cisco Technology, Inc. Method and apparatus for parsing and generating configuration commands for network devices using a grammar-based framework
US7412658B2 (en) 2002-11-14 2008-08-12 Sap Ag Modeling system for graphic user interface
US7171539B2 (en) 2002-11-18 2007-01-30 Arm Limited Apparatus and method for controlling access to a memory
US7546607B2 (en) 2002-11-19 2009-06-09 Microsoft Corporation Native code exposing virtual machine managed object
US7784044B2 (en) 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
US6993603B2 (en) 2002-12-09 2006-01-31 Microsoft Corporation Managed file system filter model and architecture
US7020746B2 (en) 2003-01-28 2006-03-28 Microsoft Corporation Method and system for an atomically updated, central cache memory
US7197417B2 (en) 2003-02-14 2007-03-27 Advantest America R&D Center, Inc. Method and structure to develop a test program for semiconductor integrated circuits
US7846023B2 (en) 2003-03-27 2010-12-07 Microsoft Corporation Application-centric user interface techniques
US7322029B2 (en) 2003-05-08 2008-01-22 American Megatrends, Inc. Method and system for recovering program code in a computer system
US7383255B2 (en) * 2003-06-23 2008-06-03 Microsoft Corporation Common query runtime system and application programming interface
US7380235B1 (en) 2003-06-27 2008-05-27 Microsoft Corporation Application program interface call replay tool
US7519951B2 (en) 2003-09-30 2009-04-14 International Business Machines Corporation Multi-attribute dynamic link library packaging
US20050091271A1 (en) 2003-10-23 2005-04-28 Kasy Srinivas Systems and methods that schematize audio/video data
US7721254B2 (en) 2003-10-24 2010-05-18 Microsoft Corporation Programming interface for a computer platform
US8055907B2 (en) * 2003-10-24 2011-11-08 Microsoft Corporation Programming interface for a computer platform
US7493592B2 (en) 2003-10-24 2009-02-17 Microsoft Corporation Programming interface for a computer platform
US20050114832A1 (en) 2003-11-24 2005-05-26 Microsoft Corporation Automatically generating program code from a functional model of software
US7392527B2 (en) 2003-12-10 2008-06-24 Microsoft Corporation Driver-specific context for kernel-mode shimming
GB2409735A (en) 2003-12-30 2005-07-06 Ibm Method and system for change management of interfaces in distributed computer systems
US7440966B2 (en) 2004-02-12 2008-10-21 International Business Machines Corporation Method and apparatus for file system snapshot persistence
US7694315B2 (en) 2004-02-13 2010-04-06 Microsoft Corporation Schema-based machine generated programming models
US7444621B2 (en) 2004-02-20 2008-10-28 Microsoft Corporation Method and system for providing a common operating system
US20050216552A1 (en) 2004-03-24 2005-09-29 Samuel Fineberg Communication-link-attached persistent memory system
US7707583B2 (en) 2004-05-20 2010-04-27 Sap Ag Robust sharing of runtime systems
EP1759313A2 (en) 2004-05-21 2007-03-07 Computer Associates Think, Inc. Method and apparatus for updating a database using table staging and queued relocation and deletion
US20050268308A1 (en) 2004-05-28 2005-12-01 Nokia Corporation System and method for implementing a general application program interface
US8306991B2 (en) * 2004-06-07 2012-11-06 Symantec Operating Corporation System and method for providing a programming-language-independent interface for querying file system content
US7941402B2 (en) 2004-09-24 2011-05-10 Sap Ag Storing and using classes in databases
JP4104586B2 (ja) 2004-09-30 2008-06-18 株式会社東芝 ファイル管理機能を備えたファイルシステム及びファイル管理方法
JP4956922B2 (ja) 2004-10-27 2012-06-20 ソニー株式会社 記憶装置
US8898123B2 (en) * 2005-06-07 2014-11-25 Rockwell Automation Technologies, Inc. Method and system for interface configuration via device-side scripting
US8060856B2 (en) 2004-11-18 2011-11-15 Aol Inc. Native objects accessible by platform neutral API
US7464124B2 (en) 2004-11-19 2008-12-09 International Business Machines Corporation Method for autonomic data caching and copying on a storage area network aware file system using copy services
US20060129745A1 (en) 2004-12-11 2006-06-15 Gunther Thiel Process and appliance for data processing and computer program product
US7617259B1 (en) 2004-12-31 2009-11-10 Symantec Operating Corporation System and method for managing redundant storage consistency at a file system level
US20060161910A1 (en) 2005-01-14 2006-07-20 International Business Machines Corporation Method, system and program product for automatically ensuring compatability of a code module loaded into a program-code environment
US7519713B2 (en) 2005-02-04 2009-04-14 Microsoft Corporation Mapping between object oriented and service oriented representations of a distributed application
US20060195460A1 (en) * 2005-02-28 2006-08-31 Microsoft Corporation Data model for object-relational data
US7325007B2 (en) 2005-03-07 2008-01-29 Microsoft Corporation System and method for supporting non-native data types in a database API
US7685635B2 (en) 2005-03-11 2010-03-23 Microsoft Corporation Systems and methods for multi-level intercept processing in a virtual machine environment
US7716661B2 (en) 2005-03-16 2010-05-11 Microsoft Corporation Embedded device update service
JP4591148B2 (ja) 2005-03-25 2010-12-01 富士ゼロックス株式会社 機能変換装置、機能変換方法、機能変換プログラム、デバイスデータ生成装置、デバイスデータ生成方法、及びデバイスデータ生成プログラム
US20060287890A1 (en) 2005-06-15 2006-12-21 Vanderbilt University Method and apparatus for organizing and integrating structured and non-structured data across heterogeneous systems
US7992140B2 (en) 2005-07-29 2011-08-02 Microsoft Corporation Compiler supporting programs as data objects
US20070039010A1 (en) 2005-08-15 2007-02-15 Microsoft Corporation Automatic generation of software code to facilitate interoperability
CN1936853B (zh) 2005-09-22 2010-05-05 康佳集团股份有限公司 嵌入式设备的数据掉电保护和修复方法
KR101198583B1 (ko) 2005-10-12 2012-11-06 한국과학기술원 메타데이터를 이용한 멀티미디어 미들웨어 장치와 그 관리방법 및 기록 매체
US7624257B2 (en) * 2005-11-30 2009-11-24 International Business Machines Corporation Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads
US7716246B2 (en) 2005-11-30 2010-05-11 Microsoft Corporation Dynamic mechanism for providing metadata
US7890659B2 (en) 2005-12-15 2011-02-15 Microsoft Corporation Conforming web services to an updated contract
AU2006331932B2 (en) 2005-12-19 2012-09-06 Commvault Systems, Inc. Systems and methods for performing data replication
US20070156913A1 (en) 2005-12-30 2007-07-05 Hiroyuki Miyamoto Method for enabling extension points through plug-ins
US8082555B2 (en) 2006-02-21 2011-12-20 Microsoft Corporation Routing calls via reflective interfaces and a proxy
US7552148B2 (en) 2006-02-28 2009-06-23 Microsoft Corporation Shutdown recovery
US7620721B2 (en) 2006-02-28 2009-11-17 Microsoft Corporation Pre-existing content replication
US9081585B1 (en) 2006-03-31 2015-07-14 The Mathworks, Inc. Interfacing a device driver with an application using a virtual driver interface and a strategy
EP1845444B1 (en) 2006-04-13 2010-05-19 Microsoft Corporation Virtual execution system for ressource-constrained devices
US7730351B2 (en) 2006-05-15 2010-06-01 Oracle America, Inc. Per file dirty region logging
JP2007316944A (ja) 2006-05-25 2007-12-06 Toshiba Corp データ処理装置、データ処理方法、およびデータ処理プログラム
US8104048B2 (en) 2006-08-04 2012-01-24 Apple Inc. Browsing or searching user interfaces and other aspects
EP2293230B1 (en) 2006-09-11 2014-05-07 Software AG System for managing the lifecycle of a service oriented architecture
US20080077590A1 (en) 2006-09-22 2008-03-27 Honeywell International Inc. Efficient journaling and recovery mechanism for embedded flash file systems
GB0619147D0 (en) 2006-09-28 2006-11-08 Ibm A method, apparatus or software for managing software component version identifications in a componentised software system
KR101046304B1 (ko) 2006-10-20 2011-07-05 후지쯔 가부시끼가이샤 메모리 장치 및 리프레시 조정 방법
US7840752B2 (en) 2006-10-30 2010-11-23 Microsoft Corporation Dynamic database memory management policies
US7971208B2 (en) 2006-12-01 2011-06-28 Microsoft Corporation Developing layered platform components
US8370818B2 (en) 2006-12-02 2013-02-05 Time Warner Cable Inc. Methods and apparatus for analyzing software interface usage
JP2010512584A (ja) 2006-12-06 2010-04-22 フュージョン マルチシステムズ,インク.(ディービイエイ フュージョン−アイオー) 空データトークン指令を有する要求デバイスからのデータを管理する装置、システムおよび方法
US7956721B2 (en) 2007-01-09 2011-06-07 Homerun Holdings Corporation Power conserving mobile transmitter
JP2008293218A (ja) 2007-05-23 2008-12-04 Nec Corp ファイル管理システム、ファイル管理方法、ファイル管理プログラム
CN101051324A (zh) 2007-05-23 2007-10-10 中兴通讯股份有限公司 一种内存数据库的事务管理方法
WO2009004620A2 (en) 2007-07-03 2009-01-08 Xeround Systems Ltd. Method and system for data storage and management
US7720800B2 (en) 2007-07-06 2010-05-18 International Business Machines Corporation Method and approach to hosting versioned web services
JP2009020705A (ja) 2007-07-12 2009-01-29 Hitachi Ltd Guiアプリケーション開発支援装置及び開発支援方法
US20090024986A1 (en) 2007-07-19 2009-01-22 Microsoft Corporation Runtime code modification
US8667482B2 (en) 2007-08-10 2014-03-04 Microsoft Corporation Automated application modeling for application virtualization
KR100927442B1 (ko) 2007-08-16 2009-11-19 주식회사 마크애니 가상 응용프로그램 생성 시스템, 가상 응용프로그램 설치방법, 네이티브 api 호출 처리 방법 및 가상응용프로그램 수행 방법
US8364683B2 (en) 2007-08-30 2013-01-29 International Business Machines Corporation Importing and reconciling resources from disjoint name spaces to a common namespace
US20090132285A1 (en) 2007-10-31 2009-05-21 Mckesson Information Solutions Llc Methods, computer program products, apparatuses, and systems for interacting with medical data objects
KR101528853B1 (ko) 2007-12-14 2015-07-01 삼성전자주식회사 Api 서비스 방법과 api 매쉬업 생성 방법, 장치 및기록매체
US8250524B2 (en) 2007-12-21 2012-08-21 Microsoft Corporation Contract programming for code error reduction
US9058407B2 (en) 2008-01-22 2015-06-16 Oracle International Corporation Persistent multimedia content versioning
EP2088506A1 (en) * 2008-02-06 2009-08-12 Software AG Method and system for calling services from a remote client
US8732386B2 (en) 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
JP5386111B2 (ja) 2008-05-22 2014-01-15 株式会社日立ソリューションズ ファイルシステムの記録方法
US8484204B2 (en) 2008-08-28 2013-07-09 Microsoft Corporation Dynamic metadata
US9639375B2 (en) 2008-08-28 2017-05-02 Red Hat, Inc. Generation of language bindings for libraries using data from compiler generated debug information
US8595714B1 (en) 2009-03-04 2013-11-26 Amazon Technologies, Inc. User controlled environment updates in server cluster
GB0907171D0 (en) 2009-04-27 2009-06-10 Springsource Ltd Method and apparatus for automatically generating source code files in a storage unit
WO2010135696A1 (en) 2009-05-21 2010-11-25 Salesforce.Com, Inc. System, method and computer program product for versioning components of an application
US9075667B2 (en) 2009-05-21 2015-07-07 Microsoft Technology Licensing, Llc Dynamic binding directed by static types
US8495621B2 (en) 2009-06-15 2013-07-23 Microsoft Corporation Catalog-based software component management
US8539475B2 (en) 2009-09-29 2013-09-17 Oracle America, Inc. API backward compatibility checking
US8433865B2 (en) 2009-12-11 2013-04-30 Microsoft Corporation Consistency without ordering dependency
US10089119B2 (en) 2009-12-18 2018-10-02 Microsoft Technology Licensing, Llc API namespace virtualization
US8983982B2 (en) 2009-12-22 2015-03-17 Bmc Software, Inc. Mechanism for deprecating object oriented data
US8572591B2 (en) 2010-06-15 2013-10-29 Microsoft Corporation Dynamic adaptive programming
US8224780B2 (en) 2010-06-15 2012-07-17 Microsoft Corporation Checkpoints for a file system
US8793440B2 (en) 2010-06-17 2014-07-29 Microsoft Corporation Error detection for files
US9411634B2 (en) 2010-06-21 2016-08-09 Microsoft Technology Licensing, Llc Action framework in software transactional memory
US9483284B2 (en) 2011-02-25 2016-11-01 Red Hat, Inc. Version compatibility determination
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US9619779B2 (en) 2011-08-26 2017-04-11 Apple Inc. Client-side policy enforcement of developer API use
US20130055291A1 (en) 2011-08-31 2013-02-28 Microsoft Corporation Describing native application programming interfaces of an operating system with metadata
US9262183B2 (en) 2012-04-23 2016-02-16 Microsoft Technology Licensing, Llc Self-service composed web APIs
US8954479B2 (en) 2012-06-13 2015-02-10 International Business Machines Corporation End-to-end interoperability and workflows from building architecture design to one or more simulations
US9444899B2 (en) 2012-12-26 2016-09-13 Microsoft Technology Licensing, Llc Use of internet information services logging to collect user information in an asynchronous manner
US8793359B1 (en) 2013-11-25 2014-07-29 Software Ag Systems and/or methods for intelligently detecting API key domains
US9110770B1 (en) 2014-03-04 2015-08-18 Amazon Technologies, Inc. Assessing quality of code in an open platform environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010037417A1 (en) * 2000-01-14 2001-11-01 Markus Meyer Method and system for dynamically dispatching function calls from a first execution environment to a second execution environment
US7783720B1 (en) * 2000-04-21 2010-08-24 Oracle America, Inc. CORBA metadata gateway to telecommunications management network
JP2006216030A (ja) * 2005-02-04 2006-08-17 Microsoft Corp サービスおよびクライアント・ランタイムを生成、交換、構成するための抽象的な記述の利用

Also Published As

Publication number Publication date
US8776094B2 (en) 2014-07-08
TWI577539B (zh) 2017-04-11
AU2017200899A1 (en) 2017-03-02
MX2014001629A (es) 2014-05-28
IN2014CN00797A (ja) 2015-04-03
CA2844492A1 (en) 2013-02-14
US20130042258A1 (en) 2013-02-14
CN103718155A (zh) 2014-04-09
EP2742420A4 (en) 2015-02-11
EP2742420B1 (en) 2020-09-02
CN103718155B (zh) 2017-09-26
JP5933002B2 (ja) 2016-06-08
MX336195B (es) 2016-01-11
CA2844492C (en) 2018-11-20
RU2601198C2 (ru) 2016-10-27
KR20140057547A (ko) 2014-05-13
TWI533217B (zh) 2016-05-11
BR112014003123B1 (pt) 2021-07-20
TW201308209A (zh) 2013-02-16
US20140325534A1 (en) 2014-10-30
RU2014104582A (ru) 2015-08-20
WO2013022465A1 (en) 2013-02-14
AU2011374897A1 (en) 2014-02-27
TW201609366A (zh) 2016-03-16
US9563487B2 (en) 2017-02-07
BR112014003123A2 (pt) 2017-02-21
EP2742420A1 (en) 2014-06-18
KR101795844B1 (ko) 2017-11-08
AU2011374897B2 (en) 2016-11-10
AU2017200899B2 (en) 2017-12-07

Similar Documents

Publication Publication Date Title
JP5933002B2 (ja) ランタイムシステム
US11733985B2 (en) Accessing a migrated member in an updated type
US11366643B2 (en) Generating dynamic modular proxies
RU2598600C2 (ru) Проецирование собственных интерфейсов прикладного программирования операционной системы в другие языки программирования
JP2005301994A (ja) 優先バインディング
JP6338713B2 (ja) 柔軟性の高いメタデータの合成
US11243876B2 (en) Techniques for accessing off-heap memory
Ludin Learn BlackBerry 10 App Development: A Cascades-Driven Approach
Weitz et al. Chapter 22: The World Outside

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140909

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140909

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150523

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150812

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150825

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151120

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160405

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160428

R150 Certificate of patent or registration of utility model

Ref document number: 5933002

Country of ref document: JP

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