TWI556170B - 將作業系統之原始應用程式介面投射至其它程式語言(二) - Google Patents

將作業系統之原始應用程式介面投射至其它程式語言(二) Download PDF

Info

Publication number
TWI556170B
TWI556170B TW105101130A TW105101130A TWI556170B TW I556170 B TWI556170 B TW I556170B TW 105101130 A TW105101130 A TW 105101130A TW 105101130 A TW105101130 A TW 105101130A TW I556170 B TWI556170 B TW I556170B
Authority
TW
Taiwan
Prior art keywords
computer
component
operating system
projection
program
Prior art date
Application number
TW105101130A
Other languages
English (en)
Other versions
TW201619820A (zh
Inventor
皮爾斯哈洛德
瑞克特布蘭特
拉維爾馬丁S
派克歷亞馬赫什
羅威史蒂芬C
巴蘇塔莎杜克
羅達札克羅伯特A
歐米亞艾略特H
杜耐茲傑瑞
侯列可艾列斯
歐斯特曼羅倫斯
曾煒
華德華尼瑞
索爾卡夏吉爾
亞克雄金麥可
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 TW201619820A publication Critical patent/TW201619820A/zh
Application granted granted Critical
Publication of TWI556170B publication Critical patent/TWI556170B/zh

Links

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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • 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/542Event management; Broadcasting; Multicasting; Notifications
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Landscapes

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

Description

將作業系統之原始應用程式介面投射至其它程式語言(二)
本發明係關於將作業系統之原始應用程式介面投射至其他程式語言。
作業系統典型地具有數個應用程式介面,該等應用程式介面允許應用程式存取由作業系統所支援的功能。該等API典型地藉由作業系統,使用電腦程式語言中的經命名的檔案或物件而指定。舉例而言,C程式語言使用可具有諸如「interface.h」名稱的標頭檔案。類似地,在C#中,稱為「P/Invoke」簽名的機制係用以存取作業系統API。撰寫電腦程式而對作業系統API有使用用途的人典型地在程式中對經命名的檔案或物件包括參考值,或此人典型地使用由程式語言提供的其他機制。舉例而言,該語言接著包括以該API所使用的語法,呼叫由該API所定義的功能。
以此方式定義的API無法由非撰寫語言的其他語言而直接存取。為了使得以其他語言撰寫的程式能夠存取,API被「包裝」。此包裝典型地必須對每一個API及每一個語言以人工的方式完成,且此包裝典型地必須對目標語言及API及作業系統兩者具有深入的瞭解。結果,許多作業系統API無法利用。
提供此「發明內容」以簡化的形式介紹概念之選擇,以下「實施方式」中將進一步描述該概念之選擇。此發明內容並非意欲識別所主張標的之關鍵特徵或重要特徵,亦非意欲用以限制所主張標的之範疇。
當建立作業系統時,關於API的資訊係以已知的格式產生且儲存於作業系統之中的已知位置。此資訊完整地描述作業系統所暴露的所有API。此資訊包括但非限於關於多種類型之API之經命名的元件的資訊,該等類型的種類例如基本類型、列舉類型、結構、委派、介面、級別、方法、特性及事件。此資訊係儲存於API元資料檔案中。
語言編譯器或解譯器使用此API資訊而以目標語言建立原始系統API的自然且熟悉的表現。此表現因語言而有所不同(正如何者為自然 且熟悉係因語言而有所不同)。語言編譯器或解譯器可於編譯時間及/或運行時間(任何最適合用於討論中的語言者)讀取API資訊。舉例而言,類似C++的靜態編譯語言會純粹地於編譯時間消耗元資料,而類似Python或JavaScript的動態語言會純粹地於運行時間消耗元資料。使用元資料以允許應用程式連結至API中經命名的元件。建立使用元資料的投射,以將API中經命名的元件映射至目標語言中經命名的元件,且定義包裝,該等包裝編列介於目標表現及原始作業系統表現之間的彼等元件的資料。
因此,在一個態樣中,描述作業系統的應用程式介面之元資料係儲存於記憶體中。以程式語言給定在程式中經命名的元件的指示,該指示連結至應用程式介面之一者的元件,則經命名的元件係使用元資料投射至該程式語言之中。投射可於程式的編譯或解譯期間發生。投射可包括以程式語言建立編碼,該編碼用於建立一或更多元件;且根據類型編列用於所建立的元件之資料。包括介面之方法、特性及事件的介面可如此投射。投射亦可包括將例外從作業系統傳播至應用程式。
此舉將作業系統API投射至其他語言中係可實現於電腦實施程序、製造物品,或計算機器中,該製造物品包括一或更多電腦儲存媒體。
在以下說明書中,參考形成說明書的一部分的隨附圖式,且其中藉由圖示的方式來顯示此技術的特定示例性實施。應瞭解可使用其他實施例,且可在不悖離所揭露的範疇之情況下改變結構。
100‧‧‧應用程式
102‧‧‧API
104‧‧‧作業系統
106‧‧‧程式
108‧‧‧編譯器/解譯器
110‧‧‧元資料
112‧‧‧開發工具
400‧‧‧計算機器
402‧‧‧處理單元
404‧‧‧記憶體
406‧‧‧虛線
408‧‧‧可移除儲存
410‧‧‧不可移除儲存
412‧‧‧通訊連接
414‧‧‧輸入裝置
416‧‧‧輸出裝置
420‧‧‧圖形處理單元
第1圖係包括將API投射至其他程式語言的系統的方塊圖。
第2圖係圖示開發工具的示例性操作的流程圖。
第3圖係圖示編譯器或解譯器的示例性操作的流程圖。
第4圖係示例性計算裝置的方塊圖,其中可實施此系統。
以下段落提供示例性作業環境,其中可實施將原始系統API投射至其他語言之中的實例。
參看第1圖,運行中的應用程式100在運行時間期間存取作業系統104的原始系統API 102。為了使得此應用程式具有此功能,典型地使用諸如編輯器的開發工具112撰寫程式 106。該等程式係由語言的編譯器或解譯器108進行編譯或解譯任一者,以提供運行時間應用程式100。開發工具112,及編譯器或解譯器108存取元資料110,該元資料110完整描述作業系統的API 102。開發工具112幫助開發者撰寫程式,但透過元資料告知開發者可取得的原始系統API,且允許使用開發者的程式語言存取彼等API。編譯器或解譯器使用元資料實現將原始系統API投射至開發者的程式語言中。具體而言,在API中經命名的元件係映射至目標語言的經命名的元件,且在彼等元件中的值係編列於由目標語言及作業系統所使用的格式之間。
建立此系統係由建立具有元資料所描述的API的作業系統而開始。元資料代表以程式語言獨立形式的API描述的各個經命名的元件。此元資料提供完整的介面描述。結合的系統元資料可以ECMA-335 CLI格式儲存於一連串的元資料檔案中,但特定格式對本發明係無關緊要的。
給定此情境,此系統的示例性實施例將更詳細地與第2-4圖連接而描述。
在第2圖中,現將描述開發工具的操作實例。當撰寫電腦語言時,開發者通常使用諸如編輯器的開發工具的形式。此編輯器可執行各種任務,例如驗證語法及對由開發者輸入的字串提議完 備化。在此環境中,描述作業系統應用程式介面的元資料可以各種方式使用。具體而言,元資料可用以允許開發者發現可取得的API。開發工具接收200字串輸入,例如可用於API中作為識別符(例如「滑鼠」)或名稱空間(例如作業系統的名稱)的關鍵字。可搜尋202元資料,以識別具有將所接收的輸入作為識別符或名稱空間的一部分的元件。可收集匹配元件組的識別符且將該等匹配元件組的識別符返回204至開發工具。開發工具可將元件呈現206至開發者用於選擇,且開發工具可使用來自元資料的資訊,以適合開發者正在使用的電腦語言的格式呈現該等元件。
現參看第3圖,現將描述語言編譯器或解譯器的操作的實例。在處理電腦程式中,不論編譯或解譯電腦程式,均偵測300電腦程式的一序列元件。決定302電腦程式的元件是否為作業系統的API的參考值。舉例而言,此可藉由在元資料中查找元件而決定。使用元資料建立304投射元件,該元資料允許資料在電腦程式及作業系統之間交換。具體而言,編譯器或解譯器實施投射,該投射將作業系統API中的經命名的元件投射至目標語言中的經命名的元件。元資料允許建立物件,且元資料允許於程式所使用的資料格式及作業系統所使用的格式之間編列值。於運行時間,此元件允許 程式存取306作業系統的API,且此元件允許編列介於應用程式及作業系統之間的資料。
在已經描述此系統的大致處理之後,現將描述特定實例。具體而言,現將描述在描述API的元資料及API的元件的電腦語言特定表現之間更加詳細的示例性投射。
以下說明係僅為一個可能實施,且並非考慮為限制本發明。具體而言,應瞭解以下僅為可實施的語言投射的實例,且可能具有對此語言的其他實施,且可能具有其他投射至其他語言之中。
在此實例中,JavaScript係為原始系統API將使用元資料而投射之程式語言。在以下的實例中,給定某些種類的元件如何投射至JavaScript程式語言之中的解釋。
當腳本嘗試建立由作業系統API定義的具體物件的實例時,投射器物件合理地用於存取元資料,以建立於不同類型之間轉換資料的編列存根,可能牽涉建立代理物件,且投射器物件用於派遣方法呼叫、管理事件且管理回撥功能。
對於基本類型的經命名的物件,例如整數、字串及類似者,以下為將彼等API元件投射至JavaScript之中的方式。
作業系統具有數個簽署的及未簽署的整數類型,例如一個位元組的未簽署整數 (UInt8)、四個位元組的未簽署整數(UInt32)、四個位元組的簽署整數(Int8)及八個位元組的簽署及未簽署整數(UInt64及Int64)。該等類型的經命名的元件係投射成JavaScript Number值。當JavaScript Number被編列成作業系統值時,接著該等值被類型轉換為JavaScript數,且接著跟隨著由ES5 ToInt32規格所定義的程序。對於UInt8,結果具有應用2^8模數。對於Int32,應用2^16模數。對於UInt32,應用2^32模數。
編列成JavaScript值的64位元的整數若經簽署而落入[-2^53,2^53]之範圍,或若未經簽署而落入[0,2^53]之範圍,則該64位元的整數被表示為標準的Number值。若落於此範圍之外,則編列成JavaScript值的64個位元的整數被表示為Number值,該Number值具有維持全部64位元的整數資料的自訂備用儲存。對該等自訂Number值上的數學運算造成值被類型轉換成為在[-2^53,2^53]範圍中的標準Number表示,或若未簽署則在[0,2^53]範圍中。若值落於此範圍之外,則將提出類型錯誤。若編列成64位元整數的JavaScript值係本身為經投射的值,則此JavaScript值被直接地指派;否則,通過在值上應用EC5“ToInteger”轉換的結果。
係為字母(由16位元萬國碼表示)、字串或全球唯一識別符(GUID)的作業系統API的經命名的元件,可表示為JavaScript字串,且該等經命名的元件在JavaScript中被投射成經命名的字串。
編列成JavaScript的字母被轉換成JavaScript字串值,該JavaScript字串值含有由萬國碼值所表示的單一字母。編列成字母的JavaScript值透過ES5 ToString操作而類型轉換成為JavaScript字串,且保持第一字母。單一字母接著以Char16值通過。
編列成JavaScript的字串被轉換成JavaScript String。編列成字串的JavaScript值被類型轉換成為JavaScript字串。
編列成JavaScript值的GUID被轉換成字串格式。編列成GUID的JavaScript值被類型轉換成為字串,且該JavaScript值接著被剖析成由作業系統所使用的格式。
作業系統可具有API,該API具有經命名的元件,其中該經命名的元件係為代表時間中一點的DateTime結構,或該經命名的元件係為代表時間的量的TimeSpan結構。DateTime結構可投射成JavaScript,成為具有備用儲存匹配 DateTime結構資料(該DateTime結構資料具有與Date實例不同的範圍及精密度)的Date實例。TimeSpan結構被轉換成毫秒,且返回成為JavaScript Number。類似地,JavaScript Number可由毫秒轉換成100-十億分之一秒的單位,以通過作為TimeSpan結構。
應瞭解,藉由解譯元資料,在某些情況中投射亦可將來自原始環境的類型以語言投射重新映射至存在的類型。舉例而言,當原始API中的類型及語言投射具有相容的資料佈局時,此舉係可能且所欲的,而可立即以基本資料的類型發生。以此元資料映射,投射可單純地直接將所有操作重新導向原始類型,該等操作例如在語言類型上的方法或特性。此舉對語言開發者更自然且熟悉地使用該等類型。舉例而言,DateTime結構重新映射可以此方式實施。在原始的API中,DateTime結構在元資料中被暴露為Windows.Foundation.DateTime而無任何額外的操作。在C#投射中,此類型於具有豐富支援的C#中可重新導向至System.DateTimeOffset。
如另一實例,若在API中經命名的元件係一方法,則此方法具有HRESULT的值作為該方法之返回類型,該返回類型係轉換成 JavaScript中的例外。返回的HRESULT藉由JavaScript引擎檢查成功性。若HRESULT表明失敗,則JavaScript引擎在JavaScript側上投擲例外。因此,對於作業系統API的JavaScript調用的方法,HRESULT失敗係浮現為JavaScript Exception。對於消耗JavaScript方法的API方法(例如以下所述的回撥或委派),JavaScript方法呼叫被包裝於例外方塊中(或由JavaScript主機API提供的均等),使得捕獲的例外可傳播為HRESULTS。然而,作業系統亦允許HRESULTs位於方法及特性的進或出參數位置。在該等情況下,HRESULTS被編列為未簽署的32位元值(如以下所述)。
對於在API中係列舉類型的經命名的元件(該等經命名的元件係為一組經命名的常數),該等以JavaScript表示為對各個經命名的值含有唯讀欄位的物件。
對於在API中係為「結構(structs)」的經命名的元件(經命名的資料欄位的收集),該等在JavaScript中表示為JavaScript物件。編列成JavaScript的結構被轉換成物件。在結構中各個經命名的欄位變成在JavaScript物件中經命名的特性。在結構中各個經命名的欄位之值被編列成按照欄位的下層類型。係為物件類型的 JavaScript值可編列成結構。JavaScript物件或JavaScript物件的原型對結構的各個經命名的欄位含有經命名的欄位,且各個經命名的欄位之值係根據下層類型編列。在JavaScript物件中,於作業系統API結構中不具有均等的額外欄位被忽略。若任何結構值的編列失敗,則返回編列錯誤。
在此實例中,作業系統並非具有陣列的類型,但作業系統取而代之地允許對方法的引數,跟隨著對陣列的第一元件的指標,成為代表元件的數目(並非在陣列中之位元組)之一對未簽署的整數長度。
當將陣列編列成Javascript時,建立具有以下特徵的物件。物件具有對各個整數值介於0及陣列的長度、負1之間的特性,此特性可列舉、可撰寫但不可配置,且「長度」特性初始設定成向量的長度,此長度係不可撰寫、不可列舉且不可配置。此物件原型係為Array原型物件。此物件在索引特性上之[[Put]]操作於下層原始陣列上設定特定的索引。此物件在索引特性上之[[GetOwnProperty]]操作於下層原始陣列上編輯索引至下層原始陣列之中。身為「Array」,此物件不具有[[Class]]。當編列JavaScript物件時,若物件具有[[Class]]「Array」,則複製此陣列為原始陣列且通過對此陣列的參考 值。若物件係為經投射的陣列,則通過下層原始陣列。
API亦可具有委派或回撥功能的經命名的元件,此係單一可調用方法的參考值。該等可投射至JavaScript中成為可呼叫物件。投射器將回撥委派包裝於自訂編列物件中。
編列成JavaScript的委派被包裝於JavaScript功能物件中。當調用功能物件時,編列引數成為由委派表明的均等參數類型,且接著調用經包裝的委派物件。若任何引數編列失敗,則委派呼叫失敗。若JavaScript引數比參數式的委派更少,則委派呼叫失敗。超出參數式的委派的額外JavaScript引數被忽略。在調用委派之後,出參數被編列成JavaScript類型。若任何出參數編列失敗,則委派呼叫失敗。出參數接著被編列成JavaScript值且被返回。
若原始JavaScript功能物件被編列成委派,則此可呼叫物件被包裝於相對應委派類型的委派中。當調用委派時,入參數被編列成JavaScript類型且接著調用JavaScript功能物件。若失敗編列任何引數,則委派呼叫失敗。在調用委派之後,返回的值被映射至基於以下規則的委派的出參數。首先,若無出參數,則忽略來自JavaScript功能物件的返回值。其次,若委派指 定單一出參數,則來自JavaScript功能物件的返回值被編列成該類型。若編列失敗,則委派呼叫失敗。第三,若委派指定多重出參數,則來自JavaScript功能物件返回值的返回值係對各個出參數具有經命名的特性的物件。各個經命名的特性被編列成相對應出參數的類型。若返回值並非物件,則委派呼叫失敗。若返回的物件對各個出參數不含有經命名的特性,則委派呼叫失敗。若返回的物件含有不相對應於出參數的額外的經命名的特性,則該等物件被忽略。若任何經命名的特性失敗於編列成相對應的出參數類型,則委派呼叫失敗。
以下實例說明用於委派經呼叫的IString Collection的元資料,以及建立此委派的實例之擬JavaScript編碼。
示例性元資料:
擬JavaScript:
介面並非直接投射至JavaScript成為物件。然而,介面可為作業系統API方法的參數及返回類型。
為了提供在目標程式語言中自然的投射,在以上的實例中,投射成JavaScript的成員將該等成員之名稱改變成camelCase,跟隨在JavaScript中對成員使用camelCase名稱的強的慣例之後。近似於JavaScript建造功能的類型係照慣例為PascalCased,且該等類型被投射成該格式。類似地,enum特性、結構欄位、用於addEventListener樣式的事件名稱,在camelCase中具有名稱。
基於靜態類型資訊未知為運行時間級別的呈現,而被編列成JavaScript的介面實例,歷經以下步驟。首先,對介面進行呼叫,以獲得介面的運行時間級別名稱。若成功,物件被投射成運行時間級別實例物件(如下所述)。否則,物件被 投射成好似物件係恰巧執行物件已知的執行之未命名運行時間級別的實例,及物件的中間所需介面。
檢查編列成介面類型的JavaScript值,以檢視該值係為投射的運行時間級別實例物件或投射的介面實例物件。若該值為運行時間級別物件,且該物件代理的初始值執行介面類型,則執行該介面的物件被通過至作業系統。否則,提出類型錯誤例外。
在作業系統API中的物件可為運行時間級別的實例。運行時間級別執行一組一或更多個介面(以下定義)。運行中物件的執行的介面的清單,可基於返回運行中物件的方法的元資料,或藉由存取運行時間級別名稱及查找元資料任一者而決定。因為JavaScript係基於原型、動態的語言,此不具有級別的構造。級別構造在JavaScript中被投射為物件。
因此,作業系統API物件在JavaScript中被投射為物件。定義於級別的所有執行的介面上的方法、特性及事件的合併,透過該合併之原型,而表示被暴露成在投射的JavaScript物件上可取得的經命名的特性的類型成員。JavaScript語言投射的消費者可直接存 取級別的任何成員,而無須顧慮關於成員實際上定義於何者介面上。
JavaScript物件係為動態的,意謂於任何時間可在物件上添加或移除新的特性。只要預定義的介面成員不被撤銷或刪除,投射的物件可支援添加新的特性及方法。在JavaScript的詞彙中,投射的物件可延伸,但經命名的類型成員的收集不可配置。投射的物件具有原型,該原型具有來自運行時間級別所執行的介面定義於成員的收集上的實例成員。
如上所述的該等介面,具有方法、參數及事件。
於語言投射層處的方法被執行為對每一方法具有一儲存槽的vtable。關於介面的元資料提供方法名稱以及參數的名稱、類型及方向(進/出)。方法在JavaScript中投射為經投射的運行時間級別或介面物件上的可呼叫特性。該等特性係為{Writable=false,Enumerable=true,Configurable=false}。當被呼叫時,引數根據引數的相對應參數類型而編列,方法以該等值而呼叫。返回值編列為JavaScript值,而具有JavaScript物件返回作為該值。
於語言投射層處的特性被執行成提取及/或設定方法。存取特性值將呼叫提取方法,而更新特性值將調用設定方法。特性可為讀取或寫入(亦即,可利用提取及設定方法),或唯讀(亦即,僅可利用提取方法)。特性在JavaScript中投射為特性。編列特性值如以上所述取決於下層特性類型而作用。
於語言投射層處的事件係執行為添加及移除事件收聽者方法。添加方法採取委派實例且添加方法返回說明收聽者的資料,而移除方法採取說明收聽者且不返回的資料。
在JavaScript中,具有至少一個事件投射於任何經投射的運行時間級別或介面物件上的任何經投射的運行時間級別或介面物件,提取兩個額外的特性添加至該任何經投射的運行時間級別或介面物件之原型,addEventListener及removeEventListener。該等特性係為{Writable:false,Enumerable:true,Configurable:false},且該等特性被指派為可呼叫物件。
addEventListener功能提取串流引數,該串流引數代表所收聽的事件的名稱、指派作為收聽者的回撥功能,及被忽略的可選第三參數。此功能呼叫下層的add_Event方法,通過經 編列的回撥功能作為委派,且此功能將所得到的訊標儲存於映射中,該映射由回撥功能物件的參考識別符所定調。
removeEventListener功能採取串流引數,該串流引數代表移除收聽者的事件的名稱、應被移除的回撥功能,及被忽略的可選第三參數。此功能藉由在儲存的訊標的映射中之參考識別符而查找,且若找到訊標,則呼叫下層的remove_Event方法,通過經檢索的訊標。
當事件被發射時,將調用以回撥通過的任何JavaScript功能物件。通過至功能物件的引數將為提供至EventHandler委派的引數之經編列的值。
如以上所顯示,藉由具有語言的API Projection層,由儲存於作業系統中的元資料所指定的作業系統API的經命名的元件可自動地被使用,以在作業系統API格式及應用程式語言格式之間建立物件且編列資料。應瞭解以上僅為在示例性作業系統及示例性程式語言之間投射的實例,且本發明並非限於此實例。
在已描述示例性實施之後,現將描述其中被設計成作業此系統的計算環境。以下說明意欲提供適合的計算環境的簡要大致描述,其中可實施此系統。可以大量的通用目的或特別目的計算硬 體配置實施系統。眾所周知可為適合的計算裝置之實例包括但非限於個人電腦、伺服器電腦、手持或膝上型裝置(舉例而言,媒體播放器、筆記型電腦、手機、個人資料助理、錄音機)、多重處理器系統、基於微處理器的系統、機上盒、遊戲操縱台、可程式消費電子、網路PC、迷你電腦、大型電腦、包括上述系統或裝置之任一者的分散式計算環境,及類似者。
第4圖圖示適合的計算系統環境的實例。計算系統環境係僅為適合的計算環境之一個實例,且計算系統環境並非意欲建議對此計算環境的使用或功能的範疇作任何限制。計算環境亦不應詮釋為具有關於圖示於示例性作業環境中的組件的任一者或結合之任何依賴或需求。
參看第4圖,示例性計算環境包括諸如計算機器400的計算機器。在最基本的配置中,計算機器400典型地包括至少一個處理單元402及記憶體404。計算裝置可包括多重處理單元及/或額外的共同處理單元,例如圖形處理單元420。取決於計算裝置的確切配置及類型,記憶體404可為揮發性(例如RAM)、非揮發性(例如ROM、快閃記憶體等等)或兩者之某些結合。此最基本的配置係藉由虛線406圖示於第4圖中。此外,計算機器400亦可具有額外的特徵/功能。舉例而言, 計算機器400亦可包括額外的儲存(可移除及/或不可移除),包括但非限於磁碟或光碟或磁帶。此額外的儲存係藉由可移除儲存408及不可移除儲存410圖示於第4圖中。電腦儲存媒體包括以任何方法或技術實施,用於儲存資訊的可揮發及不可揮發、可移除及不可移除媒體,該等資訊例如電腦程式指令、資料結構、程式模組或其他資料。記憶體404、可移除儲存408及不可移除儲存410均為電腦儲存媒體的實例。電腦儲存媒體包括但非限於RAM、ROM、EEPROM、快閃記憶體或其他記憶技術、CD-ROM、數位光碟(DVD)或其他光學儲存、磁性卡匣、磁帶、磁碟儲存或其他磁性儲存裝置,或可用以儲存所欲資訊且可由計算機器400存取的任何其他媒體。任何此電腦儲存媒體可為計算機器400的部分。
計算機器400亦可含有通訊連接412,該通訊連接412允許裝置與其他裝置通訊。通訊連接412係通訊媒體的實例。通訊媒體典型地承載電腦程式指令、資料結構、程式模組或其他資料於調變資料訊號中,調變資料訊號例如載波或其他傳送機制,且包括任何資訊傳遞媒體。「調變資料訊號」一詞意謂具有一或更多特徵組的訊號,或以此方式改變而編碼資訊於訊號中,從而改變訊號的接收裝置的配置或狀態。藉由實例的方式且非限 制,通訊媒體包括諸如有限網路或直接連線的有線媒體,及諸如聽覺、RF、紅外線及其他無線媒體的無線媒體。
計算機器400可具有各種輸入裝置414,例如顯示器、鍵盤、滑鼠、筆、相機、觸碰輸入裝置等等。亦可包括諸如喇叭、印表機等等的輸出裝置416。所有該等裝置係本領域中眾所周知的,且所有該等裝置無須在此花篇幅的討論。
此系統可實施於一般情境的軟體,包括電腦可執行指令及/或電腦編譯指令,例如由計算機器所處理的程式模組。一般而言,程式模組包括常式、程式、物件、組件、資料結構等等,當該等程式模組由處理單元處理時,指導處理單元實行特定任務或實施特定抽象資料類型。此系統可執行於分散式計算環境中,在該等分散式計算環境中任務係由透過通訊網路鏈結的遠端處理裝置實行。在分散式計算環境中,程式模組可位於包括記憶體儲存裝置的本端及遠端電腦儲存媒體兩者中。
隨附申請專利範圍的前言中,「製造物品」、「程序」、「機器」之詞彙係意欲限制請求項為落入可專利標的之範疇。
此處上述的任何或所有的替代實施例可使用於任何所欲的結合以形成額外的混合實施例。應瞭解於隨附申請專利範圍中定義的標的並非 必須限制為上述的特定實施。上述的特定實施僅揭露作為實例。
100‧‧‧應用程式
102‧‧‧API
104‧‧‧作業系統
106‧‧‧程式
108‧‧‧編譯器/解譯器
110‧‧‧元資料
112‧‧‧開發工具

Claims (20)

  1. 一種電腦實施程序,包含:存取元資料步驟,存取儲存在一電腦中的元資料,該元資料描述該電腦的一作業系統的應用程式介面,該元資料由一機器可讀式程式語言獨立格式描述該等應用程式介面的元件,且該元資料被由一標準格式儲存於作為該電腦的該作業系統之部分的一已知位置中;接收指示步驟,將一指示接收入記憶體中,該指示將在一目標程式語言中的一程式中的一經命名的元件連結至該電腦的該作業系統的該等應用程式介面之一者的一元件;以及建立投射元件步驟,由該電腦的一處理系統使用該元資料處理該程式,以建立定義在該目標程式語言中的該程式中的一投射元件的電腦程式碼,該投射元件為該作業系統的該應用程式介面的該元件對於該程式中的該經命名的元件的一投射,在運行時間該投射元件配置該電腦的該處理系統以根據類型編列一作業系統表現與一應用程式表現之間的資料,使得在運行時間該程式中的該投射元件配置該電腦的該處理系統以允許該程式存取該電腦的該作業系統的該應用程式介面。
  2. 如請求項1所述之電腦實施程序,其中建立該投射元件之該建立投射元件步驟包含 以下步驟:在編譯該程式時,建立定義一或更多個投射元件的編碼。
  3. 如請求項1所述之電腦實施程序,其中建立該投射元件之該建立投射元件步驟包含以下步驟:在解譯該程式時,建立定義一或更多個投射元件的編碼。
  4. 如請求項1所述之電腦實施程序,其中該投射元件包含一介面,該介面包含方法、特性及事件。
  5. 如請求項1所述之電腦實施程序,其中該投射元件配置該處理系統以從該作業系統傳播例外至該應用程式。
  6. 一種製造物品,包含:一電腦儲存媒體;電腦程式指令,該等電腦程式指令儲存於該電腦儲存媒體上,當由一電腦的一處理系統處理該等電腦程式指令時,該等電腦程式指令配置該處理系統為包含:經配置以儲存元資料的記憶體,該描述該電腦的一作業系統的應用程式介面,該元資料由一機器可讀式程式語言獨立格式描述該應用程式介面的元件,且該元資料被由一標準格式儲存於作為該電腦的該作業系統之部分的一已知位置中; 一語言投射器,該語言投射器經配置以接收一指示,該指示將在一目標程式語言中的一程式中的一經命名的元件連結至該電腦的該作業系統的該等應用程式介面之一者的一元件;以及該語言投射器進一步經配置以使用該元資料建立電腦程式碼,該電腦程式碼定義在該目標程式語言中的該程式中的一投射元件,該投射元件為該作業系統的該應用程式介面的該元件對於該程式中的該經命名的元件的一投射,在運行時間該投射元件配置該電腦的該處理系統以根據類型編列一作業系統表現與一應用程式表現之間的資料,使得在運行時間該程式中的該投射元件配置該電腦的該處理系統以允許該程式存取該電腦的該作業系統的該應用程式介面。
  7. 如請求項6所述之製造物品,其中該語言投射器包含一編譯器,該編譯器經配置以在編譯時間建立該電腦程式碼,該電腦程式碼定義一或更多個投射元件。
  8. 如請求項6所述之製造物品,其中該語言投射器包含一解譯器,該解譯器經配置以在解譯該程式時建立該電腦程式碼,該電腦程式碼定義一或更多個投射元件。
  9. 如請求項6所述之製造物品,其中該投射元件包含一介面,該介面包含方法、特性及 事件。
  10. 如請求項6所述之製造物品,其中該投射元件從該作業系統傳播例外至該應用程式。
  11. 一種計算機器,包含:一處理系統,該處理系統包含一或更多個處理器與一或更多個電腦儲存媒體以及儲存在該一或更多個電腦儲存媒體上的電腦程式指令,該等電腦程式指令在由該處理系統處理時配置該處理系統為包含:經配置以儲存元資料的記憶體,該元資料描述該計算機器的一作業系統的應用程式介面,其中該作業系統的該等應用程式介面的元件被由一機器可讀式程式語言獨立格式描述且被由一標準格式儲存於作為該電腦的該作業系統之部分的一已知位置中;以及一語言投射器,該語言投射器經配置以接收一指示,該指示將在一目標程式語言中的一程式中的一經命名的元件連結至該計算機器的該作業系統的該等應用程式介面之一者的一元件,且該語言投射器進一步經配置以使用該元資料建立電腦程式碼,該電腦程式碼定義在該目標程式語言中的該程式中的一投射元件,該投射元件為該作業系統的該應用程式介面的該元件對於該程式中的該經命名的元件的一投射,在運行時間該投射元件配置該電腦的該處理系統以根據類型 編列一作業系統表現與一應用程式表現之間的資料,使得在運行時間該程式中的該投射元件配置該電腦的該處理系統以允許該程式存取該電腦的該作業系統的該應用程式介面。
  12. 如請求項11所述之計算機器,其中該語言投射器包含一編譯器,該編譯器經配置以在編譯時間建立該電腦程式碼,該電腦程式碼定義一或更多個投射元件。
  13. 如請求項11所述之計算機器,其中該語言投射器包含一解譯器,該解譯器經配置以在解譯該程式時建立該電腦程式碼,該電腦程式碼定義一或更多個投射元件。
  14. 如請求項11所述之計算機器,其中該投射元件包含一介面,該介面包含方法、特性及事件。
  15. 如請求項11所述之計算機器,其中該投射元件配置該處理系統以從該作業系統傳播例外至該應用程式。
  16. 如請求項11所述之計算機器,其中該應用程式介面的該元件包含一資料結構,該資料結構包含經命名的資料欄位的收集,且對於該元件的該投射元件包含在該目標程式語言中的 一物件,該物件包含一經命名的特性收集,其中該等經命名的特性對應於該等經命名的資料欄位。
  17. 如請求項11所述之計算機器,其中該應用程式介面的該元件包含一資料結構,該資料結構具有在該目標程式語言中的一對應類型,且其中對於該元件的該投射元件經配置以將操作重新導向在該目標程式語言中的該對應類型。
  18. 如請求項11所述之計算機器,其中該應用程式介面的該元件包含一方法,且對於該方法的該投射元件包含在該目標程式語言中的一例外。
  19. 如請求項11所述之計算機器,其中該應用程式介面的該元件包含一列舉類型,該列舉類型包含複數個經命名的值,且對於該列舉類型的該投射元件包含在該目標程式語言中的一物件,該物件對於該列舉類型的該複數個經命名的值的每一經命名的值包含一唯讀欄位。
  20. 如請求項11所述之計算機器,其中該應用程式介面的該元件包含一回撥功能,且對於該回撥功能的該投射元件為在該目標程式語言中的一可呼叫物件。
TW105101130A 2011-08-31 2011-10-07 將作業系統之原始應用程式介面投射至其它程式語言(二) TWI556170B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/223,296 US8695021B2 (en) 2011-08-31 2011-08-31 Projecting native application programming interfaces of an operating system into other programming languages

Publications (2)

Publication Number Publication Date
TW201619820A TW201619820A (zh) 2016-06-01
TWI556170B true TWI556170B (zh) 2016-11-01

Family

ID=47445766

Family Applications (2)

Application Number Title Priority Date Filing Date
TW105101130A TWI556170B (zh) 2011-08-31 2011-10-07 將作業系統之原始應用程式介面投射至其它程式語言(二)
TW100136566A TWI536263B (zh) 2011-08-31 2011-10-07 將作業系統之原始應用程式介面投射至其它程式語言

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW100136566A TWI536263B (zh) 2011-08-31 2011-10-07 將作業系統之原始應用程式介面投射至其它程式語言

Country Status (12)

Country Link
US (2) US8695021B2 (zh)
EP (1) EP2751673A4 (zh)
JP (1) JP5905577B2 (zh)
KR (1) KR101896138B1 (zh)
CN (1) CN102866884B (zh)
AU (1) AU2011375748B2 (zh)
BR (1) BR112014004469A2 (zh)
CA (1) CA2845480C (zh)
MX (2) MX339807B (zh)
RU (1) RU2598600C2 (zh)
TW (2) TWI556170B (zh)
WO (1) WO2013032506A1 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9798524B1 (en) * 2007-12-04 2017-10-24 Axway, Inc. System and method for exposing the dynamic web server-side
US9116780B2 (en) * 2013-02-06 2015-08-25 Google Inc. Method for modeling source code having code segments that lack source location
US9864861B2 (en) 2014-03-27 2018-01-09 Intel Corporation Object oriented marshaling scheme for calls to a secure region
US10635504B2 (en) 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
US10394552B2 (en) 2016-05-17 2019-08-27 Dropbox, Inc. Interface description language for application programming interfaces
US10146519B2 (en) 2016-09-20 2018-12-04 Bluedata Software, Inc. Generation and deployment of scripts for large scale processing framework services
CN107957911B (zh) * 2016-10-18 2019-07-05 腾讯科技(深圳)有限公司 组件调用的方法和装置、组件数据处理的方法和装置
US11182875B2 (en) * 2017-05-23 2021-11-23 Koninklijke Kpn N.V. Coordinate mapping for rendering panoramic scene
US10620980B2 (en) 2018-03-28 2020-04-14 Microsoft Technology Licensing, Llc Techniques for native runtime of hypertext markup language graphics content
US10866845B2 (en) * 2018-05-16 2020-12-15 Microsoft Technology Licensing, Llc Exposing native OS APIS in a web browser
CN108920218B (zh) * 2018-05-23 2023-03-03 北京五八信息技术有限公司 一种反射调用方法、装置、终端及计算机可读存储介质
US10725745B2 (en) * 2018-05-24 2020-07-28 Walmart Apollo, Llc Systems and methods for polyglot analysis
JP7067286B2 (ja) * 2018-06-06 2022-05-16 オムロン株式会社 制御システム、制御システムの制御方法、および制御システムのプログラム
CN108920133B (zh) * 2018-06-14 2021-06-18 北京三快在线科技有限公司 跨语言编程方法、装置、电子设备及存储介质
SG11202101073PA (en) * 2018-09-11 2021-03-30 Mastercard Tech Canada Ulc Transpilation of fraud detection rules to native language source code
US10838780B2 (en) 2018-12-10 2020-11-17 Mcafee, Llc Portable hosted content
CN113835755B (zh) * 2021-09-24 2023-08-22 天津津航计算技术研究所 一种无操作系统环境下串口控制台实现方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6446137B1 (en) * 1996-01-10 2002-09-03 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
US20050102129A1 (en) * 2000-10-30 2005-05-12 Microsoft Corporation Kernel emulator for non-native program modules
US7171539B2 (en) * 2002-11-18 2007-01-30 Arm Limited Apparatus and method for controlling access to a memory
US20090199220A1 (en) * 2008-02-06 2009-08-06 Rolf Bahlke Calling Services from a Remote Client

Family Cites Families (95)

* 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
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
US5910180A (en) 1995-11-21 1999-06-08 Diamond Multimedia Systems, Inc. Context virtualizing device driver architecture
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
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
EP1117033A1 (en) 2000-01-14 2001-07-18 Sun Microsystems, Inc. Dynamic dispatch function
US6813770B1 (en) 2000-04-21 2004-11-02 Sun Microsystems, Inc. Abstract syntax notation to interface definition language converter framework for network management
US7783720B1 (en) 2000-04-21 2010-08-24 Oracle America, Inc. CORBA metadata gateway to telecommunications management network
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
US7065742B1 (en) 2000-10-30 2006-06-20 Microsoft Corporation System and method for dynamically processing declarative language instance data
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
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
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
US7519976B2 (en) 2002-05-01 2009-04-14 Bea Systems, Inc. Collaborative business plug-in framework
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
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
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
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
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
US7721254B2 (en) 2003-10-24 2010-05-18 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
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
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
US8898123B2 (en) 2005-06-07 2014-11-25 Rockwell Automation Technologies, Inc. Method and system for interface configuration via device-side scripting
US20060161563A1 (en) 2004-11-18 2006-07-20 Besbris David G Service discovery
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
US7950023B2 (en) 2005-02-04 2011-05-24 Microsoft Corporation Utilizing abstract descriptions to generate, exchange, and configure service and client runtimes
US7519713B2 (en) 2005-02-04 2009-04-14 Microsoft Corporation Mapping between object oriented and service oriented representations of a distributed application
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
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
KR101198583B1 (ko) 2005-10-12 2012-11-06 한국과학기술원 메타데이터를 이용한 멀티미디어 미들웨어 장치와 그 관리방법 및 기록 매체
US7716246B2 (en) 2005-11-30 2010-05-11 Microsoft Corporation Dynamic mechanism for providing metadata
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
US20070156913A1 (en) 2005-12-30 2007-07-05 Hiroyuki Miyamoto Method for enabling extension points through plug-ins
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
US8104048B2 (en) 2006-08-04 2012-01-24 Apple Inc. Browsing or searching user interfaces and other aspects
EP1898345B1 (en) 2006-09-11 2011-01-19 Software AG System for managing the lifecycle of a service oriented architecture
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
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
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
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
EP2433200B1 (en) 2009-05-21 2020-02-26 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
US8983982B2 (en) 2009-12-22 2015-03-17 Bmc Software, Inc. Mechanism for deprecating object oriented data
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
US8949292B2 (en) 2012-06-13 2015-02-03 International Business Machines Corporation Interoperability format translation and transformation between IFC architectural design file and simulation file formats
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6446137B1 (en) * 1996-01-10 2002-09-03 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
US20050102129A1 (en) * 2000-10-30 2005-05-12 Microsoft Corporation Kernel emulator for non-native program modules
US7171539B2 (en) * 2002-11-18 2007-01-30 Arm Limited Apparatus and method for controlling access to a memory
US20090199220A1 (en) * 2008-02-06 2009-08-06 Rolf Bahlke Calling Services from a Remote Client

Also Published As

Publication number Publication date
KR101896138B1 (ko) 2018-09-07
BR112014004469A2 (pt) 2017-03-28
MX366619B (es) 2019-07-16
US20130055292A1 (en) 2013-02-28
US9229790B2 (en) 2016-01-05
AU2011375748A1 (en) 2014-03-06
MX2014002474A (es) 2014-03-27
EP2751673A4 (en) 2015-03-04
TW201619820A (zh) 2016-06-01
RU2014107726A (ru) 2015-09-10
AU2011375748B2 (en) 2016-11-24
TW201310341A (zh) 2013-03-01
CN102866884B (zh) 2016-09-28
CN102866884A (zh) 2013-01-09
US20150020084A1 (en) 2015-01-15
TWI536263B (zh) 2016-06-01
EP2751673A1 (en) 2014-07-09
US8695021B2 (en) 2014-04-08
MX339807B (es) 2016-06-10
RU2598600C2 (ru) 2016-09-27
CA2845480A1 (en) 2013-03-07
KR20140067017A (ko) 2014-06-03
WO2013032506A1 (en) 2013-03-07
CA2845480C (en) 2018-03-13
JP5905577B2 (ja) 2016-04-20
JP2014525623A (ja) 2014-09-29

Similar Documents

Publication Publication Date Title
TWI556170B (zh) 將作業系統之原始應用程式介面投射至其它程式語言(二)
KR101795844B1 (ko) 런타임 시스템
US6063128A (en) Object-oriented computerized modeling system
US5815415A (en) Computer system for portable persistent modeling
US9830146B2 (en) API lifecycle platform and version management
JP2014525622A (ja) オペレーティングシステムのネイティブアプリケーションプログラミングインターフェイスのメタデータを用いた記述
WO2024045382A1 (zh) 区块链中实现反射机制
Nagel et al. Professional C# 2012 and. Net 4.5
Van der Linden Just Java 2
Nagel et al. Professional C# 5.0 and. NET 4.5. 1
US8825708B1 (en) Program language binding generation for system interfaces
Späth Learn Kotlin for Android Development
Bell et al. Learn to Tango with D
CN117234466B (zh) 企业管理软件开发方法、系统、设备及存储介质
Sharan Java Language Features: With Modules, Streams, Threads, I/O, and Lambda Expressions
Hollister et al. Blender “DNA” and Serialization
Evjen et al. . NET 4 Wrox PDF Bundle: Professional ASP. NET 4, Professional C# 4, VB 2010 Programmer's Ref, WPF Programmer's Ref, Professional Visual Studio 2010
Ali iPhone SDK 3 programming: advanced mobile development for Apple iPhone and iPod touch
Hollister Core Blender Development
Xue A simplified Java, J

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees