專利名稱:用于通用設(shè)備互操作性平臺(tái)的設(shè)備組招募和內(nèi)容再現(xiàn)的體系結(jié)構(gòu)、裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及用于在具有相似或不同特性的設(shè)備之間提供通信并且便于在這些設(shè)備之間形成無縫互操作性的系統(tǒng)、設(shè)備、方法、以及計(jì)算機(jī)程序軟件產(chǎn)品;尤其是涉及,用于在類似和不同的永久連接或間斷連接的電子設(shè)備中,共享內(nèi)容、應(yīng)用程序、資源以及控制的軟件、方法、系統(tǒng)以及設(shè)備。
背景技術(shù):
在電子設(shè)備,特別是便攜式設(shè)備和無線設(shè)備的數(shù)量和類型已經(jīng)大量膨脹,以及應(yīng)用程序的類型和設(shè)備類型膨脹的時(shí)期,已經(jīng)出現(xiàn)了在這些各種異類的不同的設(shè)備類型之間直接共享數(shù)據(jù)和代碼的相應(yīng)的需要,以實(shí)現(xiàn)僅能通過利用多個(gè)設(shè)備的電子的和程序的資源才能實(shí)現(xiàn)的應(yīng)用程序的目的。還出現(xiàn)了一種需要,并且對(duì)于設(shè)備用戶來說,這種需要的程度繼續(xù)增加,以能夠與其它設(shè)備通信,對(duì)于用戶需要的通信類型或數(shù)據(jù)傳輸或共享,可以提前建立或不建立所述的其它設(shè)備。例如,用戶可能已經(jīng)或希望在數(shù)字照相機(jī)中建立圖片集,并能夠接著將照片集直接傳輸?shù)絺€(gè)人數(shù)字助理(PDA)類型的設(shè)備、電視,或投影儀,以進(jìn)行觀看;或者傳輸?shù)酱鎯?chǔ)設(shè)備,以進(jìn)行儲(chǔ)存;或者傳輸?shù)酱蛴C(jī)。用戶還可能或者可選地希望將代碼傳輸?shù)搅硪粋€(gè)設(shè)備上,例如傳輸?shù)奖然脽羝嬖诘脑O(shè)備具有更大的屏幕分辨率或更好的圖形處理能力的設(shè)備,其中的代碼實(shí)現(xiàn)包含圖片、標(biāo)題、幻燈片索引等的幻燈片的順序放映。用戶也可能希望能夠在可用的打印機(jī)上選擇和打印幻燈片放映中的圖片的子集。存在這種代碼,數(shù)據(jù)以及內(nèi)容共享的許多其它例子。
傳統(tǒng)的互操作性問題、難題、以及限制數(shù)據(jù)和代碼的共享以及相關(guān)聯(lián)的設(shè)備計(jì)算資源的共享,以及相似(同類)和不同(異類)設(shè)備或設(shè)備類型之間的設(shè)備控制,在所屬領(lǐng)域被稱為“設(shè)備互操作性”,或簡(jiǎn)單地被稱為“互操作性”。包含在提供這種互操作性中的一些必須的和可選的突出問題包括(i)內(nèi)容的適配;(ii)內(nèi)容的格式;(iii)設(shè)備驅(qū)動(dòng)程序;(iv)設(shè)備到設(shè)備之間的通信;(v)單個(gè)的設(shè)備資源和能力;(vi)存在于設(shè)備上的應(yīng)用程序;(vii)在設(shè)備上加載應(yīng)用程序;(viii)與提供設(shè)備資源以支持互操作性相關(guān)聯(lián)的費(fèi)用;(ix)可互操作的設(shè)備的電源或能量管理;以及(x)在設(shè)備之間的連接可能是間斷和不可靠的互操作性環(huán)境中執(zhí)行的代碼的穩(wěn)定性。此外,(xi)實(shí)現(xiàn)互操作性所需要的開發(fā)、配置以及測(cè)試工作的范圍;(xii)獨(dú)立地開發(fā)和或分配互操作性組件中所固有的可靠性問題,甚至在存在詳細(xì)的互操作性標(biāo)準(zhǔn)的情況下也存在這種可靠性問題;以及(xiii)終端用戶必需具有高水平的技術(shù)知識(shí)并且付出可觀的時(shí)間和努力來管理互操作性的困難;(xiv)互操作性設(shè)備,數(shù)據(jù)和內(nèi)容的安全性;(xv)關(guān)于互操作性基礎(chǔ)設(shè)施可能產(chǎn)生的并引起其它的問題的尺寸,性能,功率管理以及成本折衷。。下面更加詳細(xì)地論述這些問題。
關(guān)于內(nèi)容適配,需要根據(jù)這種參數(shù)(應(yīng)用程序和數(shù)據(jù)類型決定的),如圖片尺寸、用戶界面、控制和特殊效果、內(nèi)容格式、性質(zhì)等,進(jìn)行內(nèi)容的智能調(diào)整或適配,這些都需要考慮從一種設(shè)備類型向另一種設(shè)備類型傳輸數(shù)據(jù),應(yīng)用程序,或控制的時(shí)間。這些被共同地稱為“適配”。當(dāng)共享內(nèi)容,應(yīng)用程序,以及控制時(shí),適配地越復(fù)雜,可互操作的設(shè)備組越大;每個(gè)設(shè)備上的性能越高級(jí),數(shù)據(jù)、信息和/或其它能力的傳輸就越有效,并且設(shè)備、代碼數(shù)據(jù)和內(nèi)容用于執(zhí)行應(yīng)用程序越容易。
第二互操作性問題是由于這種不合乎需要的要求,即用戶通常可能需要指定或至少考慮內(nèi)容的格式。如果需要擁有對(duì)另一個(gè)設(shè)備的互操作能力的用戶并不熟悉內(nèi)容的格式和/或其它設(shè)備將如何處理內(nèi)容格式,則即使該設(shè)備能夠與其它設(shè)備進(jìn)行通信,但是僅這一因素也可能對(duì)互操作性產(chǎn)生妨礙。
第三互操作性問題是由于這種不合乎需要的要求,即在可以實(shí)現(xiàn)互操作性前,用戶通??赡苄枰付?、考慮,或執(zhí)行在一個(gè)或多個(gè)設(shè)備上加載一個(gè)或多個(gè)專用的驅(qū)動(dòng)程序、代碼、數(shù)據(jù)或內(nèi)容。
第四互操作性問題是由于這種不合乎需要的要求,即用戶指定、考慮,或選擇用戶設(shè)備和一個(gè)或多個(gè)其它設(shè)備之間的通信所采用的物理通信機(jī)制和協(xié)議,所述的一個(gè)或多個(gè)其它設(shè)備中的每一個(gè)可能具有或要求通信機(jī)制、協(xié)議、接口等。
第五互操作性問題是由于這種不合乎需要的要求,即用戶可能需要考慮或選擇哪個(gè)設(shè)備將具有與他人的設(shè)備進(jìn)行互操作或者與需要的數(shù)據(jù)或應(yīng)用程序進(jìn)行互操作所需要的能力和存儲(chǔ)器、處理器以及其它性能。
第六互操作性問題是由于這種不合乎需要的要求,即用戶可能需要指定、考慮,和/或加載必須存在于一些或所有被包含的和可能被包含的可互操作的設(shè)備上的應(yīng)用程序。
第七互操作性問題是由于在一個(gè)或多個(gè)設(shè)備上的代碼、數(shù)據(jù),或內(nèi)容的丟失的、過時(shí),或不兼容的版本產(chǎn)生的完全的或部分的應(yīng)用程序失敗。
第八互操作性問題是由于這種不合乎需要的要求,即設(shè)備需要擁有實(shí)現(xiàn)應(yīng)用程序的所有代碼,所述應(yīng)用程序需要在生產(chǎn)時(shí)或之前的一些時(shí)間已經(jīng)存在于設(shè)備上,或者被用戶明確地下載到一些或所有設(shè)備上。
第九互操作性問題是由于與提供實(shí)現(xiàn)通信所需要的處理器或CPU資源,存儲(chǔ)器資源,電子門或邏輯或其它物理基礎(chǔ)設(shè)施的數(shù)量和將要進(jìn)行互操作的設(shè)備上的其它協(xié)議和應(yīng)用程序相關(guān)聯(lián)的貨幣成本。
第十互操作性問題是由于需要提供有效的功率或能量管理方法以實(shí)現(xiàn)將進(jìn)行互操作的便攜式或移動(dòng)設(shè)備所需要的延長(zhǎng)電池壽命或減小電池大小的要求。盡管對(duì)于短期的互操作性沒有特別地進(jìn)行要求,但是也是十分需要這種電源管理的,從而與其它設(shè)備進(jìn)行的互操作不會(huì)在這種設(shè)備上產(chǎn)生這種電池能量耗盡的問題,用戶本來很少使用這些其它設(shè)備的能力或者不愿允許另一個(gè)用戶對(duì)這些設(shè)備進(jìn)行存取。
第十一互操作性問題是由于對(duì)于應(yīng)用程序的穩(wěn)定度的要求,其中在設(shè)備之間的連接常常是間斷的或不穩(wěn)定的或不可靠的情況下需要繼續(xù)執(zhí)行這種應(yīng)用程序。例如,當(dāng)?shù)诙O(shè)備移出區(qū)域或另外地不能對(duì)來自第一設(shè)備的信息進(jìn)行回答時(shí),在與第二設(shè)備進(jìn)行互操作和通信的第一設(shè)備上的用于實(shí)現(xiàn)應(yīng)用程序的代碼本身不會(huì)凍結(jié)、中止,或以其它方式產(chǎn)生嚴(yán)重的問題或?qū)е略O(shè)備自身的凍結(jié)、中止,或產(chǎn)生嚴(yán)重的問題。而且,理想的是,如果這種第二設(shè)備再次變得可靠和可用,則可以自動(dòng)地恢復(fù)和更新實(shí)現(xiàn)互操作性應(yīng)用程序所需要的所有代碼、數(shù)據(jù)以及內(nèi)容。
第十二互操作性問題是由于應(yīng)用程序的不可靠性,其中設(shè)備是被獨(dú)立的制造商根據(jù)互操作性標(biāo)準(zhǔn)制造的,而該互操作性標(biāo)準(zhǔn)固有地不能預(yù)測(cè)實(shí)際的和將來的設(shè)備需求和能力,并且程序員或電路設(shè)計(jì)者不能完全地和正確地理解、執(zhí)行該互操作性標(biāo)準(zhǔn),并且也不能正確地對(duì)這種執(zhí)行進(jìn)行配置。第十三互操作性問題是由于緩慢的執(zhí)行代碼的速度,這種速度不能依賴于圖形、視頻、聲音等所需要的優(yōu)化。
第十四互操作性問題是由于上面所列舉出的所有問題阻礙用戶和提供商,而不能使用可互操作的代碼、數(shù)據(jù)以及內(nèi)容,來實(shí)現(xiàn)可能用于互操作性的應(yīng)用程序和設(shè)備。
所述的十四個(gè)互操作性的問題僅是可能產(chǎn)生的問題類型的示例,不被看作是問題的完整列表或者也不代表在所有情況下產(chǎn)生的問題。例如,在制造設(shè)備時(shí),彼此將進(jìn)行互操作的兩個(gè)相同的設(shè)備之間的互操作性不會(huì)產(chǎn)生這里所述的任何或所有問題,但是這種相同類型設(shè)備的互操作性并不代表設(shè)備用戶現(xiàn)在所面臨的更一般性的問題,并且為解決不同設(shè)備互操作性問題的適當(dāng)?shù)膰L試也是不完善的、不是非常有洞察力的,并且也是明顯不成功的。
傳統(tǒng)的靜態(tài)的和程序性的解決嘗試對(duì)于提供互操作性解決方案的傳統(tǒng)的嘗試一般被分為兩種類型,即(i)靜態(tài)的互操作性解決方案(“靜態(tài)的”),或(ii)程序性的互操作性解決方案(“程序性的”)。傳統(tǒng)的靜態(tài)的解決方案要求每個(gè)設(shè)備都支持相同的專用通信協(xié)議,并發(fā)送具有固定的字段布局的特定的嚴(yán)格規(guī)定的數(shù)據(jù)結(jié)構(gòu)。在靜態(tài)的方法中,在這些設(shè)備之間建立互操作性之前,語義、代碼,以及顯示能力必須存在于所有的設(shè)備上。在制造所包括的所有設(shè)備時(shí),每個(gè)內(nèi)容類型、應(yīng)用程序,或設(shè)備能力必須是已知的、被執(zhí)行的并被安裝;或者可選地,用戶必須按照需要在啟動(dòng)需要的設(shè)備、軟件數(shù)據(jù)或內(nèi)容的互操作性之前,安裝應(yīng)用程序、協(xié)議,和/或驅(qū)動(dòng)程序。由于用戶可能并不是受過訓(xùn)練的信息技術(shù)專家,或者可能并不了解或擁有驅(qū)動(dòng)程序、應(yīng)用程序、操作系統(tǒng)組件、協(xié)議等的備份,因此就不能在可用的時(shí)間內(nèi)提供需要的互操作性。而且,靜態(tài)的解決方案也通常需要執(zhí)行專用的靜態(tài)解決方案組。
例如,在數(shù)字照相機(jī)和電視或顯示設(shè)備(TV)之間共享一組具有幻燈片功能的圖片可能需要共同的靜態(tài)協(xié)議,例如,用于將幻燈片圖像數(shù)據(jù)和幻燈片次序或順序信息發(fā)送到TV的藍(lán)牙無線能力。同時(shí)還需要用于幻燈片和幻燈片次序的靜態(tài)內(nèi)容格式,以被TV識(shí)別為其知道如何進(jìn)行處理的信息。在TV和數(shù)字照相機(jī)上必須存在至少一個(gè)可以以特定的內(nèi)容格式表演和控制幻燈片放映的靜態(tài)幻燈片放映程序。用戶可以或不必分別地開始傳遞圖像或圖片以及幻燈片次序信息,在TV上關(guān)聯(lián)并加入信息,以及在TV上運(yùn)行正確的幻燈片放映應(yīng)用程序。根據(jù)TV和數(shù)字照相機(jī)上的靜態(tài)幻燈片放映程序的復(fù)雜度,可以使用也可以不使用數(shù)字照相機(jī)上的控制器來控制在照相機(jī)上啟動(dòng)的TV上的幻燈片放映。當(dāng)不能使用這種基于照相機(jī)的控制時(shí),就必須提供一些其它的用于進(jìn)行控制的機(jī)制。靜態(tài)方法能夠產(chǎn)生高度優(yōu)化的解決方案,以很好地理解在制造能夠互操作的所有設(shè)備類型時(shí)就已知的專用應(yīng)用程序。然而靜態(tài)方法具有許多限制,包括在制造時(shí)要了解并且按照慣例實(shí)現(xiàn)幾乎所有的能力,在制造后的有限的升級(jí)和改正錯(cuò)誤的能力;以及這種傳統(tǒng)的要求,即每個(gè)靜態(tài)程序的執(zhí)行必須被正確地和完整地移植,以在不同的設(shè)備上運(yùn)行,并在進(jìn)行互操作前就存在于所有的設(shè)備上。這種要求通常是通過為特定的應(yīng)用程序、通信介質(zhì)和要求互操作性的需要的設(shè)備組加載和更新特定的驅(qū)動(dòng)程序來實(shí)現(xiàn)的。
由于必然會(huì)存在不同版本的標(biāo)準(zhǔn)和應(yīng)用程序,因此甚至在可以使用靜態(tài)方案的情況下,可靠性也會(huì)被大打折扣。因此當(dāng)兩個(gè)設(shè)備希望共享數(shù)據(jù)或程序時(shí),當(dāng)設(shè)備是遵循不同版本的標(biāo)準(zhǔn),或者程序遵循不同版本的標(biāo)準(zhǔn),或者在設(shè)備上存在不同版本的應(yīng)用程序時(shí),就會(huì)出現(xiàn)故障。其它的可靠性問題是由于在用于進(jìn)行互操作的標(biāo)準(zhǔn)集的獨(dú)立執(zhí)行中不留心的錯(cuò)誤或簡(jiǎn)化操作。當(dāng)任何兩個(gè)實(shí)施方案試圖一起工作時(shí),這種標(biāo)準(zhǔn)的執(zhí)行就可能以不可預(yù)料的方式進(jìn)行互相影響。通常在所有的設(shè)備組上測(cè)試所有標(biāo)準(zhǔn)的實(shí)施方案的所有排列是不現(xiàn)實(shí)的或者是根本不可能的,尤其當(dāng)制造初始設(shè)備時(shí)與初始設(shè)備進(jìn)行互操作的所有目標(biāo)設(shè)備并不存在時(shí),更是如此。
對(duì)靜態(tài)方法的更重要的限制之一在于當(dāng)設(shè)備和/或應(yīng)用程序的數(shù)量N變大時(shí),使數(shù)量為N個(gè)的設(shè)備或應(yīng)用程序進(jìn)行互操作所需要的工作量增長(zhǎng)也極迅速。目前制造商在為內(nèi)容類型、應(yīng)用程序(“程序”)、通信協(xié)議,等建立成百個(gè)靜態(tài)標(biāo)準(zhǔn)以試圖產(chǎn)生更有限數(shù)量的設(shè)備組時(shí)是失敗的,其中的設(shè)備組可以通過不斷增大的大型設(shè)備組和應(yīng)用程序進(jìn)行互操作。通常這還要求每個(gè)設(shè)備都具有存儲(chǔ)器、屏幕容量、控制器以及處理器和電池能量,以支持用于所有需要的可互操作的設(shè)備上的每個(gè)需要的互操作性選項(xiàng)的每個(gè)靜態(tài)解決方案。否則就不能實(shí)現(xiàn)真正的設(shè)備和應(yīng)用程序的互操作性。為了更好地說明該傳統(tǒng)的問題和限制,考慮目前適配需要對(duì)必須與其它設(shè)備(N-1個(gè)設(shè)備)類型進(jìn)行共享的每個(gè)設(shè)備(N個(gè)設(shè)備)類型進(jìn)行軟件工程開發(fā)計(jì)劃。從開發(fā)的觀點(diǎn)來看,這是一個(gè)N×N即N2級(jí)的問題,因?yàn)樵谛枰舜诉M(jìn)行互操作的所有N個(gè)設(shè)備的范圍內(nèi),要考慮、形成、執(zhí)行和測(cè)試N×(N-1)次適配。
而且,隨著設(shè)備的數(shù)量增加以及需要的適配次數(shù)增大到N2,由于總體復(fù)雜度增加,因此得到高質(zhì)量產(chǎn)品的花費(fèi)和困難將以更快的速率增加。這是因?yàn)榈玫礁呖煽啃院透哔|(zhì)量的軟件和硬件方案的困難隨總體復(fù)雜度的增加而增加。這就不單純是“源代碼大小”的問題,而是由于當(dāng)試圖使來自不同制造商的設(shè)備共同工作時(shí)普遍遇到的這種的問題,包括行為的不可預(yù)測(cè)性,事件的不可預(yù)測(cè)性,未知的將來能力,等等。
例如,隨著設(shè)備的數(shù)量從5增加到6,互操作性的適配要求則根據(jù)關(guān)系式N×(N-1)從20增加到30。并且隨著這種增加,計(jì)劃的總體復(fù)雜度會(huì)以更快的速度增加。
使N個(gè)設(shè)備共同工作的N-平方級(jí)的問題基本要求圖1所示的N2的適配。應(yīng)該知道使用靜態(tài)方法的傳統(tǒng)的設(shè)備內(nèi)的協(xié)同工作對(duì)于進(jìn)行使用的用戶來說可能是相對(duì)簡(jiǎn)單的,但是卻要求更高程度的開發(fā)、管理和配置工作以及不斷的更新,以在舊的設(shè)備、應(yīng)用程序,以及數(shù)據(jù)類型和新的設(shè)備、應(yīng)用程序,以及數(shù)據(jù)類型之間保持兼容性和互操作性。
參照?qǐng)D2所示,表示設(shè)備內(nèi)協(xié)同工作的互相作用,或使用強(qiáng)力法的僅八個(gè)設(shè)備類型的有限的互操作性,其需要56次適配和另外的56個(gè)測(cè)試程序。
除去強(qiáng)力法的N2的問題,大多數(shù)靜態(tài)方法還包括組合許多標(biāo)準(zhǔn)(或多個(gè)標(biāo)準(zhǔn))的工作。來源于微軟的UPnP(通用即插即用)方法或許擁有最大范圍的靜態(tài)方法。UPnP是通過包含一組靜態(tài)(不是基于程序的)標(biāo)準(zhǔn),來解決一些與設(shè)備互操作性相關(guān)聯(lián)的問題的靜態(tài)的非程序化的方法,該方法試圖列舉所有不同類型的設(shè)備和服務(wù),其中的每個(gè)設(shè)備和服務(wù)都具有不同的XML或基于數(shù)據(jù)結(jié)構(gòu)的描述。然而,即使是UPnP方法也有許多限制,下面將簡(jiǎn)要地描述其中的一些限制。
首先,UPnP是大型化的方法,這在于其需要大量的模塊、代碼、電源,以及存儲(chǔ)器來進(jìn)行運(yùn)行。這就這種方法不適于具有較小的處理器、小的隨機(jī)存取存儲(chǔ)器、以及小的電池容量的低成本電池供電的設(shè)備。
第二,UPnP幾乎沒有提供優(yōu)化內(nèi)容或性能的能力。UPnP通常假設(shè)一種類型的應(yīng)用程序、內(nèi)容,或用戶接口會(huì)適合于被包括的所有設(shè)備。在十年前對(duì)于基于微軟Windows的桌上個(gè)人計(jì)算機(jī)(PC)的來說,這種假設(shè)可能是合理的,但是現(xiàn)在對(duì)于到處都是必須進(jìn)行互操作的設(shè)備的世界來說,這已經(jīng)是不合理的假設(shè)和根據(jù)了,其中的互操作的設(shè)備可以是尋呼機(jī)、數(shù)字照相機(jī),以及個(gè)人計(jì)算機(jī),其各不相同,更不用說可能在以后的幾十年中出現(xiàn)的混合的和不同的電子設(shè)備組了。
第三,UPnP僅提供了有限的用戶接口組,不能滿足現(xiàn)在可用的大型的不同設(shè)備的組的要求。
第四,UPnP要求執(zhí)行要求的任務(wù)所需要的程序和驅(qū)動(dòng)程序在其被使用之前就已經(jīng)存在于所有設(shè)備上。
第五,盡管UPnP的目的至少是部分地避免N-平方(N2)的問題,但是事實(shí)是如果獨(dú)立執(zhí)行復(fù)雜標(biāo)準(zhǔn)的所有排列會(huì)產(chǎn)生可靠的互操作性,正如上面所述的,則使用UPnP作為互操作性的根據(jù)仍將需要大量的N-平方(N2)次開發(fā)/配置/測(cè)試的工作,以產(chǎn)生需要對(duì)所有進(jìn)行互操作的設(shè)備移植、分配和測(cè)試的程序、代碼、數(shù)據(jù)以及內(nèi)容的新的應(yīng)用程序。
第六,UPnP程序、設(shè)備、內(nèi)容以及標(biāo)準(zhǔn)必須都是同步的,從而同時(shí)配置相同的或至少兼容的版本和更新。
第七,隨著設(shè)備和內(nèi)容能力的發(fā)展,現(xiàn)有的基于UPnP程序、數(shù)據(jù)和內(nèi)容的設(shè)備將不能支持新的設(shè)備。
第八,維持現(xiàn)有設(shè)備、標(biāo)準(zhǔn)(包括UPnP),和應(yīng)用程序的版本的兼容性的成本更快速地增加了全部計(jì)劃的復(fù)雜度。
第九,隨著計(jì)劃的復(fù)雜度的增加,由于作為基于標(biāo)準(zhǔn)-靜態(tài)方法的UPnP的復(fù)雜性和差異性中所固有的問題,使用的方便性和可靠性降低了。
第十,UPnP仍不能解決在設(shè)備之間發(fā)送一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)的頻繁要求所強(qiáng)加的需要,特別當(dāng)這些數(shù)據(jù)或數(shù)據(jù)結(jié)構(gòu)是以人類可讀的文本格式表示時(shí)更是如此,因?yàn)槿祟惪勺x的文本格式與二進(jìn)制表示相比需要更大的傳輸帶寬和時(shí)間。而且,在設(shè)備之間發(fā)送的許多數(shù)據(jù)結(jié)構(gòu)是以XML,人類可讀的文本格式表示的,而不是以二進(jìn)制或更不通用的格式表示的,其中使用XML格式要求更多的CPU操作、存儲(chǔ)器和/或軟件程序代碼的數(shù)量,以執(zhí)行XML所需要的CPU密集型的解析操作。
最后是關(guān)于傳統(tǒng)的靜態(tài)方法對(duì)設(shè)備和應(yīng)用程序互操作性所強(qiáng)加的一些限制,靜態(tài)方法通常限制協(xié)議、內(nèi)容類型和應(yīng)用程序類型的數(shù)量,以降低總體復(fù)雜度和基于標(biāo)準(zhǔn)的執(zhí)行步驟的多少。一個(gè)例子是UPnP僅允許TCP/IP作為基本的通信協(xié)議。這就有效地降低了其它重要的已有通信協(xié)議的有效利用,例如,藍(lán)牙、USB、MOST,以及IR和所有其它的非TCP/IP協(xié)議。
傳統(tǒng)的程序性解決方案的嘗試靜態(tài)標(biāo)準(zhǔn)方法的一種替換方案依賴于程序性標(biāo)準(zhǔn)的建立。普遍存在的是以硬件實(shí)現(xiàn)或以軟件仿真的程序性標(biāo)準(zhǔn)技術(shù)。存在許多的硬件微處理器,每個(gè)微處理器具有針對(duì)不同類型的問題進(jìn)行的優(yōu)化的指令集和接口,并且還存在許多高級(jí)軟件仿真的指令集和實(shí)際的環(huán)境,關(guān)于特定的任務(wù)組對(duì)其進(jìn)行優(yōu)化。這些包括例如,Java(通常對(duì)程序的可移植性和簡(jiǎn)易性進(jìn)行優(yōu)化的方法),PostScript(通常對(duì)表示打印的頁面和打印機(jī)控制功能進(jìn)行優(yōu)化的方法),以及Storymail Stories(通常對(duì)有效地表示很寬范圍內(nèi)的豐富的多媒體消息進(jìn)行優(yōu)化的方法)。Java和PostScript是計(jì)算機(jī)技術(shù)領(lǐng)域所熟知的。例如,在于2003年1月9日出版的名稱為“用于安全通信和信息傳遞的硬件體系結(jié)構(gòu)、操作系統(tǒng)及網(wǎng)絡(luò)傳輸中性系統(tǒng)(neutralsystem)、方法和計(jì)算機(jī)程序產(chǎn)品”,發(fā)明人為Michael L Wenocur、RobertW.Baldwin,和Daniel H.Illowsky,美國(guó)專利申請(qǐng)出版號(hào)為20030009694 A1的專利,于2002年11月7日出版的名稱為“安全證書以及用于發(fā)布和使用該安全證書的系統(tǒng)和方法”,發(fā)明人為Michael L Wenocur、Robert W.Baldwin,和Daniel H.Illowsky,美國(guó)專利申請(qǐng)出版號(hào)為20020165912 A1的專利,以及其它專利申請(qǐng)中描述了Storymail Stories和相關(guān)系統(tǒng)和方法的各個(gè)方面。程序性互操作性方法典型地包括在所有要進(jìn)行互操作的設(shè)備上建立或另外地具有或提供共同的運(yùn)行時(shí)間的環(huán)境,從而除了靜態(tài)數(shù)據(jù)結(jié)構(gòu)和靜態(tài)應(yīng)用程序外還可以在設(shè)備之間發(fā)送程序、步驟、數(shù)據(jù)和內(nèi)容。目前一種主要的互操作性程序性解決方案是具有JINI擴(kuò)展的的Java平臺(tái)。作為基于Java的程序性方法的例子,以Java編寫的幻燈片放映可以包括或參考圖片或幻燈片的次序或順序數(shù)據(jù),詢問其它設(shè)備,使內(nèi)容與其它設(shè)備適配,并向TV發(fā)送信息和Java幻燈片放映程序。在生產(chǎn)出照相機(jī)后,Java幻燈片放映程序可以在照相機(jī)上運(yùn)行,并即使幻燈片放映程序沒有存在于TV之上,也能實(shí)現(xiàn)與Java啟動(dòng)的TV的互操作性。
盡管已經(jīng)普遍地使用Java,并且Java在提供相應(yīng)的有限的互操作性方面也取得了一些有限的成功,但是Java仍具有一些嚴(yán)重的不足,這些不足阻止了Java的更廣泛的應(yīng)用,特別是對(duì)于小的移動(dòng)設(shè)備更是如此,在這些小的移動(dòng)設(shè)備中,成本,電源效率,處理器效率,用于存儲(chǔ)程序代碼、數(shù)據(jù),和臨時(shí)緩存的存儲(chǔ)器效率是非常重要的問題。同時(shí),為解決運(yùn)行在不同設(shè)備上的應(yīng)用程序的二進(jìn)制兼容性的Java虛擬機(jī)(VM)方法恰恰與為什么設(shè)備存在的原因相沖突。Java和其它傳統(tǒng)的程序性互操作性方法都具有嚴(yán)重的限制。下面描述五個(gè)示例性的限制。
首先,Java虛擬機(jī)方法使或者至少試圖使所有的設(shè)備對(duì)與應(yīng)用程序來說如同相同的虛擬計(jì)算機(jī),以允許相同的二進(jìn)制代碼(Java二進(jìn)制代碼)運(yùn)行在所有設(shè)備上。為了維持二進(jìn)制兼容性,就需要避免試圖存取并沒有被預(yù)定義為虛擬機(jī)的定義和實(shí)現(xiàn)方案一部分的設(shè)備能力。因此如果需要本地功能來存取不是共同虛擬機(jī)定義一部分的任何設(shè)備上的能力,則在多個(gè)設(shè)備上就失去了二進(jìn)制兼容性。由于多數(shù)非PC設(shè)備的硬件和軟件通常是為特定的用途、構(gòu)成因素、價(jià)格點(diǎn)、用戶接口或功能而進(jìn)行指定和優(yōu)化的,因此對(duì)于經(jīng)常為設(shè)備指定的應(yīng)用程序,通常必須存取這些設(shè)備的基本的獨(dú)特的本地功能或能力。對(duì)于多數(shù)便攜式或?qū)S迷O(shè)備,它們存在的原因正是因?yàn)閷?duì)獨(dú)特的不同能力和功能的需要。這就違背了隱藏設(shè)備之間的不同以使它們對(duì)應(yīng)用程序看起來都相同的Java虛擬機(jī)的方法。
第二,Java是一種針對(duì)編程的簡(jiǎn)易性進(jìn)行優(yōu)化但是以執(zhí)行效率和資金利用率為代價(jià)的通用語言。因此,對(duì)于許多具有一般的處理能力和很少可用的存儲(chǔ)器的小設(shè)備來說或者當(dāng)成本是非常重要的因素時(shí),Java不是效率最高的或最有效的解決方案。
第三,使用Java程序性方法不能確保多媒體內(nèi)容的響應(yīng)次數(shù)。多數(shù)Java程序嚴(yán)重地依賴于大小變化的存儲(chǔ)器結(jié)構(gòu)的頻繁分配和隔離,這就導(dǎo)致了存儲(chǔ)器分段存儲(chǔ)。這種存儲(chǔ)器分段存儲(chǔ)通常會(huì)產(chǎn)生設(shè)備中的處理器必須停止再現(xiàn)內(nèi)容而執(zhí)行存儲(chǔ)器中的無用數(shù)據(jù)收集的時(shí)間段。當(dāng)這種情況發(fā)生時(shí),用戶通常就會(huì)遇到平滑的音頻和視頻再現(xiàn)中的中斷。
第四,Java存在嚴(yán)重的速度和大小的問題。Java和其相關(guān)的技術(shù)和互操作性所需要的庫(kù)相對(duì)較大,并需要相對(duì)較多的進(jìn)行處理的CPU周期數(shù),和相對(duì)大的用于進(jìn)行存儲(chǔ)的存儲(chǔ)器空間。以Java編寫的互操作性程序包括用戶接口、多媒體再現(xiàn)、設(shè)備列舉、平臺(tái)上設(shè)備互操作性的穩(wěn)定性、發(fā)送到不同類型設(shè)備的代碼和數(shù)據(jù)的動(dòng)態(tài)適配,這種互操作性程序需要編寫和交換大量的代碼,這是因?yàn)楸仨毷褂脦?kù),或?qū)S玫腏ava代碼序列來建立所有這些功能,并且這些操作都不是Java指令集或環(huán)境本身所具有的。其結(jié)果是用于互操作性的Java程序非常大并且運(yùn)行速度很慢,從而限制了其在具有有限的處理器能力、電池壽命的設(shè)備上或成本非常重要的情況下的應(yīng)用。當(dāng)設(shè)備不具有足夠的資源時(shí),基于Java的互操作性解決方案就不能實(shí)現(xiàn)。
第五,Java至少為互操作性提供有限的和不完全的基本實(shí)現(xiàn)方案。這就使得大量的庫(kù)必須存在于進(jìn)行互操作的所有設(shè)備上,或者具有到包含必要的程序代碼的服務(wù)器的高速的持續(xù)的連接。必須在Java語言自身中提供沒有包括在Java基本指令集中的操作的性能,這就大大地限制了相對(duì)于本地代碼的運(yùn)行時(shí)間性能,其中可用本地代碼實(shí)現(xiàn)這些操作。失去互操作性的基本操作包括對(duì)于下述的本地支持(i)多媒體動(dòng)畫重放;(ii)程序、數(shù)據(jù)、內(nèi)容、用戶接口或控制到目標(biāo)的其它設(shè)備的適配;(iii)定制的程序的計(jì)算機(jī)生成從而產(chǎn)生內(nèi)容的設(shè)備可以自動(dòng)地和容易地將該內(nèi)容與互操作性程序融合在一起;(iv)在寬范圍的各種協(xié)議內(nèi)發(fā)現(xiàn)設(shè)備、服務(wù)和資源;(v)在不同設(shè)備上運(yùn)行的過程的同步和/或串行化;(vi)設(shè)備電源管理;(vii)當(dāng)設(shè)備間斷地失去和恢復(fù)其連接時(shí),應(yīng)用程序和同步的恢復(fù)。
通常當(dāng)證明Java VM規(guī)范缺乏一種類型的設(shè)備或應(yīng)用程序時(shí),就會(huì)出現(xiàn)新的Java VM規(guī)范以說明現(xiàn)在已知的這些新的設(shè)備類型的本地支持要求;然而,為一個(gè)VM編寫的Java程序通常不是二進(jìn)制兼容的或可以與遵循不同的VM規(guī)范的設(shè)備進(jìn)行互操作的。針對(duì)各種設(shè)備類型存在JavaVM規(guī)范,包括J2ME,MIDP 1.0,MIDP 2.0,以及CDC,但是更加不具有互操作性的Java VM規(guī)范和執(zhí)行過程的增加繼續(xù)導(dǎo)致程序和設(shè)備的類型和形式的分段存儲(chǔ),從而通過使用Java VM,實(shí)現(xiàn)了更小程度的互操作性。
Xerox帕洛阿爾托(Palo Alto)研究聯(lián)合機(jī)構(gòu)(PARC)宣布對(duì)Java和Jini互操作性技術(shù)進(jìn)行改進(jìn),其被稱為“Obje”。Obje是明顯地基于Java的,或者作為一個(gè)替換方案,是未規(guī)定的和未實(shí)現(xiàn)的類似的基于虛擬機(jī)的技術(shù)。盡管Obje針對(duì)一些提供程序性方法的方式,其中的程序性方法是對(duì)有效的設(shè)備編組是需要的并使所有設(shè)備不需要使程序移植或存在于所有機(jī)器上,但是可以想到Obje執(zhí)行過程具有與Java加Jini方法相似的能力和限制,因?yàn)樗麄儧]有為使用的程序性基礎(chǔ)提供顯示與Java VM模型的分歧的細(xì)節(jié)。
PostScript是另一種程序性方法,已經(jīng)存在了相當(dāng)長(zhǎng)的時(shí)間,提供打印頁面描述語言,該打印頁面描述語言可以非常有效地在PostScript文件和PostScript打印機(jī)之間建立高度的互操作性。PostScript文件是這種程序,即當(dāng)其在打印機(jī)內(nèi)的PostScript軟件引擎上執(zhí)行時(shí),控制硬件打印機(jī)引擎并重新產(chǎn)生打印頁面的圖像,同時(shí)利用其自己所存在的打印機(jī)上的可能的最高的分辨率。PostScript被極大地限制于文件和打印機(jī)的互操作性。對(duì)于該限制的一些原因包括這種事實(shí),即PostScript文件是以人類可讀文本表示的。這就相對(duì)于二進(jìn)制程序極大地增加了文件和程序的大小。當(dāng)程序運(yùn)行時(shí),文本需要解析操作,這就要求更多的處理器周期,并且如果程序是以二進(jìn)制形式表示的,則需要暫時(shí)存儲(chǔ)器。而且,PostScript對(duì)于如下各項(xiàng)并不提供任何重要的本地支持(i)多媒體視頻/音頻/動(dòng)畫重放;(ii)為其它目標(biāo)設(shè)備適配應(yīng)用程序、數(shù)據(jù)、內(nèi)容、用戶接口或控制;(iii)設(shè)備、服務(wù)以及資源發(fā)現(xiàn);(iv)運(yùn)行在多個(gè)設(shè)備上的程序的同步和串行化;(v)設(shè)備電源管理;(vi)發(fā)現(xiàn)并使用其它設(shè)備;(vii)維護(hù)設(shè)備之間的穩(wěn)定的連接;或(viii)有效地存取各種存儲(chǔ)介質(zhì),包括現(xiàn)在普通用在設(shè)備上的共用的閃存。
Storymail Stories提供為包括多媒體消息而設(shè)計(jì)的可變長(zhǎng)度的程序指令集。例如,在2003年1月9日出版的名稱為“用于安全通信和信息傳遞的硬件體系結(jié)構(gòu)、操作系統(tǒng)及網(wǎng)絡(luò)傳輸中立系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品”,發(fā)明人為Michael L Wenocur、Robert W.Baldwin,和Daniel H.Illowsky,美國(guó)專利申請(qǐng)出版號(hào)為20030009694 A1的專利,于2002年11月7日出版的名稱為“安全證書以及用于發(fā)布和使用該安全證書的系統(tǒng)和方法”,發(fā)明人為Michael L Wenocur、Robert W.Baldwin,和Daniel H.Illowsky,美國(guó)專利申請(qǐng)出版號(hào)為20020165912 A1的專利,以及其它專利申請(qǐng)中描述了Storymail Stories和相關(guān)系統(tǒng)和方法的各個(gè)方面。
Storymail發(fā)明包括Storymail Story結(jié)構(gòu)和相關(guān)的技術(shù),它是由與該專利相同的發(fā)明人Daniel Illowsky發(fā)明的。Storymail指令集允許以所謂的通用程序格式表示自動(dòng)編碼的多媒體內(nèi)容,“stories”提供了相對(duì)于迄今為止已知的多媒體內(nèi)容表示的許多優(yōu)點(diǎn)。然而,Storymail技術(shù)沒有完全解決設(shè)備到設(shè)備的互操作性問題,并且如果嘗試使用Stroymail技術(shù)來實(shí)現(xiàn)設(shè)備到設(shè)備的互操作性,則一些問題和限制就會(huì)馬上變得很明顯了。首先,Storymail指令集是為需要使用許多臨時(shí)存儲(chǔ)器的小的引擎優(yōu)化的。第二,Storymail指令集需要在運(yùn)行內(nèi)容時(shí)執(zhí)行專用的線程模型,加重了負(fù)擔(dān)。第三,Storymail Story甚至需要對(duì)基本的內(nèi)容類型進(jìn)行自動(dòng)編碼,例如JPEG或位像。第四,Storymail Story技術(shù)沒有提供對(duì)設(shè)備、服務(wù),或資源發(fā)現(xiàn)的本地支持。第五,Storymail Story技術(shù)沒有對(duì)運(yùn)行在多個(gè)設(shè)備上的程序同步的本地基本支持。因此,盡管Storymail技術(shù)和通用程序媒體格式相對(duì)于目前的傳統(tǒng)技術(shù)提供了許多進(jìn)步,但是并沒有令人滿意地解決電子和計(jì)算機(jī)領(lǐng)域明顯存在的設(shè)備到設(shè)備的互操作性問題。
因此,顯而易見的是靜態(tài)的和當(dāng)前程序性方法都不能提供令人滿意的設(shè)備到設(shè)備的互操作性,特別是對(duì)于不同的設(shè)備和先驗(yàn)未知的應(yīng)用程序來說,更是如此。當(dāng)考慮當(dāng)前的客戶機(jī)-服務(wù)器和對(duì)等設(shè)備內(nèi)互操作性模型時(shí),這種問題就變得更加復(fù)雜。
傳統(tǒng)的客戶機(jī)-服務(wù)器和對(duì)等模型在所屬領(lǐng)域的當(dāng)前狀態(tài)中,在多個(gè)設(shè)備上運(yùn)行的進(jìn)行互操作的程序通常使用客戶機(jī)-服務(wù)器模型或?qū)Φ饶P汀?br>
在客戶機(jī)-服務(wù)器環(huán)境模型中,一個(gè)設(shè)備(例如,服務(wù)器)提供服務(wù),而另一個(gè)設(shè)備(例如,客戶機(jī))使用該服務(wù)。這就允許多個(gè)客戶機(jī)設(shè)備利用一個(gè)更有能力的設(shè)備來存儲(chǔ)和處理數(shù)據(jù),同時(shí)重量更輕的客戶機(jī)設(shè)備僅需要足夠的能量來請(qǐng)求和顯示結(jié)果。客戶機(jī)-服務(wù)器方法的限制在于通常服務(wù)器必須在網(wǎng)絡(luò)上注冊(cè),并且在任何時(shí)刻都能被客戶機(jī)以相對(duì)高速的連接進(jìn)行存取。
在對(duì)等環(huán)境模型中,通常假設(shè)任何互操作的設(shè)備都具有執(zhí)行應(yīng)用程序所需要的所有功能。同時(shí)在對(duì)等模型中,通常進(jìn)行互操作的所有設(shè)備都必須在建立連接之前了解將被使用的程序或服務(wù),從而它們能夠?qū)线m的連接和協(xié)議達(dá)成一致。必須具有執(zhí)行應(yīng)用程序的全部能力,并且要求對(duì)等的程序協(xié)議層預(yù)先存在于所有進(jìn)行互操作的設(shè)備上,這種要求是將對(duì)等模型應(yīng)用到設(shè)備的互操作性上的重要限制。實(shí)際上,對(duì)等設(shè)備通常會(huì)遇到軟件的不同的非理想的執(zhí)行過程或版本,這些軟件的不同的非理想執(zhí)行過程或版本對(duì)于不可預(yù)測(cè)的迭代不能進(jìn)行協(xié)作。為了改正這些問題,通常必須更新、分配和安裝驅(qū)動(dòng)程序或其它軟件。盡管這樣通常能夠改正互操作性問題,但是管理、執(zhí)行、分配和與故障相關(guān)的失效以及修復(fù)這些失效所需要的復(fù)雜度、完善度和時(shí)間仍然是基于對(duì)等設(shè)備的互操作性的嚴(yán)重問題。
在個(gè)人計(jì)算機(jī)世界中,盡管具有有限的互操作性但是當(dāng)今最流行的平臺(tái)是微軟的WindowsTM操作系統(tǒng)。在微軟的WindowsTM操作系統(tǒng)下,不管PC是由IBM、Toshiba、Sharp、Dell或任何其它的制造商制造的,原理上任何應(yīng)用程序二進(jìn)制圖像可以在運(yùn)行微軟的WindowsTM操作系統(tǒng)的任何標(biāo)準(zhǔn)的PC體系結(jié)構(gòu)設(shè)備上運(yùn)行和使用。然而,實(shí)際上,在真實(shí)世界操作環(huán)境中即使是微軟的Windows也具有關(guān)于互操作性的限制。
因?yàn)橛?jì)算設(shè)備和信息設(shè)備從一般通用個(gè)人計(jì)算機(jī)模型中分出進(jìn)入特定的專用設(shè)備,如移動(dòng)電話、移動(dòng)音樂播放器、遠(yuǎn)程控制器、可組網(wǎng)的媒體播放器和路由器,以及許多的其它設(shè)備,因此就需要應(yīng)用程序平臺(tái)以允許快速和有效的開發(fā)應(yīng)用程序,其中的應(yīng)用程序不僅在所有(或至少多數(shù))設(shè)備上是二進(jìn)制兼容,而且可以在根據(jù)每個(gè)設(shè)備資源的多個(gè)協(xié)議上動(dòng)態(tài)地(on the fly)形成特定的設(shè)備組。應(yīng)用程序需要能夠在所有的設(shè)備上擴(kuò)展執(zhí)行才能執(zhí)行應(yīng)用程序,其中沒有一個(gè)設(shè)備具有執(zhí)行應(yīng)用程序所需要的所有的軟件、硬件或其它資源。
目前在所屬領(lǐng)域的狀態(tài)中,還沒有用于生成能夠在多個(gè)設(shè)備上運(yùn)行并傳播程序的有效的軟件平臺(tái),特別是當(dāng)將傳播到的設(shè)備是不同類型并具有不同的設(shè)備硬件、軟件,以及操作系統(tǒng)(如果有的話)特征時(shí),尤其如此。盡管存在許多標(biāo)準(zhǔn)化的嵌入式的操作系統(tǒng),但是因?yàn)樾枰獞?yīng)用程序來存取設(shè)備的獨(dú)特的能力和性能,包括顯示和控制的配置,因此為一個(gè)設(shè)備生成的程序幾乎不能運(yùn)行在另一個(gè)不同的設(shè)備上,即使兩個(gè)設(shè)備使用相同的嵌入式操作系統(tǒng)和處理器也是如此。因此,很明顯在所屬領(lǐng)域十分需要改進(jìn)的方法和系統(tǒng),以提供可靠的、便于使用的設(shè)備、應(yīng)用程序、數(shù)據(jù)以及內(nèi)容互操作性,同時(shí)避免迄今為止已知的現(xiàn)有技術(shù)裝置和方法的缺點(diǎn)和不足。
發(fā)明內(nèi)容
本發(fā)明包括許多有創(chuàng)造性的系統(tǒng)、設(shè)備、裝置、計(jì)算機(jī)程序以及計(jì)算機(jī)程序產(chǎn)品、程序和方法,共同使設(shè)備和系統(tǒng)的互操作性與目前為止所屬領(lǐng)域的當(dāng)前狀態(tài)相比,變得更簡(jiǎn)單、更可靠、更穩(wěn)定、更強(qiáng)大、更成本有效并且更安全。所采用的技術(shù)是根據(jù)程序性互操作性技術(shù)。本發(fā)明在許多方面與現(xiàn)有的程序性互操作性技術(shù)不同。盡管現(xiàn)有技術(shù)試圖隱藏設(shè)備之間的區(qū)別從而相同的可執(zhí)行的二進(jìn)制圖像可以在所有設(shè)備上運(yùn)行,但是本發(fā)明向各個(gè)設(shè)備展示并提供了到設(shè)備所有資源的存取,從而應(yīng)用程序能夠形成特定的設(shè)備組,并有效地將其執(zhí)行擴(kuò)展到設(shè)備組上,就如同設(shè)備組中的所有設(shè)備是一個(gè)設(shè)備一樣。
多數(shù)現(xiàn)有的互操作性技術(shù)是這些年來為公司或政府網(wǎng)絡(luò)中使用的強(qiáng)大的通用計(jì)算機(jī)開發(fā)的技術(shù)的擴(kuò)展,這些計(jì)算機(jī)總是連接在可靠的高速網(wǎng)絡(luò)上,很少重新配置,連續(xù)地使用足夠的電源,并由受過訓(xùn)練的全職的專業(yè)人員進(jìn)行配置和維護(hù)。當(dāng)這些技術(shù)用于現(xiàn)在變得可用的移動(dòng)的、電池供電的、間斷連接的以及成本受限的設(shè)備時(shí),并且被沒有受過訓(xùn)練并不愿關(guān)注互操作性所需要的軟件和硬件的配置和維護(hù)的人員使用時(shí),這些技術(shù)就會(huì)顯得不足了。
本發(fā)明必須包括一種新的軟件生態(tài)系統(tǒng)方法,這些方法共同工作以極大地改進(jìn)現(xiàn)在以增長(zhǎng)的速度進(jìn)入市場(chǎng)的移動(dòng)設(shè)備和其它專用設(shè)備的互操作性的簡(jiǎn)單性、穩(wěn)定性、成本有效性、效率和安全性。
圖3表示本發(fā)明的新的程序性和軟件生態(tài)系統(tǒng)的實(shí)施例的示例性組件,其中的系統(tǒng)被稱為DartPlatform,其本身是互操作性平臺(tái)的形式。源,這里是DartSource100,包括實(shí)現(xiàn)應(yīng)用程序的目的所需要的所有代碼、數(shù)據(jù)以及內(nèi)容。DartTools 200將DartSource處理為二進(jìn)制可執(zhí)行的應(yīng)用程序包,該應(yīng)用程序包包括實(shí)現(xiàn)最初由DartSource所指定的互操作性應(yīng)用程序目的所需要的所有內(nèi)容。二進(jìn)制圖像包與DartFormat 300一致。所包括的應(yīng)用程序稱為Darts,它將在一個(gè)和多個(gè)DartDevices 400上執(zhí)行。運(yùn)行DartPlayer并具有至少一個(gè)用于與其它DartDevices進(jìn)行通信的通信協(xié)議401的任何設(shè)備本身是能夠運(yùn)行Darts的DartDevice,能夠?qū)?zhí)行延伸到其它的DartDevices上以利用它們的組合能力和資源,其中DartPlayer是本地代碼可執(zhí)行的程序并包括移植的DartEngine 600。圖4表示示例性的DartDevice 3000。在上部表示了運(yùn)行在設(shè)備3000上的三個(gè)Dart應(yīng)用程序3001。這些Darts的代碼由DartTools生成(參照?qǐng)D3 200所示),以與發(fā)明的DartInstructionSet相一致,其中DartEngine 3010的便攜部分和DartEngine的設(shè)備專用部分,硬件抽象層(HAL)3020,以安全的方式執(zhí)行DartInstructionSet的各個(gè)操作。
注意到DartEngine執(zhí)行的DartInstructionSet操作包括互操作性所需要的處理器密集的操作,例如加密操作、圖形和文本處理。此外,在該部分的后面部分將更詳細(xì)地描述用于發(fā)明的互操作性方法的引擎中嵌入的支持。HAL包括通過Dart的PROFILE_INSTRUCTION指令存取的輪廓(profile)方法,以確定設(shè)備專用的設(shè)備特征和功能。HAL還為引擎提供了存取它們所位于的共同的Dart標(biāo)準(zhǔn)硬件功能的方法??赡芏鄶?shù)深?yuàn)W的發(fā)明是HAL的這種部分,即可以用于將所有本地應(yīng)用程序,設(shè)備的功能和資源顯示給運(yùn)行在設(shè)備上的Darts和Darts的部分,接著執(zhí)行過程延伸到其它設(shè)備上的Darts可以利用該設(shè)備。
互操作性的簡(jiǎn)單性、可靠性以及穩(wěn)定性部分地是通過包括特定的應(yīng)用程序目的所需要的所有代碼、數(shù)據(jù)以及內(nèi)容和源代碼、數(shù)據(jù)以及內(nèi)容,以將其智能地和有效地傳播到不同的設(shè)備上而實(shí)現(xiàn)的。由于運(yùn)行在互操作性設(shè)備上所有應(yīng)用程序代碼、數(shù)據(jù)和內(nèi)容都來自于單個(gè)Dart包,就不存在與獨(dú)立生成和分配的組件相關(guān)的不兼容或管理的問題。將數(shù)據(jù)和代碼打包在一起還消除了共同的互操作性的問題,該問題是由數(shù)據(jù)格式和被選擇用于管理數(shù)據(jù)的應(yīng)用程序之間的版本不兼容引起的。
存在至少21個(gè)單獨(dú)描述的獨(dú)立發(fā)明的系統(tǒng)、方法、計(jì)算機(jī)程序以及計(jì)算機(jī)程序產(chǎn)品,和/或裝置,它們相對(duì)于現(xiàn)有的互操作性技術(shù)來說有助于增強(qiáng)設(shè)備互操作性的穩(wěn)定性、能力、效率以及安全性,其中現(xiàn)有的互操作性技術(shù)主要是這些年來為強(qiáng)大的通用計(jì)算機(jī)網(wǎng)絡(luò)開發(fā)的技術(shù)的擴(kuò)展。下面簡(jiǎn)要地說明了這些革新并接著在說明書的后續(xù)部分中進(jìn)行了更詳細(xì)的描述。當(dāng)對(duì)獨(dú)立的創(chuàng)造性的系統(tǒng)、方法、計(jì)算機(jī)程序產(chǎn)品,和/或其它裝置進(jìn)行有用的組合時(shí)就會(huì)有更多的技術(shù)。當(dāng)所采用的許多技術(shù)形成特定的組并共同工作來執(zhí)行特定的任務(wù)時(shí),就享有了人類所采用的社會(huì)化方面。與通用計(jì)算機(jī)網(wǎng)絡(luò)相比,更加專用的設(shè)備和移動(dòng)設(shè)備的快速增長(zhǎng)的世界通常與人類具有更多的共同點(diǎn),例如協(xié)作,其中專用的設(shè)備和移動(dòng)設(shè)備需要形成特定組并僅是間斷連接的,傳統(tǒng)的互操作性技術(shù)是借用通用計(jì)算機(jī)網(wǎng)絡(luò)的。
招募互操作性模型 招募是現(xiàn)有的客戶機(jī)/服務(wù)器和對(duì)等設(shè)備互操作性模型的有益替換。單個(gè)軟件應(yīng)用程序包或Dart采用招募,根據(jù)設(shè)備的能力和內(nèi)容形成設(shè)備組,并接著將其自身的智能擴(kuò)展部分傳播到設(shè)備組上,設(shè)備組就能夠共同工作以實(shí)現(xiàn)Dart應(yīng)用程序包的目的。
再現(xiàn)適配和互操作性分段模型 再現(xiàn)允許將互操作性應(yīng)用程序分段為多個(gè)緊密結(jié)合的,但是獨(dú)立的可執(zhí)行程序。在招募過程中選擇各個(gè)再現(xiàn)程序以將其發(fā)送并在其它設(shè)備上運(yùn)行,從而提供對(duì)各個(gè)設(shè)備的能力和內(nèi)容的協(xié)同存取。
DartSource/互操作性資源 DartSource是用于為打包的Dart互操作性應(yīng)用程序指定所需要的所有程序再現(xiàn)以及代碼、內(nèi)容和數(shù)據(jù)的方法。DartSource將通常用于指定面向特定設(shè)備的單個(gè)可執(zhí)行程序的語言結(jié)構(gòu)擴(kuò)展為下面這種語言,即也可以指定設(shè)備組的智能招募所需要的程序和所需要的再現(xiàn)程序,從而合適的再現(xiàn)程序被發(fā)送并在每個(gè)被招募的設(shè)備上運(yùn)行,以實(shí)現(xiàn)被指定的應(yīng)用程序的目的中與設(shè)備相應(yīng)的部分。
DartFramework/互操作性框架 DartFramework是程序員在建立互操作性應(yīng)用程序中所使用的DartSource的部分,其中的互操作性應(yīng)用程序包括利用DartPlatform的許多有益特點(diǎn),而不要求程序員必須理解并實(shí)現(xiàn)DartPlatform的許多希望的互操作性特點(diǎn)。
DartTools/互操作性工具 DartTools將DartSource應(yīng)用程序規(guī)范處理為Dart應(yīng)用程序包。
DartFormat/互操作性格式 DartFormat是用于將Dart包放在一起的規(guī)則,其中的Dart包包括互操作性應(yīng)用程序所需要的所有代碼、數(shù)據(jù),和內(nèi)容,可以加載所述的代碼、數(shù)據(jù),和內(nèi)容,并在包括運(yùn)行的DartPlayer的DartDevice上運(yùn)行。
DartRuntime/互操作性運(yùn)行時(shí)間 DartRuntime是用于在運(yùn)行Dart的獨(dú)立的處理單元之間建立控制、數(shù)據(jù)以及操作的密切配合的系統(tǒng),而無論所述處理單元是運(yùn)行在單個(gè)設(shè)備上還是運(yùn)行在被招募的設(shè)備組上。這是借助于事件驅(qū)動(dòng)的系統(tǒng)實(shí)現(xiàn)的,其中所述事件驅(qū)動(dòng)的系統(tǒng)確保了貫穿應(yīng)用程序的所有處理單元的事件的串行化和同步,從而所有的處理單元能夠以需要的相同順序存取所有的指令,以協(xié)調(diào)和同步處理單元之間的數(shù)據(jù)和操作。
線性任務(wù)分配 線性任務(wù)分配是對(duì)通常用在多數(shù)設(shè)備上傳統(tǒng)的有優(yōu)先權(quán)的和協(xié)作的線程模型的有益替換,從而可以指定和運(yùn)行多個(gè)操作,就如同這些操作的動(dòng)作是被同時(shí)執(zhí)行的一樣。線性任務(wù)分配為處理單元確保了一種簡(jiǎn)單的、可靠的、靈活的以及可擴(kuò)展的方法,以非常確定的并且易于測(cè)試的方式協(xié)調(diào)其動(dòng)作。線性任務(wù)分配是在單個(gè)設(shè)備中操作的DartRuntime的一部分。
垂直分層 垂直分層是對(duì)通常使用在多數(shù)設(shè)備上的協(xié)議的水平分層的有益替換,水平分層要求不同等級(jí)的協(xié)議通過所有中間級(jí)協(xié)議進(jìn)行通信,通常需要對(duì)信息進(jìn)行轉(zhuǎn)換以符合每個(gè)協(xié)議接口的不同的要求。Dart處理單元采用垂直分層,從而不考慮其等級(jí),通過利用事件結(jié)構(gòu)和事件隊(duì)列,處理單元能夠直接與所有其它處理單元進(jìn)行通信,其中的事件結(jié)構(gòu)和事件隊(duì)列是所有處理單元能夠存取和理解的而不需要進(jìn)行轉(zhuǎn)換。
應(yīng)用程序驅(qū)動(dòng)的電源管理 Dart應(yīng)用程序是采用至少部分地包括在DartFramework中的線性任務(wù)分配和或垂直分層構(gòu)建的,因此總是能夠跟蹤其準(zhǔn)確的響應(yīng)時(shí)間需求,從而有效的電源管理技術(shù),如使處理器速度減慢,能夠延長(zhǎng)電池的壽命,限制消耗的能量,或者限制設(shè)備上產(chǎn)生的熱量。在所屬領(lǐng)域的當(dāng)前狀態(tài)中,大多數(shù)應(yīng)用程序不能跟蹤其響應(yīng)時(shí)間需求,并且如果這些應(yīng)用程序能夠跟蹤的話,也不能通過現(xiàn)有的協(xié)議層傳送這些需求,其中現(xiàn)有的協(xié)議層符合的規(guī)范不包括用于從應(yīng)用程序到設(shè)備的硬件的傳輸響應(yīng)時(shí)間需求的接口的規(guī)范。
互操作性應(yīng)用程序驅(qū)動(dòng)的錯(cuò)誤恢復(fù) 由于低容量電池電源引起的干擾、距離限制,以及突然斷電,設(shè)備之間的無線通信連接通常是不可靠的。在傳統(tǒng)的水平分層協(xié)議中,在設(shè)備的軟件執(zhí)行中,任何層中的重大錯(cuò)誤將會(huì)導(dǎo)致不可恢復(fù)的錯(cuò)誤,這是因?yàn)閼?yīng)用程序不具有標(biāo)準(zhǔn)的接口以容易地重新建立連接和連接環(huán)境,并且因?yàn)閭鹘y(tǒng)的應(yīng)用程序不具有許多在運(yùn)行在不同設(shè)備上的應(yīng)用程序之間跟蹤和重新建立共享的狀態(tài)的基礎(chǔ)設(shè)施,因此對(duì)于應(yīng)用程序來說這種錯(cuò)誤將難于恢復(fù)。DartFramework跟蹤共享的狀態(tài),并使用再現(xiàn)容易地在設(shè)備和垂直分層之間重新建立失去的狀態(tài),這就使得通信錯(cuò)誤易于被傳播到Dart,并且Dart易于將恢復(fù)信息直接傳播到通信處理單元。因此當(dāng)恢復(fù)連接時(shí),甚至當(dāng)先前失去的設(shè)備已經(jīng)丟失其所有應(yīng)用程序狀態(tài)時(shí),運(yùn)行在多個(gè)設(shè)備上的Darts能夠無縫地從協(xié)作的設(shè)備之間的間斷的完全失去的通信中恢復(fù),并且恢復(fù)設(shè)備的共享狀態(tài)。
互操作性指令集 互操作性指令集用于表示Dart的代碼部分。DartEngine執(zhí)行這些指令?;ゲ僮餍灾噶罴ㄌ岣卟僮魉俣龋瑘?zhí)行互操作方法以及將設(shè)備的能力和內(nèi)容展示給其它設(shè)備的指令,并且包括傳統(tǒng)處理器的傳統(tǒng)的讀取、存儲(chǔ)、測(cè)試、計(jì)算以及分支指令。需要特別注意的是還存在這種指令,即甚至當(dāng)其它設(shè)備之前并不了解獨(dú)特的能力和內(nèi)容時(shí),也將設(shè)備的獨(dú)特的能力和內(nèi)容的使用展示給其它設(shè)備的指令。
創(chuàng)建法 創(chuàng)建法是一種Darts采用的用于動(dòng)態(tài)地生成為特定的目標(biāo)設(shè)備和或通信會(huì)話和或目的定制的Darts的方法。DartInstructionSet中的指令用于從運(yùn)行的Dart部分自身中和通過運(yùn)行Dart收集或計(jì)算的任何信息中程序性地生成Dars。
互操作性引擎/DartEngine DartEngine是用于在設(shè)備上執(zhí)行Darts指令并實(shí)現(xiàn)其目的的軟件和或硬件。DartEngine和設(shè)備專用的DartPlayer(DartEngine包括在其中),提供了共同的執(zhí)行過程和DartRuntime環(huán)境,該環(huán)境允許招募和再現(xiàn)建立高效的設(shè)備組,并盡可能地傳播其代碼、數(shù)據(jù)以及內(nèi)容,以實(shí)現(xiàn)Darts的目的。
互操作性設(shè)備授權(quán) 互操作性設(shè)備授權(quán)是通過將DartEngine移植為DartPlayer的部分,將傳統(tǒng)的設(shè)備變?yōu)榫哂懈叨然ゲ僮餍缘腄artDevice的過程。此外,還需要存取設(shè)備專用信息、能力和內(nèi)容所需要的硬件抽象層的執(zhí)行過程。在具有DartPlayer的設(shè)備變?yōu)镈artDevice之前,必須執(zhí)行至少一個(gè)通信協(xié)議。
互操作性安全模型/DartSecurity DartSecurity是用于提供需要的基礎(chǔ)設(shè)施以保護(hù)設(shè)備的完整性和設(shè)備內(nèi)容不會(huì)被惡意的和意外的破壞的系統(tǒng)。
社會(huì)同步互操作性方法/Dart SocialSynchronization 社會(huì)同步是一種有效的并易于管理的方法,用于在任何數(shù)量的設(shè)備和協(xié)議上同步特定的數(shù)據(jù)組和或操作,而不需要每個(gè)設(shè)備都與主設(shè)備相接觸,也不需要任何設(shè)備充當(dāng)主設(shè)備。設(shè)備和內(nèi)容的社會(huì)同步類似于人類共享信息和任務(wù)的方式,是所屬領(lǐng)域的當(dāng)前狀態(tài)中通常采用的主同步技術(shù)的有益替換。
社會(huì)安全互操作性模型/Dart SocialSecurity 社會(huì)安全是一種特別便于管理的方法,用于在可能進(jìn)行間斷連接的設(shè)備之間形成安全的網(wǎng)絡(luò)。社會(huì)安全的工作方式類似于人類如何彼此信任的方式。社會(huì)安全的基礎(chǔ)是使用SocialSynchronization傳播利用DartSecurity系統(tǒng)生成的唯一的ID以及可傳遞地從一個(gè)設(shè)備傳播到另一個(gè)設(shè)備的允許的存取權(quán)限。從來沒有直接地進(jìn)行通信的設(shè)備通常會(huì)發(fā)現(xiàn)它們是設(shè)備組的一部分,其中允許所述的設(shè)備以一定的存取權(quán)限進(jìn)行互操作而不需要進(jìn)行其它的獲得允許的操作。
具有互操作性的設(shè)備/DartDevice 借助于運(yùn)行包含DartEngine的DartPlayer以及用于連接到其它DartDevice上的至少一個(gè)通信協(xié)議,DartDevice是能夠進(jìn)行高度的互操作的設(shè)備。
互操作性平臺(tái)/DartPlatform DartPlatform是Dart方法的任何組合,能夠?qū)崿F(xiàn)DartDevice的指定、生成、智能編組,并且有助于在一個(gè)或多個(gè)DartDevice上傳播并運(yùn)行Dart互操作性應(yīng)用程序。
虛指針 虛指針是一種用于為程序員提供簡(jiǎn)單和有效的方式以存取和使用一個(gè)程序中的一個(gè)或多個(gè)獨(dú)立的數(shù)據(jù)地址空間的方法。軟件程序所使用的虛指針能夠改變對(duì)主存和存儲(chǔ)器設(shè)備的應(yīng)用,以在具有不同大小和速度的主存(速度快但是容量小)和存儲(chǔ)器(容量大但是速度慢)的設(shè)備上進(jìn)行有效地運(yùn)行。
應(yīng)該結(jié)合隨附的附圖理解說明性實(shí)施例的詳細(xì)描述,其中圖1的圖示表示使N個(gè)設(shè)備協(xié)同工作或一同工作的情況通常需要大約N2次適配;圖2的圖示表示使八個(gè)設(shè)備直接共同工作的復(fù)雜度,使用大約56次適配,并需要56次不同的測(cè)試配置以測(cè)試和驗(yàn)證操作;圖3的圖示表示本發(fā)明的主組件和子組件的模塊圖;圖4的圖示表示根據(jù)本發(fā)明的實(shí)施例的示意性的典型的DarDevice的概述;圖5的圖示以流程圖的形式表示招募過程的示例性實(shí)施例;圖6的圖示表示說明本發(fā)明招募方法的圖表,該方法用于擴(kuò)展第一DartDevice上運(yùn)行的Dart應(yīng)用程序(例如幻燈片放映Dart應(yīng)用程序)并將該程序與第二DartDevice共享,所述第二DartDevice最初根本不了解初始的第一DartDevice或Dart應(yīng)用程序;圖7的圖示表示說明招募的例子的圖表,其中招募用于在另一個(gè)DartDevice上遠(yuǎn)程打印從初始DartDevice上運(yùn)行的幻燈片放映應(yīng)用程序,所述另一個(gè)DartDevice最初根本不了解初始的第一DartDevice或幻燈片應(yīng)用程序;圖8的圖示表示說明打印圖片應(yīng)用程序的示例性實(shí)施例的圖表,打印圖片應(yīng)用程序被表示為在三個(gè)設(shè)備構(gòu)成的組中運(yùn)行的Dart,其中每個(gè)設(shè)備運(yùn)行初始Dart的不同再現(xiàn)程序;圖9的圖示表示Dart應(yīng)用程序的同步和串行化的實(shí)施例,其中Dart應(yīng)用程序在被招募的協(xié)作的設(shè)備組中運(yùn)行;圖10的圖示表示招募如何使一組設(shè)備作為一臺(tái)設(shè)備工作,以及如何限制實(shí)現(xiàn)N臺(tái)設(shè)備的互操作性的所需要的工作,從而所述工作簡(jiǎn)單地與N成比例;圖11的圖示表示主DartFramework對(duì)象及其在類的體系結(jié)構(gòu)中的相對(duì)位置的實(shí)施例的模塊圖;圖12的圖示表示說明應(yīng)用程序開發(fā)設(shè)備和其用于產(chǎn)生Dart應(yīng)用程序的靜態(tài)的和程序性的組件的模塊圖;圖13的圖示表示說明Dartformat的實(shí)施例的各部分組件的結(jié)構(gòu)的實(shí)施例的結(jié)構(gòu);圖14的圖示表示DartFormat的PartTable組件的實(shí)施例的結(jié)構(gòu)和PartTable的PartTable Record組件的格式的模塊圖,同時(shí)單獨(dú)地描述了DartProcedure的實(shí)施例的結(jié)構(gòu);圖15的圖示表示DartRuntime處理的流程圖,用于Dart應(yīng)用程序中通過Gizmo導(dǎo)出的對(duì)象的體系結(jié)構(gòu);圖16的圖示表示說明DartRuntime的Process Event處理部分的各方面的流程圖;圖17的圖示表示說明Dart應(yīng)用程序的實(shí)施例所使用的DartDevice之間的連接的模塊圖,其中Dart應(yīng)用程序在一個(gè)DartDevice上啟動(dòng),接著使用招募將其自己擴(kuò)展到在其它DartDevice上運(yùn)行,所述其它DartDevice以所表示的事件數(shù)據(jù)結(jié)構(gòu)的形式交換消息,以協(xié)調(diào)其活動(dòng);圖18的圖示表示說明分級(jí)處理設(shè)置和Gizmo處理單元的執(zhí)行順序的模塊圖,其中Gizmo處理單元用在幻燈片放映或媒體顯示應(yīng)用程序的示例性實(shí)施例中;圖19的圖示表示根據(jù)本發(fā)明的實(shí)施例的Dart應(yīng)用程序級(jí)錯(cuò)誤恢復(fù)的實(shí)施例;圖20的圖示表示說明DartEngine執(zhí)行的Builtinlnstruction和0EM_Builtinlnstruction處理的流程圖;圖21的圖示表示假設(shè)的中微子檢測(cè)器/移動(dòng)電話例子的實(shí)施例,表示一個(gè)設(shè)備如何將其獨(dú)特的能力展示給事先并不了解這些獨(dú)特的能力的設(shè)備;圖22的圖示表示說明DartPlayer與DartEngine的實(shí)施例的特定實(shí)現(xiàn)方案的兩個(gè)主要組件的示例性實(shí)施例的模塊圖,其中兩個(gè)主要組件即便攜組件,和非便攜硬件抽象層組件;圖23的圖示表示DartPlayer的特定實(shí)施例的主環(huán)路處理流程的流程圖;圖24的圖示表示在DartPlayer對(duì)DartEngine初始化函數(shù)調(diào)用期間進(jìn)行的處理的流程圖;圖25的圖示表示說明DartPlayer中進(jìn)行的DartRuntime指令處理的流程圖;圖26的圖示表示用于DartPlayer的文件系統(tǒng)指令處理的流程圖;圖27的圖示表示說明DartEngine的實(shí)施例的非便攜硬件抽象層組件的組件模塊圖;圖28的圖示表示說明文件系統(tǒng)的非便攜DartDevice特定部分的圖表,其中文件系統(tǒng)可以提供從Dart到文件的訪問,但是不提供任何用于訪問不被看做運(yùn)行的Dart的保護(hù)性的沙坑(Sandbox)部分的文件的機(jī)制;圖29的圖示表示DartDevice的DartSecruity組件的實(shí)施例的模塊圖;圖30的圖示表示社會(huì)同步接觸列表例子的實(shí)施例;圖31的圖示表示示例性DartDevice和其SocialSecurity組件的模塊圖,以及表示在編組前和編組后,舊的DartDevice和新的DartDevice的SocialSecurity內(nèi)容的模塊圖;圖32的圖示表示用于訪問特定虛指針地址的數(shù)據(jù)元素的示例性Dart虛指針。
本發(fā)明的示例性實(shí)施例的詳細(xì)描述I.概述和簡(jiǎn)介在一個(gè)方面,本發(fā)明涉及用于使設(shè)備在相似的和更重要的以及不同的設(shè)備和系統(tǒng)組之間有效地共享各種內(nèi)容、控制、資源以及應(yīng)用程序組的方法和系統(tǒng)。本發(fā)明的各個(gè)方面實(shí)施為“DartPlatform”。名稱“Dart”旨在傳達(dá)這種意思,即應(yīng)用程序、數(shù)據(jù),和/或其它混合形式的過程、程序、數(shù)據(jù)、概念、以及最可能寬意義下的其它信息被組合為智能化的數(shù)據(jù),并且也旨在表示這種方法,其中程序,內(nèi)容以及數(shù)據(jù)的完整智能包以Dart,DartProcedures,以及DartParts的形式在各設(shè)備之間逐字地發(fā)出(或傳輸),以實(shí)現(xiàn)設(shè)備,設(shè)備資源以及設(shè)備能力的各個(gè)組中的高度的簡(jiǎn)潔性,有效性,穩(wěn)定性安全性以及互操作性。
而且,在這里所包含的描述中,應(yīng)該理解術(shù)語Dart意味或意指本發(fā)明的一個(gè)特定實(shí)施例,術(shù)語互操作性用作要求保護(hù)的本發(fā)明的各個(gè)方面的一般術(shù)語,其中Dart是互操作性的特殊形式。
本發(fā)明介紹了許多新的技術(shù)系統(tǒng),設(shè)備,方法,以及計(jì)算機(jī)體系結(jié)構(gòu)和程序特點(diǎn),這些特點(diǎn)建立了在文章中在此以前沒有描述過的新的示例。至少部分地因?yàn)榧夹g(shù)的和計(jì)算機(jī)術(shù)語仍沒有提供簡(jiǎn)潔的術(shù)語,通過這些術(shù)語自身可以完全從傳統(tǒng)的元素中識(shí)別新的元素,所以該說明書頻繁地使用術(shù)語“Dart”或其它的“Dart”的說法作為另一個(gè)術(shù)語的前綴或限定詞,例如在短語Dart Procedures,Dart Parts等中使用的。在一些情況下,兩個(gè)術(shù)語被連接起來,例如DartProcedures,DartParts,DartDevice,等。而且,應(yīng)該理解更簡(jiǎn)潔的形式,如設(shè)備(device),部分(part),或程序(procedure)可以用于描述本發(fā)明的各方面。從說明書的內(nèi)容中,所指的意義通常是明顯的;然而,應(yīng)該理解當(dāng)描述本發(fā)明的一個(gè)方面時(shí),被大寫的單個(gè)字的形式,例如“DartProcedures”,等效于多個(gè)字的形式,例如“Dart Procedures”,“Dart proceduces”,或者甚至“procedures”。這也用于其它的“Dart”的說法,例如Dart Parts,Dart Player,Dart Platform,等等。
盡管Darts可以是任何組件并且可以組合所有組件,但是Darts在其最一般的形式中不是簡(jiǎn)單的數(shù)據(jù),簡(jiǎn)單的程序,和簡(jiǎn)單的內(nèi)容??梢詫ⅰ癉arts”考慮為軟件、代碼、數(shù)據(jù),和/或內(nèi)容、以及可以用于在各個(gè)設(shè)備中智能地匯編,儲(chǔ)存以及分配其本身或其各部分以實(shí)現(xiàn)互操作性應(yīng)用程序的目的代碼數(shù)據(jù)和內(nèi)容的特定的完整的數(shù)字式二進(jìn)制包。本發(fā)明產(chǎn)生同類和異類設(shè)備之間的簡(jiǎn)單的,有效的,可靠的以及安全的互操作性。
不幸地是,用于計(jì)算和信息系統(tǒng)和設(shè)備的現(xiàn)代詞形變換在分離的和不同的操作系統(tǒng)(OS)組件,設(shè)備驅(qū)動(dòng)程序,計(jì)算機(jī)程序應(yīng)用程序,以及用戶或其它數(shù)據(jù)組件的一般慣例中已經(jīng)如此根深蒂固,從而在計(jì)算機(jī)科學(xué)領(lǐng)域中使用的一些共同接受的術(shù)語并沒有嚴(yán)格地用于本發(fā)明的組件。因此在可能的情況下,當(dāng)共同的計(jì)算和計(jì)算機(jī)科學(xué)術(shù)語的意義適當(dāng)時(shí),即使其意義并不準(zhǔn)確,也使用這些共同的計(jì)算和計(jì)算機(jī)科學(xué)術(shù)語,并且當(dāng)想要更加特定的意義以避免使用具有許多限定詞的一般語言時(shí),使用各種“Dart”表示和術(shù)語。
首先描述本發(fā)明的實(shí)施例的一些組件,特點(diǎn),以及優(yōu)點(diǎn),以將讀者引導(dǎo)到Dart Platform、系統(tǒng)、方法以及計(jì)算機(jī)程序元件。接著在該詳細(xì)說明的其余部分進(jìn)一步描述這些和其它組件、特點(diǎn)以及元素。應(yīng)該理解,并不是本發(fā)明的每個(gè)實(shí)施例提供的所有組件,特點(diǎn),或優(yōu)點(diǎn)都能夠容易地列舉在幾個(gè)段落中,因此下面的描述是在一些實(shí)施例中發(fā)現(xiàn)的組件,部件,以及優(yōu)點(diǎn)的示例,包括一些可選的但是有益的組件和特點(diǎn),并且不應(yīng)看作是限制性描述。顯而易見的是,本發(fā)明的實(shí)施例可以提供和利用或者不提供或不利用這里所描述的一些或許多特點(diǎn),并且其它實(shí)施例將提供和利用這里所描述許多或大多數(shù)(即使不是全部的話)特點(diǎn)和組件。
對(duì)于更高效的通用計(jì)算機(jī)的領(lǐng)域,用于操作系統(tǒng)、程序格式、編程工具,以及通信協(xié)議的現(xiàn)有方法得到極大的改進(jìn),其中的通用計(jì)算機(jī)可以使用充分可靠的電源以及可靠的,高速的,始終運(yùn)行的通信協(xié)議。而且,計(jì)算機(jī)網(wǎng)絡(luò)是相對(duì)靜態(tài)的,很少必須為共同工作而被配置或重新配置。同時(shí),假設(shè)將有知識(shí)豐富的人類系統(tǒng)管理員團(tuán)體進(jìn)行安裝,配置,重新配置,更新,調(diào)整以及其它方式維護(hù)計(jì)算機(jī),網(wǎng)絡(luò),操作系統(tǒng)以及程序。
這些已有的方法并不適合共同應(yīng)用于現(xiàn)在快速發(fā)展的專用設(shè)備領(lǐng)域,其中這些專用設(shè)備通??侩姵剡\(yùn)行,具有有限的計(jì)算資源,通過低速不可靠的無線或電力線協(xié)議進(jìn)行通信,并且需要?jiǎng)討B(tài)地經(jīng)常地重新配置以與其它設(shè)備共同工作,所述其它設(shè)備中許多是便攜式的設(shè)備并且僅被間斷地連接。如果不考慮增加的動(dòng)態(tài)配置需要和設(shè)備多樣性及其必須共同工作的能力,通常非常希望由不如系統(tǒng)管理員博學(xué)的人來使用和維護(hù)這些設(shè)備和相關(guān)的軟件。
DartPlatform包括一組新的發(fā)明的方法和軟件的組件,以及可選的硬件,特別是關(guān)于現(xiàn)在快速發(fā)展的專用通信設(shè)備領(lǐng)域設(shè)計(jì)的生態(tài)系統(tǒng)。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,本發(fā)明的Dart Platform(DP)可以有益地包括下面的組件1.DartInstructionSet-互操作性指令集2.DartEngine-便攜式互操作性引擎3.DartFormat-包括數(shù)據(jù)、內(nèi)容、編碼、程序、語義或其它信息的任何可能的組合的文件或位圖格式,所說信息是最優(yōu)地(或接近最優(yōu)地)在任何設(shè)備或子系統(tǒng)上運(yùn)行、存儲(chǔ),優(yōu)化、復(fù)制和/或共享數(shù)據(jù)、內(nèi)容、編碼、程序、或其它信息所需要的,所述設(shè)備或子系統(tǒng)包含DartEngine和用于將DartFormat信息(通常以一組數(shù)字二進(jìn)制的形式,例如位文件(或多個(gè)位文件)或位圖(或多個(gè)位圖))傳送到設(shè)備以由DartEngine進(jìn)行處理的的機(jī)制。
4.Dartools-一組用于創(chuàng)建Dart Format位圖和文件的軟件工具。Dart Tools可以包括DartComplier,DartLinker,以及DartMasterPlayer,以及其它工具,其中每一個(gè)將在下面更詳細(xì)地描述。
5.Dart或Darts-Dartools創(chuàng)建的比特位包,位圖和/或文件實(shí)例,由包含DartEngine的設(shè)備處理,DartEngine與DartFormat文件或位圖格式一致。DartFormat可以包含在任何設(shè)備或設(shè)備組上最優(yōu)地運(yùn)行、存儲(chǔ)、優(yōu)化、復(fù)制和/或共享數(shù)據(jù)/內(nèi)容/代碼所必須的組合的數(shù)據(jù)/內(nèi)容/編碼以及語義,其中所述設(shè)備包括DartEngine和用于將DartFormat位圖傳送到設(shè)備以由DartEngine處理的機(jī)制。Darts是多個(gè)Dart的形式。
6.DartProcedure或多個(gè)DartProcedure-自含式的輕質(zhì)程序(lightweight procedure)(多個(gè)程序)和數(shù)據(jù),由來自DartInstructionSet的指令序列與指令所操作的數(shù)據(jù)圖像和數(shù)據(jù)圖像值組成。
7.DartPlayer-被設(shè)計(jì)為在特定的設(shè)備子組上運(yùn)行的軟件程序,其中的設(shè)備子組利用DartEngine處理Darts。
8.DartMaster-通過使用被稱為DartMasterPlayer的特定Dartool處理DartMaster,將Dart進(jìn)一步優(yōu)化為一個(gè)或多個(gè)有效的和/或?qū)S玫腄arts或Dart。
9.DartFramework或DartObjectFramework-一組源代碼,用于定義構(gòu)建Dart中的一組基類的數(shù)據(jù)和方法。DartObjectFramework假設(shè)某個(gè)初始執(zhí)行點(diǎn),初始目標(biāo)數(shù)據(jù)指針,以及管理處理編碼和數(shù)據(jù)以及輸入數(shù)據(jù)和編碼的順序的結(jié)構(gòu)和語義組。這就包括了DartRuntime的設(shè)備外部設(shè)備運(yùn)行時(shí)間部分,DartRuntime還將外部設(shè)備運(yùn)行時(shí)間擴(kuò)展到內(nèi)部設(shè)備運(yùn)行時(shí)間,內(nèi)部設(shè)備運(yùn)行時(shí)間同步和串行化任何數(shù)量的被編組的設(shè)備上的運(yùn)行時(shí)間行為。
10.DartRuntime-DartFramework或DartObject Framework有益地假設(shè)某個(gè)初始執(zhí)行點(diǎn),初始目標(biāo)數(shù)據(jù)指針,以及管理處理編碼和數(shù)據(jù)以及輸入數(shù)據(jù)和編碼的順序的結(jié)構(gòu)和語義組。這被稱為“DartRuntime”的外部-設(shè)備部分。還存在內(nèi)部-設(shè)備運(yùn)行時(shí)間,用于假設(shè)在事件隊(duì)列之間自動(dòng)地串行化和同步事件結(jié)構(gòu)示例,其中同步事件結(jié)構(gòu)示例驅(qū)動(dòng)對(duì)行為同步和協(xié)調(diào)的管理以及被編組設(shè)備之間的數(shù)據(jù)交換,并且其中的事件序列之一被每個(gè)設(shè)備的DartEngine維護(hù)。外部設(shè)備DartRuntime和內(nèi)部設(shè)備運(yùn)行時(shí)間共同提供了易于使用但高度穩(wěn)定和有效的系統(tǒng),以實(shí)現(xiàn)Dart的目的,其中Dart的每個(gè)可能不同的再現(xiàn)程序在一組被編組的設(shè)備上運(yùn)行。
在其它方面中,本發(fā)明被設(shè)計(jì)為改進(jìn)任何類型的兩個(gè)設(shè)備之間和任何類型的多個(gè)設(shè)備之間的互操作性,并不被限制地解決間斷地互連或總是互連的設(shè)備,系統(tǒng),或子系統(tǒng)中互操作性的下述和其它問題1.當(dāng)在不相似或不同的設(shè)備之間移動(dòng)內(nèi)容、應(yīng)用程序以及控制時(shí),顯示、控制、代碼、數(shù)據(jù)以及功能的適配和優(yōu)化。
2.當(dāng)設(shè)備用戶的所有需要是起作用的內(nèi)容(優(yōu)選地,盡可能地起作用)時(shí),無論程序、文件和或內(nèi)容傳遞到哪里,為設(shè)備用戶消除必須考慮程序、內(nèi)容格式、驅(qū)動(dòng)程序和/或文件的需要。
3.為用戶消除必須指定或者甚至知道在一個(gè)或多個(gè)設(shè)備之間使用的設(shè)備連接(或多個(gè)連接)或通信的類型的需要。
4.允許在所有被激活的設(shè)備之間簡(jiǎn)單有效地共享內(nèi)容、控制,和/或資源。
5.從昂貴的和復(fù)雜的計(jì)算機(jī)輔助的X線斷層攝影(CAT)掃描到(小型處理器/存儲(chǔ)器)電燈開關(guān)或其它簡(jiǎn)單的設(shè)備,激活任何設(shè)備或系統(tǒng),以利用、評(píng)述和準(zhǔn)予存取其功能、資源、能力和到其它連接的設(shè)備的需要。
6.將為實(shí)現(xiàn)上述一些或所有要求采用傳統(tǒng)的非程序性方法而產(chǎn)生的大量的開發(fā)工作減少為能夠以數(shù)量低的多的開發(fā)項(xiàng)目和成本容易地實(shí)現(xiàn)的水平。
7.足夠地輕質(zhì)(在代碼大小、執(zhí)行邏輯,和存儲(chǔ)器方面)以適合于低端、成本受限,和/或電源受限的設(shè)備。
8.在有意義的大多數(shù)任何方式下,例如通過包括對(duì)下述一個(gè)或任何組合的緊密聯(lián)系的本地支持,確保任何數(shù)量的DartDevices能夠無縫地與所有DartDevices進(jìn)行互操作(a)無論何時(shí)只要設(shè)備硬件可以支持,都具有動(dòng)態(tài)的多媒體富界面(rich interface),如果設(shè)備硬件不支持則具有分級(jí)的更少的富界面;(b)設(shè)備電源管理;(c)設(shè)備發(fā)現(xiàn);
(d)服務(wù)發(fā)現(xiàn);(e)資源發(fā)現(xiàn);(f)將Dart應(yīng)用程序與需要相隔離,以了解各種通信物理層和協(xié)議層的詳細(xì)情況;(g)將Dart應(yīng)用程序與需要相隔離,以了解物理顯示格式的詳細(xì)情況;(h)將Dart應(yīng)用程序與需要相隔離,以了解關(guān)于與運(yùn)行在多個(gè)類似或不同的設(shè)備上的應(yīng)用程序保持同步的詳細(xì)情況;(i)請(qǐng)求、檢索以及運(yùn)行優(yōu)化的控制面板以本地地運(yùn)行、但實(shí)際控制從中檢索所說控制面板的那個(gè)設(shè)備;以及(j)分別地加載、運(yùn)行以及優(yōu)化所產(chǎn)生的Dart內(nèi)容,作為一個(gè)或多個(gè)雙親Darts的外部設(shè)備DartRuntime環(huán)境的子女Dart擴(kuò)展。
9.消除對(duì)預(yù)先存在于除啟動(dòng)互操作性應(yīng)用程序的設(shè)備(原始設(shè)備)外的任何設(shè)備上的程序、數(shù)據(jù)或內(nèi)容的需要,其中的互操作性應(yīng)用程序?qū)嵤┰诔跏荚O(shè)備上的Dart中。
10.允許設(shè)備根據(jù)設(shè)備能力和限制的所有或一些子集,有效地共享其資源,而不需要任何設(shè)備作為主機(jī)或從機(jī)。
11.允許應(yīng)用程序的代碼、數(shù)據(jù)、內(nèi)容及其混合(在Darts中實(shí)施)以一方式動(dòng)態(tài)地將其自己擴(kuò)展到連接的設(shè)備,所述方式允許連接的設(shè)備存儲(chǔ)應(yīng)用程序使用和進(jìn)一步無限地傳輸?shù)狡渌O(shè)備上,即使在原始和初始設(shè)備不再連接后也是如此。
12.通過在一個(gè)包(或包集)中包括互操作性應(yīng)用程序的所有代碼、數(shù)據(jù)和內(nèi)容來改進(jìn)多設(shè)備操作的可靠性,所述包接著按照要求將其擴(kuò)展到其它設(shè)備上,從而消除與分別地混合和匹配生成的和分配的應(yīng)用程序或協(xié)議軟件的執(zhí)行、代碼、數(shù)據(jù)或內(nèi)容相關(guān)聯(lián)的問題,其中這些應(yīng)用程序或協(xié)議軟件的執(zhí)行、代碼、數(shù)據(jù)或內(nèi)容將以其它方式被分別地生成和/或分配到每個(gè)設(shè)備上。
13.以簡(jiǎn)單的、可靠的和安全的方式實(shí)現(xiàn)上述所有要求。
參照?qǐng)D8所示,表示了運(yùn)行在蜂窩電話上的示例性PrintPicture Dart,其中的蜂窩電話招募通過網(wǎng)絡(luò)連接的存儲(chǔ)設(shè)備以將其用作圖片源,并且招募打印設(shè)備以用作執(zhí)行圖片打印的目的設(shè)備。假設(shè)所有的設(shè)備包括已經(jīng)被移植到每個(gè)設(shè)備的DartPlayer。
蜂窩電話上的Dart包含三個(gè)再現(xiàn)程序(R1、R2以及R3),當(dāng)每個(gè)再現(xiàn)程序運(yùn)行在DartPlayer上時(shí),都能夠作為單獨(dú)的可執(zhí)行的圖片提供服務(wù)。再現(xiàn)程序R3在蜂窩電話上運(yùn)行,并且在此之前通過發(fā)送DartProcedures在候選設(shè)備上執(zhí)行,來實(shí)現(xiàn)其它兩個(gè)設(shè)備的招募,這就確定特定的通過網(wǎng)絡(luò)連接的存儲(chǔ)設(shè)備將作為最佳的圖片源發(fā)揮作用,打印機(jī)設(shè)備將最佳地作為打印圖片的目的設(shè)備起作用。
接著蜂窩電話上的再現(xiàn)程序R3為僅包含再現(xiàn)程序R1的Dart生成圖像,其中R1包含用于從通過網(wǎng)絡(luò)連接的存儲(chǔ)(NAS)設(shè)備識(shí)別和檢索圖片的事件處理代碼。接著包含再現(xiàn)程序R1的Dart作為RUN_DART類型事件的一部分被發(fā)送到通過網(wǎng)絡(luò)連接的存儲(chǔ)設(shè)備。當(dāng)NAS設(shè)備上的DartEngine處理RUN_DART類型事件時(shí),加載再現(xiàn)程序R1并開始執(zhí)行,其中再現(xiàn)程序R1處理請(qǐng)求存儲(chǔ)在NAS設(shè)備上的信息或圖片的任何同步事件。類似地,形成處理作為PRINT_PICTURE類型事件一部分的圖片打印的再現(xiàn)程序R2,并進(jìn)行發(fā)送以在選擇的打印機(jī)設(shè)備上運(yùn)行。
注意到三個(gè)再現(xiàn)程序都是從相同的最初僅存在于蜂窩電話上的PrintPicture Dart生成的。由于實(shí)際上應(yīng)用程序與其自身的各部分進(jìn)行對(duì)話,而不是獨(dú)立地執(zhí)行、移植,以及分配傳統(tǒng)的互操作性方法所需要的組件,這就確保了兼容性的高度可能性。
進(jìn)一步注意到,再現(xiàn)程序還共享代碼、數(shù)據(jù)和/或內(nèi)容,并理解PrintDart應(yīng)用程序?qū)S玫南嚓P(guān)的事件類型集。R3再現(xiàn)程序能夠智能地將PrintPicture Dart的各部分?jǐn)U展到DartDevices,即使事先并不了解其它兩個(gè)DartDevices也是如此,并且DartDevices事先不了解蜂窩電話或PrintDart。
現(xiàn)在,在蜂窩電話上運(yùn)行的再現(xiàn)程序R3能夠向事件發(fā)送信號(hào)以通過現(xiàn)在在三個(gè)設(shè)備上或三個(gè)設(shè)備之間建立的事件驅(qū)動(dòng)的DartRuntime,來控制被招募的NAS和打印機(jī)設(shè)備之間的圖片選擇和打印。
此外注意到,可以根據(jù)蜂窩電話和NAS設(shè)備的共同協(xié)議來使用協(xié)議的任何組合,并且可以獨(dú)立地選擇這些協(xié)議的任何組合以使用被招募的打印機(jī)設(shè)備的任何共同協(xié)議。此外,由于所有的設(shè)備包括作為DartPlayer的一部分的移植的DartEngine,因此即使設(shè)備在不同的處理器上運(yùn)行不同的操作系統(tǒng),設(shè)備也能夠進(jìn)行互操作。
由于本發(fā)明包括具有大量組件的系統(tǒng),因此這些組件可能具有聯(lián)系密切的復(fù)雜的相互關(guān)系,首先以概述的方式描述一些組件,從而理解為何可能出現(xiàn)一種組件以及組件如何工作,如何與其它組件相互作用。接著,關(guān)于一種組件與其它組件的相互作用將更詳細(xì)地描述每個(gè)組件。在本發(fā)明所包括的互操作性中,對(duì)所屬領(lǐng)域的狀況進(jìn)行明顯的改進(jìn)要求產(chǎn)生大量的新型的軟件生態(tài)系統(tǒng),類似于從數(shù)據(jù)傳輸功能變換到現(xiàn)在廣泛使用的面向?qū)ο蟮姆椒?。為了更便于描述發(fā)明、系統(tǒng),以及數(shù)據(jù)和代碼結(jié)構(gòu),首先引入一些新的術(shù)語來描述本發(fā)明的實(shí)施例的原理、概念、特征以及組件。
在一個(gè)實(shí)施例中,本發(fā)明本身實(shí)現(xiàn)了下述九個(gè)實(shí)現(xiàn)方法,其中一些是可選的,但是有益地包括招募、互操作性指令集、再現(xiàn)、創(chuàng)建法、垂直分層、線性任務(wù)分配、社會(huì)同步、社會(huì)安全性,以及虛指針。
設(shè)備“招募”可能包括設(shè)備交互作用模型以及相關(guān)的結(jié)構(gòu)和方法,設(shè)備“招募”是現(xiàn)有的客戶機(jī)/服務(wù)器和對(duì)等模型的有益的替換方案。“互操作性指令集”是基于便攜的引擎的指令集,用于在設(shè)備上提供了共同有效的可執(zhí)行環(huán)境,并且有創(chuàng)造性地提供了程序性機(jī)制以將設(shè)備的獨(dú)特的能力展示給其它設(shè)備。“再現(xiàn)”是指實(shí)現(xiàn)應(yīng)用程序、數(shù)據(jù)、內(nèi)容,和/或其它信息的容易測(cè)試和有效適配的結(jié)構(gòu)和方法。在一些方面中再現(xiàn)可以包括將代碼、數(shù)據(jù)和內(nèi)容組有效地分為獨(dú)立的可執(zhí)行圖像,“再現(xiàn)程序”,它是在多個(gè)設(shè)備上智能地生成和分配的。“創(chuàng)建法”指的是這種結(jié)構(gòu)和方法,即實(shí)現(xiàn)在連接的和間斷連接的設(shè)備上以不同的形式動(dòng)態(tài)有效地生成和分配應(yīng)用程序、數(shù)據(jù)、內(nèi)容,和/或其它信息?!按怪狈謱印睂?shí)現(xiàn)高效地和有效地執(zhí)行特性,這些特性就其本性而論涉及在工具、應(yīng)用程序、框架、引擎和指令集級(jí)的密切合作?!熬€性任務(wù)分配”實(shí)現(xiàn)設(shè)備處理單元之間的處理器控制和設(shè)備資源的簡(jiǎn)單的確定的流動(dòng),其中處理單元可以被容易地重新配置為單級(jí)結(jié)構(gòu),該單級(jí)結(jié)構(gòu)包括處理單元編譯成的Dart,分別編譯的Darts,以及甚至在其它設(shè)備上運(yùn)行的Darts或再現(xiàn)程序?!吧鐣?huì)同步”是指用于在任何數(shù)量的設(shè)備上同步數(shù)據(jù)或內(nèi)容的發(fā)明的有效的系統(tǒng)和方法,其中具有最少的或根本沒有用戶的參與?!吧鐣?huì)安全性”是指用于簡(jiǎn)單地建立和維護(hù)具有進(jìn)行互操作的適當(dāng)?shù)氖跈?quán)的設(shè)備組的有效的系統(tǒng)和方法,其中包括最少的用戶參與。可以以計(jì)算機(jī)程序代碼段的形式實(shí)現(xiàn)這些和其它組件,其中的代碼段包括用于在設(shè)備的處理器中執(zhí)行的可執(zhí)行的指令。而且,這些組件的元件可以被實(shí)現(xiàn)為硬件和或硬件與軟件的組合和/或固件和或微代碼。
另一個(gè)提供的可選但是有益的實(shí)現(xiàn)方法被稱為“虛指針”,該方法提供了對(duì)具有一些有益特征的虛擬內(nèi)存的各種和重要的改進(jìn),例如包括(a)多個(gè)大的獨(dú)立的地址空間。
(b)對(duì)真正存儲(chǔ)頁面的數(shù)量的應(yīng)用程序指定的控制。
(c)對(duì)真正存儲(chǔ)頁面大小的設(shè)備指定的控制,以與存儲(chǔ)設(shè)備性能特征相匹配。
(d)程序員不需要預(yù)測(cè)或管理數(shù)據(jù)結(jié)構(gòu)或列表所需要的存儲(chǔ)器的數(shù)量。
(e)以不依賴于頁面大小或頁面數(shù)量的形式自動(dòng)地存儲(chǔ)數(shù)據(jù)。
(f)從更大的并且可能是更慢的數(shù)據(jù)存儲(chǔ)器有效地緩存數(shù)據(jù),最少數(shù)量的非??焖俚腞AM允許運(yùn)行應(yīng)用程序,就如同它們具有比它們實(shí)際上擁有的大得多的RAM存儲(chǔ)器。
(g)用于索引的數(shù)據(jù)庫(kù)操作的簡(jiǎn)單和有效的基本架構(gòu),其中數(shù)據(jù)和索引被保存在不同的虛指針地址空間中。
現(xiàn)在以概述的方式,已經(jīng)描述了本發(fā)明的許多方法、組件,和特征,現(xiàn)在將注意力轉(zhuǎn)向主要的方法、結(jié)構(gòu),和方法的實(shí)施例的詳細(xì)描述。應(yīng)該注意許多程序和方法可以由一個(gè)或多個(gè)計(jì)算機(jī)程序或計(jì)算機(jī)程序產(chǎn)品執(zhí)行,其中的計(jì)算機(jī)程序產(chǎn)品可以在通用或?qū)S锰幚磉壿嬌蠄?zhí)行,所述通用或?qū)S锰幚磉壿嬂缡悄軌驅(qū)τ?jì)算機(jī)程序代碼進(jìn)行執(zhí)行或操作的微控制器、處理器、微處理器、中央處理單元(CPU)、或其它處理硬件或邏輯,所述通用或?qū)S锰幚磉壿嬁梢允擒浖?、固件,或兩者組合的形式。
所提供的部分標(biāo)題僅旨在將讀者的注意力引導(dǎo)到描述一個(gè)特殊的方面或方法的說明書部分,但是應(yīng)該知道在整個(gè)說明書和附圖和權(quán)利要求中描述了所有方法和結(jié)構(gòu)的各個(gè)方面,在子標(biāo)題部分中包括或不包括本發(fā)明的任何方面并不意味任何限制。II.招募互操作性模型“招募”包括在本發(fā)明的整個(gè)實(shí)施方案中所體現(xiàn)的設(shè)備交互模型和方法。它是所屬領(lǐng)域現(xiàn)行狀態(tài)中使用的客戶機(jī)/服務(wù)器和對(duì)等設(shè)備交互模型和方法的有益替換方案。招募模型和方法使用在所有設(shè)備上運(yùn)行的共同的程序性環(huán)境,其中的設(shè)備將進(jìn)行互操作,或在預(yù)期可能的互操作時(shí)針對(duì)資源檢查所說的設(shè)備。在本發(fā)明的一個(gè)實(shí)施例中,通過一個(gè)指令集來提供該共同的程序性環(huán)境,其中的指令集例如Dart指令集(例如,DartInstructionSet),或滿足這里描述的共同程序性環(huán)境或其等效環(huán)境的要求的任何其它名稱的指令集。參照?qǐng)D5所示,表示招募程序的實(shí)施例的流程圖,招募程序提供了用于軟件應(yīng)用程序招募并且其后在多個(gè)設(shè)備組上有效地運(yùn)行,就如同這些設(shè)備是具有所有設(shè)備合成的資源的一個(gè)設(shè)備的方法。同時(shí)參考用于共享的幻燈片放映10000(圖6)的招募的例子,并執(zhí)行從幻燈片放映20000(圖7)設(shè)備招募(或者更簡(jiǎn)單地,“招募”)遠(yuǎn)程打印一個(gè)或多個(gè)幻燈片的例子。招募提供用于軟件應(yīng)用程序招募并在集群、組,或其它多個(gè)設(shè)備和/或系統(tǒng)上有效地運(yùn)行,就如同這些設(shè)備是具有所有設(shè)備合成的資源的一個(gè)設(shè)備的方法。
資源實(shí)際上可以是任何硬件、軟件、固件、通信能力、配置、數(shù)據(jù)或數(shù)據(jù)集、設(shè)備或系統(tǒng)所擁有的或可存取的能力。例如,資源可以是處理器、CPU、存儲(chǔ)器、接觸列表、聲音輸出設(shè)備、顯示類型、DARTs、圖片,或任何其它的程序性、結(jié)構(gòu)性,或信息事項(xiàng),而沒有任何限制。例如能力可以是對(duì)列表進(jìn)行分類的計(jì)算機(jī)代碼、對(duì)MPEG文件進(jìn)行譯碼、與BluetoothTM設(shè)備通信的硬件或軟件,等。招募程序具有智能(由于這里所描述的其程序的和支持的框架、平臺(tái)、引擎等),獨(dú)立于初始設(shè)備,關(guān)于可招募的或被招募的的設(shè)備的合適性進(jìn)行復(fù)雜的決定,以實(shí)現(xiàn)發(fā)送程序的應(yīng)用程序的目的,或者實(shí)現(xiàn)應(yīng)用程序的目的一些部分。
在一個(gè)實(shí)施例中,初始設(shè)備首先通過任何數(shù)量的通信協(xié)議,將檢查程序(一個(gè)或多個(gè))形式的消息以共同的可執(zhí)行形式,從其本身(作為源)或初始設(shè)備發(fā)送或廣播到任何數(shù)量的可到達(dá)的設(shè)備,參照?qǐng)D6 10011和圖7 20011所示。初始設(shè)備形成并發(fā)送該消息,以試圖發(fā)現(xiàn)具有所需要的資源或能力的其它設(shè)備,通過一個(gè)連接或多個(gè)連接將結(jié)構(gòu)化的,編碼的,或在共同的程序環(huán)境中以其它方式執(zhí)行的一個(gè)或多個(gè)程序,發(fā)送、傳輸、廣播,或以其它方式傳輸?shù)狡渌O(shè)備(在傳輸時(shí)已知或未知),這些其它設(shè)備也包括了共同的程序環(huán)境。當(dāng)初始設(shè)備發(fā)送或廣播消息時(shí),不需要了解哪些設(shè)備是可到達(dá)的。其它的設(shè)備是否可到達(dá)例如依賴于與可能的候選被招募的設(shè)備組相比時(shí),初始設(shè)備擁有的通信信道和/或協(xié)議。
可選地,該源設(shè)備被稱為初始設(shè)備,因?yàn)樗l(fā)起了交互作用(參考圖6 10100和圖7 20100),源設(shè)備可以是招募程序的來源,招募者設(shè)備是試圖招募其它設(shè)備的設(shè)備,其中的其它設(shè)備可以被稱為被招募的設(shè)備,目標(biāo)設(shè)備,目的設(shè)備,或簡(jiǎn)單地不同于初始設(shè)備的其它設(shè)備。
例如,如果初始設(shè)備包括BluetoothTM無線通信鏈接、紅外通信鏈接,以及IEEE 802.11(a)、(b)或(g)通信鏈接并通過每個(gè)這些信道廣播消息,則只有被配置為通過這些通信鏈接接收通信的候選的可招募的設(shè)備可以接收招募消息。其中,只有那些提供操作環(huán)境、理解并能夠執(zhí)行檢查程序的設(shè)備會(huì)進(jìn)行響應(yīng)。注意到即使在這種可能進(jìn)行響應(yīng)的設(shè)備中,另外的可招募的設(shè)備的用戶可以例如根據(jù)安全性設(shè)置,選擇性地或全部地中斷這種招募或詢問檢查程序。
第二,檢查程序接著在進(jìn)行響應(yīng)并被發(fā)現(xiàn)的每個(gè)設(shè)備上執(zhí)行其指令,以識(shí)別所需要的資源和能力和/或設(shè)備的相關(guān)資源和能力組,或者設(shè)備可以得到的用于實(shí)現(xiàn)應(yīng)用程序目的或部分目的的資源和能力組。在一個(gè)實(shí)施例中,使用指令集輪廓或得到輪廓指令來執(zhí)行該檢查,例如Dart指令集輪廓指令(例如,DartInstructionSet PROFILE_INSTRUCTION),這就使得存取或調(diào)用候選可招募的設(shè)備的硬件抽象層(HAL),以存取在設(shè)備專用的硬件抽象層(例如參照?qǐng)D27的硬件抽象層HAL 652)中存儲(chǔ)或計(jì)算的關(guān)于特定設(shè)備和其資源和能力的信息。
第三,檢查程序通過通信信道和協(xié)議將程序、數(shù)據(jù)、內(nèi)容或其它信息返回到初始設(shè)備,以表示其已接收到消息(參照?qǐng)D6 10012和圖720012)。進(jìn)行響應(yīng)的設(shè)備可以識(shí)別和存儲(chǔ)通信信道和接收的協(xié)議的表示,并且可選地識(shí)別和存儲(chǔ)接收招募消息的設(shè)備的身份,,或者可以廣播可能被初始設(shè)備接收的響應(yīng)。
在一些實(shí)施例中,進(jìn)行響應(yīng)的設(shè)備僅回答發(fā)起者關(guān)于特定資源或資源組(例如彩色打印能力)的可用性的查詢,而在其它實(shí)施例中,檢查程序可以識(shí)別并響應(yīng)特征、能力,以及資源的完整列表。通常優(yōu)選的是簡(jiǎn)單的“是,我具有所需要的資源”(響應(yīng)是單個(gè)比特或字節(jié)或字),從而將通信量降低到最小??蛇x地,可以使用識(shí)別一個(gè)或多個(gè)資源類型或類或資源子類的代碼。在一個(gè)實(shí)施例中,檢查程序?qū)㈥P(guān)于它們所運(yùn)行在的設(shè)備上的資源和能力的信息返回給源設(shè)備。例如,該信息可以是靜態(tài)數(shù)據(jù)結(jié)構(gòu)、程序、Dart、自由形式標(biāo)簽語言的形式,或任何其它的信息形式。在圖6的幻燈片放映例子10000中,參照返回圖6 10012的“是”的響應(yīng),以及MIPS中的處理器速度和被招募的dart設(shè)備圖6 10200中的優(yōu)選的顯示分辯率,以及在圖7的幻燈片打印例子中,返回圖7 20012的“是”的響應(yīng),以及被招募的dart設(shè)備圖7 20200的優(yōu)選的打印機(jī)分辨率。
第四,初始設(shè)備上的應(yīng)用程序代碼收集可能包括程序、數(shù)據(jù)、內(nèi)容的所有返回的信息,或來自所有進(jìn)行響應(yīng)的可到達(dá)的設(shè)備的其它信息,執(zhí)行任何接收到的程序,并對(duì)其進(jìn)行檢查,以決定如何利用可到達(dá)的設(shè)備和其資源,來實(shí)現(xiàn)應(yīng)用程序的目的。
第五,初始設(shè)備上的應(yīng)用程序?qū)S玫拇a根據(jù)第四步驟中的決定,按照需要將代碼、數(shù)據(jù)、內(nèi)容,或任何其它信息傳送到每個(gè)可到達(dá)的設(shè)備(參照?qǐng)D6 10020、10021以及圖7 20020、20021所示)。可以以單個(gè)共同的形式發(fā)送應(yīng)用程序代碼、數(shù)據(jù)、內(nèi)容,或其它信息,或者可以根據(jù)本發(fā)明的實(shí)施例對(duì)其進(jìn)行定制,例如通過使用關(guān)于再現(xiàn)程序和創(chuàng)建法描述的方法,或者根據(jù)其它方法和技術(shù)。
第六,可選地但是有益地遞推地使代碼、數(shù)據(jù)和內(nèi)容在初始設(shè)備和初始可到達(dá)的設(shè)備上傳播,可到達(dá)設(shè)備上的應(yīng)用程序代碼、數(shù)據(jù)和內(nèi)容進(jìn)一步按照需要遞推地在初始可到達(dá)設(shè)備組上使用第一到第五步驟,其中初始可到達(dá)的設(shè)備組現(xiàn)在按照需要作為初始設(shè)備(第二或后續(xù)的初始設(shè)備),將應(yīng)用程序按要求擴(kuò)展到其它可到達(dá)的設(shè)備,直到達(dá)到了實(shí)現(xiàn)最初的應(yīng)用程序目的所需要的所有希望的設(shè)備和資源為止,從而有效地形成設(shè)備和其相關(guān)資源的完整組。應(yīng)該知道,如果設(shè)備在第一循環(huán)中就具有需要的資源,則可能就不需要第二或后續(xù)的招募循環(huán)了。在另一方面,如果最初不能找到需要的資源,則就可能需要第二或后續(xù)的遞推的招募循環(huán)。遞推的招募也增加了第一循環(huán)被招募的設(shè)備作為橋梁或轉(zhuǎn)換器的可能性,從而通過第一循環(huán)被招募的設(shè)備起作用的最初的發(fā)起者能夠與第二循環(huán)被招募的設(shè)備進(jìn)行通信(例如,將Bluetooth通信轉(zhuǎn)換為硬連線的網(wǎng)絡(luò)連接)。
第七,根據(jù)初始應(yīng)用程序的要求,使現(xiàn)在從設(shè)備組或在設(shè)備組中分配的代碼、數(shù)據(jù)和內(nèi)容執(zhí)行需要的操作和資源存取,以通過執(zhí)行代碼和交換任何需要的代碼、數(shù)據(jù)、內(nèi)容或其它信息,來執(zhí)行或協(xié)調(diào)在所述設(shè)備組上執(zhí)行的操作,來實(shí)現(xiàn)初始應(yīng)用程序的目的,從而實(shí)現(xiàn)最初的應(yīng)用程序的目的。
這種分配可執(zhí)行的代碼、數(shù)據(jù),和內(nèi)容的步驟可以是應(yīng)用程序自身正在進(jìn)行的操作-直到這一時(shí)刻為止,即最初關(guān)注的過程形成設(shè)備組傳播數(shù)據(jù)、代碼和內(nèi)容,以建立設(shè)備組的各個(gè)成員,與這些成員一起實(shí)現(xiàn)其相應(yīng)的應(yīng)用程序的目的。該過程繼續(xù)實(shí)現(xiàn)應(yīng)用程序或任務(wù)的目的。在幻燈片放映的例子中,幻燈片(實(shí)際上是數(shù)字圖像或數(shù)據(jù)集)被添加到聯(lián)合的幻燈片放映中,或者幻燈片可以被翻頁或順序地顯示在所有設(shè)備上,以在所有設(shè)備上進(jìn)行瀏覽。這里在除該初始招募階段的其它地方描述了用于繼續(xù)互操作的程序。
這就完成了初始的招募階段,并為招募者(發(fā)起者)和被招募者(其它編組的設(shè)備)提供了進(jìn)行互操作和共享資源的機(jī)會(huì),如這里其它地方所描述的以及圖6 10031、10032、10033中所表示的。
接著通過事件800(參照?qǐng)D17所示)可以同步設(shè)備上的應(yīng)用程序的操作,其中如這里其它地方所述,事件800驅(qū)動(dòng)應(yīng)用程序的處理,并有益地通過事件800得到所有到應(yīng)用程序的輸入,將其放置在所有招募和被招募的設(shè)備的隊(duì)列中,其中招募和被招募的設(shè)備被標(biāo)記為針對(duì)其事件類型是同步的。下面(包括參照?qǐng)D17)更詳細(xì)地描述了事件和事件排隊(duì)。
參照?qǐng)D17所示,事件800可以是數(shù)據(jù)結(jié)構(gòu)示例,在圖17的800中表示字段,在該實(shí)施例中包括事件類型801、事件參數(shù)802,以及事件相關(guān)文件810,其中事件相關(guān)文件810可以包括程序811、內(nèi)容812,和/或Dart813。這些事件800可以提供輸入、通信數(shù)據(jù)和語義,并當(dāng)它們經(jīng)過運(yùn)行時(shí)間時(shí)實(shí)現(xiàn)同步功能,例如,經(jīng)過DartRuntime 8000(參照?qǐng)D15),Gizmo體系結(jié)構(gòu)10000(參照?qǐng)D18),或者沿著被標(biāo)記為451-x的線在DartDevices400之間(參照?qǐng)D17)。
事件800可以攜帶任何類型(一種或多種)或數(shù)量的數(shù)據(jù)參考文件810。優(yōu)選地參考開放文件。典型地,文件包含一個(gè)或多個(gè)在另一個(gè)DartDevice上運(yùn)行的DartProcedures,將Dart應(yīng)用程序延伸到另一個(gè)Dart Device上的完整的Darts,包含到另一個(gè)設(shè)備的控制面板的Dart,或者一般的列舉或輸入信息,其中所述信息不適合圖17中800所示的事件的其它參數(shù)。這里在其它地方更詳細(xì)地描述了這些和其它的Dart類型和一般的列舉或輸入信息。在圖15所述的DartRuntime流程圖8000和圖16的引擎事件處理內(nèi)置功能流程圖5000中更詳細(xì)地表示了事件的過程。因?yàn)樵诒景l(fā)明的一個(gè)實(shí)施例中,發(fā)送事件的結(jié)構(gòu)的和方法的基礎(chǔ)隨著事件一起自動(dòng)地發(fā)送相關(guān)文件,因此與事件800相關(guān)的文件810可以將與事件相關(guān)的文件看作與事件相分離,或者優(yōu)選地作為事件本身的一部分。因此,在至少一個(gè)實(shí)施例中,在將事件置于事件接收者的事件隊(duì)列之前,在發(fā)送方的文件被通信基礎(chǔ)設(shè)備備份到接收方的文件,使用與接收方設(shè)備上的備份文件圖像相關(guān)的文件標(biāo)識(shí)符(例如,字段)可以讀取該備份到接收方的文件。在發(fā)送方或接收方可以使用共同的或不同的文件名或文件標(biāo)識(shí)符。在運(yùn)行Dart(例如,RUN_DART類型事件)或運(yùn)行程序(例如,RUN_PROCEDURE類型事件)的情況下,當(dāng)事件達(dá)到隊(duì)列的最前面或開頭從而是隊(duì)列中的下一個(gè)時(shí),引擎將使用將被執(zhí)行的事件中的字段產(chǎn)生現(xiàn)在可以被讀取的DartProcedure或Dart。通常可能存在被Dart引擎自身處理的事件,即使當(dāng)目前沒有運(yùn)行應(yīng)用程序時(shí)也是如此。在一個(gè)實(shí)施例中,驅(qū)動(dòng)事件隊(duì)列的總是運(yùn)行的Dart或者是建立在引擎中的空閑的程序(例如,DartIdleProcedure),所說引擎保持調(diào)用引擎事件處理程序來保持通信繼續(xù)下去。這本質(zhì)上是保持運(yùn)行的循環(huán),直到出現(xiàn)要被處理的事件為止。當(dāng)應(yīng)用電源管理(這里在其它地方描述)時(shí),可以執(zhí)行用于停止接著喚醒或重新開始該循環(huán)的各種技術(shù)。
因此現(xiàn)在應(yīng)該知道,招募模型、方法,以及相關(guān)結(jié)構(gòu)執(zhí)行特定的設(shè)備、服務(wù),以及資源發(fā)現(xiàn),以識(shí)別所需要的設(shè)備,接著通過使用事件數(shù)據(jù)結(jié)構(gòu),例如事件800,向設(shè)備發(fā)送授權(quán)程序和信息,并智能地和有效地形成設(shè)備組,接著再次使用事件數(shù)據(jù)結(jié)構(gòu)事件800進(jìn)一步協(xié)調(diào)設(shè)備組,以實(shí)現(xiàn)Dart700或最初運(yùn)行在源設(shè)備上的應(yīng)用程序的初始目標(biāo)。
圖10表示招募如何使得連接的設(shè)備組作為單個(gè)設(shè)備進(jìn)行工作。一個(gè)最深刻的影響是新的互操作性設(shè)備和基于Dart的應(yīng)用程序的執(zhí)行和測(cè)試僅需要與設(shè)備數(shù)量N成比例的工作。需要分別地執(zhí)行和向所有需要進(jìn)行互操作的設(shè)備分配組件的傳統(tǒng)的靜態(tài)和程序性方法需要與N2成比例的速率增長(zhǎng)的工作。
在包括例子的本說明書的其它地方描述了招募和招募互操作性模型的其它方面,包括被招募的設(shè)備之間的事件的串行化和同步。下面還說明了招募互操作性模型的一些特定的示例性實(shí)施例。
在一個(gè)實(shí)施例(1)中,本發(fā)明提供了一種用于運(yùn)行在源設(shè)備上以招募一組設(shè)備的軟件應(yīng)用程序的方法,所述方法包括通過至少一個(gè)通信鏈接,向至少一個(gè)可到達(dá)的設(shè)備發(fā)送能夠運(yùn)行以找到具有所需要的資源或能力的設(shè)備的檢驗(yàn)程序,其中的可到達(dá)的設(shè)備不同于初始的源設(shè)備,所述檢驗(yàn)程序包括以可執(zhí)行的形式編碼的檢驗(yàn)程序指令,所述可執(zhí)行的形式是初始的源設(shè)備和檢驗(yàn)程序?qū)⒌竭_(dá)的設(shè)備所共用的;通過通信鏈接,在初始設(shè)備上從每個(gè)可達(dá)到的設(shè)備直接或間接地接收回答響應(yīng);通過在初始設(shè)備上執(zhí)行的程序,分析來自所有響應(yīng)的可到達(dá)的設(shè)備的接收的回答,以確定識(shí)別初始設(shè)備和響應(yīng)的可到達(dá)的設(shè)備的能力和資源的組合的利用計(jì)劃,以最佳地實(shí)現(xiàn)軟件應(yīng)用程序的目的;以及通過在初始設(shè)備上執(zhí)行的應(yīng)用程序,將可執(zhí)行代碼,數(shù)據(jù),內(nèi)容,和/或Dart的至少之一分配給每個(gè)可到達(dá)設(shè)備的至少之一,根據(jù)識(shí)別的利用計(jì)劃將其中的可到達(dá)的設(shè)備識(shí)別為具有需要的資源或能力。
在另一個(gè)實(shí)施例(2)中,本發(fā)明提供了一種用于招募一組設(shè)備的方法,所述方法包括通過通信鏈路在候選設(shè)備上接收并執(zhí)行檢驗(yàn)程序,所述檢驗(yàn)程序可被操作以確定接收的可到達(dá)的候選設(shè)備是否具有另一個(gè)招募設(shè)備所需要的資源或能力,所述檢驗(yàn)程序包括以可執(zhí)行的形式編碼的檢驗(yàn)程序指令,其中的可執(zhí)行的形式是接收設(shè)備和招募設(shè)備都已知的;為接收的檢驗(yàn)程序識(shí)別源設(shè)備,并關(guān)于接收的可到達(dá)的設(shè)備是否可存取被識(shí)別為初始源設(shè)備所需要的資源或能力或資源和能力組,發(fā)送對(duì)源設(shè)備狀態(tài)和信息的回答;以及在源設(shè)備確定可到達(dá)的設(shè)備具有形成一組以實(shí)現(xiàn)軟件應(yīng)用程序的目的的資源或能力的情況下,從源設(shè)備,招募設(shè)備,或其它候選設(shè)備接收可執(zhí)行代碼,數(shù)據(jù),內(nèi)容,和/或Dart中的至少之一。
在另一個(gè)實(shí)施例(3)中,本發(fā)明提供了一種用于招募一組設(shè)備的方法,所述方法包括(a)通過至少一個(gè)通信鏈接,從初始源設(shè)備向至少一個(gè)可到達(dá)的設(shè)備發(fā)送能夠運(yùn)行以找到具有所需要的資源或能力的設(shè)備的檢驗(yàn)程序,其中的可到達(dá)的設(shè)備不同于初始的源設(shè)備,所述檢驗(yàn)程序包括以可執(zhí)行的形式編碼的檢驗(yàn)程序指令,所述可執(zhí)行的形式是初始的源設(shè)備和檢驗(yàn)程序?qū)⒌竭_(dá)的設(shè)備所共用的;(b)在每個(gè)可到達(dá)的設(shè)備上接收并執(zhí)行接收的檢驗(yàn)程序,以識(shí)別是否存在至少一個(gè)初始源設(shè)備所需要的資源或能力的可到達(dá)的設(shè)備;(c)至少當(dāng)可到達(dá)的設(shè)備存取被識(shí)別為初始源設(shè)備所需要的資源或能力時(shí),向初始源設(shè)備發(fā)送回答;(d)通過通信鏈路從每個(gè)可達(dá)到的設(shè)備直接或間接地接收回答;(e)通過在初始設(shè)備上執(zhí)行的應(yīng)用程序,分析來自所有響應(yīng)的可到達(dá)的設(shè)備的接收的回答,以確定識(shí)別初始設(shè)備和響應(yīng)的可到達(dá)的設(shè)備的能力和資源的組合的利用計(jì)劃,以最佳地實(shí)現(xiàn)應(yīng)用程序的目的;以及(f)通過在初始設(shè)備上執(zhí)行的應(yīng)用程序,將可執(zhí)行代碼,數(shù)據(jù),內(nèi)容,和/或Dart的至少之一分配給每個(gè)可到達(dá)設(shè)備的至少之一,根據(jù)識(shí)別的利用計(jì)劃將其中的可到達(dá)的設(shè)備識(shí)別為具有需要的資源或能力。
在另一個(gè)實(shí)施例(4)中,本發(fā)明提供(3)所述的方法,所述方法進(jìn)一步包括至少一個(gè)可到達(dá)的設(shè)備接收分配的可執(zhí)行代碼數(shù)據(jù),內(nèi)容,和/或Dart的至少之一。
在另一個(gè)實(shí)施例(5)中,本發(fā)明提供(3)所述的方法,所述方法進(jìn)一步包括與可執(zhí)行代碼數(shù)據(jù),內(nèi)容,和/或Dart的至少之一所分配到的至少一個(gè)可到達(dá)的設(shè)備合作,以實(shí)現(xiàn)初始設(shè)備應(yīng)用程序目的的至少一部分。
在另一個(gè)實(shí)施例(6)中,本發(fā)明提供(3)所述的方法,所述方法進(jìn)一步包括每個(gè)可到達(dá)的設(shè)備作為第二初始源設(shè)備,在初始設(shè)備和可到達(dá)的設(shè)備上傳播可執(zhí)行的代碼,數(shù)據(jù),內(nèi)容,和/或Dart,可選地還要傳播存在于可到達(dá)的設(shè)備上的應(yīng)用程序代碼,數(shù)據(jù),內(nèi)容,和或Dart,并且如果需要的話,遞推地傳播到以前可到達(dá)的和編組的設(shè)備可到達(dá)的其它設(shè)備,以按需要將應(yīng)用程序擴(kuò)展到其它可到達(dá)的設(shè)備,直到實(shí)現(xiàn)了需要的設(shè)備的所有或預(yù)定標(biāo)準(zhǔn),和實(shí)現(xiàn)初始設(shè)備應(yīng)用程序的目的所需要的和希望的資源或能力為止,以有效地形成更大型的完整的設(shè)備組;根據(jù)初始設(shè)備應(yīng)用程序的需要和希望,從初始設(shè)備和可到達(dá)的設(shè)備組和在該組中分配可執(zhí)行的代碼,數(shù)據(jù),內(nèi)容,和/或Dart,以執(zhí)行實(shí)現(xiàn)初始設(shè)備應(yīng)用程序的目的所需要或希望的操作和資源存取,這是通過執(zhí)行代碼和交換實(shí)現(xiàn)和/或調(diào)整操作所需要的任何可執(zhí)行的代碼,數(shù)據(jù),內(nèi)容,和或Dart實(shí)現(xiàn)的,其中的操作在設(shè)備組上執(zhí)行,以實(shí)現(xiàn)初始應(yīng)用程序的目的。
在另一個(gè)實(shí)施例(7)中,本發(fā)明提供(3)所述的方法,其中初始源設(shè)備直接從初始設(shè)備發(fā)送招募消息的初始可到達(dá)的設(shè)備接收回答,或者以順序或遞推的方式,通過一個(gè)或多個(gè)中間可到達(dá)的設(shè)備間接地從另一個(gè)可到達(dá)的設(shè)備接收回答。
在另一個(gè)實(shí)施例(8)中,本發(fā)明提供(3)所述的方法,其中當(dāng)可到達(dá)的設(shè)備不存取被識(shí)別為初始源設(shè)備所需要的資源或能力時(shí),也發(fā)送到初始源設(shè)備的回答。
在另一個(gè)實(shí)施例(9)中,本發(fā)明提供(3)所述的方法,其中到初始源設(shè)備的回答是簡(jiǎn)單的參數(shù),其標(biāo)識(shí)為可到達(dá)的設(shè)備或者存取(例如,真或邏輯“1”)或者沒有存取(例如,假或邏輯“0”)被識(shí)別為初始源設(shè)備所需要的資源或能力。
在另一個(gè)實(shí)施例(10)中,本發(fā)明提供(3)所述的方法,其中到初始源設(shè)備的回答包括DartEvent,一部分Dart,數(shù)據(jù),內(nèi)容,可執(zhí)行的程序,Dart,多個(gè)Dart之一,以及其任何組合。
在另一個(gè)實(shí)施例(11)中,本發(fā)明提供(3)所述的方法,其中到初始源設(shè)備的回答包括回答的數(shù)據(jù)或內(nèi)容,該回答的數(shù)據(jù)或內(nèi)容標(biāo)識(shí)特定的可到達(dá)的設(shè)備通過通信協(xié)議到初始設(shè)備的資源和/或能力。
在另一個(gè)實(shí)施例(12)中,本發(fā)明提供(3)所述的方法,其中檢驗(yàn)程序包括檢驗(yàn)至少一個(gè)初始源設(shè)備所需要的被特定識(shí)別的資源或能力,以實(shí)現(xiàn)至少部分地在初始源設(shè)備上執(zhí)行的應(yīng)用程序任務(wù)的目的的指令。
在另一個(gè)實(shí)施例(13)中,本發(fā)明提供(3)所述的方法,其中所述的方法至少部分地被編碼為計(jì)算機(jī)程序產(chǎn)品的軟件應(yīng)用程序,其中計(jì)算機(jī)程序產(chǎn)品用于在一組設(shè)備上招募和有效地運(yùn)行應(yīng)用程序。
在另一個(gè)實(shí)施例(14)中,本發(fā)明提供(3)所述的方法,其中所述的方法有效地連接并接著允許控制招募和被招募的設(shè)備的操作,好像被招募的的設(shè)備是具有所有招募和被招募的設(shè)備的組合資源的設(shè)備。
在另一個(gè)實(shí)施例(15)中,本發(fā)明提供(3)所述的方法,其中回答包括下述中任何之一無回答,數(shù)據(jù)或內(nèi)容回答,任何數(shù)字編碼的信息,一個(gè)或多個(gè)程序,設(shè)備將是有用的指示,回答的事件,通過其文件有效載荷包含任何數(shù)量的數(shù)據(jù)或數(shù)據(jù)組的回答事件,回答程序,Dart,包括文本名稱和設(shè)備的描述從而可以從初始設(shè)備上的菜單中選擇使用哪個(gè)(些)設(shè)備的回答事件,一組可執(zhí)行代碼的至少一個(gè)示例的特定包的標(biāo)識(shí)符,存在于源設(shè)備上和能夠在源設(shè)備上生成的數(shù)據(jù)和內(nèi)容,最適合于在設(shè)備上運(yùn)行的再現(xiàn)程序或再現(xiàn)程序組,或這些的任何組合。
在另一個(gè)實(shí)施例(16)中,本發(fā)明提供(3)所述的方法,其中至少一個(gè)資源或能力從包括下述的組中選擇(i)可用的資源或特別需要的資源;(ii)可用的能力或特別需要的能力;(iii)一個(gè)或多個(gè)相互關(guān)聯(lián)的可到達(dá)的設(shè)備的資源和能力組,或可到達(dá)的設(shè)備可用以實(shí)現(xiàn)應(yīng)用程序的目的的那些資源和/或能力;以及(iv)以上這些的任何組合。
在另一個(gè)實(shí)施例(17)中,本發(fā)明提供(3)所述的方法,其中資源或能力包括從包括下述的資源或能力組中選擇的被識(shí)別的能力的至少之一被識(shí)別的數(shù)據(jù)操作軟件,被識(shí)別的信息處理軟件,被識(shí)別的計(jì)算軟件,被識(shí)別的圖像處理軟件,被識(shí)別的通信軟件,被識(shí)別的通信硬件,被識(shí)別的介質(zhì),被識(shí)別的數(shù)據(jù)組(多個(gè)數(shù)據(jù)組),被識(shí)別的內(nèi)容,被識(shí)別的程序或多個(gè)程序,被識(shí)別的配置信息,被識(shí)別的圖形加速硬件或軟件,被識(shí)別的無論是臨時(shí)的或不是臨時(shí)的(永久的)存儲(chǔ)介質(zhì),被識(shí)別的打印能力,被識(shí)別的傳真能力,被識(shí)別的掃描能力,被識(shí)別的用戶接口設(shè)備(無論輸入或輸出或既是輸入又是輸出),對(duì)其它設(shè)備的資源的存取(由于該資源設(shè)備可以進(jìn)行通信并且其它設(shè)備可以在永久的通信鏈中進(jìn)行通信),以及其中兩個(gè)或多個(gè)的任意組合。
在另一個(gè)實(shí)施例(18)中,本發(fā)明提供(3)所述的方法,其中以共用的可執(zhí)行形式的檢驗(yàn)程序包括由Dart順應(yīng)指令集(DartInstructionSet)或任何其它互操作性指令集形成的至少一個(gè)檢驗(yàn)程序,該Dart順應(yīng)指令集在Dart指令可兼容的引擎(DartEngine)中實(shí)施。在另一個(gè)實(shí)施例(19)中,本發(fā)明提供(3)所述的方法,其中至少一個(gè)通信鏈接包括任何數(shù)量的通信鏈接,信道,和/或協(xié)議,其中的協(xié)議包括任何數(shù)量或任何組的同類或異類的通信協(xié)議,而無論是有線的或無線的,無論是永遠(yuǎn)可用的或間斷可用的。
在另一個(gè)實(shí)施例(20)中,本發(fā)明提供(3)所述的方法,其中同類和異類通信鏈接,信道,和協(xié)議被識(shí)別的硬件抽象層實(shí)現(xiàn)方案支持,其中的硬件抽象層實(shí)現(xiàn)方案是在任何兩個(gè)或多個(gè)通信設(shè)備上運(yùn)行的播放器部分。
在另一個(gè)實(shí)施例(21)中,本發(fā)明提供(20)所述的方法,其中被識(shí)別的硬件抽象層實(shí)現(xiàn)方案包括作為DartEngine的組件的Dart硬件抽象層實(shí)現(xiàn)方案。
在另一個(gè)實(shí)施例(22)中,本發(fā)明提供(3)所述的方法,其中至少一個(gè)通信鏈路和通信協(xié)議用于發(fā)送運(yùn)行程序類型的事件,事件的事件標(biāo)識(shí)符參考用于識(shí)別在可到達(dá)的設(shè)備上運(yùn)行的程序的文件。
在另一個(gè)實(shí)施例(23)中,本發(fā)明提供(22)所述的方法,其中事件包括DartEvents,運(yùn)行程序類型事件包括Dart RUN_PROCEDURE類型事件。
在另一個(gè)實(shí)施例(24)中,本發(fā)明提供(3)所述的方法,其中參考用于識(shí)別在可到達(dá)的設(shè)備上運(yùn)行的程序的文件的事件標(biāo)識(shí)符包括事件的文件標(biāo)識(shí)符,其中文件標(biāo)識(shí)符是指包括在可到達(dá)的設(shè)備上運(yùn)行的程序的圖像的文件。
在另一個(gè)實(shí)施例(25)中,本發(fā)明提供(24)所述的方法,其中文件包括遵循DartFormat的Dart順應(yīng)文件(DartFile),程序的圖像包括DartProcedure(DartProcedure)的二進(jìn)制數(shù)據(jù)圖像。
在另一個(gè)實(shí)施例(26)中,本發(fā)明提供(3)所述的方法,其中檢驗(yàn)程序包括DartProcedures或完整的Darts。
在另一個(gè)實(shí)施例(27)中,本發(fā)明提供(3)所述的方法,其中檢驗(yàn)程序作為與事件相關(guān)聯(lián)的文件發(fā)送,檢驗(yàn)程序作為與事件相關(guān)聯(lián)的文件被可到達(dá)的設(shè)備接收,這使得檢驗(yàn)程序開始在可到達(dá)的設(shè)備上的執(zhí)行。
在另一個(gè)實(shí)施例(28)中,本發(fā)明提供(3)所述的方法,其中檢驗(yàn)程序包括DartProcedure。
在另一個(gè)實(shí)施例(29)中,本發(fā)明提供(3)所述的方法,其中通過使用指令集輪廓指令,確定包括可到達(dá)的設(shè)備的基本資源和能力的資源和能力。
在另一個(gè)實(shí)施例(30)中,本發(fā)明提供(29)所述的方法,其中指令集輪廓指令包括Dart順應(yīng)指令集(DartstructionSet)的Dart順應(yīng)輪廓指令(DartProfileInstruction)。
在另一個(gè)實(shí)施例(31)中,本發(fā)明提供(3)所述的方法,其中每個(gè)可到達(dá)設(shè)備中的檢驗(yàn)程序的執(zhí)行根據(jù)再現(xiàn)確定規(guī)則確定包含在應(yīng)用程序中的初始Dart的最佳再現(xiàn),其中的再現(xiàn)確定規(guī)則被發(fā)送到每個(gè)特定的可到達(dá)的設(shè)備,并作為回答的數(shù)據(jù)的一部分送回確定的最佳再現(xiàn)的標(biāo)識(shí)符。
在另一個(gè)實(shí)施例(32)中,本發(fā)明提供(31)所述的方法,其中再現(xiàn)確定規(guī)則被包含在至少一個(gè)適于執(zhí)行任何復(fù)雜度的任何需要的計(jì)算的程序中,并通過輪廓指令訪問任何需要的輪廓信息,以確定可到達(dá)設(shè)備的資源,能力,和/或狀態(tài)。
在另一個(gè)實(shí)施例(33)中,本發(fā)明提供(31)所述的方法,其中檢驗(yàn)程序執(zhí)行過程通過參考定義再現(xiàn)的順序的規(guī)則從多個(gè)再現(xiàn)中確定最佳再現(xiàn),并檢查每個(gè)可到達(dá)的設(shè)備以確定是否以預(yù)定義的再現(xiàn)優(yōu)先順序滿足多個(gè)再現(xiàn)中每一個(gè)的所有要求,直到在排序的多個(gè)再現(xiàn)中發(fā)現(xiàn)第一個(gè)滿足所有再現(xiàn)的要求的再現(xiàn)。
在另一個(gè)實(shí)施例(34)中,本發(fā)明提供(3)所述的方法,其中檢驗(yàn)程序(多個(gè)程序)使用事先已經(jīng)理解的通信協(xié)議,通過通信鏈路向初始設(shè)備返回Darts,程序,數(shù)據(jù),或內(nèi)容。
在另一個(gè)實(shí)施例(35)中,本發(fā)明提供(3)所述的方法,其中回答包括至少一個(gè)回答的程序,數(shù)據(jù),或內(nèi)容和其中任何一個(gè)或其組合完整的Darts,DartParts,DartProcedures,或DartEvents,并且可以返回其中一個(gè)或任何組合,帶有或不帶有相關(guān)聯(lián)的事件文件。
在另一個(gè)實(shí)施例(36)中,本發(fā)明提供(3)所述的方法,其中回答包括返回的程序,數(shù)據(jù),內(nèi)容,和/或Dart中至少之一,并且可選地包括顯示發(fā)生錯(cuò)誤的應(yīng)答代碼,表示或者已經(jīng)發(fā)生特定的錯(cuò)誤或者已經(jīng)發(fā)生非特定的錯(cuò)誤的錯(cuò)誤代碼,并且錯(cuò)誤代碼可選地包括在改正或傳輸特定的錯(cuò)誤和/或錯(cuò)誤性質(zhì)中使用的信息。
在另一個(gè)實(shí)施例(37)中,本發(fā)明提供(3)所述的方法,其中應(yīng)用程序代碼至少是Dart、DartProcedure、或可以在初始設(shè)備或初始設(shè)備存取的設(shè)備上執(zhí)行的任何形式的程序中之一,其中初始設(shè)備對(duì)所述設(shè)備進(jìn)行存取以開始傳輸或執(zhí)行程序并利用該執(zhí)行的結(jié)果。
在另一個(gè)實(shí)施例(38)中,本發(fā)明提供(3)所述的方法,其中應(yīng)用程序代碼包括Dart、DartProcedure,或可以在可到達(dá)的設(shè)備(多個(gè)設(shè)備)上執(zhí)行或另外地將信息傳送到可到達(dá)的設(shè)備(多個(gè)設(shè)備)的另一個(gè)程序格式,以在可到達(dá)的設(shè)備上執(zhí)行,而不考慮程序格式是否利用DartInstructionSet。
在另一個(gè)實(shí)施例(39)中,本發(fā)明提供(3)所述的方法,其中在用于執(zhí)行應(yīng)用程序的操作時(shí)間或確定的時(shí)間段內(nèi),被招募的的設(shè)備組可以按照需要?jiǎng)討B(tài)地?cái)U(kuò)展該組以包括其它可到達(dá)的設(shè)備,或減少設(shè)備組以排除可到達(dá)的設(shè)備。
在另一個(gè)實(shí)施例(40)中,本發(fā)明提供(3)所述的方法,其中通過發(fā)送Darts、DartProcedures、數(shù)據(jù)、內(nèi)容,或其它信息,或其任何組合中的至少之一,來實(shí)現(xiàn)分配,無論事件中字段參考的信息是否隨事件被發(fā)送或作為事件的一部分被發(fā)送,這些都作為dart事件(DartEvents)的一部分包括在一起。
在另一個(gè)實(shí)施例(41)中,本發(fā)明提供(3)所述的方法,其中根據(jù)初始應(yīng)用程序的需要,從設(shè)備組并在設(shè)備組中分配的代碼、數(shù)據(jù),以及內(nèi)容,執(zhí)行所要求的操作和資源存取,以通過執(zhí)行代碼和可選地交換任何額外的或不同的代碼、數(shù)據(jù),以及內(nèi)容來實(shí)現(xiàn)初始應(yīng)用程序的目的,其中的執(zhí)行和交換是實(shí)現(xiàn)或協(xié)調(diào)將在設(shè)備組上執(zhí)行的操作以進(jìn)一步實(shí)現(xiàn)初始應(yīng)用程序的目的所必須的。
在另一個(gè)實(shí)施例(42)中,本發(fā)明提供(3)所述的方法,其中應(yīng)用程序包括在單個(gè)二進(jìn)制圖像中,該單個(gè)二進(jìn)制圖像包括作為招募程序的一部分被分配到所有設(shè)備上的所有代碼。
在另一個(gè)實(shí)施例(43)中,本發(fā)明提供(3)所述的方法,其中所述方法進(jìn)一步包括同步、串行化,以及協(xié)調(diào)設(shè)備組的行為,并且所述同步、串行化,以及協(xié)調(diào)是完全地或部分地通過單獨(dú)地或者可選地隨著與DartEvents或事件相關(guān)的文件一起傳遞或交換事件或DartEvents而實(shí)現(xiàn)的。
在另一個(gè)實(shí)施例(44)中,本發(fā)明提供(43)所述的方法,其中所述事件參考至少一個(gè)文件,從而借助于該參考它們有效地包括任何復(fù)雜度的具有文件圖像的一個(gè)文件或多個(gè)文件,并且隨著事件結(jié)構(gòu)內(nèi)容傳輸這些文件圖像。
在另一個(gè)實(shí)施例(45)中,本發(fā)明提供(3)所述的方法,進(jìn)一步包括在進(jìn)行互操作和通信的初始設(shè)備和被招募的設(shè)備之間單獨(dú)地或可選地隨著與DartEvents或事件相關(guān)的文件傳遞或交換DartEvents事件,并且借助于DartEvent結(jié)構(gòu)中的文件標(biāo)識(shí)符(字段)參考,事件有效地包括任何復(fù)雜度的文件或其它數(shù)據(jù)或數(shù)據(jù)結(jié)構(gòu),當(dāng)參考該文件圖像時(shí),總是隨著事件結(jié)構(gòu)內(nèi)容一同傳輸。
在另一個(gè)實(shí)施例(46)中,本發(fā)明提供(43)所述的方法,其中通過DartFramework,DartRuntime,和/或DartEngine,或者可選地通過非DartPlatform的專用的事件驅(qū)動(dòng)的執(zhí)行方案,在任何數(shù)量的編組的設(shè)備的事件隊(duì)列上自動(dòng)地備份和/或同步DartEvents或事件,從而被識(shí)別為自動(dòng)同步或被Dart放置在事件隊(duì)列中的DartEvents或事件以自動(dòng)串行化和同步的方式出現(xiàn)在任何數(shù)量的編組設(shè)備的事件隊(duì)列中。
在另一個(gè)實(shí)施例(47)中,本發(fā)明提供(46)所述的方法,其中通過用于事件驅(qū)動(dòng)的協(xié)作的應(yīng)用程序的自動(dòng)串行化和同步的程序、在包括初始設(shè)備的多個(gè)協(xié)作的設(shè)備上運(yùn)行的功能或再現(xiàn)程序,來實(shí)現(xiàn)自動(dòng)的串行化和同步,所述方法包括借助于用于需要的每個(gè)設(shè)備間協(xié)作功能的應(yīng)用程序,在初始設(shè)備上用例子說明連接管理器對(duì)象示例;程序性地借助于應(yīng)用程序?qū)⒃谒袇f(xié)作設(shè)備上同步的事件類型列表傳輸?shù)竭B接管理器;建立協(xié)作的設(shè)備組,該設(shè)備組在每個(gè)設(shè)備上具有一個(gè)連接管理器并共享相同的同步事件類型列表;借助于連接管理器維持識(shí)別編組的設(shè)備和將被同步的事件類型的會(huì)話列表;借助于連接管理器檢查將被放在事件隊(duì)列中的所有事件,如果被檢查的特定事件是連接管理器從應(yīng)該被同步的會(huì)話列表中得知的事件類型,則將該事件標(biāo)記為將與其它會(huì)話同步的事件,并且將該事件放置在連接管理器中列出的設(shè)備的事件隊(duì)列中。
在另一個(gè)實(shí)施例(48)中,本發(fā)明提供(47)所述的方法,其中通過直到其接收到確認(rèn)信息才允許將一個(gè)事件放置在任何一個(gè)設(shè)備的事件隊(duì)列中,來串行化將被任何一個(gè)事件驅(qū)動(dòng)的協(xié)作應(yīng)用程序功能或再現(xiàn)程序放置在協(xié)作的設(shè)備事件隊(duì)列中的所有事件,所述的確認(rèn)信息是任何一個(gè)設(shè)備將事件直接發(fā)送到的協(xié)作設(shè)備事件隊(duì)列已經(jīng)被成功地放置在協(xié)作的設(shè)備事件隊(duì)列中。
在另一個(gè)實(shí)施例(49)中,本發(fā)明提供(48)所述的方法,其中通過直到其接收到確認(rèn)信息才允許將一個(gè)事件放置在接收的任何一個(gè)設(shè)備的事件隊(duì)列中,來串行化將被任何一個(gè)事件驅(qū)動(dòng)的協(xié)作應(yīng)用程序功能或再現(xiàn)程序放置在協(xié)作的設(shè)備事件隊(duì)列中的所有事件,所述的確認(rèn)信息是任何一個(gè)接收設(shè)備將事件發(fā)送到的協(xié)作設(shè)備事件隊(duì)列已經(jīng)被成功地放置在協(xié)作的設(shè)備事件隊(duì)列中。
在另一個(gè)實(shí)施例(50)中,本發(fā)明提供(48)所述的方法,其中無論設(shè)備是通過直接的通信設(shè)備鏈直接地或間接地進(jìn)行通信,任何數(shù)量的協(xié)作的設(shè)備事件隊(duì)列都在所有協(xié)作的設(shè)備上建立一個(gè)排隊(duì)事件的串行化系統(tǒng)。
在另一個(gè)實(shí)施例(51)中,本發(fā)明提供(49)所述的方法,其中無論設(shè)備是通過直接的通信設(shè)備鏈直接地或間接地進(jìn)行通信,任何數(shù)量的協(xié)作的設(shè)備事件隊(duì)列都在所有協(xié)作的設(shè)備上建立一個(gè)排隊(duì)事件的串行化系統(tǒng)。
在另一個(gè)實(shí)施例(52)中,本發(fā)明提供(47)所述的方法,其中將被放置在來自與兩個(gè)或多個(gè)協(xié)作的設(shè)備的協(xié)作設(shè)備隊(duì)列中的事件被一個(gè)系統(tǒng)同步為協(xié)作設(shè)備隊(duì)列中的一個(gè)串行化事件,其中只允許一個(gè)主設(shè)備將事件類型放置在將被同步的事件類型列表中,從而將在所有協(xié)作的設(shè)備上串行化所有這種事件。
在另一個(gè)實(shí)施例(53)中,本發(fā)明提供(52)所述的方法,其中借助于主請(qǐng)求事件類型的事件通知主設(shè)備將代表其它協(xié)作的設(shè)備發(fā)布的事件,其中主請(qǐng)求事件類型的事件包括主設(shè)備將意圖的事件放置在所有協(xié)作的設(shè)備隊(duì)列中所需要的所有信息。
在另一個(gè)實(shí)施例(54)中,本發(fā)明提供(52)所述的方法,其中被另一個(gè)設(shè)備招募進(jìn)入?yún)f(xié)作設(shè)備組的每個(gè)設(shè)備將其相對(duì)的主設(shè)備看作招募該設(shè)備的設(shè)備。
在另一個(gè)實(shí)施例(55)中,本發(fā)明提供(53)所述的方法,其中被另一個(gè)設(shè)備招募進(jìn)入?yún)f(xié)作設(shè)備組的每個(gè)設(shè)備將其相對(duì)的主設(shè)備看作招募該設(shè)備的設(shè)備。
在另一個(gè)實(shí)施例(56)中,本發(fā)明提供(54)所述的方法,其中將主請(qǐng)求事件類型事件放置在相對(duì)的主設(shè)備隊(duì)列中,將使得事件從設(shè)備傳播到相對(duì)的主設(shè)備上,直到不具有相對(duì)的主設(shè)備的初始主設(shè)備使用主設(shè)備將目的事件放置在所有協(xié)作的設(shè)備隊(duì)列中所需要的信息來形成事件為止。
在另一個(gè)實(shí)施例(57)中,本發(fā)明提供(52)所述的方法,其中通過向同步的和/或串行化的協(xié)作的設(shè)備隊(duì)列發(fā)布變化的主類型事件而改變指定的主設(shè)備,自身處于串行化的事件列表上的主類型事件以同步的串行化的方式通知所有設(shè)備新的主設(shè)備將代替當(dāng)前的主設(shè)備。
在另一個(gè)實(shí)施例(58)中,本發(fā)明提供(54)所述的方法,其中主請(qǐng)求事件通過協(xié)作的設(shè)備隊(duì)列進(jìn)行傳播,直到新的主設(shè)備處理事件為止。
在另一個(gè)實(shí)施例(59)中,本發(fā)明提供(55)所述的方法,其中主請(qǐng)求事件通過協(xié)作的設(shè)備隊(duì)列進(jìn)行傳播,直到新的主設(shè)備處理事件為止。
在另一個(gè)實(shí)施例(60)中,本發(fā)明提供(53)所述的方法,其中被標(biāo)識(shí)為指定的事件的一部分的可選的文件被主請(qǐng)求事件類型事件發(fā)送,如果存在這種文件參考,則該可選的文件被保持在每個(gè)傳播的設(shè)備上并具有標(biāo)識(shí)符,該標(biāo)識(shí)符允許文件重新與將被主設(shè)備發(fā)送的事件關(guān)聯(lián),如同其已經(jīng)被主設(shè)備作為事件的一部分發(fā)送,為了降低信息量,將必須作為每個(gè)事件的一部分進(jìn)行發(fā)送的文件作為主設(shè)備處理的主請(qǐng)求事件類型的結(jié)果進(jìn)行發(fā)送。
在另一個(gè)實(shí)施例(61)中,本發(fā)明提供一種初始設(shè)備,包括與存儲(chǔ)器相連并適于執(zhí)行程序的處理器,其中的程序包括用于實(shí)現(xiàn)目的任務(wù)的指令;用于至少部分地在處理器和存儲(chǔ)器中執(zhí)行以招募至少一個(gè)不同于所述設(shè)備并處于所述設(shè)備外部的一個(gè)被招募的設(shè)備以參與目的任務(wù)的實(shí)現(xiàn)的裝置,所述被招募的設(shè)備至少包括目的任務(wù)的性能版本所需要的硬件資源;以及完全存儲(chǔ)在所述設(shè)備中以補(bǔ)充所述被招募的設(shè)備的資源的裝置,從而硬件資源和授權(quán)補(bǔ)充的資源使被招募的設(shè)備完全能夠?qū)崿F(xiàn)目的任務(wù)。
在另一個(gè)實(shí)施例(62)中,本發(fā)明提供(61)所述的初始設(shè)備,其中所述設(shè)備和被招募的設(shè)備中每個(gè)都在共同的程序性環(huán)境中操作,至少部分地在處理器和存儲(chǔ)器中執(zhí)行以進(jìn)行招募的裝置包括用于在共同的程序性環(huán)境中通過至少一條連接將執(zhí)行的程序廣播到也包括或操作在共同的程序性環(huán)境中的其它設(shè)備的裝置。
在另一個(gè)實(shí)施例(63)中,本發(fā)明提供(62)所述的初始設(shè)備,其中用于進(jìn)行招募的裝置進(jìn)一步包括用于在其它設(shè)備上啟動(dòng)程序的執(zhí)行以程序性地檢查每個(gè)其它設(shè)備的資源和能力,從而確定每個(gè)設(shè)備是否具有參與實(shí)現(xiàn)特定的任務(wù)所需要的資源和能力的裝置。
在另一個(gè)實(shí)施例(64)中,本發(fā)明提供(63)所述的初始設(shè)備,其中在每個(gè)特定的其它設(shè)備上,至少部分地通過存取存儲(chǔ)在特定設(shè)備上或關(guān)于特定設(shè)備計(jì)算的設(shè)備專用的硬件抽象層信息,來執(zhí)行所述檢查。
在另一個(gè)實(shí)施例(65)中,本發(fā)明提供(64)所述的初始設(shè)備,其中所述用于進(jìn)行補(bǔ)充的裝置進(jìn)一步包括用于發(fā)送和安裝授權(quán)程序、數(shù)據(jù)、和/或內(nèi)容的裝置,其中的程序、數(shù)據(jù)、和/或內(nèi)容是使每個(gè)設(shè)備實(shí)現(xiàn)其特定任務(wù)的相應(yīng)部分所需要的。
在另一個(gè)實(shí)施例(66)中,本發(fā)明提供(61)所述的初始設(shè)備,進(jìn)一步包括用于在初始設(shè)備和其它設(shè)備上臨時(shí)地或永久地同步操作的裝置,所述用于同步的裝置包括任務(wù)事件隊(duì)列和用于維護(hù)該任務(wù)事件隊(duì)列的裝置。
在另一個(gè)實(shí)施例(67)中,本發(fā)明提供被招募的設(shè)備,它包括包括處理器和連接到該處理器的存儲(chǔ)器的一組硬件資源;適合于實(shí)現(xiàn)一組任務(wù)的計(jì)算機(jī)程序代碼資源;硬件資源能夠或至少執(zhí)行特定任務(wù)的執(zhí)行版本,但是計(jì)算機(jī)程序代碼資源最初并不能執(zhí)行理想的版本或方法,以實(shí)現(xiàn)特定的任務(wù)或特定任務(wù)的一個(gè)方面;用于接收通信的裝置,其中的通信至少包括計(jì)算機(jī)程序代碼通信和數(shù)據(jù)通信之一,所述計(jì)算機(jī)程序代碼通信包括使設(shè)備能夠執(zhí)行特定任務(wù)的理想的版本、方法或方面的補(bǔ)充的計(jì)算機(jī)程序代碼資源。
在另一個(gè)實(shí)施例(68)中,本發(fā)明提供(67)所述的被招募的設(shè)備,其中被招募的設(shè)備和初始設(shè)備中每一個(gè)都操作在共同的程序性環(huán)境下。
在另一個(gè)實(shí)施例(69)中,本發(fā)明提供(68)所述的被招募的設(shè)備,進(jìn)一步包括用于執(zhí)行從初始設(shè)備接收的程序以程序性地檢查被招募的設(shè)備的資源和能力,從而確定被招募的設(shè)備是否具有參與實(shí)現(xiàn)特定任務(wù)所需要的資源和能力的裝置。
在另一個(gè)實(shí)施例(70)中,本發(fā)明提供(69)所述的被招募的設(shè)備,其中在被招募的設(shè)備上,至少部分地通過存取存儲(chǔ)在被招募的設(shè)備上或關(guān)于被招募的設(shè)備計(jì)算的設(shè)備專用的硬件抽象層信息,來執(zhí)行所述檢查。
在另一個(gè)實(shí)施例(71)中,本發(fā)明提供(70)所述的被招募的設(shè)備,進(jìn)一步包括用于安裝授權(quán)程序、數(shù)據(jù)、和/或內(nèi)容的裝置,其中的程序、數(shù)據(jù)、和/或內(nèi)容是使每個(gè)被招募的設(shè)備實(shí)現(xiàn)其特定任務(wù)的相應(yīng)部分所需要的。
在另一個(gè)實(shí)施例(72)中,本發(fā)明提供(61)所述的被招募的設(shè)備,進(jìn)一步包括用于在初始設(shè)備和被招募的設(shè)備上臨時(shí)同步操作的裝置,所述用于同步的裝置包括任務(wù)事件隊(duì)列和用于維持該任務(wù)事件隊(duì)列的裝置。
在另一個(gè)實(shí)施例(73)中,本發(fā)明提供在多個(gè)不同的設(shè)備上形成集成的特定的動(dòng)態(tài)分布式信息處理系統(tǒng)的以參與特定任務(wù)的執(zhí)行的方法,所述方法包括初始設(shè)備啟動(dòng)分布式信息處理系統(tǒng)的形成,所述形成包括使用至少一個(gè)通信信道和協(xié)議廣播消息,以識(shí)別和招募可能擁有參與執(zhí)行特定任務(wù)的資源和能力的其它被招募的設(shè)備;按照需要將程序、數(shù)據(jù),以及內(nèi)容中的至少之一傳輸?shù)矫總€(gè)被招募的設(shè)備,從而使每個(gè)被招募的設(shè)備都能夠?qū)崿F(xiàn)其相應(yīng)的特定任務(wù)的部分。
在另一個(gè)實(shí)施例(74)中,本發(fā)明提供(73)所述的方法,進(jìn)一步包括至少部分地在初始設(shè)備的處理器和存儲(chǔ)器中執(zhí)行用于招募至少一個(gè)不同于初始設(shè)備并處于初始設(shè)備外部的被招募的設(shè)備以參與目的任務(wù)的執(zhí)行的程序,所述被招募的設(shè)備至少包括目的任務(wù)的執(zhí)行版本所需要的硬件資源;在初始設(shè)備中全部存儲(chǔ)用于補(bǔ)充被招募的設(shè)備資源的程序和可選的數(shù)據(jù),從而硬件資源和授權(quán)的補(bǔ)充的資源使被招募的設(shè)備能夠完全實(shí)現(xiàn)目的任務(wù)。
在另一個(gè)實(shí)施例(75)中,本發(fā)明提供(74)所述的方法,其中所述設(shè)備和被招募的設(shè)備中每個(gè)都在共同的程序性環(huán)境中操作,至少部分地在處理器和存儲(chǔ)器中執(zhí)行以進(jìn)行招募的程序包括在共同的程序性環(huán)境中通過至少一條連接將執(zhí)行的程序廣播到也包括或操作在共同的程序性環(huán)境中的其它設(shè)備。
在另一個(gè)實(shí)施例(76)中,本發(fā)明提供(75)所述的方法,其中所述招募進(jìn)一步包括在其它設(shè)備上啟動(dòng)程序的執(zhí)行以程序性地檢查每個(gè)其它設(shè)備的資源和能力,從而確定每個(gè)設(shè)備是否具有參與實(shí)現(xiàn)特定的任務(wù)所需要的資源和能力。
在另一個(gè)實(shí)施例(77)中,本發(fā)明提供(76)所述的方法,其中在每個(gè)特定的其它被招募的設(shè)備上,至少部分地通過存取存儲(chǔ)在特定設(shè)備上或關(guān)于特定設(shè)備計(jì)算的設(shè)備專用的硬件抽象層信息,來執(zhí)行所述檢查。
在另一個(gè)實(shí)施例(78)中,本發(fā)明提供(77)所述的方法,其中所述補(bǔ)充進(jìn)一步包括發(fā)送和安裝授權(quán)程序、數(shù)據(jù)、和/或內(nèi)容,其中的程序、數(shù)據(jù)、和/或內(nèi)容是使每個(gè)設(shè)備實(shí)現(xiàn)其特定任務(wù)的相應(yīng)部分所需要的。
在另一個(gè)實(shí)施例(79)中,本發(fā)明提供(77)所述的方法,進(jìn)一步包括用于在初始設(shè)備和其它被招募的設(shè)備上臨時(shí)地同步操作,所述同步包括生成和維護(hù)該任務(wù)事件隊(duì)列。
在另一個(gè)實(shí)施例(80)中,本發(fā)明提供(73)所述的方法,其中所述通信是這種通信和交互作用,即它既不屬于客戶機(jī)-服務(wù)器通信交互作用也不屬于對(duì)等通信交互作用。
在另一個(gè)實(shí)施例(81)中,本發(fā)明提供(73)所述的方法,其中招募執(zhí)行特定的設(shè)備、服務(wù),和資源發(fā)現(xiàn)以識(shí)別所需要的設(shè)備,接著使用事件向設(shè)備發(fā)送授權(quán)程序和信息;智能地和有效地形成設(shè)備組,并接著使用事件協(xié)調(diào)設(shè)備組,以實(shí)現(xiàn)最初運(yùn)行在源初始設(shè)備上的Dart或應(yīng)用程序或任務(wù)的目的。
在另一個(gè)實(shí)施例(82)中,本發(fā)明提供(73)所述的方法,其中所述分布式信息處理系統(tǒng)包括存取和協(xié)調(diào)設(shè)備的一些或所有物理能力的使用。
在另一個(gè)實(shí)施例(83)中,本發(fā)明提供(82)所述的方法,其中所述設(shè)備的物理能力是從下述組中選擇的,該組可選地包括打印、傳真、顯示、播放音樂、播放視頻、控制其它設(shè)備、在任何介質(zhì)上存儲(chǔ)數(shù)據(jù)(無論是數(shù)字的還是模擬的)、制造產(chǎn)品、提供刪除、拍攝照片的能力,或者可以被設(shè)備的處理能力存取、監(jiān)視或控制的任何其它的物理能力。
在另一個(gè)實(shí)施例(84)中,本發(fā)明提供(1)所述的方法,其中運(yùn)行在多個(gè)設(shè)備上的軟件應(yīng)用程序至少部分地在兩個(gè)或多個(gè)設(shè)備上執(zhí)行互操作性操作,其中的設(shè)備具有最初為初始設(shè)備上的單個(gè)軟件包的一部分的代碼和/或數(shù)據(jù)和/或內(nèi)容,從而享有比使用獨(dú)立地開發(fā)和/或獨(dú)立地分配的應(yīng)用程序執(zhí)行互操作性操作的情況下更可靠的互操作性。
在另一個(gè)實(shí)施例(85)中,本發(fā)明提供一種與計(jì)算機(jī)系統(tǒng)或信息設(shè)備共同使用的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì)和嵌入在其中的計(jì)算機(jī)程序機(jī)制,所述計(jì)算機(jī)程序機(jī)制包括引導(dǎo)計(jì)算機(jī)系統(tǒng)或信息設(shè)備以特定的方式起作用以招募被招募的設(shè)備組進(jìn)行互操作的程序模塊,所述程序模塊包括用于下述的指令通過至少一個(gè)通信鏈接向不同于初始源設(shè)備的至少一個(gè)可到達(dá)的設(shè)備發(fā)送可操作的檢查程序,以找到具有需要的資源或能力的設(shè)備,所述檢查程序包括以與初始源設(shè)備和檢查程序?qū)⑦_(dá)到的設(shè)備相同的可執(zhí)行形式編碼的檢查程序指令;通過通信鏈接直接或間接地在初始設(shè)備上接收來自于每個(gè)可到達(dá)設(shè)備的回答響應(yīng);借助于在初始設(shè)備上執(zhí)行的程序,分析從所有進(jìn)行響應(yīng)的可到達(dá)的設(shè)備接收的回答,以確定識(shí)別初始設(shè)備和進(jìn)行響應(yīng)的可到達(dá)的設(shè)備的能力和資源的組合的利用計(jì)劃,以最佳地實(shí)現(xiàn)軟件應(yīng)用程序的目的;借助于在初始設(shè)備上執(zhí)行的應(yīng)用程序,將可執(zhí)行代碼、數(shù)據(jù)、內(nèi)容,和/或Dart中的至少之一分配到每個(gè)可到達(dá)設(shè)備中的至少一個(gè),根據(jù)標(biāo)識(shí)的利用計(jì)劃其中的可到達(dá)的設(shè)備被識(shí)別為具有所需要的資源或能力。
在另一個(gè)實(shí)施例(86)中,本發(fā)明提供一種與計(jì)算機(jī)系統(tǒng)或信息設(shè)備共同使用的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì)和嵌入在其中的計(jì)算機(jī)程序機(jī)制,所述計(jì)算機(jī)程序機(jī)制包括引導(dǎo)計(jì)算機(jī)系統(tǒng)或信息設(shè)備以特定的方式起作用以在多個(gè)不同的設(shè)備中形成集成的特定的飛行式分布式信息處理系統(tǒng),從而作為單個(gè)的虛擬設(shè)備并參與到特定任務(wù)的實(shí)現(xiàn)中,所述程序模塊包括用于下述的指令通過初始設(shè)備啟動(dòng)分布式信息處理系統(tǒng)的形成,所述形成包括使用至少一個(gè)通信信道和協(xié)議廣播消息,以識(shí)別和招募可能擁有參與特定任務(wù)的實(shí)現(xiàn)所需要的資源和能力的其它被招募的設(shè)備;按照需要將程序、數(shù)據(jù)和內(nèi)容中的至少之一傳輸?shù)矫總€(gè)被招募的設(shè)備上,從而每個(gè)被招募的設(shè)備都能夠?qū)崿F(xiàn)其相應(yīng)的特定任務(wù)的部分。
可以以許多不同的方式組合在這些示例性實(shí)施例中引用的特征和/或要素以及在詳細(xì)的說明書或在附圖中描述的示例性實(shí)施例的特征和/或要素,從而上述的實(shí)施例并不是對(duì)本發(fā)明的限制,并且具有特征和要素的任何不同組合或排列的其它的或可選的實(shí)施例也是本發(fā)明的實(shí)施例。
III.再現(xiàn)適配和互操作性分段模型在本發(fā)明的另一個(gè)方面中,提供了用于再現(xiàn)的系統(tǒng)、裝置、方法以及計(jì)算機(jī)程序。再現(xiàn)包括用于將互操作性應(yīng)用程序分為一組離散的執(zhí)行單元的方法,對(duì)于給定的環(huán)境和時(shí)間點(diǎn)選擇該執(zhí)行單元之一在給定的設(shè)備上運(yùn)行。
在一個(gè)特定的有益的實(shí)施例和實(shí)現(xiàn)方案中,Dart應(yīng)用程序框架(DartFramework)包括再現(xiàn)對(duì)象,其中再現(xiàn)對(duì)象作為被稱為Gizmos(參照?qǐng)D11所示)的處理單元分層結(jié)構(gòu)的上部。為了試圖理解什么是再現(xiàn),可以將單個(gè)再現(xiàn)程序考慮為完整的傳統(tǒng)的程序-盡管再現(xiàn)程序在下述方面與傳統(tǒng)的程序并不相同它可能是與相關(guān)的功能和內(nèi)容一同生成并打包的多個(gè)再現(xiàn)程序之一,其中的功能和內(nèi)容是實(shí)現(xiàn)互操作性操作所需要的。通常組中的再現(xiàn)程序都不能高效地和有效地獨(dú)立實(shí)現(xiàn)應(yīng)用程序的目的或再現(xiàn)程序包?;ゲ僮餍詰?yīng)用程序,例如Dart,是程序各部分的完整集合,可能包括知道如何將各部分組織在一起以動(dòng)態(tài)地和靜態(tài)地形成和管理組合的程序或再現(xiàn)程序的程序、數(shù)據(jù)、內(nèi)容和/或資源(參照?qǐng)D3 300、圖13、圖14所示)。而且,互操作性應(yīng)用程序或Dart包括用于智能地分配可能不同的再現(xiàn)程序或再現(xiàn)程序組的方法,一個(gè)再現(xiàn)程序組用于設(shè)備組中的每個(gè)設(shè)備,該再現(xiàn)程序組能夠與其它設(shè)備組的其它再現(xiàn)程序作為一個(gè)組進(jìn)行通信和協(xié)作,以高效地和有效地實(shí)現(xiàn)應(yīng)用程序的目的。
其中再現(xiàn)的優(yōu)點(diǎn)包括在執(zhí)行單元之間共享各部分,以限制互操作性應(yīng)用程序的大小。使用傳統(tǒng)的編程技術(shù),通常需要對(duì)一組應(yīng)用程序進(jìn)行打包,從而存在適于每個(gè)目標(biāo)設(shè)備或環(huán)境的再現(xiàn)。如果沒有再現(xiàn),一般就會(huì)需要在包中的每個(gè)程序中存儲(chǔ)多余的程序、數(shù)據(jù)、內(nèi)容和資源。再現(xiàn)的另一個(gè)優(yōu)點(diǎn)是可能存在與每個(gè)再現(xiàn)程序相關(guān)的選擇程序(參照?qǐng)D14 4000所示),該選擇程序被用在招募模型中以智能地選擇在目標(biāo)設(shè)備和環(huán)境上運(yùn)行的正確的再現(xiàn)程序。再現(xiàn)的又一個(gè)優(yōu)點(diǎn)是它能夠?qū)⑦m配的數(shù)量限制到足夠小的組,從而可能對(duì)互操作性應(yīng)用程序進(jìn)行完全地測(cè)試,同時(shí)由于存在至少一個(gè)適于在任何一個(gè)設(shè)備或環(huán)境上很好地運(yùn)行的再現(xiàn)程序,而允許足夠大的組。
再現(xiàn)程序也可以被用于允許Dart工具(參考圖12 200中的DartTools)自動(dòng)地將各部分配置為發(fā)送到其它設(shè)備的專用的Darts。例如,它們可以準(zhǔn)備用于打印圖像或文件??梢越柚贒artTools靜態(tài)地創(chuàng)建這種再現(xiàn)程序或再現(xiàn)程序集,或者通過在該文章其它地方描述的創(chuàng)建法的方法(圖720020)動(dòng)態(tài)地創(chuàng)建,所述方法使用互操作性指令集,例如DartInstructionSet,或者借助于兩種方法的組合或者兩種方法與其它技術(shù)相結(jié)合進(jìn)行創(chuàng)建。
再現(xiàn)程序的另一種用途是根據(jù)用戶需求建立將被選擇的一組語言或文化形式。例如,可以為法語、漢語等建立具有本質(zhì)相同的信息的不同再現(xiàn)程序;并且不同的再現(xiàn)程序可以提供一些不同的信息,例如對(duì)于主要為日本觀眾的服裝廣告使用日本模特的照片,對(duì)于將被展示給意大利或歐洲觀眾的相同廣告使用意大利模特的照片。
再現(xiàn)程序的又一個(gè)用途是限制使用可能引起反感的、或不重要的,或另外地不適于特定人群的(或者任何其它的原因的)內(nèi)容。再現(xiàn)程序的又一種用途是將內(nèi)容的使用面向特定人群或設(shè)備,例如兒童或德克薩斯人。再現(xiàn)程序的又一種用途可能是面向不同的地點(diǎn),例如包括與當(dāng)?shù)靥鞖庀嚓P(guān)的信息的Dart Renditions。
在一方面,再現(xiàn)提供了一種用于緊密地將一組軟件應(yīng)用程序和相關(guān)數(shù)據(jù)、程序、內(nèi)容以及選擇標(biāo)準(zhǔn)程序的各部分打包為單個(gè)二進(jìn)制圖像的方法。再現(xiàn)還提供了各部分的數(shù)據(jù)庫(kù)、特點(diǎn)、標(biāo)識(shí)符和在二進(jìn)制圖像中的位置。再現(xiàn)還提供了將各部分映射為由程序、和/或數(shù)據(jù)和/或內(nèi)容組成的多個(gè)獨(dú)立的可執(zhí)行的軟件應(yīng)用程序。它另外還提供了一種程序或一組程序,當(dāng)該程序或該組程序被執(zhí)行時(shí),就確定對(duì)于給定的設(shè)備、用戶偏好、通信特征,和/或環(huán)境執(zhí)行一組軟件應(yīng)用程序和二進(jìn)制圖像中的相關(guān)數(shù)據(jù)、程序、內(nèi)容中的哪一個(gè)。它還提供了一種工具集,允許根據(jù)一組源材料自動(dòng)生成各部分并將各部分打包為單個(gè)的二進(jìn)制圖像(或者如果需要的話,打包為多個(gè)二進(jìn)制圖像或其它格式的圖像)。再現(xiàn)的各個(gè)方面還提供了一種用于發(fā)現(xiàn)和存取給定二進(jìn)制圖像中各部分的數(shù)據(jù)庫(kù)的機(jī)制。在圖8和圖9中表示了從Dart內(nèi)部和借助于單個(gè)Dart使用分布式再現(xiàn)程序的例子。
下面說明再現(xiàn)適配和互操作分段模型的一些特殊的示例性實(shí)施例。
在一個(gè)實(shí)施例(1)中,本發(fā)明提供了一種用于將軟件應(yīng)用程序分為一組獨(dú)立的可執(zhí)行圖像的方法,所述方法包括根據(jù)將遇到的設(shè)備的實(shí)現(xiàn)應(yīng)用程序目的的一個(gè)和多個(gè)方面的可能的資源和能力將遇到的設(shè)備分為各個(gè)等級(jí);根據(jù)為實(shí)現(xiàn)應(yīng)用程序目的的一個(gè)和多個(gè)方面的不同的再現(xiàn)需要或其它運(yùn)行時(shí)間要求,將可能遇到的環(huán)境和操作要求分為各個(gè)等級(jí);為需要的可執(zhí)行圖像指定需要的數(shù)據(jù)、代碼、內(nèi)容以及其它數(shù)字化表示的資源,以能夠在每個(gè)等級(jí)的設(shè)備和每個(gè)環(huán)境和操作要求中實(shí)現(xiàn)應(yīng)用程序目的的一個(gè)和多個(gè)方面;生成利用計(jì)劃以選擇哪一個(gè)設(shè)備和相應(yīng)的獨(dú)立分配的可執(zhí)行圖像在每個(gè)設(shè)備上運(yùn)行,以在給定候選設(shè)備、設(shè)備資源和能力,以及需要的環(huán)境或操作參數(shù)的列表的情況下實(shí)現(xiàn)應(yīng)用程序的目的;以及指定所需要的數(shù)據(jù)、代碼、內(nèi)容和其它數(shù)字化表示的資源,以在每個(gè)等級(jí)的設(shè)備和每個(gè)環(huán)境或操作要求中執(zhí)行和實(shí)現(xiàn)利用計(jì)劃。
在另一個(gè)實(shí)施例(2)中,本發(fā)明提供(1)所述的方法,其中所述軟件應(yīng)用程序?qū)⒃谝粋€(gè)或多個(gè)相同或不同的通信設(shè)備上運(yùn)行。在另一個(gè)實(shí)施例(3)中,本發(fā)明提供(1)所述的方法,其中將選擇一個(gè)正確的這種被選擇的可執(zhí)行圖像,以在具有特定環(huán)境的給定設(shè)備上運(yùn)行。
在另一個(gè)實(shí)施例(4)中,本發(fā)明提供(3)所述的方法,其中關(guān)于每個(gè)設(shè)備的資源和能力以及環(huán)境和操作要求,根據(jù)應(yīng)用程序的要求,選擇一個(gè)正確的這種可執(zhí)行圖像并在每個(gè)設(shè)備上運(yùn)行。
在另一個(gè)實(shí)施例(5)中,本發(fā)明提供(3)所述的方法,其中至少一個(gè)設(shè)備是Dart設(shè)備。
在另一個(gè)實(shí)施例(6)中,本發(fā)明提供(1)所述的方法,還包括執(zhí)行生成的利用計(jì)劃。
在另一個(gè)實(shí)施例(7)中,本發(fā)明提供(1)所述的方法,其中所述軟件應(yīng)用程序被表示為Dart。
在另一個(gè)實(shí)施例(8)中,本發(fā)明提供(1)所述的方法,其中獨(dú)立地執(zhí)行的圖像是再現(xiàn)程序。
在另一個(gè)實(shí)施例(9)中,本發(fā)明提供(7)所述的方法,其中以與DartFormat一致的由DartTool打包的Dart Renditions的形式表示再現(xiàn)程序。
在另一個(gè)實(shí)施例(10)中,本發(fā)明提供(2)所述的方法,其中當(dāng)發(fā)送的程序在候選設(shè)備上運(yùn)行時(shí),完全地和部分地執(zhí)行(1)中的利用計(jì)劃,以確定特定的設(shè)備等級(jí)、資源和/或操作環(huán)境。
在另一個(gè)實(shí)施例(11)中,本發(fā)明提供(10)所述的方法,其中所述程序是至少部分地由互操作性指令集中的指令組成的DartProcedures。
在另一個(gè)實(shí)施例(12)中,本發(fā)明提供(11)所述的方法,其中所述互操作性指令集是DartInstructionSet。
在另一個(gè)實(shí)施例(13)中,本發(fā)明提供(11)所述的方法,其中所述互操作性指令集可以在運(yùn)行程序的一個(gè)和多個(gè)相同和不同的通信設(shè)備上執(zhí)行。
在另一個(gè)實(shí)施例(14)中,本發(fā)明提供(13)所述的方法,其中所述通信設(shè)備運(yùn)行所說程序以確定特定的設(shè)備等級(jí)、資源和/或操作環(huán)境。
在另一個(gè)實(shí)施例(15)中,本發(fā)明提供(10)所述的方法,其中所述程序被表示為作為應(yīng)用程序的一部分的Darts。
在另一個(gè)實(shí)施例(16)中,本發(fā)明提供(15)所述的方法,其中所述應(yīng)用程序被表示為Dart,其中所述Dart包括用于在不同的通信設(shè)備上實(shí)現(xiàn)應(yīng)用程序的目的的其它Darts。
在另一個(gè)實(shí)施例(17)中,本發(fā)明提供(1)所述的方法,其中(1)中的招募方法被用于發(fā)送和分配程序并分離可執(zhí)行圖像,以形成不同的或相同的設(shè)備組。
在另一個(gè)實(shí)施例(18)中,本發(fā)明提供(1)所述的方法,其中各部分可以在不同的目標(biāo)設(shè)備中的不同的獨(dú)立執(zhí)行的圖像和處理環(huán)境之間共享,從而可以限制互操作應(yīng)用程序的大小。
在另一個(gè)實(shí)施例(19)中,本發(fā)明提供(1)所述的方法,其中各部分可以在獨(dú)立執(zhí)行的圖像之間共享,從而可以限制將被存儲(chǔ)在軟件中的數(shù)據(jù)量。
在另一個(gè)實(shí)施例(20)中,本發(fā)明提供(1)所述的方法,其中各部分可以在獨(dú)立執(zhí)行的圖像之間共享,從而可以限制將在設(shè)備之間傳輸?shù)臄?shù)據(jù)量。
在另一個(gè)實(shí)施例(21)中,本發(fā)明提供(18)所述的方法,其中各部分是代碼、數(shù)據(jù)、內(nèi)容、程序、代碼集、數(shù)據(jù)集、內(nèi)容集、關(guān)于如何發(fā)現(xiàn)和組合各部分的元信息、描述性文本、圖片、視頻、圖像、數(shù)據(jù)表,或能夠以數(shù)字形式表示的任何其它信息單元或信息組的其中之一。
在另一個(gè)實(shí)施例(21)中,本發(fā)明提供(21)所述的方法,其中各部分是DartParts和或元信息被表示為Dart RenditionsTable部分,和或DartRenditionTable部分,和或DartPartTable,和或DartTrailer。
在另一個(gè)實(shí)施例(22)中,本發(fā)明提供了一種用于將軟件應(yīng)用程序分為一組獨(dú)立的可執(zhí)行圖像的方法,所述方法包括根據(jù)將遇到的設(shè)備的資源和能力將遇到的設(shè)備分為各個(gè)等級(jí);將可能遇到的環(huán)境或操作要求分為各個(gè)等級(jí);為可執(zhí)行圖像指定需要的數(shù)據(jù)、代碼、內(nèi)容以及其它數(shù)字化表示的資源,以能夠在每個(gè)等級(jí)的設(shè)備和每個(gè)環(huán)境和操作要求中實(shí)現(xiàn)應(yīng)用程序目的的一個(gè)和多個(gè)方面;生成利用計(jì)劃以選擇哪個(gè)設(shè)備和在每個(gè)設(shè)備上運(yùn)行的可執(zhí)行圖像,以實(shí)現(xiàn)應(yīng)用程序的目的。
在另一個(gè)實(shí)施例(23)中,本發(fā)明提供了一種用于將軟件應(yīng)用程序分為一組獨(dú)立的可執(zhí)行圖像的裝置,所述裝置包括用于根據(jù)將遇到的設(shè)備的實(shí)現(xiàn)應(yīng)用程序目的的一個(gè)和多個(gè)方面的可能的資源和能力將遇到的設(shè)備分為各個(gè)等級(jí)的裝置;用于根據(jù)為實(shí)現(xiàn)應(yīng)用程序目的的一個(gè)和多個(gè)方面的不同的再現(xiàn)需要或其它運(yùn)行時(shí)間要求,將可能遇到的環(huán)境和操作要求分為各個(gè)等級(jí)的裝置;用于為需要的可執(zhí)行圖像指定需要的數(shù)據(jù)、代碼、內(nèi)容以及其它數(shù)字化表示的資源,以能夠在每個(gè)等級(jí)的設(shè)備和每個(gè)環(huán)境和操作要求中實(shí)現(xiàn)應(yīng)用程序目的的一個(gè)和多個(gè)方面的裝置;用于生成利用計(jì)劃以選擇設(shè)備和在每個(gè)設(shè)備上運(yùn)行的相應(yīng)的獨(dú)立分配的可執(zhí)行圖像,以在給定候選設(shè)備、設(shè)備資源和能力,以及需要的環(huán)境或操作參數(shù)列表的情況下實(shí)現(xiàn)應(yīng)用程序的目的的裝置;以及用于指定所需要的數(shù)據(jù)、代碼、內(nèi)容和其它數(shù)字化表示的資源,以在每個(gè)等級(jí)的設(shè)備和每個(gè)環(huán)境或操作要求中執(zhí)行和實(shí)現(xiàn)利用計(jì)劃的裝置。
在另一個(gè)實(shí)施例(24)中,本發(fā)明提供了一種與計(jì)算機(jī)系統(tǒng)或信息設(shè)備一同使用的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì)和嵌入在其中的計(jì)算機(jī)程序機(jī)制,所述計(jì)算機(jī)程序機(jī)制包括引導(dǎo)計(jì)算機(jī)系統(tǒng)和信息設(shè)備以特定的方式工作,來將計(jì)算機(jī)程序軟件代碼應(yīng)用程序分為一組獨(dú)立的可執(zhí)行的計(jì)算機(jī)程序軟件代碼圖像的程序模塊,所述程序模塊包括用于下述的指令根據(jù)將遇到的設(shè)備的資源和能力將其分為各個(gè)等級(jí);將可能遇到的環(huán)境和操作要求分為各個(gè)等級(jí);為可執(zhí)行圖像指定需要的數(shù)據(jù)、代碼、內(nèi)容以及其它數(shù)字化表示的資源,以能夠在每個(gè)等級(jí)的設(shè)備和每個(gè)環(huán)境和操作要求中實(shí)現(xiàn)應(yīng)用程序目的的一個(gè)和多個(gè)方面;生成利用計(jì)劃以選擇設(shè)備和在每個(gè)設(shè)備上運(yùn)行的可執(zhí)行圖像,以實(shí)現(xiàn)應(yīng)用程序的目的。
在另一個(gè)實(shí)施例(25)中,本發(fā)明提供了一種與計(jì)算機(jī)系統(tǒng)或信息設(shè)備一同使用的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì)和嵌入在其中的計(jì)算機(jī)程序機(jī)制,所述計(jì)算機(jī)程序機(jī)制包括引導(dǎo)計(jì)算機(jī)系統(tǒng)和信息設(shè)備以特定的方式工作,來將計(jì)算機(jī)程序軟件代碼應(yīng)用程序分為一組獨(dú)立的可執(zhí)行的計(jì)算機(jī)程序軟件代碼圖像的程序模塊,所述程序模塊包括用于下述的指令根據(jù)將遇到的設(shè)備的實(shí)現(xiàn)應(yīng)用程序目的的一個(gè)和多個(gè)方面的可能的資源和能力將遇到的設(shè)備分為各個(gè)等級(jí);根據(jù)為實(shí)現(xiàn)應(yīng)用程序目的的一個(gè)和多個(gè)方面的不同的再現(xiàn)需要或其它運(yùn)行時(shí)間要求,將可能遇到的環(huán)境和操作要求分為各個(gè)等級(jí);為需要的可執(zhí)行圖像指定需要的數(shù)據(jù)、代碼、內(nèi)容以及其它數(shù)字化表示的資源,以能夠在每個(gè)等級(jí)的設(shè)備和每個(gè)環(huán)境和操作要求中實(shí)現(xiàn)應(yīng)用程序目的的一個(gè)和多個(gè)方面;生成利用計(jì)劃以選擇哪個(gè)設(shè)備和在每個(gè)設(shè)備上運(yùn)行的相應(yīng)的獨(dú)立分配的可執(zhí)行圖像,以在給定候選設(shè)備、設(shè)備資源和能力,以及需要的環(huán)境或操作參數(shù)列表的情況下實(shí)現(xiàn)應(yīng)用程序的目的;以及指定所需要的數(shù)據(jù)、代碼、內(nèi)容和其它數(shù)字化表示的資源,以在每個(gè)等級(jí)的設(shè)備和每個(gè)環(huán)境或操作要求中執(zhí)行和實(shí)現(xiàn)利用計(jì)劃。
可以以許多不同的方式組合在這些示例性實(shí)施例中引用的特征和/或要素以及在詳細(xì)的說明書或在附圖中描述的示例性實(shí)施例的特征和/或要素,從而上述的實(shí)施例并不是對(duì)本發(fā)明的限制,并且具有特征和要素的任何不同組合或排列的其它的或可選的實(shí)施例也是本發(fā)明的實(shí)施例。
IV.DartSource/互操作性資源再次想到DartSource提供了用于為打包的Dart互操作性應(yīng)用程序指定所有需要的程序再現(xiàn)程序和代碼、內(nèi)容以及數(shù)據(jù)的結(jié)構(gòu)和方法。DartSource將共同地用于面向特定設(shè)備指定單個(gè)可執(zhí)行程序的語言結(jié)構(gòu)擴(kuò)展為這種語言,即也能夠?yàn)樵O(shè)備組的智能招募和所需要的再現(xiàn)指定需要的程序,從而存在將被發(fā)送以在每個(gè)被招募的設(shè)備上運(yùn)行的合適的再現(xiàn)程序,以實(shí)現(xiàn)該設(shè)備相應(yīng)部分的被指定的應(yīng)用程序的目的。
在一個(gè)實(shí)施例(1)中,本發(fā)明提供了一種用于規(guī)定數(shù)字化編碼的數(shù)據(jù)、代碼以及內(nèi)容,和所需要的數(shù)據(jù)、代碼以及內(nèi)容的形式的元信息的軟件應(yīng)用程序包,以在一個(gè)和多個(gè)連接的和間斷連接的設(shè)備上實(shí)現(xiàn)目的的方法;所述方法包括以互操作性軟件編程語言表示下述中的一個(gè)或者多個(gè)或者任何組合(a)面向框架和或庫(kù)的對(duì)象;(b)用于表示用于實(shí)現(xiàn)應(yīng)用程序邏輯的主代碼和數(shù)據(jù)的源代碼,不管被表示為一個(gè)可執(zhí)行的圖像還是表示為完整的可執(zhí)行圖像組;(c)可數(shù)字化地表示的資源;以及(d)將應(yīng)用程序的邏輯與設(shè)備(多個(gè)設(shè)備)本地的基本硬件和軟件相連所需要的系統(tǒng)調(diào)用或指令調(diào)用。
在另一個(gè)實(shí)施例(2)中,本發(fā)明提供(1)所述的方法,其中系統(tǒng)調(diào)用或指令調(diào)用用于將應(yīng)用程序的邏輯連接到一個(gè)或多個(gè)下面的設(shè)備的本地的基本硬件和軟件(a)軟件引擎;(b)軟件操作系統(tǒng);(c)通信子系統(tǒng);(d)圖像子系統(tǒng);(e)加密子系統(tǒng);(f)安全性子系統(tǒng);(g)存儲(chǔ),音頻播放,和或輸入/輸出子系統(tǒng);(h)本地代碼表示的算法或程序;(i)媒體壓縮和或解壓縮子系統(tǒng);(j)數(shù)據(jù)處理或數(shù)據(jù)庫(kù)處理;(j)通過應(yīng)用程序接口表現(xiàn)的設(shè)備專用的獨(dú)特功能和能力;(k)用于檢索關(guān)于設(shè)備的資源、內(nèi)容以及能力的信息的設(shè)備專用的輪廓信息;(l)事件隊(duì)列和相關(guān)的事件隊(duì)列管理子系統(tǒng),以在設(shè)備上驅(qū)動(dòng)應(yīng)用程序的同步和異步操作;(m)用戶接口、文本、音頻、視頻和其它自動(dòng)編碼或再現(xiàn)操作,和或一般的計(jì)算操作,和或一般的數(shù)據(jù)庫(kù)操作;(n)電源管理、中止/恢復(fù),和或從間斷連接中恢復(fù)的應(yīng)用程序級(jí)的錯(cuò)誤恢復(fù),通過使用事件來驅(qū)動(dòng)在一個(gè)或多個(gè)協(xié)作的設(shè)備中或其之間共享和協(xié)作操作軟件、數(shù)據(jù)、內(nèi)容和狀態(tài);(o)動(dòng)態(tài)地存儲(chǔ)、配置、優(yōu)化和或發(fā)送各部分,各部分的包、程序、可執(zhí)行圖像、或可執(zhí)行圖像包到物理存儲(chǔ)器或其它連接的設(shè)備或者從物理存儲(chǔ)器或其它連接的設(shè)備發(fā)送的子系統(tǒng);以及(p)以上的任何組合。
在另一個(gè)實(shí)施例(3)中,本發(fā)明提供(1)所述的方法,其中所述框架或庫(kù)和/或源代碼包括類定義和對(duì)象執(zhí)行,以實(shí)現(xiàn)、包括、存取,和/或組織(a)-(p)中列出的可被存取的一個(gè)或多個(gè)本地基礎(chǔ)軟件或硬件。
在另一個(gè)實(shí)施例(4)中,本發(fā)明提供(1)所述的方法,其中所述框架或庫(kù)和/或源代碼包括類定義和對(duì)象執(zhí)行過程,以為符合特定的運(yùn)行時(shí)間慣例提供基礎(chǔ),其中的運(yùn)行時(shí)間慣例用于在一個(gè)或多個(gè)協(xié)作的設(shè)備上或其之間的事件驅(qū)動(dòng)的執(zhí)行。
在另一個(gè)實(shí)施例(5)中,本發(fā)明提供(1)所述的方法,其中所述框架或庫(kù)和/或源代碼包括類定義和對(duì)象執(zhí)行,以確保設(shè)備之間的可執(zhí)行的同步的操作中的事件的同步處理,這是通過在一組協(xié)作的設(shè)備上分配并運(yùn)行的軟件應(yīng)用程序的各部分之間串行化事件的處理而實(shí)現(xiàn)的。
V.DartFramework/互操作性框架再次想到DartFramework是程序員在建立互操作性應(yīng)用程序中所使用的DartSource的一部分,其中的互操作性應(yīng)用程序包括利用DartPlatform的許多有益特點(diǎn),而不要求程序員必須理解并實(shí)現(xiàn)DartPlatform的許多希望的互操作性特點(diǎn)。關(guān)于該說明書的線性任務(wù)分配部分還描述了包括更具體的DartFramework的各方面的互操作性框架的其它方面。
在一個(gè)實(shí)施例(1)中,本發(fā)明提供了這種方法,該方法用于指定面向?qū)ο蟮木哂幸唤M面向?qū)ο蟮念惗x,和被用作事件驅(qū)動(dòng)的軟件應(yīng)用程序包的源規(guī)范的一部分的執(zhí)行代碼的互操作性框架,所述方法包括(i)使用面向?qū)ο蟮恼Z言指定至少包括下述數(shù)據(jù)和代碼成員的基本事件處理類(a)取事件數(shù)據(jù)結(jié)構(gòu)的示例的參考或備份作為參數(shù)的處理成員;以及(b)具有相同的基類的其它事件處理對(duì)象的參考或示例的有序的列表成員;以及(ii)以源代碼執(zhí)行類規(guī)范的成員和方法。
在另一個(gè)實(shí)施例(2)中,本發(fā)明提供(1)所述的方法,其中設(shè)計(jì)和執(zhí)行所述軟件應(yīng)用程序包,以在一個(gè)或多個(gè)連接的或間斷連接的設(shè)備上實(shí)現(xiàn)預(yù)期的目的。
在另一個(gè)實(shí)施例(3)中,本發(fā)明提供(2)所述的方法,其中所述軟件應(yīng)用程序包符合DartFormat。
在另一個(gè)實(shí)施例(4)中,本發(fā)明提供(1)所述的方法,其中所述基類是Dart Gizmo類。
在另一個(gè)實(shí)施例(5)中,本發(fā)明提供(1)所述的方法,其中還存在從基類繼承下來的再現(xiàn)類,基類作為基類繼承示例的樹根,其中處理成員的參數(shù)可選地為空或NULL參考值。
在另一個(gè)實(shí)施例(6)中,本發(fā)明提供(5)所述的方法,其中所述再現(xiàn)類用于表示執(zhí)行獨(dú)立的可執(zhí)行圖像的開始進(jìn)入點(diǎn),其中的可執(zhí)行圖像被包含在由利用面向?qū)ο蟮幕ゲ僮餍钥蚣艿脑创a生成的輸出包(或多個(gè)包)中。
VI.DartTools/互操作性工具再次想到DartTools將DartSource應(yīng)用程序規(guī)范處理為Dart應(yīng)用程序包。
在一個(gè)實(shí)施例(1)中,本發(fā)明提供了一種用于生成數(shù)字化編碼的信息和需要的元信息的互操作性軟件應(yīng)用程序包,以實(shí)現(xiàn)一個(gè)或多個(gè)連接的或間斷連接設(shè)備的目的的方法;所述方法包括通過互操作編譯程序作用(軟件產(chǎn)品)處理源材料,以創(chuàng)建對(duì)象文件;通過互操作性連接程序過程處理對(duì)象文件和可選的庫(kù),以創(chuàng)建庫(kù)或互操作性軟件應(yīng)用程序包。
在另一個(gè)實(shí)施例(2)中,本發(fā)明提供(1)所述的方法,其中數(shù)字化編碼的信息包括數(shù)字化編碼的數(shù)據(jù)、代碼和/或內(nèi)容,元信息包括數(shù)據(jù)、代碼、和/或內(nèi)容形式的元信息。
在另一個(gè)實(shí)施例(3)中,本發(fā)明提供(1)所述的方法,其中所述互操作性編譯程序過程被實(shí)現(xiàn)為編譯程序計(jì)算機(jī)程序軟件產(chǎn)品,連接程序過程被實(shí)現(xiàn)為連接程序計(jì)算機(jī)程序軟件產(chǎn)品。
在另一個(gè)實(shí)施例(4)中,本發(fā)明提供(1)所述的方法,其中根據(jù)互操作性源方法組合源材料。
VII.DartFormat/互操作性格式再次想到DartFormat包括用于將Dart格式的包放在一起的結(jié)構(gòu)和規(guī)則,其中的Dart格式的包包括互操作性應(yīng)用程序所需要的所有代碼、數(shù)據(jù),和內(nèi)容,加載所述的互操作性應(yīng)用程序,互操作性應(yīng)用程序并在包括運(yùn)行的DartPlayer的DartDevice上運(yùn)行。
在一個(gè)實(shí)施例(1)中,本發(fā)明提供了一種用于存儲(chǔ)與數(shù)字化編碼的數(shù)據(jù)、代碼和內(nèi)容的互操作性格式一致的軟件應(yīng)用程序包,和以需要的數(shù)據(jù)、代碼和內(nèi)容形式的元信息,以實(shí)現(xiàn)一個(gè)或多個(gè)連接的或間斷連接的設(shè)備的目的的方法,所述方法包括形成至少一個(gè)線性連續(xù)的二進(jìn)制編碼的部分圖像;形成由二進(jìn)制編碼的資源或程序要素的組合組成的任何需要的線性連續(xù)的部分圖像,其中的二進(jìn)制編碼的資源或程序要素用于識(shí)別、加載、選擇、執(zhí)行或者被作為應(yīng)用程序包的一部分進(jìn)行處理;形成元信息;以及以一種形式將各部分和元信息打包在一起,其中的形式為可以確定地定位圖像并識(shí)別、加載和執(zhí)行獨(dú)立的可執(zhí)行的圖像。
在另一個(gè)實(shí)施例(2)中,本發(fā)明提供(1)所述的方法,其中所述至少一個(gè)線性連續(xù)的二進(jìn)制編碼的部分圖像包括下述的至少之一主要代碼、主要數(shù)據(jù)、用于每個(gè)獨(dú)立的可執(zhí)行圖像的記錄表,以及用于屬于特定的獨(dú)立的可執(zhí)行圖像的每個(gè)部分的記錄表。
在另一個(gè)實(shí)施例(3)中,本發(fā)明提供(1)所述的方法,其中所述至少一個(gè)線性連續(xù)的二進(jìn)制編碼的部分圖像包括下述中的每一個(gè)主要代碼、主要數(shù)據(jù)、用于每個(gè)獨(dú)立的可執(zhí)行圖像的記錄表,以及用于屬于特定的獨(dú)立的可執(zhí)行圖像的每個(gè)部分的記錄表。
在另一個(gè)實(shí)施例(4)中,本發(fā)明提供(1)所述的方法,其中所述需要的線性連續(xù)的部分圖像可選地包括從由下述組成的組中選擇的任何成員或組合(a)程序、Darts、DartProcedures,或程序;(b)圖片、視頻、圖像、音頻、聲音或能夠被播放的任何其它媒體;(c)數(shù)據(jù)結(jié)構(gòu)示例、列表、和或參數(shù);(d)數(shù)據(jù)列表或數(shù)據(jù)表;以及(e)上述的任何組合。
在另一個(gè)實(shí)施例(5)中,本發(fā)明提供(1)所述的方法,其中形成元信息的步驟包括形成至少下述之一的元信息(a)給定標(biāo)識(shí)符找到其各部分的表;(b)用于找到各部分的表的第一信息;(c)加載和執(zhí)行線性連續(xù)的部分圖像所需要的第二信息;以及(d)用于找到獨(dú)立的可執(zhí)行圖像列表的第三信息。
在另一個(gè)實(shí)施例(6)中,本發(fā)明提供(1)所述的方法,其中還形成一個(gè)或多個(gè)下述線性連續(xù)的二進(jìn)制編碼的部分圖像(i)程序、Darts、DartProcedures;(ii)包括從內(nèi)容項(xiàng)目組中選擇的內(nèi)容的內(nèi)容,其中的組由圖片、音頻、視頻,或其它多媒體內(nèi)容或動(dòng)畫組成;(iii)數(shù)據(jù)庫(kù);(iv)索引;(v)用于列表事項(xiàng)或表事項(xiàng)的參數(shù);(vi)虛指針數(shù)據(jù);(vii)應(yīng)用程序堆積數(shù)據(jù);以及(viii)可表示為連續(xù)的二進(jìn)制數(shù)據(jù)圖像的其它事項(xiàng)。
在另一個(gè)實(shí)施例(7)中,本發(fā)明提供(1)所述的方法,其中還形成一個(gè)或多個(gè)下述的元信息(i)簽名信息;(ii)被存取以識(shí)別軟件應(yīng)用程序包的名稱、類型、內(nèi)容和或用途的關(guān)鍵字或其它信息;(iii)用于列表項(xiàng)或表項(xiàng)的參數(shù);(iv)虛指針參數(shù);(v)安全校驗(yàn)和,和或簽名,和或證書和或無用數(shù)據(jù);以及(vi)唯一的標(biāo)識(shí)符。
在另一個(gè)實(shí)施例(8)中,本發(fā)明提供(1)所述的方法,其中通過包括在互操作性編譯程序、互操作性連接程序和或互操作性主播放程序中的工具,執(zhí)行所述步驟。
VIII.DartRuntime/互操作性運(yùn)行時(shí)間在另一方面,本發(fā)明提供了一種軟件運(yùn)行時(shí)間模型(例如DartRuntime模型),對(duì)于所有的軟件操作(無論是與Dart相關(guān)或與設(shè)備控制相關(guān))該模型主要是事件驅(qū)動(dòng)的,并且在一些實(shí)施例中完全是由事件驅(qū)動(dòng)的。互操作設(shè)備組(圖17 660)中的每個(gè)進(jìn)行互操作的設(shè)備上運(yùn)行的一個(gè)事件隊(duì)列提供應(yīng)用程序和低級(jí)設(shè)備控制軟件共用的一組事件語義、類型、結(jié)構(gòu)和對(duì)事件的操作,其中所述的事件隊(duì)列驅(qū)動(dòng)同步應(yīng)用程序事件處理和異步應(yīng)用程序、設(shè)備、通信和互操作性操作的排隊(duì)。同時(shí)還提供了用于管理事件的排隊(duì)、解隊(duì)和處理的指令集或系統(tǒng)調(diào)用。還提供了一種可選的穩(wěn)定的設(shè)備互操作性通信運(yùn)行時(shí)間模型,其中維護(hù)設(shè)備之間的通信,改正錯(cuò)誤,并且需要時(shí)重新建立協(xié)作,但是只有少量的或者根本沒有對(duì)有效地運(yùn)行在互操作設(shè)備組上的Darts的中斷(參照?qǐng)D19所示)。這些特點(diǎn)能夠可選地?cái)U(kuò)展到分別生成的Darts和/或其它設(shè)備上。
在該說明書的其它地方,包括下面的例子和示例性實(shí)施例,描述了DartRuntime的其它方面。在一個(gè)實(shí)施例(1)中,本發(fā)明提供了一種用于互操作性運(yùn)行時(shí)間系統(tǒng)的方法,以實(shí)現(xiàn)事件驅(qū)動(dòng)的軟件應(yīng)用程序包的執(zhí)行,其中的軟件應(yīng)用程序包是在一個(gè)或多個(gè)連接的和間斷連接的設(shè)備上實(shí)現(xiàn)指定目的(意圖)所需要的數(shù)字編碼的數(shù)據(jù)、代碼和內(nèi)容,以及數(shù)據(jù)、代碼和內(nèi)容形式的圖元信息組成的軟件應(yīng)用程序包,所述方法包括(a)從給定的獨(dú)立執(zhí)行的圖像包中選擇并加載分離的可執(zhí)行的圖像;(b)通過正在執(zhí)行的圖像將設(shè)備招募到組中;(c)在招募的設(shè)備的組中分配代碼、再現(xiàn)程序、數(shù)據(jù),和/或內(nèi)容中至少之一;(d)以順序的方式處理同步和異步的事件,以實(shí)現(xiàn)所述目的;(e)在招募的設(shè)備組的各設(shè)備中和各設(shè)備之間同步和串行化事件處理;以及(f)在存儲(chǔ)器中存儲(chǔ)運(yùn)行的單獨(dú)可執(zhí)行的圖像包,包括存儲(chǔ)數(shù)據(jù)和狀態(tài)。
在另一個(gè)實(shí)施例(2)中,本發(fā)明提供(1)所述的方法,其中(a)從給定的獨(dú)立執(zhí)行的圖像包中選擇并加載分別可執(zhí)行的圖像,是從給定的獨(dú)立可執(zhí)行的圖像包中選擇和加載正好一個(gè)分離的可執(zhí)行的圖像。
在另一個(gè)實(shí)施例(3)中,本發(fā)明提供(1)所述的方法,其中所述運(yùn)行時(shí)間是DartRuntime。
在另一個(gè)實(shí)施例(4)中,本發(fā)明提供(1)所述的方法,其中所述選擇和加載、招募、分配、處理,以及同步和重新串行化是根據(jù)招募程序?qū)崿F(xiàn)的。
IX.線性任務(wù)分配在本發(fā)明的另一個(gè)方面,提供了用于線性任務(wù)分配的系統(tǒng)、裝置、方法和計(jì)算機(jī)程序。線性任務(wù)分配包括在處理單元之間實(shí)現(xiàn)處理器控制和設(shè)備資源的簡(jiǎn)單的確定的流動(dòng)的方法。處理單元能夠容易地被重新配置為單個(gè)體系結(jié)構(gòu),該體系結(jié)構(gòu)包括被編譯為應(yīng)用程序的處理單元,分別地編譯的應(yīng)用程序,以及甚至運(yùn)行在其它設(shè)備上的應(yīng)用程序。
因?yàn)槎鄶?shù)互操作性應(yīng)用程序旨在被單獨(dú)的用戶使用,因此線性任務(wù)分配模型的優(yōu)點(diǎn)特別適合于互操作性應(yīng)用程序。這里必須將控制傳遞到每個(gè)處理單元的運(yùn)行時(shí)間的代價(jià)是不重要的,因?yàn)橥ǔP枰獙⑷祟惖捻憫?yīng)時(shí)間限制為三十分之一秒或更長(zhǎng)。
盡管存在許多發(fā)明的線性任務(wù)分配模型和方法的優(yōu)點(diǎn),但是這里僅說明其中的一些優(yōu)點(diǎn),其它的優(yōu)點(diǎn)將是能夠從本說明書的其它描述中明顯得知的。
第一個(gè)優(yōu)點(diǎn)是由于將執(zhí)行操作的順序限制為很好控制的模式,因此用于所有編組設(shè)備的所有處理單元的處理順序的確定的或接近確定的路徑產(chǎn)生更簡(jiǎn)單的編程模型和極大減少的程序錯(cuò)誤。
第二,所有的處理單元能夠完成復(fù)雜的操作順序,而不會(huì)被及時(shí)的中斷或被中斷過程的動(dòng)作影響。
第三,可以容易地支持受控的關(guān)機(jī),受控的休眠和恢復(fù)以及有益的垂直分層機(jī)制,可以例如用于如電源管理的應(yīng)用。
第四,隨著操作模式和與用戶的交互作用的變化,配置和重新配置體系結(jié)構(gòu)至少是一個(gè)允許和禁止處理單元組的簡(jiǎn)單方法。
第五,雙親處理單元可以以這種方式繼承、改變和變形環(huán)境,即子女處理單元不需要包含知道它們的雙親處理單元如何使用它們的輸出(如位圖)或如何控制它們的環(huán)境(如時(shí)間感)的代碼。
第六,可以將分別生成的可執(zhí)行表格容易地同化為運(yùn)行的可執(zhí)行表格的處理體系結(jié)構(gòu)。在DartPlatform中,這種特點(diǎn)允許Darts在使用中將其它的Darts同化為其運(yùn)行時(shí)間。例如,可以容易地構(gòu)造前面描述的幻燈片放映(SlideShow)Dart應(yīng)用程序,該應(yīng)用程序能夠收集并包含分別生成的Darts,如幻燈片,如同其收集如幻燈片的靜止JPEG圖片一樣容易。JPEG圖片可以被靜止圖片顯示Gizmo(Gizmo是用于時(shí)間處理單元的基本調(diào)用)包括,而Dart可以被Dart容器Gizmo包括。
在一個(gè)實(shí)施例中,在Dart平臺(tái)(圖3的DartPlatform)的從Dart框架(圖11的DartFramework)到Dart運(yùn)行時(shí)間(圖9、圖16、圖17的DartRuntime),到Dart引擎(圖22 600的DartEngine)和Dart指令集(圖20、圖25的DartInstructionSet)的指令的整個(gè)執(zhí)行中,有利地包括線性任務(wù)分配。其它的實(shí)施例可以結(jié)合可選的執(zhí)行過程利用全部Dart基礎(chǔ)設(shè)施來使用線性任務(wù)分配。
在一個(gè)實(shí)施例中,發(fā)明的線性任務(wù)分配提供了一種用于確定地安排軟件應(yīng)用程序的多個(gè)處理單元的執(zhí)行和運(yùn)行時(shí)間環(huán)境的方法。軟件或固件程序事件驅(qū)動(dòng)的運(yùn)行時(shí)間模型提供或生成這種環(huán)境,即以基于處理單元之間的連接的預(yù)定的順序執(zhí)行所有的處理單元。提供面向軟件對(duì)象的框架,DartFramework(圖11),其中存在包括下述對(duì)象成員(圖11 115)中至少之一并且可能以任何組合包括所有下述對(duì)象成員(圖11 115)的基本處理單元類(圖11 115的Gizmo)(a)雙親處理單元的可能為空的引用;(b)子女處理單元的可能空排序的線性列表引用;(c)相應(yīng)于事件類型類的可選的二進(jìn)制標(biāo)記,其中從雙親和子女處理單元的鏈條繼承的任何子女處理單元作用于該事件類型類,直到?jīng)]有其它子女處理單元;(d)用于增加、刪除,或重新排序雙親和子女處理單元的程序性方法;以及(e)用于對(duì)事件的處理進(jìn)行排序的程序性方法。
在至少一個(gè)實(shí)施例中,用于對(duì)事件的處理進(jìn)行排序的程序性方法包括下述步驟(參照?qǐng)D15所示)(1)根據(jù)事件類型、其值和參考值、處理單元的任務(wù)、事件指定的當(dāng)前運(yùn)行時(shí)間環(huán)境、雙親處理單元和設(shè)備的狀態(tài),執(zhí)行需要的事件的任何前置-子女處理(參照?qǐng)D15 8004所示);(2)設(shè)置相應(yīng)于被子女處理單元鏈條作用的事件類型類的可選的標(biāo)記,以顯示沒有時(shí)間類型被作用;(3)為每個(gè)子女處理建立任何環(huán)境變化,以引用子處理單元的列表的順序調(diào)用每個(gè)子女處理(參照?qǐng)D15 8005所示);(4)當(dāng)每個(gè)調(diào)用返回邏輯OR時(shí),每個(gè)剛被調(diào)用的子女處理需要處理處理類型的二進(jìn)制標(biāo)記,以根據(jù)所有子女處理和其繼承處理的需要收集組合的事件處理類型;(5)根據(jù)事件類型、其值和參考值、處理單元的任務(wù)、事件指定的當(dāng)前運(yùn)行時(shí)間環(huán)境、雙新處理單元和設(shè)備的狀態(tài),執(zhí)行需要的事件的任何后-子處理(參照?qǐng)D15 8004所示);(6)將來設(shè)置現(xiàn)在被該處理單元控制的事件類型的標(biāo)記;(7)如果參考值非空則將控制返回到雙親處理單元(參照?qǐng)D15 8006所示);
(8)如果雙親處理單元為空則將控制返回到主處理循環(huán)(參照?qǐng)D158008所示)。
由于所收集的二進(jìn)制標(biāo)記能夠表示哪些事件類型是每個(gè)子女處理單元和其所有的繼承處理單元進(jìn)行處理所不需要的,因此該二進(jìn)制標(biāo)記能夠可選地用于刪除調(diào)用圖表的分枝。如果相應(yīng)于與標(biāo)記相關(guān)聯(lián)的事件類型分類的子女處理單元的標(biāo)記值不為1,則子處理單元和其繼承處理單元就不需要處理該事件。
現(xiàn)在描述線性任務(wù)分配的其它示例性實(shí)施例。在一個(gè)實(shí)施例(1)中,本發(fā)明提供了一種用于排序和管理軟件應(yīng)用程序包的多個(gè)事件處理單元的事件驅(qū)動(dòng)的執(zhí)行程序和運(yùn)行時(shí)間環(huán)境的線性任務(wù)分配的方法,所述方法包括提供面向軟件對(duì)象的框架,框架包括基本事件處理單元類,直接或間接地從基本事件處理單元類繼承的多個(gè)事件處理單元類或沒有這種繼承的事件處理單元類;以確??偸谴嬖谝粋€(gè)用于使事件通過鏈接形成的處理單元的圖表的線性的確定的排序的方式來創(chuàng)建、保持、添加、刪除或重新排序形成事件處理單元的圖表或拓?fù)涞逆溄?;以及根?jù)運(yùn)行的應(yīng)用程序的需要?jiǎng)討B(tài)地改變處理單元的圖表或拓?fù)洹?br>
在另一個(gè)實(shí)施例(2)中,本發(fā)明提供了(1)所述的線性任務(wù)分配的方法,其中邏輯地?cái)U(kuò)展所述圖表,以靜態(tài)地通過一個(gè)或多個(gè)應(yīng)用程序包中的引用,包括分別生成的應(yīng)用程序包的圖表,其中的應(yīng)用程序包本身就是一個(gè)或多個(gè)其它的應(yīng)用程序包的一部分。
在另一個(gè)實(shí)施例(3)中,本發(fā)明提供了(1)所述的方法,其中邏輯地?cái)U(kuò)展所述圖表,以動(dòng)態(tài)地包括在運(yùn)行應(yīng)用程序包期間分別生成的應(yīng)用程序包的圖表。
在另一個(gè)實(shí)施例(4)中,本發(fā)明提供了(2)所述的方法,其中處于分別生成的應(yīng)用程序包圖表的最上端節(jié)點(diǎn)的事件處理單元通過使參數(shù)進(jìn)入事件處理的方法,來確定邏輯上它是擴(kuò)展的圖表的一部分,還是實(shí)際上沒有被任何其它的應(yīng)用程序包擴(kuò)展的最上端應(yīng)用程序包的開始。
在另一個(gè)實(shí)施例(5)中,本發(fā)明提供了(3)所述的方法,其中處于分別生成的應(yīng)用程序包圖表的最上端節(jié)點(diǎn)的事件處理單元通過使參數(shù)進(jìn)入事件處理的方法,來確定邏輯上它是擴(kuò)展的圖表的一部分,還是實(shí)際上沒有被任何其它的應(yīng)用程序包擴(kuò)展的最上端應(yīng)用程序包的開始。
在另一個(gè)實(shí)施例(6)中,本發(fā)明提供了(4)所述的方法,其中如果并且僅當(dāng)如果參數(shù)不指定將要處理的事件時(shí),最上端節(jié)點(diǎn)將明確地試圖從被其自身和按圖表的線性順序的任何其它的事件處理單元處理的事件隊(duì)列中檢索事件。
在另一個(gè)實(shí)施例(7)中,本發(fā)明提供了(5)所述的方法,其中如果并且僅當(dāng)如果參數(shù)不指定將要處理的事件時(shí),最上端節(jié)點(diǎn)將明確地試圖從被其自身和按圖表的線性順序的任何其它的事件處理單元處理的事件隊(duì)列中檢索事件。
X.垂直分層在本發(fā)明的另一個(gè)方面中,提供了用于垂直分層的系統(tǒng)、裝置、方法和計(jì)算機(jī)程序。垂直分層包括實(shí)現(xiàn)這種特征的高效和有效的實(shí)施方案,其中的特征本質(zhì)上包括結(jié)束工具、應(yīng)用程序、框架、引擎、再現(xiàn)程序以及指令集執(zhí)行過程和操作中的緊密協(xié)作。
本發(fā)明的垂直分層是所屬領(lǐng)域當(dāng)前狀態(tài)中的傳統(tǒng)的水平分層的替換方案,如果編程工具、應(yīng)用程序、播放器、運(yùn)行時(shí)間、操作系統(tǒng),和/或低級(jí)函數(shù)能夠完全共享數(shù)據(jù)結(jié)構(gòu)和通信語義,則能夠有利地采用垂直分層。
在一個(gè)執(zhí)行的實(shí)施例中,垂直分層被可選地但是有利地包括在DartPlatform的整個(gè)執(zhí)行中(圖3)。在DartPlatform中有利地采用垂直分層的兩個(gè)例子是電源管理和應(yīng)用程序級(jí)錯(cuò)誤恢復(fù)(圖19)。
例如,在傳統(tǒng)的設(shè)備中通常采用基于在最低水平檢測(cè)的輸入或輸出活動(dòng)的試探法來執(zhí)行電源管理功能;然而,只有應(yīng)用程序自身真正地知道其是否需要進(jìn)行控制來返回到其處理中,以在三十分之一秒內(nèi)譯碼視頻的下一個(gè)幀,或者將不需要進(jìn)一步的處理直到用戶進(jìn)行某種操作為止。
在本發(fā)明的一個(gè)有益實(shí)施例中,當(dāng)Dart運(yùn)行時(shí)間(DartRuntime)每次通過被稱為Gizmos的事件處理單元的單級(jí)線性任務(wù)分配時(shí),Dart平臺(tái)(DartPlatform)收集處理器響應(yīng)要求(圖11、圖15)。在DartPlatform每次通過DartRuntime的設(shè)備外部分后(圖15),無論何時(shí)使用基于Gizmo的Dart框架(DartFramework)體系結(jié)構(gòu)的處理單元構(gòu)建Dart(圖11),DartPlatform都將最低的同步的Gizmo樹響應(yīng)時(shí)間要求(圖15 8010)與設(shè)備引擎(圖22 600的DartEngine)的事件隊(duì)列(圖22 660的EventQueue)中的異步的事件時(shí)間要求相結(jié)合,以確定設(shè)備在將控制返回到DartPlayer之前能夠斷電或降低電源水平或消耗的準(zhǔn)確的可靠的時(shí)間量。電源管理的方法,例如處理器邏輯時(shí)鐘的減少,降低邏輯或電源電壓水平,或切斷較大電路部分的電源都是所屬領(lǐng)域已知的。例如考慮這里前面描述過的互操作性幻燈片放映Dart應(yīng)用程序。該運(yùn)行在初始設(shè)備上的應(yīng)用程序能夠通過招募形成例如5個(gè)設(shè)備構(gòu)成的組,其中雖然任意地進(jìn)行比例調(diào)整或另外地修改以用于有效的傳輸并且在每個(gè)連接和每個(gè)設(shè)備上顯示,但是組中的每個(gè)設(shè)備顯示與初始應(yīng)用程序相同的幻燈片。如果具有無線連接的設(shè)備離開連接范圍,或者便攜式設(shè)備自動(dòng)地關(guān)機(jī)以節(jié)省電池壽命的話,那么會(huì)發(fā)生什么情況呢?在傳統(tǒng)的執(zhí)行程序中,如果該設(shè)備突然移動(dòng)回到連接范圍內(nèi)或被重新開機(jī),則只有幻燈片放映(SlideShow)應(yīng)用程序知道如何恢復(fù)(參照?qǐng)D19的例子)。在傳統(tǒng)的所有級(jí)水平分層的設(shè)備中需要大量的程序,以能夠無縫地恢復(fù),特別當(dāng)非初始設(shè)備被關(guān)機(jī)并丟失了整個(gè)幻燈片數(shù)據(jù)和狀態(tài)時(shí)更是如此。這是因?yàn)閭鹘y(tǒng)的軟件生態(tài)系統(tǒng)沒有建立從檢測(cè)失去連接的低級(jí)程序到應(yīng)用程序的所有級(jí)所需要的水平抽象語義。沒有用于信息從應(yīng)用程序流向低級(jí)的通信系統(tǒng)并返回的直接機(jī)制,就難以編寫應(yīng)用程序以自動(dòng)地將數(shù)據(jù)和狀態(tài)信息重新發(fā)送到連接恢復(fù)的設(shè)備。
在DartPlatform中采用垂直分層,當(dāng)通過DartFramework、DartRuntime,以及DartEngine將失去的連接建立到應(yīng)用程序時(shí),重新發(fā)送應(yīng)用程序數(shù)據(jù)和程序以在設(shè)備組上恢復(fù)應(yīng)用程序。因此使用DartFramework構(gòu)建的并在DartPlayer上運(yùn)行的任何應(yīng)用程序不需要為穩(wěn)定的多設(shè)備應(yīng)用程序和數(shù)據(jù)同步恢復(fù)進(jìn)行任何特別的編程處理。
在Dart Platform的一個(gè)實(shí)施例中,直接通過直接在運(yùn)行在DartInstructionSet上的Dart應(yīng)用程序和控制通信的本地代碼之間傳遞DartEvents,傳統(tǒng)的低級(jí)操作(例如通信)直接與傳統(tǒng)的高級(jí)操作(例如,應(yīng)用程序)進(jìn)行互操作。
DartTools(圖3 200、圖12 200)、DartInstructionSet、DartRuntime(圖9、圖15、圖16、圖17)以及線性任務(wù)分配(圖18)都被設(shè)計(jì)為提供非常缺少抽象層的環(huán)境,其中應(yīng)用程序形成并處理DartEvents,與DartEngine內(nèi)的通信函數(shù)具有完全相同的結(jié)構(gòu)和語義。因此,應(yīng)用程序能夠容易地和有效地收集、同步和傳輸其所有需要和狀態(tài),通過傳遞和處理事件,作為DartPlatform的一部分的所有其它的軟件操作被每級(jí)的互操作系統(tǒng)的幾乎所有組件所了解,而不管這些組件是否是應(yīng)用程序的一部分,執(zhí)行應(yīng)用程序的引擎,還是在整個(gè)設(shè)備組上分配的應(yīng)用程序的互操作部分。
在一個(gè)實(shí)施例中,垂直分層提供用于將軟件應(yīng)用程序的操作與設(shè)備控制軟件密切結(jié)合以在應(yīng)用程序和設(shè)備控制軟件之間促進(jìn)高級(jí)的協(xié)作功能的系統(tǒng)、方法、和計(jì)數(shù)機(jī)程序,其中的設(shè)備控制軟件具有低復(fù)雜度、低處理要求、很少的應(yīng)用程序接口,以及很少的協(xié)議接口的特點(diǎn)。它還提供了一種軟件運(yùn)行時(shí)間模型,不管是應(yīng)用程序還是設(shè)備控制關(guān)聯(lián)的,對(duì)于所有軟件操作該模型主要是事件驅(qū)動(dòng)的;并且提供了應(yīng)用程序和低級(jí)設(shè)備控制軟件共用的一組事件語義、類型、結(jié)構(gòu)和事件的操作。還提供了驅(qū)動(dòng)同步的應(yīng)用程序事件處理和異步的應(yīng)用程序、設(shè)備、通信和互操作性操作的排序的事件隊(duì)列。垂直分層方法還提供了用于管理事件的排隊(duì)、解隊(duì)以及處理的指令集或系統(tǒng)調(diào)用。還可以提供可選的穩(wěn)定的設(shè)備互操作性通信運(yùn)行時(shí)間模型,其中保持設(shè)備之間的通信,糾正錯(cuò)誤,并且必要時(shí)重新建立協(xié)作,但是具有對(duì)有效地運(yùn)行在互操作設(shè)備組上的應(yīng)用程序的少量的中斷。用于串行化和同步通過協(xié)作的設(shè)備組的事件的系統(tǒng)被有利地用于保持異步操作的互操作系統(tǒng)的所有組件被緊密地連接,并因此被可靠地簡(jiǎn)單地執(zhí)行,有效地和簡(jiǎn)單的使用。
在另一個(gè)實(shí)施例中,本發(fā)明提供了用于直接將軟件應(yīng)用程序的操作與一個(gè)設(shè)備上或一組通信設(shè)備上的設(shè)備控制軟件操作相連接的方法、計(jì)算機(jī)程序軟件、設(shè)備和系統(tǒng),以促進(jìn)軟件操作之間的協(xié)作功能的高效率和靈活的自由度,而不管是在一個(gè)設(shè)備上還是在一個(gè)或多個(gè)協(xié)作的設(shè)備上進(jìn)行的。這可以包括源代碼和資源、軟件工具、預(yù)先打包的或預(yù)先指定的軟件框架或庫(kù)、事件驅(qū)動(dòng)的運(yùn)行時(shí)間,以及指令集或系統(tǒng)調(diào)用組,以在每個(gè)設(shè)備上管理事件隊(duì)列。在至少一個(gè)實(shí)施例中,為此目的在每個(gè)設(shè)備上管理正好一個(gè)事件隊(duì)列。應(yīng)用程序可以是Dart,設(shè)備控制軟件可以是DartEngine或DartPlayer。在一些實(shí)施例中,設(shè)備組是或包括使用這里描述的招募或通過用于招募設(shè)備組的不同的方法建立的組。在一個(gè)實(shí)施例中,軟件框架是DartFramework。在一個(gè)實(shí)施例中,事件驅(qū)動(dòng)的運(yùn)行時(shí)間是DartRuntime。在一個(gè)實(shí)施例中,源代碼和資源是DartSource源代碼并且軟件工具是DartTools。在一個(gè)實(shí)施例中,指令集和系統(tǒng)調(diào)用是被DartInstructionSet和/或可以作為部分內(nèi)嵌指令類型的指令被調(diào)用的函數(shù)提供的,例如DartBUILTIN_INSTRUCTION(圖20 670、671、672、673)和/或OEM_BUILTIN_INSTRUCTION(圖20 674、680、681、682)。
在至少一個(gè)實(shí)施例中,通過使具有通常理解的語義的單個(gè)數(shù)據(jù)結(jié)構(gòu)在設(shè)備(圖17 800)、應(yīng)用程序,以及通信代碼組成的系統(tǒng)中用于傳輸信息和/或內(nèi)容和/或狀態(tài),至少部分地實(shí)現(xiàn)所說的效率。
在至少一個(gè)實(shí)施例中,例如DartEvents(圖17 800)的事件被用作單個(gè)數(shù)據(jù)結(jié)構(gòu)。
在至少一個(gè)實(shí)施例中,設(shè)備控制軟件操作包括通信、設(shè)備配置管理、設(shè)備發(fā)現(xiàn)、管理分配、解除分配以及訪問存儲(chǔ)器、物理存儲(chǔ)器、物理顯示裝置、物理輸入/輸出設(shè)備、或設(shè)備的任何其它的物理的或軟件虛擬的物理方面。
在一個(gè)實(shí)施例中,軟件工具采用編寫的軟件源代碼和資源以使用預(yù)先指定的軟件框架,其中通過訪問用于管理事件的排隊(duì)、處理和解隊(duì)指令集和系統(tǒng)調(diào)用集,軟件框架確保與支持的事件驅(qū)動(dòng)的運(yùn)行時(shí)間的執(zhí)行模型一致。
在至少一個(gè)實(shí)施例中,在圖15、圖9、圖16、圖17中表示和描述應(yīng)用程序的事件處理。在至少一個(gè)實(shí)施例中,被放入到設(shè)備的隊(duì)列中的事件被串行化和同步。根據(jù)圖9所示的串行化和同步方法執(zhí)行串行化和同步操作。
現(xiàn)在描述包括垂直分層的一個(gè)方面的特定的示例性實(shí)施例。在一個(gè)實(shí)施例(1)中,本發(fā)明提供了用于協(xié)調(diào)程序性(軟件)組件之間的操作和數(shù)據(jù)移動(dòng)的事件驅(qū)動(dòng)的垂直分層系統(tǒng),其中的程序性組件執(zhí)行應(yīng)用程序級(jí)操作、設(shè)備硬件控制級(jí)操作、通信級(jí)操作,或任何其它級(jí)或一個(gè)或多個(gè)編組的設(shè)備中或之間的操作的子集,以在程序性(軟件)組件之間建立有效的和/或穩(wěn)定的協(xié)作功能,所述系統(tǒng)包括(a)在一個(gè)或多個(gè)設(shè)備上和運(yùn)行在一個(gè)或多個(gè)設(shè)備中的程序性(軟件)組件上,通常在所有事件生成和處理單元之間得知和了解其字段和字段定義的靜態(tài)事件數(shù)據(jù)結(jié)構(gòu);(b)在每個(gè)編組的設(shè)備上的隊(duì)列,其中的設(shè)備存儲(chǔ)、移除、管理,以及控制對(duì)事件數(shù)據(jù)結(jié)構(gòu)示例的訪問;(c)用于管理隊(duì)列中事件的放置、修改,以及移除的裝置,其中的隊(duì)列可以從所有協(xié)作的程序性(軟件)組件進(jìn)行訪問;(d)用于指定和保持事件類型的共同列表的裝置,其中在協(xié)作的設(shè)備的隊(duì)列之間串行化和同步事件類型;以及(e)用于確保在所有設(shè)備上使程序性(軟件)組件以正好相同的順序處理共用列表上的所有的任何類型的事件的裝置,而不考慮是什么程序性(軟件)組件啟動(dòng)事件,或者啟動(dòng)事件的程序性(軟件)組件運(yùn)行在哪個(gè)編組的設(shè)備上。
在另一個(gè)實(shí)施例(2)中,本發(fā)明提供(1)所述的系統(tǒng),其中存儲(chǔ)、移除、管理,以及控制對(duì)事件數(shù)據(jù)結(jié)構(gòu)示例的訪問的每個(gè)編組的設(shè)備上的隊(duì)列在每個(gè)編組的設(shè)備上包括正好一個(gè)隊(duì)列。
在另一個(gè)實(shí)施例(3)中,本發(fā)明提供(1)所述的系統(tǒng),其中用于管理隊(duì)列中事件的放置、修改,以及移除的裝置包括被實(shí)現(xiàn)為計(jì)算機(jī)程序的程序,該程序包括在互操作的設(shè)備的處理器邏輯中執(zhí)行的多個(gè)程序指令,其中的隊(duì)列可以從所有協(xié)作的程序性(軟件)組件進(jìn)行訪問。
在另一個(gè)實(shí)施例(4)中,本發(fā)明提供(1)所述的系統(tǒng),其中用于指定和保持事件類型的共同列表的裝置包括被實(shí)現(xiàn)為計(jì)算機(jī)程序的程序,該程序包括在互操作的設(shè)備的處理器邏輯中執(zhí)行的多個(gè)程序指令,其中在協(xié)作的設(shè)備的隊(duì)列之間串行化和同步事件類型。
在另一個(gè)實(shí)施例(5)中,本發(fā)明提供(1)所述的系統(tǒng),其中用于確保在所有設(shè)備上使程序性(軟件)組件以正好相同的順序處理共用列表上的所有的任何類型的事件的裝置包括被實(shí)現(xiàn)為計(jì)算機(jī)程序的程序,該程序包括在互操作的設(shè)備的處理器邏輯中執(zhí)行的多個(gè)程序指令,而不考慮是什么程序性(軟件)組件啟動(dòng)事件,或者啟動(dòng)事件的程序性(軟件)組件運(yùn)行在哪個(gè)編組的設(shè)備上。
在另一個(gè)實(shí)施例(6)中,本發(fā)明提供(1)所述的系統(tǒng),其中下述中的一個(gè)或多個(gè)或任何組合為真(1)靜態(tài)事件數(shù)據(jù)結(jié)構(gòu)是DartEvent;(2)通過使用設(shè)備招募將編組的設(shè)備組合起來進(jìn)行協(xié)作;(3)通過使用互操作性指令集或DartInstructionSet使用用于管理事件的放置、修改,以及移除的方法;(4)系統(tǒng)至少部分地通過互操作性運(yùn)行時(shí)間或DartRuntime實(shí)現(xiàn)其事件驅(qū)動(dòng)功能;(5)以與所描述的在招募時(shí)串行化和同步事件相同的順序處理用于指定共同列表并確保所有的任何類型的事件都在共同列表上的方法;以及(6)互操作性工具或DartTools用于生成系統(tǒng)的軟件應(yīng)用程序操作代碼。
XI.應(yīng)用程序事件驅(qū)動(dòng)的電源管理再次想到采用至少部分地包括在DartFramework中的線性任務(wù)分配和或垂直分層構(gòu)建的Dart應(yīng)用程序,總是能夠跟蹤其準(zhǔn)確的響應(yīng)時(shí)間需求,從而有效的電源管理技術(shù),如使處理器速度減慢,能夠延長(zhǎng)電池的壽命,限制消耗掉的能量,或者限制設(shè)備上產(chǎn)生的熱量。在所屬領(lǐng)域的當(dāng)前狀態(tài)中,大多數(shù)應(yīng)用程序不能跟蹤其響應(yīng)時(shí)間需求,并且如果這些應(yīng)用程序能夠跟蹤的話,也不能通過現(xiàn)有的協(xié)議層將這些需求從應(yīng)用程序傳輸?shù)皆O(shè)備的硬件,其中現(xiàn)有的協(xié)議層符合這種規(guī)范,即不包括用于傳輸響應(yīng)時(shí)間需求的接口的規(guī)范。
現(xiàn)在描述應(yīng)用程序事件驅(qū)動(dòng)的電源管理的特定實(shí)施例。在各例子中說明其它的實(shí)施例。在一個(gè)實(shí)施例(1)中,本發(fā)明提供了一種用于設(shè)備能量和電源管理以及能量和電源消耗降低的方法,包括在至少一個(gè)設(shè)備中建立一種事件驅(qū)動(dòng)的運(yùn)行時(shí)間環(huán)境,其中對(duì)于所述設(shè)備將實(shí)現(xiàn)能量和電源管理以及消耗降低;生成并保持至少一個(gè)事件隊(duì)列,該事件隊(duì)列確定所有同步和異步處理的事件以及相關(guān)的用于處理隊(duì)列中事件的希望最小的處理事件;以及根據(jù)隊(duì)列中希望最小的同步和異步事件處理時(shí)間,選擇最終的最短的估計(jì)的響應(yīng)時(shí)間。
在另一個(gè)實(shí)施例(2)中,本發(fā)明提供了(1)所述的方法,進(jìn)一步包括在需要處理任何異步事件之前,在第一異步事件隊(duì)列的所有事件中搜索驅(qū)動(dòng)所有的異步處理并收集需要的最短時(shí)間的事件;在需要處理任何同步事件之前,在第二同步事件隊(duì)列的所有事件中搜索驅(qū)動(dòng)所有的同步處理并收集需要的最短時(shí)間的事件;以及通過選擇異步事件所需要的最短時(shí)間和同步事件所需要的最短時(shí)間中的較短的時(shí)間,來確定最終的所需要的最短的響應(yīng)時(shí)間。
在另一個(gè)實(shí)施例(3)中,本發(fā)明提供了(2)所述的方法,進(jìn)一步包括在進(jìn)一步處理任何事件之前,使用最終的最短的響應(yīng)時(shí)間值來執(zhí)行電源管理或電源消耗降低的任務(wù)。
在另一個(gè)實(shí)施例(4)中,本發(fā)明提供了(2)所述的方法,其中所述第一異步事件隊(duì)列和所述第二異步事件隊(duì)列是相同的一個(gè)統(tǒng)一的事件隊(duì)列。
在另一個(gè)實(shí)施例(5)中,本發(fā)明提供了(2)所述的方法,其中所述第一異步事件隊(duì)列和所述第二異步事件隊(duì)列是不同的事件隊(duì)列。
在另一個(gè)實(shí)施例(6)中,本發(fā)明提供了(3)所述的方法,其中所述事件是DartEvents。XII.互操作性應(yīng)用程序事件驅(qū)動(dòng)的錯(cuò)誤恢復(fù)由于低容量電池電源引起的干擾、距離限制,以及突然斷電,設(shè)備之間的無線通信連接通常是不可靠的。在傳統(tǒng)的水平分層協(xié)議中,在設(shè)備的軟件執(zhí)行中,任何層中的重大錯(cuò)誤將會(huì)導(dǎo)致不可恢復(fù)的錯(cuò)誤,這是因?yàn)閼?yīng)用程序不具有標(biāo)準(zhǔn)的接口以容易地重新建立連接和連接環(huán)境,并且因?yàn)閭鹘y(tǒng)的應(yīng)用程序不具有許多在運(yùn)行在不同設(shè)備上的應(yīng)用程序之間跟蹤和重新建立共享的狀態(tài)的基礎(chǔ)設(shè)施,因此對(duì)于應(yīng)用程序來說這種錯(cuò)誤將難于恢復(fù)。DartFramework跟蹤共享的狀態(tài),并使用再現(xiàn)容易地在設(shè)備和垂直分層之間重新建立失去的狀態(tài),這就使得通信錯(cuò)誤易于被傳播到Dart,并且Dart易于將恢復(fù)信息直接傳播到通信處理單元。因此當(dāng)恢復(fù)連接時(shí),甚至當(dāng)先前失去的設(shè)備已經(jīng)丟失其所有應(yīng)用程序狀態(tài)時(shí),運(yùn)行在多個(gè)設(shè)備上的Darts能夠無縫地從協(xié)作的設(shè)備之間的間斷的完全失去的通信中恢復(fù),并且恢復(fù)設(shè)備的共享狀態(tài)。
現(xiàn)在描述互操作性應(yīng)用程序事件驅(qū)動(dòng)的錯(cuò)誤恢復(fù)的其它實(shí)施例。在一個(gè)實(shí)施例(1)中,本發(fā)明提供一種用于在失去通信或間斷地進(jìn)行通信的環(huán)境中適當(dāng)?shù)乩^續(xù)進(jìn)行操作的方法,其中協(xié)作地運(yùn)行在多個(gè)編組的設(shè)備上的事件驅(qū)動(dòng)的互操作性應(yīng)用程序包適當(dāng)?shù)乩^續(xù)進(jìn)行其操作和/或部分地從目前失去與作為組的一部分的設(shè)備的通信中恢復(fù),所述方法包括(1)當(dāng)失去或者中斷從組成員設(shè)備到編組的設(shè)備的通信,并且在預(yù)定的或動(dòng)態(tài)確定的時(shí)間段內(nèi)不能重新建立該通信時(shí),在組成員設(shè)備上生成通信會(huì)話丟失類型的事件示例,其中每個(gè)組成員和編組的設(shè)備實(shí)現(xiàn)其相應(yīng)的應(yīng)用程序包的目的;(2)直接地或者通過驅(qū)動(dòng)應(yīng)用程序包的同步操作的事件隊(duì)列,將通信會(huì)話丟失類型的事件發(fā)送到處理通信會(huì)話丟失事件的應(yīng)用程序事件處理單元;(3)在不需要被失去或中斷通信的編組的設(shè)備的情況下就能繼續(xù)進(jìn)行其操作時(shí),應(yīng)用程序包的事件處理單元修改應(yīng)用程序包的行為;(4)當(dāng)組成員和編組的設(shè)備的通信被恢復(fù)時(shí),在組成員設(shè)備上生成通信會(huì)話恢復(fù)類型的事件示例;(5)直接地或者通過驅(qū)動(dòng)應(yīng)用程序的同步操作的事件隊(duì)列,將通信會(huì)話恢復(fù)類型的事件發(fā)送到處理恢復(fù)的通信會(huì)話的應(yīng)用程序事件處理單元;(6)接著,應(yīng)用程序的事件處理單元使組成員設(shè)備發(fā)送需要的任何代碼、數(shù)據(jù),和/或內(nèi)容,以使編組的設(shè)備與剩余的事件驅(qū)動(dòng)的互操作性應(yīng)用程序同步;以及(7)接著在實(shí)現(xiàn)應(yīng)用程序的目的的過程中,應(yīng)用程序的事件處理單元修改應(yīng)用程序包的行為,以包括現(xiàn)在恢復(fù)的編組的設(shè)備。
在另一個(gè)實(shí)施例(2)中,本發(fā)明提供了(1)所述的方法,其中下述中一個(gè)和多個(gè)在任何組合中為真(1)事件驅(qū)動(dòng)的互操作性應(yīng)用程序包與互操作性格式一致或者是DartFormat;(2)互操作性應(yīng)用程序與該詳細(xì)的說明書其它地方描述的一樣,或者互操作性應(yīng)用程序包為Dart;(3)招募方法用于在多個(gè)編組的設(shè)備上建立協(xié)作運(yùn)行;(4)事件是或者包括DartEvents;(5)事件處理單元是Dart Gizmo類示例,或者從Dart Gizmo類直接或間接繼承的任何類的示例;(6)由互操作性引擎或DartEngine在每個(gè)設(shè)備上實(shí)現(xiàn)事件的協(xié)調(diào)和同步;以及(7)根據(jù)互操作性運(yùn)行時(shí)間或DartRuntime在設(shè)備上或設(shè)備之間實(shí)現(xiàn)事件的協(xié)調(diào)和同步。
在另一個(gè)實(shí)施例(3)中,本發(fā)明提供了(1)所述的方法,其中沒有編組的設(shè)備也能繼續(xù)進(jìn)行其操作的應(yīng)用程序的被修改的行為可選地從包括下述中一個(gè)和以任何組合的多個(gè)的一組修改中選擇(1)失去通信的設(shè)備簡(jiǎn)單地顯示允許應(yīng)用程序在沒有顯示的情況下繼續(xù)進(jìn)行的狀態(tài);(2)失去通信的設(shè)備執(zhí)行的功能是冗余的,因此不是實(shí)現(xiàn)應(yīng)用程序的目的所需要的;(3)可以由設(shè)備組中的任何剩余的成員(或多個(gè)成員)執(zhí)行失去通信的設(shè)備執(zhí)行的功能;(4)可以由設(shè)備組可以達(dá)到的另一個(gè)設(shè)備執(zhí)行失去通信的設(shè)備執(zhí)行的功能,該設(shè)備則可以被招募到設(shè)備組中;(5)可以以降低的操作模式執(zhí)行剩余編組的設(shè)備的功能;以及(6)上述的任何組合。
XIII.互操作性指令集在另一方面,本發(fā)明提供了一種互操作性方法、軟件,以及指令集。執(zhí)行互操作性指令集(IIS)的軟件或硬件是用于執(zhí)行共同的程序性環(huán)境的有效方法,其優(yōu)點(diǎn)為(i)用于編組和擴(kuò)展或分配應(yīng)用程序的招募模型;(ii)允許未被修改的應(yīng)用程序在其它不同的設(shè)備上運(yùn)行;以及(iii)將獨(dú)特的資源、獨(dú)特的能力和/或獨(dú)特的內(nèi)容展示給其它應(yīng)用程序和設(shè)備。
在本發(fā)明的一個(gè)有益的實(shí)施例和執(zhí)行過程中,互操作性指令集是包括在Dart引擎(圖22 600的DartEngine)中或與其兼容的Dart指令集(DartInstructionSet)。
應(yīng)該知道,可以以硬件、固件,和/或軟件實(shí)現(xiàn)計(jì)算機(jī)組件和信息系統(tǒng)和設(shè)備,通常存在關(guān)于對(duì)于特定執(zhí)行過程的特定組件使用哪個(gè)硬件、固件,或軟件的執(zhí)行選擇。因此對(duì)于Dart引擎和互操作性指令集也存在這種選擇。因此應(yīng)該知道,盡管可以根據(jù)一個(gè)硬件、固件或軟件描述某個(gè)實(shí)施例的某個(gè)組件,但是可選的實(shí)施例可以使用硬件、固件或軟件的不同組合來提供用于實(shí)現(xiàn)希望的功能或效果的裝置。
在一個(gè)示例性實(shí)施例中,盡管可以對(duì)組件和功能進(jìn)行不同地分組,從而對(duì)于引擎或指令集的結(jié)構(gòu)或操作來說,數(shù)量不是決定性的,但是用于實(shí)現(xiàn)互操作性指令集的硬件和/或軟件包括11個(gè)組件(參照?qǐng)D4 3010)。
首先,處理器或中央處理單元(CPU)、存儲(chǔ)器,以及輸入輸出(I/O)的用于運(yùn)行或執(zhí)行程序、支持來自和到系統(tǒng)、設(shè)備、網(wǎng)絡(luò)以及設(shè)備外面或外部的通信的能力。
第二,存在存儲(chǔ)器存取、計(jì)算、測(cè)試和分支、輸入/輸出指令,以至少執(zhí)行傳統(tǒng)的通用計(jì)算任務(wù)。
第三,有利地提供互操作性性能增強(qiáng)的指令,用于將共同的二進(jìn)制應(yīng)用程序和再現(xiàn)程序的實(shí)際到達(dá)擴(kuò)展到性能較低的設(shè)備上。
第四,有利地提供互操作性指令,盡管如這里其它地方描述的對(duì)于所有的執(zhí)行過程實(shí)施例并不需要所有的Dart組件,但是可以用于實(shí)現(xiàn)招募、再現(xiàn)、創(chuàng)造、垂直分層、線性任務(wù)分配、社會(huì)同步、社會(huì)安全、以及虛指針的Dart方法。
第五,還有利地提供了某些獨(dú)特的能力指令,它們可操作地將特定設(shè)備擁有的或可以從特定設(shè)備得到的任何特征、資源、能力,和/或功能展示給軟件應(yīng)用程序和其它設(shè)備。
第六,有利地提供安全維護(hù)指令,以控制或另外地訪問安全特征的設(shè)置,具有特定的交叉設(shè)備訪問權(quán)限的設(shè)備分組,和/或?yàn)閼?yīng)用程序設(shè)置對(duì)設(shè)備和/或資源的訪問權(quán)限。
第七,還有利地提供收集指令,例如Dart收集(DartContainment)指令,以允許Darts或Dart兼容的指令有效地將初始Dart的執(zhí)行擴(kuò)展到其它分別生成的Darts上,其中分別生成的Darts被作為初始Dart的操作的一部分收集、保持和運(yùn)行。
第八,為一個(gè)或多個(gè)譯碼,編碼,壓縮,解壓縮,操作和再現(xiàn)圖片、位圖、聲音、輸入事件,文本再現(xiàn),以及其它這種操作有利地提供共同的用戶接口(UI)指令。
第九,為例如,打開、關(guān)閉,以及保持會(huì)話和在會(huì)話中傳輸?shù)臄?shù)據(jù)有利地提供通信指令。
第十,有利地提供存儲(chǔ)指令,以控制和維持對(duì)存儲(chǔ)器、存儲(chǔ)設(shè)備、存儲(chǔ)資源等的存取。
第十一,有利地提供兼容性指令,以在不同格式或參數(shù)的數(shù)據(jù)、內(nèi)容和/或代碼之間進(jìn)行轉(zhuǎn)換或自動(dòng)編碼。
互操作性指令集在其它共同的方法中例如使用虛擬機(jī)時(shí)的優(yōu)點(diǎn),是設(shè)計(jì)和優(yōu)化互操作性指令集(特別是Dart互操作性指令集)以執(zhí)行所有需要的互操作性操作,其中的互操作性指令集是作為被調(diào)度的這種函數(shù)的指令,即被編譯和組合到設(shè)備處理器中的本地代碼。在一個(gè)實(shí)施例中,包括了一些可選的特點(diǎn)和能力,互操作性指令集應(yīng)該具有下述中的多數(shù)(即使不具有全部的話)(i)招募指令;(ii)分析指令;(iii)同步指令;(iv)用戶接口和圖形指令;(v)電源管理指令;(vi)連接和會(huì)話管理指令;(vii)存儲(chǔ)指令;(Viii)再現(xiàn)指令;(ix)創(chuàng)造指令;(x)應(yīng)用程序部分管理指令;(xi)加密大數(shù)數(shù)學(xué)(large number math)指令;(xii)文本和/或符號(hào)解析指令;(xiii)虛指針管理指令;以及(xiv)能夠?qū)⒃O(shè)備的獨(dú)特能力展示給Darts并從而展示給任何其它的DartDevices或Dart兼容的設(shè)備的指令。
現(xiàn)在描述互操作指令集的其它特定實(shí)施例。在一個(gè)實(shí)施例(1)中,本發(fā)明提供了一種用于執(zhí)行互操作指令集(IIS)的裝置,所述裝置包括處理器;連接到所述處理器的存儲(chǔ)器;以及同所述裝置外部的實(shí)體支持與所述處理器通信的輸入/輸出(I/O)接口;用于實(shí)現(xiàn)包括下述中至少之一的方法的執(zhí)行支持互操作裝置招募、再現(xiàn)、創(chuàng)造、垂直分層、線性任務(wù)分配、社會(huì)同步,以及社會(huì)安全;以及用于打開和維持通信會(huì)話和在通信會(huì)話期間在通信設(shè)備之間傳輸?shù)某绦?、?shù)據(jù)、內(nèi)容或其它信息的通信互操作性指令。
在另一個(gè)實(shí)施例(2)中,本發(fā)明提供了如(2)所述的裝置,其中執(zhí)行支持互操作裝置包括用于實(shí)現(xiàn)所述方法的互操作性指令。
XIV創(chuàng)造論在本發(fā)明的另一個(gè)方面,提供了用于創(chuàng)造論的系統(tǒng)、裝置、方法和計(jì)算機(jī)程序。創(chuàng)造論包括使互操作性應(yīng)用程序生成其它互操作性應(yīng)用程序,而該被生成的互操作性應(yīng)用程序又能夠生成更多的互操作性應(yīng)用程序的方法。這就允許以不同的形式在連接的和間斷連接的設(shè)備上有效地動(dòng)態(tài)地生成和分配應(yīng)用程序、數(shù)據(jù)和內(nèi)容。
在一個(gè)有利的實(shí)施例和執(zhí)行過程中,這是Darts的這種能力,即創(chuàng)建其它的Darts(圖12 700)或Dart程序(DartProcedures圖14 4000),該被創(chuàng)建的Darts或Dart程序又能創(chuàng)建其它的Darts或Dart程序。創(chuàng)造論被包括在整個(gè)Dart Platform(DartPlatform圖3)中。例如,Dart工具(DartTools圖3 200)允許說明源代碼中的各部分,并將源代碼編譯為包括這些部分的DartMaster(圖12 230)。當(dāng)DartMaster在MasterPlayer(圖12 203)上播放時(shí),如果需要的話則能夠收集更多的資源,并為用戶接口提供要求任何需要的信息,關(guān)于該信息再現(xiàn)程序和各部分被包括在輸出Dart或DartProcedure中。
運(yùn)行在任何Dart播放器上的任何Dart能夠包括來自被DartEngine支持的DartInstructionSet的指令,以動(dòng)態(tài)地形成各部分的再現(xiàn)程序并有效地將各部分打包成DartFormat文件。只要所創(chuàng)建的Darts和程序是由需要的數(shù)據(jù)、內(nèi)容和程序形成的,則Dart方式創(chuàng)建定制的Darts的過程就能夠無限地繼續(xù)進(jìn)行下去。
創(chuàng)造論提供了一種使互操作性應(yīng)用程序創(chuàng)建其它的互操作性應(yīng)用程序,該被創(chuàng)建的互操作性應(yīng)用程序又能夠以遞推的和或串行的和或扇出的方式,創(chuàng)建更多的互操作性應(yīng)用程序的方法,相關(guān)程序和計(jì)算機(jī)程序代碼和產(chǎn)品。提供了用于將源代碼(圖3 100)和可選的源數(shù)據(jù)和/或源資源編譯為包括至少一個(gè)再現(xiàn)的二進(jìn)制圖像的工具。還利用了并可以提供可執(zhí)行指令和/或應(yīng)用程序編程接口(多個(gè)接口),以動(dòng)態(tài)地將數(shù)字部分組合為包括一組再現(xiàn)(例如,Dart再現(xiàn))的二進(jìn)制圖像,以及控制如何根據(jù)通信能力、設(shè)備特征和目標(biāo)設(shè)備的環(huán)境組合再現(xiàn)的部分。
工具可以包括Dart工具(圖12 200)。二進(jìn)制圖像可以包括Dart格式(圖3 300、圖13、圖14),或由其組成,或者可以是不同格式的二進(jìn)制圖像或者是以非二進(jìn)制形式編碼的圖像。數(shù)字部分可以是被表示為結(jié)構(gòu)化的數(shù)字序列的任何類型或形式的程序、數(shù)據(jù)集,和/或內(nèi)容。
現(xiàn)在描述創(chuàng)造論的其它特定實(shí)施例。在一個(gè)實(shí)施例(1)中,本發(fā)明提供了一種用于使最初獨(dú)立的可執(zhí)行圖像或獨(dú)立的可執(zhí)行圖像包動(dòng)態(tài)地生成至少一個(gè)其它目標(biāo)的獨(dú)立的可執(zhí)行數(shù)據(jù)圖像或獨(dú)立的可執(zhí)行數(shù)據(jù)圖像包以實(shí)現(xiàn)最初可執(zhí)行圖像或獨(dú)立的可執(zhí)行圖像包的目的的方法,所述方法包括(1)收集關(guān)于設(shè)備的特征、內(nèi)容、資源或能力中至少之一和或用于執(zhí)行生成的可執(zhí)行圖像或圖像包的其它環(huán)境的第一信息,該信息可以用于實(shí)現(xiàn)生成可執(zhí)行圖像或圖像包的目的或部分目的;(2)確定如何組合下述中至少之一(i)其自身圖像的部分;(ii)被收集的信息;或(iii)編程產(chǎn)生的信息,以有效地利用目標(biāo)設(shè)備的資源、能力和內(nèi)容,或?qū)ζ涫占畔⒌沫h(huán)境;以及(3)按照需要,收集生成一個(gè)或多個(gè)其它獨(dú)立生成的可執(zhí)行數(shù)據(jù)圖像或圖像包所需要的第二信息,以不受限的順序?qū)崿F(xiàn)生成的目標(biāo)可執(zhí)行圖像或圖像包的目的。
XV.互操作性引擎/DartEngine再次想到DartEngine是或者包括用于在設(shè)備上執(zhí)行Darts指令并實(shí)現(xiàn)其目的的軟件和或硬件。DartEngine和設(shè)備專用的DartPlayer(DartEngine被包括在其中),提供了共同的執(zhí)行過程和DartRuntime環(huán)境,該環(huán)境允許招募和再現(xiàn)以建立高效的設(shè)備組,并盡可能地傳播其代碼、數(shù)據(jù)以及內(nèi)容,以實(shí)現(xiàn)Darts的目的。
現(xiàn)在描述互操作性引擎的其它特定實(shí)施例以及互操作性引擎DartEmgine的更加特定的實(shí)施例。在一個(gè)實(shí)施例(1)中,本發(fā)明提供一種使或輔助設(shè)備彼此進(jìn)行互操作的互操作性引擎,所述引擎包括(1)用于加載、運(yùn)行,和實(shí)現(xiàn)包括代碼的互操作性軟件包的至少一部分目的的裝置,其中至少一部分代碼嵌入在與互操作指令集一致的指令序列中;(2)用于發(fā)現(xiàn)其它互操作性設(shè)備的裝置;以及(3)用于直接地或間接地與其它互操作性設(shè)備進(jìn)行雙向通信的裝置。
在另一個(gè)實(shí)施例(2)中,本發(fā)明提供了如(1)所述的互操作性引擎,其中下述中的一個(gè)或多個(gè)在任何組合中為真(1)所述引擎包括DartEngine;(2)互操作性軟件包包括互操作性軟件包或者包括與DartFormat一致的Dart;以及(3)用于發(fā)現(xiàn)其它互操作性設(shè)備的裝置,所述裝置是至少部分地使用招募程序或Dart招募程序?qū)崿F(xiàn)的。
在另一個(gè)實(shí)施例(3)中,本發(fā)明提供了如(1)所述的互操作性引擎,其中所述引擎包括事件隊(duì)列,并執(zhí)行指令以通過互操作性應(yīng)用程序包支持使用事件隊(duì)列。
XVI.互操作性設(shè)備授權(quán)再次想到互操作性設(shè)備授權(quán)是通過將DartEngine移植為DartPlayer的一部分,將傳統(tǒng)的設(shè)備變?yōu)榫哂懈叨然ゲ僮餍缘腄artDevice的過程。此外,還需要存取設(shè)備專用信息、能力和內(nèi)容所需要的硬件抽象層的執(zhí)行過程。在具有DartPlayer的設(shè)備變?yōu)镈artDevice之前,必須執(zhí)行至少一個(gè)通信協(xié)議。
現(xiàn)在描述互操作性授權(quán)的其它特定實(shí)施例。在一個(gè)實(shí)施例(1)中,本發(fā)明提供了一種用于使用互操作性引擎的共同軟件源代碼創(chuàng)建使設(shè)備成為互操作性設(shè)備的互操作性軟件的方法,所述方法包括(1)創(chuàng)建互操作性引擎對(duì)象或示例;(2)創(chuàng)建設(shè)備硬件抽象層(HAL)對(duì)象或示例;(3)確定并填充halBase類或說明的所有預(yù)定義的要求的halBase成員功能的功能性;以及(4)創(chuàng)建充分連續(xù)地在執(zhí)行線程上運(yùn)行引擎的設(shè)備專用的播放器對(duì)象。
在另一個(gè)實(shí)施例(2)中,本發(fā)明提供(1)所述的方法,其中創(chuàng)建充分連續(xù)地在執(zhí)行線程上運(yùn)行引擎的設(shè)備專用的播放器對(duì)象的步驟如下(a)調(diào)用引擎初始化函數(shù);(b)在循環(huán)中調(diào)用引擎處理函數(shù),如果返回值表示出現(xiàn)了不可恢復(fù)的錯(cuò)誤或?qū)㈥P(guān)閉引擎,則結(jié)束循環(huán);(c)調(diào)用引擎非-初始化函數(shù);以及(d)停止執(zhí)行的線程。
XVII.互操作性安全模型/DartSecurity再次想到DartSecurity是用于提供需要的基礎(chǔ)設(shè)施以保護(hù)設(shè)備的完整性和設(shè)備內(nèi)容不會(huì)被惡意的和意外的破壞的系統(tǒng)和方法。
需要將穩(wěn)定的安全基礎(chǔ)設(shè)施用作保護(hù)設(shè)備、設(shè)備的內(nèi)容或輔助設(shè)施不被濫用、破壞或另外地?fù)p害,或者保護(hù)其不以任何不希望的方式被使用。如圖29所示,這種基礎(chǔ)設(shè)施是DartPlatform的組件以優(yōu)選的方式實(shí)現(xiàn)的發(fā)明的DartSecurity系統(tǒng)。
在優(yōu)選實(shí)施例中,當(dāng)DartDevice第一次運(yùn)行DartPlayer時(shí),DartEngine的部分初始化過程執(zhí)行下述1.收集適用于生成公共和私人加密密鑰對(duì)和唯一的ID(UID)的足夠的信息熵,以統(tǒng)計(jì)學(xué)地保證生成的密鑰對(duì)和唯一的ID是真正不同于那些以相似的方式生成的但是使用了不同的收集的信息熵的密鑰對(duì)和唯一的ID。
通過數(shù)字化地采樣設(shè)備外世界的各方面,能夠可靠地收集信息熵,其中不管怎樣設(shè)備都沒有與運(yùn)行采樣硬件的時(shí)鐘同步。用于與其它設(shè)備通話的通信機(jī)制通常是信息熵的很好的來源,這是因?yàn)殡姶鸥蓴_和與控制采樣的處理器的時(shí)鐘無關(guān)的量子噪聲影響了包的準(zhǔn)確定時(shí),數(shù)據(jù)的超時(shí)和變化。信息熵的另一個(gè)容易的來源是設(shè)備請(qǐng)求來自人類用戶的輸入并無論何時(shí)用戶提供任何輸入時(shí)都以細(xì)粒時(shí)鐘進(jìn)行采樣。包括定時(shí)和數(shù)據(jù)采樣的信息熵能夠被散列為一組用于為隨機(jī)數(shù)生成器提供種子的數(shù)據(jù)值。盡管實(shí)際上很難知道何時(shí)收集了足夠的信息熵,但是可以進(jìn)行估計(jì),并采用過采樣來確保收集了足夠的信息熵并將其保存為散列的數(shù)據(jù)值。
2.使用傳統(tǒng)的隨機(jī)數(shù)生成算法和傳統(tǒng)的加密操作以生成通用的唯一的公共/私人密鑰對(duì)和用于在任何時(shí)候唯一地識(shí)別設(shè)備的通用的唯一的DartDevice UID。在優(yōu)選的實(shí)施例中,所有UID的長(zhǎng)度都是128比特。
3.以所屬領(lǐng)域狀態(tài)已知的任何傳統(tǒng)方式在設(shè)備上存儲(chǔ)私人密鑰和信息熵散列的數(shù)據(jù)值的組,以遮擋和或隱藏設(shè)備上的數(shù)據(jù),但是實(shí)際上仍然由引擎使用數(shù)據(jù)。
4.根據(jù)一組二進(jìn)制標(biāo)記限制對(duì)設(shè)備的數(shù)據(jù)、內(nèi)容或工具資源的訪問。在優(yōu)選實(shí)施例中,如果阻擋對(duì)用于設(shè)備工具的相應(yīng)數(shù)據(jù)的訪問,則標(biāo)記為1。例如,對(duì)于下面的資源可以有單獨(dú)的標(biāo)記a阻擋對(duì)標(biāo)記為私人的數(shù)據(jù)或內(nèi)容的訪問;b阻擋對(duì)到另一個(gè)設(shè)備的公開的通信會(huì)話的訪問;c阻擋對(duì)本地存儲(chǔ)設(shè)備的訪問;以及d阻擋對(duì)用戶接口元件,例如屏幕、鍵盤、鼠標(biāo)以及發(fā)聲器的訪問。
5.將被加載以在DartEngine上運(yùn)行的每個(gè)Dart或DartProcedure具有明確的或暗示的標(biāo)記值的組,該標(biāo)記值控制其對(duì)DartDevice資源的訪問。每個(gè)DartDevice具有明確的或暗示的訪問標(biāo)記的組,該標(biāo)記對(duì)應(yīng)安全級(jí)別。如果應(yīng)用程序或發(fā)送應(yīng)用程序的設(shè)備不具有用于資源的所有標(biāo)記,則將不會(huì)加載Dart應(yīng)用程序或DartProcedure,除非設(shè)備先從具有可接受的授權(quán)或標(biāo)記的用戶或其它設(shè)備得到適當(dāng)?shù)氖跈?quán),其中的授權(quán)或標(biāo)記授權(quán)Dart或DartProcedure在特定設(shè)備上運(yùn)行??梢栽谀繕?biāo)DartDevice上永久地,或者持續(xù)特定的時(shí)間段,或者在Dart或DartProcedure執(zhí)行期間或者在設(shè)備間的通信會(huì)話持續(xù)期間,保存與Darts、DartProcedures或DartDevices的UID=捆綁在一起的訪問標(biāo)記。
6.如果Dart應(yīng)用程序試圖使DartEngine代表其訪問任何資源,其中對(duì)于所述資源應(yīng)用程序的環(huán)境標(biāo)記被設(shè)置為1,則DartEngine將立即停止執(zhí)行應(yīng)用程序的指令并關(guān)閉應(yīng)用程序。
在一個(gè)優(yōu)選執(zhí)行過程中,必須與用于進(jìn)行訪問的標(biāo)記組一起數(shù)字化地標(biāo)記Dart。設(shè)備之間的通信會(huì)話的一部分或內(nèi)容的加密/解密也是DartSecurity系統(tǒng)的一部分。
圖25表示具有一些安全系統(tǒng)組件的DartDevice400。DartEngine具有用于支持加密150、信息熵收集153、隨機(jī)數(shù)生成152、以及使用DartSecure協(xié)議保護(hù)設(shè)備之間的所有通信的基于指令的方法,以確保能夠自動(dòng)地加密任何兩個(gè)DartDevices之間的任何通信,從而DartEngine的基本通信不需要依賴于任何外界的協(xié)議來保護(hù)數(shù)據(jù)的通信??梢允褂冒踩捉幼謱?SSL)協(xié)議或在設(shè)備之間建立安全的通信鏈接的任何其它的協(xié)議來實(shí)現(xiàn)DartSecure協(xié)議153。在優(yōu)選的執(zhí)行過程中,因?yàn)镾SL中許多選項(xiàng)都是不需要的,因此執(zhí)行SSL協(xié)議標(biāo)準(zhǔn)中的功能子集以減小大小和復(fù)雜度。所有需要的大數(shù)數(shù)學(xué)加密基元150和151都被表示為DartEngine的一部分。為了實(shí)現(xiàn)更好的性能,理想的是以引擎的而不是Dart內(nèi)的本地代碼實(shí)現(xiàn)加密數(shù)學(xué)基元。
圖25還表示DartEngine維護(hù)相應(yīng)于安全等級(jí)的UID列表155和156。圖25還表示存在將級(jí)別數(shù)字映射為訪問權(quán)限標(biāo)記組的表159。設(shè)備和作為特定權(quán)限級(jí)別的應(yīng)用程序ID的列表被DartEngine維持,并且當(dāng)允許從設(shè)備向設(shè)備這樣傳播時(shí)以優(yōu)選的操作模式對(duì)其進(jìn)行過渡的傳播,從而列表中的任何設(shè)備能夠訪問新的設(shè)備而不需要進(jìn)一步收集權(quán)限。在該文章的其它地方進(jìn)一步描述了本發(fā)明的設(shè)備的過渡編組和特定安全級(jí)別的即社會(huì)安全的應(yīng)用程序。
為了確保甚至在Dart應(yīng)用程序或DartProcedure出示其標(biāo)記、符合要求,并被加載后,也不會(huì)故意地或無意地訪問范圍之外的資源,引擎使用環(huán)境數(shù)據(jù)結(jié)構(gòu)160和170檢查所有這種試圖的訪問,其中數(shù)據(jù)結(jié)構(gòu)帶有最初被Dart或DartProcedure出示的所有允許標(biāo)記。
注意到如該文章其它地方進(jìn)一步描述的,撤銷列表155可以被過渡性地保存為社會(huì)同步,從而之前與特定安全等級(jí)的其它設(shè)備共同編組的任何設(shè)備能夠使其訪問權(quán)限被邏輯地撤銷,從而與傳遞地從組中的任何其它設(shè)備得知撤銷的任何設(shè)備進(jìn)行互操作。在一個(gè)優(yōu)選的執(zhí)行過程中,如果被撤銷的設(shè)備得知撤銷后與編組的設(shè)備連接,則DartEngine將使得被撤銷的設(shè)備不進(jìn)行操作或者部分地不能進(jìn)行操作。在具有共同的訪問權(quán)限的可互操作的設(shè)備的組上撤銷訪問權(quán)限并不是理想的,但是在許多情況下,在可能間斷連接的設(shè)備的組上撤銷丟失的、行為失常的或有不良影響的設(shè)備的訪問權(quán)限的系統(tǒng)是實(shí)際存在的。
傳播訪問權(quán)限或訪問權(quán)限的撤銷的方法非常類似于告知其朋友對(duì)他人造成傷害的人的個(gè)人,并且類似于傳播流言的方式將信息在人們之間傳播,從而大多數(shù)的人都能夠得知并能夠遠(yuǎn)離對(duì)他人造成傷害的人,甚至當(dāng)這些人沒有直接地與最先知道該對(duì)他人造成傷害的人交談時(shí)也是如此。
除了訪問標(biāo)記外DartEngine環(huán)境還包括引擎通過運(yùn)行的Dart或DartProcedure用于限制對(duì)不是運(yùn)行的Dart的一部分的任何內(nèi)存或存儲(chǔ)器或代碼進(jìn)行訪問的信息。在所屬領(lǐng)域的狀態(tài)中這種訪問限制被稱為“沙箱”。DartEngine在所有Darts和DartProcedures上支持這種沙箱,從而Darts不能被用于訪問設(shè)備外的功能、內(nèi)存和存儲(chǔ)器部分,其中明確地提供這些部分用于被沙箱中運(yùn)行的Darts和DartProcedures使用。
Darts在本發(fā)明的一個(gè)優(yōu)選執(zhí)行過程中,在傳統(tǒng)地被認(rèn)為是代碼、數(shù)據(jù)、操作系統(tǒng)、圖形或用戶輸入子系統(tǒng),以及線程之間,或就此而言內(nèi)容、程序,或者甚至設(shè)備之間,幾乎沒有限定。DartPlatform(圖3)能夠智能地混和和匹配軟件程序、代碼、數(shù)據(jù)、內(nèi)容,以及設(shè)備電路,使之成為集成的虛擬系統(tǒng),該系統(tǒng)實(shí)現(xiàn)Dart設(shè)計(jì)者設(shè)計(jì)的以及DartSource中指定的應(yīng)用程序的目的(圖3 100)。
DartTools創(chuàng)建的Darts能夠自優(yōu)化、重組、發(fā)送和同步其版本或擴(kuò)展,以有效地在不同設(shè)備之間或不同設(shè)備中共享程序、控制、硬件資源和內(nèi)容。
Darts被創(chuàng)建為具有建立集成的工作應(yīng)用程序所需要的所有數(shù)據(jù)、內(nèi)容和程序,其中的應(yīng)用程序能夠在任何數(shù)量的不同設(shè)備上,和同時(shí)地在許多類似或不同的設(shè)備上很好地運(yùn)行。
此外,單個(gè)Dart的運(yùn)行時(shí)間環(huán)境也能夠動(dòng)態(tài)地或靜態(tài)地包括作為任何Dart的雙親Dart或子女Dart的其它Darts。因此DartRuntime環(huán)境在其到達(dá)的未知設(shè)備和未知的獨(dú)立產(chǎn)生的Darts上是唯一的。
不同于目前采用的互操作性技術(shù),盡管Dart技術(shù)不限于這種任務(wù),但是關(guān)于人類確定大小的數(shù)據(jù)以及如幻燈片放映、約定日歷、聯(lián)系、控制面板和消息對(duì)該Dart技術(shù)進(jìn)行優(yōu)化。系統(tǒng)的響應(yīng)時(shí)間快得足以在五分之一秒中放映運(yùn)動(dòng)視頻,響應(yīng)按壓按鈕或請(qǐng)求在個(gè)人聯(lián)系列表中找到特定的聯(lián)系人。對(duì)于人類來說,這種響應(yīng)時(shí)間幾乎不能與即時(shí)響應(yīng)相區(qū)分。在多數(shù)應(yīng)用程序環(huán)境的基礎(chǔ)上,Dart的響應(yīng)時(shí)間要求與大多數(shù)實(shí)時(shí)操作系統(tǒng)相比是非常低的,這是因?yàn)橥ǔOM麑?shí)時(shí)操作系統(tǒng)運(yùn)行如數(shù)據(jù)服務(wù)器的應(yīng)用程序,其中的數(shù)據(jù)服務(wù)器必須每秒處理幾百個(gè)操作。因?yàn)镈arts僅需要在人類的反應(yīng)時(shí)間內(nèi)進(jìn)行響應(yīng),因此使用有益的簡(jiǎn)單的和高度穩(wěn)定和靈活的分級(jí)事件處理機(jī)制,以代替在所屬領(lǐng)域的當(dāng)前狀態(tài)的互操作性操作系統(tǒng)和其相關(guān)聯(lián)的運(yùn)行時(shí)間環(huán)境中采用的標(biāo)準(zhǔn)的占先的或協(xié)作的線程系統(tǒng)。
考慮幻燈片放映Dart應(yīng)用程序的例子。在一個(gè)執(zhí)行過程中,盡管可以使用任何編程語言,但是使用DartFramework(圖11 102)以C++程序代碼語言編寫幻燈片放映Dart,還以C++編寫并使用DartTools(圖12 200)編譯和鏈接。C++源代碼還包括Dart專用的C++程序語句,程序語句將能夠被創(chuàng)建的應(yīng)用程序擴(kuò)展為包括所有的DartProcedures、再現(xiàn)程序,和其它Dart應(yīng)用程序需要的互操作性擴(kuò)展程序,以發(fā)現(xiàn)和檢查其它設(shè)備、根據(jù)所述檢查發(fā)送優(yōu)化的備份或部分、使該優(yōu)化的備份或部分在選擇的發(fā)現(xiàn)的設(shè)備上運(yùn)行,并接著通過所有包括的設(shè)備上的事件隊(duì)列進(jìn)行互操作。這種設(shè)備可以是事件驅(qū)動(dòng)的,其中事件自動(dòng)地串行化和/或同步,從而以高度協(xié)作和穩(wěn)定的方式操作應(yīng)用程序的所有組件,以將互操作性應(yīng)用程序的目的表示為封裝在Dart中(圖9)。在優(yōu)選的執(zhí)行過程中,直接從DartTools(圖12 200)生成的DartMaster(圖12 230)將包括單個(gè)MasterRendition(圖11 113)導(dǎo)出的對(duì)象,它提供了作為執(zhí)行的開始點(diǎn)的主要方法,該執(zhí)行繼續(xù)創(chuàng)建MasterRendition對(duì)象維護(hù)的列表,其中MasterRendition對(duì)象包含對(duì)其它再現(xiàn)程序?qū)С龅膶?duì)象(圖11 114)的參考值。
通常由C++或其它高級(jí)語言程序員使用指向DartInstructionSet的工具和框架創(chuàng)建DartMasters。為了涵蓋Dart可能發(fā)現(xiàn)其所運(yùn)行在的設(shè)備的全部范圍,一般地MasterDart將包括MasterPlayer所使用的內(nèi)容和程序,以在一個(gè)和五個(gè)不同再現(xiàn)程序之間生成。
邏輯上,再現(xiàn)程序可以被看作分離的程序,或可執(zhí)行的圖形,其中在優(yōu)選的執(zhí)行過程中,在任何一個(gè)時(shí)刻在任何一個(gè)設(shè)備上僅選擇一個(gè)程序進(jìn)行運(yùn)行。
物理上,再現(xiàn)程序通常有利地共享其數(shù)據(jù)、代碼和內(nèi)容組件的大多數(shù),從而在實(shí)際的DartFormat二進(jìn)制圖像或文件中有利地存在數(shù)量極大降低的備份。
Dart的DartSourece(圖3 100)還應(yīng)該包括在設(shè)備上運(yùn)行的程序,以確定哪個(gè)再現(xiàn)程序最佳地運(yùn)行在該設(shè)備上。
例如,包括圖片集的幻燈放映Dart可能具有下述三種再現(xiàn)程序(i)用于設(shè)備的簡(jiǎn)單的文本再現(xiàn)程序,僅具有單個(gè)線條或幾個(gè)線條的文本顯示,該再現(xiàn)程序卷動(dòng)幻燈片放映的名稱和包括的幻燈片名稱的列表,因?yàn)樵摮绦虿荒茱@示圖像本身;(ii)小屏幕的再現(xiàn)程序,例如可能適用于具有小屏幕尺寸和有限的CPU電源的蜂窩電話和PDA;以及(iii)高端的大屏幕再現(xiàn)程序,以多個(gè)顯示選項(xiàng)、指標(biāo)和過渡效果顯示大的圖片,可以適用于運(yùn)行在更大屏幕的個(gè)人計(jì)算機(jī)(PC)或家庭娛樂系統(tǒng)中。
在一個(gè)特別有益的操作模式中,當(dāng)包括多個(gè)再現(xiàn)程序的Dart首先開始在一個(gè)設(shè)備上運(yùn)行時(shí),Dart程序使用DartInstructionSet的輪廓輪廓指令以在該設(shè)備上檢查被構(gòu)建為DartEngine的設(shè)備配置,從而確定該設(shè)備是否具有運(yùn)行最先進(jìn)的再現(xiàn)程序所需要的所有特征。如果具有的話,則將運(yùn)行最先進(jìn)的再現(xiàn)程序。如果不具有的話,則對(duì)每個(gè)次先進(jìn)的再現(xiàn)程序程序性地檢查設(shè)備配置,直到發(fā)現(xiàn)一個(gè)能夠在設(shè)備上有效地運(yùn)行的再現(xiàn)程序?yàn)橹埂?br>
注意到不具有嵌入的DartEngine的目標(biāo)設(shè)備能夠被具有DartEngine的任何設(shè)備或通過具有DartEngine的任何設(shè)備訪問,通過對(duì)目標(biāo)設(shè)備的深入了解和通過到目標(biāo)設(shè)備的連接代理和虛擬用于該設(shè)備的DartEngine的操作來構(gòu)建該設(shè)備。一個(gè)例子是使用不具有DartEngine的打印機(jī),但是該打印機(jī)的確能夠被想要在其上進(jìn)行打印的設(shè)備通過個(gè)人計(jì)算機(jī)達(dá)到,其中的個(gè)人計(jì)算機(jī)自身運(yùn)行DartEngine,通過PROFILE_INSTRUCTION展示其打印資源。只要在PC上運(yùn)行的DartEngine展示打印能力,則具有DartEngine的任何其它初始設(shè)備將能夠使用個(gè)人計(jì)算機(jī)可用的打印機(jī),并且通過個(gè)人計(jì)算機(jī)上的DartEngine的硬件抽象層(HAL)對(duì)象的配置和打印方法進(jìn)行訪問。
當(dāng)請(qǐng)求Dart將其自身發(fā)送到另一個(gè)設(shè)備上時(shí),多數(shù)Darts中一個(gè)用戶的選項(xiàng)將發(fā)送的再現(xiàn)程序集限制為那些能夠運(yùn)行在目標(biāo)設(shè)備上運(yùn)行的程序。這樣,用戶能夠限制到目標(biāo)設(shè)備的傳輸時(shí)間和對(duì)目標(biāo)設(shè)備的內(nèi)存要求。當(dāng)然新的設(shè)備不會(huì)具有更高級(jí)的再現(xiàn)程序以重新發(fā)送到能力更高的設(shè)備上。
由于大量的內(nèi)容以及創(chuàng)建和編輯內(nèi)容的應(yīng)用程序是基于PC或互聯(lián)網(wǎng)的,因此Dart內(nèi)容能夠輸入和輸出現(xiàn)有軟件系統(tǒng)本地生成的內(nèi)容就變得重要了。
Darts可以有利地包括用于JPEG圖片的標(biāo)準(zhǔn)格式的數(shù)據(jù),可能遇到的任何其它形式的數(shù)據(jù)或內(nèi)容,等等,并且菜單選項(xiàng)可以被構(gòu)造為能夠輸入和輸出圖片、視頻、音頻、文本和將不同組件聯(lián)系在一起的XML文檔的Dart內(nèi)容。
DartInstructionSet可選地但是有利地包括JPEG和其它標(biāo)準(zhǔn)媒體格式的解壓縮和回放指令,從而可以有效地執(zhí)行CPU密集的解壓縮任務(wù),作為DartEngine的一部分將其編譯為DartDevice的CPU的本地指令集。這些指令還限制必須包括在Darts中的代碼數(shù)量,這是因?yàn)镈artEngine進(jìn)行了作為執(zhí)行DartInstructionSet一部分的許多解壓縮和顯示的操作。類似地,存在XML和其它文本解析指令以限制應(yīng)用程序代碼數(shù)量,并當(dāng)解析文本、RTF、XML和其它基于文本的文檔時(shí)提供本地代碼速度的優(yōu)點(diǎn)。
此外,PC應(yīng)用程序能夠容易地被其制造商修改以直接輸入和輸出Dart內(nèi)容。Darts能夠包括內(nèi)容存取APIs和控制APIs,以允許其它應(yīng)用程序和Darts程序性地計(jì)數(shù)和提取內(nèi)容部分,例如JPEG圖片,以及音頻剪輯和文本名稱和部分的描述。
也能夠計(jì)數(shù)和訪問Dart控制APIs,和API函數(shù)的文本描述,以從其它Darts或設(shè)備控制Darts自身的操作,允許對(duì)Darts和其操作的設(shè)備進(jìn)行遠(yuǎn)程控制。
將Dart Engine移植到設(shè)備上的程序的實(shí)施例現(xiàn)在描述用于將DartEngine移植到新的設(shè)備上的程序。該例子假設(shè)Dart Engine是C++代碼編寫的Dart Engine,但是并不脫離程序的一般性。
首先,通過從halBase對(duì)象繼承或以任何其它方式,如直接創(chuàng)建的方式,來創(chuàng)建你自己的硬件抽象層(圖4 3020、圖22 650、圖27 650)對(duì)象。
第二,將包括下述的功能填入halBase成員功能的功能性中分配給定大小的單個(gè)連續(xù)的內(nèi)存塊,在幾毫秒內(nèi)返回時(shí)間,移動(dòng)三個(gè)標(biāo)準(zhǔn)的內(nèi)部格式之一的位圖,或者在給定位置將時(shí)間變量編譯到屏幕。HalBase類還包括用于得到配置信息字的虛函數(shù),即必須提供配置信息字以允許Darts在DartEngine上運(yùn)行,確定實(shí)際設(shè)備的CPU、內(nèi)存、屏幕、通信、聲音、打印,以及其它特征。特殊的優(yōu)點(diǎn)是通過使用halBase對(duì)象的OEM_Function方法設(shè)計(jì)和創(chuàng)建程序性接口,以展示設(shè)備的任何獨(dú)特的能力、內(nèi)容或功能,這些能力、內(nèi)容或功能不會(huì)另外地通過基本的halBase類的真正的虛擬方法展示。
第三,通過從playerBsae對(duì)象繼承,來創(chuàng)建設(shè)備專用的DartEngine對(duì)象(圖22 600),或者不利用繼承直接創(chuàng)建。
第四,構(gòu)建設(shè)備的可執(zhí)行的采用DartEngine對(duì)象的DartPlayer(圖22600),包括在循環(huán)中調(diào)用DartEngine的Process()成員函數(shù)(例如,playerBase::Process()成員函數(shù)(圖23 4003、圖25 611)的直到返回滿足預(yù)定條件(例如,非零值)的循環(huán)。DartPlayer的所有同步(圖15 8010)和異步操作(圖16在虛線框內(nèi)表示的異步事件處理),包括通信,都是被該簡(jiǎn)單的循環(huán)的執(zhí)行線程驅(qū)動(dòng)的,因此不需要多線程的操作系統(tǒng)。
設(shè)備互操作性的Dart方案有利地將適配和測(cè)試復(fù)雜度方程從N-平方(圖1和圖2)變?yōu)镹的一階。代替必須考慮新的設(shè)備如何與每個(gè)其它類型的不同設(shè)備共享內(nèi)容和控制并執(zhí)行各自的方案,在具有Darts時(shí)僅需要將DartEngine移植到設(shè)備專用的DartPlayer上(圖10)。
需要執(zhí)行了解設(shè)備具有的所有通信信道的功能,并構(gòu)建程序以報(bào)告CPU速度、屏幕尺寸等,但是不必考慮設(shè)備如何共享內(nèi)容和控制。Dart內(nèi)容執(zhí)行該項(xiàng)操作而不是設(shè)備內(nèi)嵌的軟件執(zhí)行該項(xiàng)操作。
應(yīng)該知道這種移植提供了可管理的N的一階方案的Dart,而不是N-平方級(jí)方案的Dart,并且對(duì)于每個(gè)新的設(shè)備只進(jìn)行一次DartPlayer的移植,并且對(duì)于每個(gè)新的應(yīng)用程序僅需要開發(fā)Dart一次,從而每個(gè)新的設(shè)備或應(yīng)用程序僅要求增加一個(gè)工作單元。
DartPlayer的實(shí)施例下面描述DartPlayer(圖22 500)的一個(gè)實(shí)施例,例如用C++語言實(shí)現(xiàn),并使用傳統(tǒng)的編程工具編譯為DartDevice處理器的本地指令集,或者在一些實(shí)施例中編譯為中央處理單元(CPU)的本地指令集。
PlayerBase類(DartPlayer類從其繼承)執(zhí)行作為一系列具有參數(shù)的操作碼的Dart程序?;旧?,DartPlayer可以被模擬為微處理器,DartInstructionSet被模擬為一組機(jī)器指令;然而,在為Darts的情況下,大多數(shù)指令比一般的微處理器中的指令更高級(jí)。DartPlayer本地的指令可以例如,包括將JPEG圖片解壓縮到緩存中,將緩存中的圖片以正確的格式移動(dòng)到物理屏幕上的特定位置上,并保存運(yùn)行的Dart和其所有代碼和數(shù)據(jù)完整狀態(tài)的單條指令。此外,可以有利地將完整的2D圖形基元集、先進(jìn)的用戶輸入處理,和音頻解壓縮處理指令構(gòu)造為DartInstructionSet。
當(dāng)Dart想要(i)將其自身發(fā)送;(ii)發(fā)送其優(yōu)化版本;(iii)請(qǐng)求控制面板;(iv)請(qǐng)求Dart程序;或者(v)從另一個(gè)設(shè)備請(qǐng)求數(shù)據(jù)時(shí),它使用EnumerationInstruction或使用BuiltinInstruction將EnumerationEvent放入EventQueue中。Enumeration Instruction或Enumeration Event使播放器調(diào)用halBase計(jì)數(shù)成員函數(shù),該函數(shù)得到播放器可以連接到的每個(gè)Dart設(shè)備的名稱和描述??蛇x地,可以將DartProcedure發(fā)送到每個(gè)這種設(shè)備,這種設(shè)備運(yùn)行程序,并自己返回在初始設(shè)備上運(yùn)行的程序。因此與一般的處理、數(shù)學(xué)、以及測(cè)試和控制指令相關(guān)的EnumerationInstructions可以被用于有效地檢查任何連接的設(shè)備,以檢查其是否能夠?qū)崿F(xiàn)大多數(shù)任何需要的函數(shù)集,或者包括使用中的或感興趣的代碼、數(shù)據(jù)或內(nèi)容。
由于被發(fā)送到其它設(shè)備和接收回來的DartProcedures或Darts的函數(shù)能夠包括進(jìn)行大多數(shù)處理的代碼,因此該功能性有利地是廣范圍的設(shè)備間協(xié)作任務(wù)所需要的所有功能。在多數(shù)情況下,應(yīng)該由人或程序員將播放器移植到設(shè)備中,以決定當(dāng)連接到其它設(shè)備時(shí),采取什么類型的物理連接、協(xié)議、安全度量,等設(shè)計(jì)選擇。在一個(gè)特別有益的執(zhí)行過程中,DartPlayer假設(shè)接收的任何通信模塊都被糾正了錯(cuò)誤,并已經(jīng)通過移植程序員構(gòu)建在halBase虛函數(shù)中的任何安全要求。有利地,除了在HAL的設(shè)備專用的函數(shù)中低級(jí)地發(fā)送和接收這種模塊外,建立安全的通信會(huì)話、發(fā)送具有相關(guān)數(shù)據(jù)、代碼和內(nèi)容的事件,自動(dòng)地請(qǐng)求和處理在傳輸中丟失的模塊,自動(dòng)地恢復(fù)設(shè)備之間臨時(shí)失去的會(huì)話的功能都是以DartEngine的可移植的代碼部分執(zhí)行的。這就極大地降低了在DartDevice上支持不同通信協(xié)議所需要的工作量,并極大地提高了在設(shè)備之間執(zhí)行的可靠度,這是因?yàn)槭褂孟嗤脑创a基來移植DartEngine的可移植部分。
對(duì)于物理發(fā)現(xiàn)使用Dart指令集的實(shí)施例
DartInstructionSet的實(shí)施例有利地主要地以非常高級(jí)的功能性,處理設(shè)備、服務(wù),以及資源發(fā)現(xiàn)和設(shè)備間通信。在一些實(shí)施例中,DartInstructionSet專門地以非常高級(jí)的功能性,處理設(shè)備、服務(wù),以及資源發(fā)現(xiàn)和設(shè)備間通信。盡管運(yùn)行的Dart能夠檢查設(shè)備配置以確定實(shí)際的通信特征,例如通信速度和等待時(shí)間,但是有利地通常運(yùn)行的Dart不關(guān)心或者不需要知道設(shè)備之間的實(shí)際通信是否是HTTP,TCP IP,USB,802.11b,或一些其它協(xié)議,或共享的內(nèi)存卡,物理傳輸?shù)膬?nèi)存卡或任何其它的物理介質(zhì)或協(xié)議。
類似地,通過人指定和執(zhí)行移植,可以將其它設(shè)備、服務(wù),或資源或鑒別和安全的物理發(fā)現(xiàn)構(gòu)建在halBase越權(quán)函數(shù)中。
構(gòu)建這種移植的一個(gè)有益的方式是將用戶可編輯的“友好的”設(shè)備列表創(chuàng)建為基于playerBase的DartPlayer的一部分。在這種方式中,用戶能夠指定需要的互聯(lián)網(wǎng)協(xié)議(IP)地址和/或網(wǎng)絡(luò)名稱和/或口令,以訪問其希望訪問的所有設(shè)備,以允許設(shè)備通過其它方式訪問另外的未被發(fā)現(xiàn)的、難以發(fā)現(xiàn)的或者難以在其它許多聯(lián)網(wǎng)的設(shè)備中通過其它裝置準(zhǔn)確地定位的設(shè)備。
可以有利地實(shí)現(xiàn)本發(fā)明的實(shí)施例,從而所有的DartPlatform字符都是32位字,以有利地適應(yīng)任何字符表示系統(tǒng),例如統(tǒng)一代碼或多字節(jié)標(biāo)準(zhǔn),而不需要由Dart程序進(jìn)行特別的處理。由halBase導(dǎo)出的HAL執(zhí)行對(duì)象來回轉(zhuǎn)化這些32位字符,以與特定設(shè)備的本地能力相匹配。然而,本發(fā)明不限于任何特定位大小的字,可以使用更大或更小的位大小的字。
希望進(jìn)行設(shè)備、資源和/或服務(wù)發(fā)現(xiàn)的設(shè)備應(yīng)該遵循適當(dāng)?shù)臉?biāo)準(zhǔn)。Dart計(jì)數(shù)指令接口或SignalEvent BuiltinInstruction(圖20 670)處理有利地隱藏用于Dart應(yīng)用程序的不同設(shè)備發(fā)現(xiàn)標(biāo)準(zhǔn)之間的差別,同時(shí)提供幫助函數(shù)以在硬件抽象層中使用,以幫助建立兼容的對(duì)IP、紅外(IR)、藍(lán)牙、802.11x,和其它連接的或可連接的設(shè)備或系統(tǒng)的支持。在至少一個(gè)示例性DartPlatform上,Dart有利地執(zhí)行幾乎所有的內(nèi)容、數(shù)據(jù)和程序的適配,而不是將該適配嵌入在引擎中。正是Dart自己決定哪個(gè)再現(xiàn)程序?qū)⒆罴训剡\(yùn)行在目標(biāo)設(shè)備上。并且正是Dart中的程序?qū)B接的DartDevices改變內(nèi)容回放。
有利地,由于存在DartPlatform,就不需要對(duì)每個(gè)應(yīng)用程序和新的設(shè)備需要與其一同工作的其它設(shè)備進(jìn)行計(jì)劃,這是因?yàn)樵O(shè)備之間的協(xié)議是非常簡(jiǎn)單的,但是也是非常有效的。一個(gè)DartDevice能夠?qū)artProcedure發(fā)送到任何其它的DartDevice上,該DartProcedure自動(dòng)地在目標(biāo)DartDevice上運(yùn)行,并接著返回自動(dòng)地在初始設(shè)備上運(yùn)行或處理的事件或程序。DartDevices不需要知道他們正在運(yùn)行的程序或Darts是否在傳輸數(shù)據(jù)、應(yīng)用程序、控制面板或僅僅檢查能力。
在至少一個(gè)特別有利的實(shí)施例中,DartPlatform不采用客戶機(jī)/服務(wù)器或?qū)Φ饶J降脑O(shè)備間互操作性。相反,它有利地采用招募模式。
招募和招募模型和方法允許Dart應(yīng)用程序自動(dòng)地將其到達(dá)或連接范圍延伸到多個(gè)不同的連接和設(shè)備上。招募根本上不同于客戶機(jī)/服務(wù)器或?qū)Φ冗B接或通信并且賦予DartPlatform獨(dú)特的和非常希望的特性。
招募模型的實(shí)施例允許Dart應(yīng)用程序以與人類形成組以完成工作相同的方式形成關(guān)于應(yīng)用程序的設(shè)備組。如果某個(gè)人是希望建造房屋的施工承包者,則他為木匠和木材提供商確定施工所需要的技術(shù)和資源。接著他與因此被招募的提供商和木匠作為一個(gè)組進(jìn)行工作,以使木匠得到木材并根據(jù)開始建造該建筑物的承包者的目的來協(xié)調(diào)該建筑物的建造。類似地,Dart應(yīng)用程序能夠通過任何現(xiàn)有的通信介質(zhì)通過發(fā)送能夠自動(dòng)地在目標(biāo)設(shè)備上允許的程序,來達(dá)到和檢驗(yàn)其能夠進(jìn)行通信的所有DartDevice的資源。運(yùn)行的Dart自身找到DartDevices,對(duì)其進(jìn)行授權(quán)并形成DartDevices的組,將任何需要的內(nèi)容和代碼發(fā)送到組中的每個(gè)DartDevice,以為用戶實(shí)現(xiàn)應(yīng)用程序。不要求設(shè)備用戶的參與。
Darts將其操作延伸到招募的DartDevices上,并有效地同時(shí)在所有DartDevices上運(yùn)行。其結(jié)果是系統(tǒng)有利地不需要如客戶機(jī)/服務(wù)器配置或操作中的任何中央控制設(shè)備。有利地,與對(duì)等配置和操作相比,Dart系統(tǒng)不需要與初始Dart的丟失相關(guān)的程序存在于除初始設(shè)備外的任何設(shè)備上。并且設(shè)備用戶永遠(yuǎn)不必考慮媒體格式、通信協(xié)議,也不必考慮加載驅(qū)動(dòng)程序。無論何時(shí)另一個(gè)DartDevice被招募到組中時(shí),招募模型還允許Dart應(yīng)用程序和數(shù)據(jù)將其自身從Dart設(shè)備向Dart設(shè)備傳播。因此有利地,通過使用或不需要任何明確地加載或保存應(yīng)用程序或其相關(guān)數(shù)據(jù),可以進(jìn)行分配Darts和其封裝的內(nèi)容、程序和數(shù)據(jù)。安全性可能通常是DartPlatform的必要部分,以防止惡意的或出現(xiàn)故障的Darts或其它代碼和數(shù)據(jù)的傳播。該安全性部分地是以要求可能被招募的設(shè)備接受或通過不允許通信或簡(jiǎn)單地拒絕運(yùn)行來自其它設(shè)備的程序或Darts的拒絕招募的形式出現(xiàn)的。
在一個(gè)特別有利的執(zhí)行過程中,招募模型和方法是基于DartInstructionSet的。使用DartInstructionSet來表示程序,其中對(duì)于設(shè)備互操作性、多媒體用戶接口、以及招募模型和方法的使用來優(yōu)化DartInstructionSet。
有利地,大多數(shù)高級(jí)語言可以被編譯為面向DartInstructionSet。此時(shí)在一個(gè)特別有利的實(shí)施例中,采用的高級(jí)語言是C++,通過編譯指示工具來增加擴(kuò)展。這些優(yōu)點(diǎn)都來自于C++編程語言的當(dāng)前的廣泛使用,但是本發(fā)明不限于任何特定的語言,并且以現(xiàn)在已經(jīng)存在的或?qū)黹_發(fā)的其它語言實(shí)現(xiàn)也能起到相同或更好的效果,其中包括C++編程語言的改進(jìn)、增強(qiáng),和/或擴(kuò)展。
現(xiàn)在描述互操作性安全模型的其它特定實(shí)施例或更特定的實(shí)施例,DartSecurity模型。在一個(gè)實(shí)施例(1)中,本發(fā)明提供了一種用于限制訪問和或得知互操作性應(yīng)用程序包的資源或能力,和或互操作性設(shè)備的資源或能力的方法,所述方法包括(1)使用下述步驟中的至少多個(gè)步驟形成安全性的基礎(chǔ)(a)自動(dòng)地收集與設(shè)備相關(guān)聯(lián)的信息熵狀態(tài)度量;(b)生成密鑰對(duì);(c)生成設(shè)備ID;以及(d)在設(shè)備上存儲(chǔ)密鑰對(duì)、設(shè)備ID,和信息熵狀態(tài)度量,以當(dāng)設(shè)備有效時(shí)繼續(xù)使用;(2)形成允許或阻止限制訪問的規(guī)則;以及(3)使用形成的基礎(chǔ)和形成的規(guī)則來至少為設(shè)備提供安全性任務(wù)。
在另一個(gè)實(shí)施例(2)中,本發(fā)明提供了一種用于限制訪問和或得知互操作性應(yīng)用程序包的資源或能力,和或互操作性設(shè)備的資源或能力的方法,所述方法包括(1)當(dāng)設(shè)備首先開始工作時(shí)在至少一個(gè)下述步驟中形成安全性基礎(chǔ)(a)自動(dòng)地收集信息熵;(b)生成公共/私人密鑰對(duì);(c)生成唯一的設(shè)備ID;以及(d)在設(shè)備上存儲(chǔ)公共和私人密鑰對(duì)、設(shè)備唯一的ID,以及用于隨機(jī)數(shù)生成器的信息熵狀態(tài),以無論何時(shí)設(shè)備有效時(shí)繼續(xù)進(jìn)行使用;(2)形成允許或阻止限制訪問的規(guī)則;(3)對(duì)下述安全任務(wù)中的一個(gè)或多個(gè)使用形成的基礎(chǔ)(a)對(duì)于訪問設(shè)備、應(yīng)用程序和資源執(zhí)行所述規(guī)則;(b)保證規(guī)則自身的安全性,從而它們不會(huì)被未被授權(quán)的用戶或代理修改;(c)保證公共和私人密鑰對(duì)、設(shè)備唯一的ID,以及用于隨機(jī)數(shù)生成器的信息熵狀態(tài)的存儲(chǔ)的安全性;(d)保證操作在應(yīng)用程序和設(shè)備之間共享的操作參數(shù)或數(shù)據(jù)的安全性;(e)保證通信信道的安全性;(f)對(duì)資源進(jìn)行加密,從而它們只能被特定的設(shè)備或設(shè)備組,和/或特定的應(yīng)用程序或應(yīng)用程序集知道或使用,和/或當(dāng)使用共享的密鑰訪問時(shí)被知道或使用;以及(g)生成統(tǒng)一的唯一的ID并使用其在所有時(shí)刻在所有設(shè)備上和或應(yīng)用程序和或數(shù)據(jù)集或項(xiàng)上,識(shí)別有效的設(shè)備、應(yīng)用程序、數(shù)據(jù)格式、集合、記錄、單獨(dú)的媒體文件,或甚至單獨(dú)的數(shù)據(jù)項(xiàng)。
在另一個(gè)實(shí)施例(3)中,本發(fā)明提供了(2)所述的方法,進(jìn)一步包括撤銷或修改用于限制訪問的規(guī)則。
在另一個(gè)實(shí)施例(4)中,本發(fā)明提供了(2)所述的方法,其中限制訪問資源和或知道資源包括下述中的一個(gè)或以任何組合的多個(gè)(1)執(zhí)行允許設(shè)備彼此進(jìn)行通信和或?yàn)楹卧试S設(shè)備進(jìn)行通信的規(guī)則;(2)對(duì)在設(shè)備之間流動(dòng)的數(shù)據(jù)進(jìn)行加密,從而可能訪問數(shù)據(jù)的其它設(shè)備不能得知或使用該數(shù)據(jù);(3)對(duì)數(shù)據(jù)、內(nèi)容,代碼或其它資源包簽名,以確保自從簽名以來不曾對(duì)這些包進(jìn)行修改;以及(4)管理數(shù)字權(quán)限以關(guān)于下述動(dòng)作中的一個(gè)或多個(gè)執(zhí)行一組用于處理數(shù)據(jù)、代碼內(nèi)容,或任何其它可數(shù)字化表示的資源的規(guī)則集共享、備份、打印、顯示、執(zhí)行、分配、回放、再現(xiàn)、運(yùn)行、修改,或其任何組合。
XVIII.社會(huì)同步互操作性方法/Dart社會(huì)同步通常以傳統(tǒng)的方法實(shí)現(xiàn)多個(gè)設(shè)備上的數(shù)據(jù)集或操作的同步,其中在傳統(tǒng)的方法中假設(shè)存在一個(gè)主設(shè)備,所有其它的設(shè)備直接與該主設(shè)備同步其數(shù)據(jù)集。這些方法在公司和政府的通用計(jì)算機(jī)網(wǎng)絡(luò)中提供了高度穩(wěn)定的同步系統(tǒng),其中通用計(jì)算機(jī)網(wǎng)絡(luò)中的計(jì)算機(jī)總是以可靠的高速網(wǎng)絡(luò)彼此連接并由受過訓(xùn)練的專業(yè)人員進(jìn)行管理和維護(hù)。現(xiàn)在使用相同的直接到一個(gè)主設(shè)備的方法,實(shí)現(xiàn)如移動(dòng)電話、PDA、和數(shù)字照相機(jī)的個(gè)人設(shè)備的多數(shù)現(xiàn)代同步,其中主設(shè)備是個(gè)人計(jì)算機(jī)或通過互聯(lián)網(wǎng)連接的服務(wù)器;然而,對(duì)于間斷連接的通常為移動(dòng)的設(shè)備來說要求同步到一個(gè)主設(shè)備是非常受限的,其原因包括1所有的設(shè)備必須與主設(shè)備共享至少一個(gè)通信協(xié)議。
2一些移動(dòng)設(shè)備只能當(dāng)他們與主設(shè)備緊密相鄰時(shí)才能進(jìn)行同步,因?yàn)樗鼈儍H有適于與主設(shè)備同步數(shù)據(jù)集的有限距離的有線或無線的直接連接。
3主設(shè)備為所有設(shè)備提供一個(gè)故障源。
4沒有經(jīng)過訓(xùn)練的各個(gè)用戶必須在主設(shè)備上下載設(shè)備專用的同步軟件并配置和維護(hù)該軟件。
5對(duì)于移動(dòng)設(shè)備來說沒有使彼此直接同步的簡(jiǎn)單方式,甚至當(dāng)它們彼此緊密相鄰并共享共同的通信協(xié)議時(shí)也是如此。
本發(fā)明的社會(huì)同步是一種特殊的方法子集,它能夠用于同步DartDevices,與所屬領(lǐng)域當(dāng)前狀態(tài)中通常采用的傳統(tǒng)的主從同步方法相比,提供了許多優(yōu)點(diǎn)。再次想到社會(huì)同步是一種有效的并易于管理的方法,用于在任何數(shù)量的設(shè)備和協(xié)議上同步特定的數(shù)據(jù)組和或操作,而不需要每個(gè)設(shè)備都與主設(shè)備相連接,也不需要任何設(shè)備充當(dāng)主設(shè)備。設(shè)備和內(nèi)容的社會(huì)同步類似于人類共享信息和任務(wù)的方式,是所屬領(lǐng)域的當(dāng)前狀態(tài)中通常采用的主從同步技術(shù)的有益替換。
與所屬領(lǐng)域當(dāng)前狀態(tài)中通常采用的傳統(tǒng)的主從同步方法相比,本發(fā)明系統(tǒng)和方法的一些優(yōu)點(diǎn)和好處包括1可以對(duì)于設(shè)備組進(jìn)行同步,而不需要所有的設(shè)備能夠直接與一個(gè)主設(shè)備進(jìn)行通信;只要在設(shè)備之間存在通過任何數(shù)量設(shè)備的任何通信路徑就能實(shí)現(xiàn)同步,并且不需要同時(shí)地建立這種路徑。
2移動(dòng)設(shè)備不需要直接與主設(shè)備相連接;而是,它們僅需要能夠直接連接到為同步建立的設(shè)備組中的任何一個(gè)移動(dòng)設(shè)備上。
3不存在主設(shè)備并因此沒有單一的故障源。發(fā)生故障的編組的設(shè)備能夠被新的設(shè)備代替,該新的設(shè)備能夠容易地與組中的任何一個(gè)設(shè)備同步。
4不需要在任何一個(gè)設(shè)備上安裝設(shè)備專用的軟件,或者有效地維護(hù)或配置這種軟件;而是同步組中的任何設(shè)備能夠直接地將任何其它設(shè)備添加到設(shè)備組中。
5設(shè)備能夠直接與組中的任何其它設(shè)備同步,其中通過設(shè)備之間的任何連接順序存在到任何其它設(shè)備的任何連接路徑,即使當(dāng)這種連接不是同時(shí)可用時(shí)也是如此。
社會(huì)同步的工作有些類似于與某人遇到的其他個(gè)人共享信息的人類團(tuán)體,其中該其他的個(gè)人又與另外的其他個(gè)人共享相同的信息。人類模擬也能夠用于說明主從同步的限制。設(shè)想一個(gè)擁有大量雇員的公司,其中雇員除了與一個(gè)上司談話外不能共享關(guān)于他們同事的所有活動(dòng)和最初想法的信息。存在許多需要分配所有需要的信息交互活動(dòng),從而所有需要通過一個(gè)上司,甚至通過固定的管理體系結(jié)構(gòu),共享的知識(shí)都是可用的。當(dāng)各個(gè)雇員彼此相遇時(shí),他們需要彼此直接共享共同關(guān)心的信息,并且希望該信息將被散布到需要通過中介了解的其他人。實(shí)際上,盡管社會(huì)同步的這些方法不是最理想的,但是它們是在一群或一組人或設(shè)備中散布信息的非常有效的方法,其中在人之間或在設(shè)備之間存在許多進(jìn)行中的間斷的與可能不規(guī)律的連接。
圖30表示如何在一個(gè)優(yōu)選實(shí)施例中實(shí)現(xiàn)社會(huì)同步的例子。該例子表示到簡(jiǎn)單的聯(lián)系列表的簡(jiǎn)單變化的同步,但是應(yīng)該知道對(duì)于復(fù)雜的數(shù)據(jù)庫(kù)和或不僅數(shù)據(jù)而且DartDevices和或Darts的組的操作及操作結(jié)果也可以進(jìn)行同步。
在圖30的例子中,存在初始設(shè)備A,具有最初包括兩個(gè)輸入的名字的聯(lián)系列表Dart應(yīng)用程序。其它兩個(gè)設(shè)備,B和C最初不了解A上運(yùn)行的聯(lián)系列表Dart的存在或特征。在一個(gè)優(yōu)選實(shí)施例中,運(yùn)行在設(shè)備A上的聯(lián)系列表Dart計(jì)數(shù)其可以與其共享聯(lián)系列表Dart的所有設(shè)備,其中聯(lián)系列表Dart包括和控制聯(lián)系列表。聯(lián)系列表Dart采用Dart招募的方法并可選地采用再現(xiàn)方法。設(shè)備A或設(shè)備B上聯(lián)系列表Dart進(jìn)行的招募是由用戶通過選擇“到其它設(shè)備的組”菜單項(xiàng)啟動(dòng)的。接著向用戶顯示當(dāng)前可到達(dá)的設(shè)備和適于聯(lián)系列表的編組的設(shè)備列表,該列表是由被發(fā)送以在可到達(dá)的設(shè)備上運(yùn)行的一個(gè)或多個(gè)DartProcedures或Darts確定的,接著返回關(guān)于其成為被招募的設(shè)備的適合性的信息。用戶從列表中選擇聯(lián)系列表Dart最終得出的設(shè)備B,保存包括一個(gè)或多個(gè)或所有再現(xiàn)程序和構(gòu)成內(nèi)容列表元素的數(shù)據(jù)的Dart。作為RunDart類型事件的一部分,該被保存的Dart被發(fā)送到設(shè)備B。當(dāng)Dart在設(shè)備B上運(yùn)行時(shí),Dart進(jìn)行自身保存,從而即使在設(shè)備B斷開與設(shè)備A的連接或者斷電后,也能在設(shè)備B上使用Dart。現(xiàn)在運(yùn)行在兩個(gè)設(shè)備上的Dart在每個(gè)設(shè)備的社會(huì)同步UID列表中進(jìn)行輸入(如果一個(gè)也不存在的話)。輸入包括將有兩個(gè)名字被共享的聯(lián)系列表的UID,它是當(dāng)首先創(chuàng)建該特定的聯(lián)系人名稱列表時(shí)由Dart生成的。使用該文章其它地方描述的DartSecurity基礎(chǔ)設(shè)施生成UID。該輸入還包括聯(lián)系列表Dart的UID。DartTools自動(dòng)地將UID放入生成的每個(gè)Dart示例中。
類似地,在設(shè)備A完成其與設(shè)備B的永久的編組操作后的某個(gè)時(shí)刻,設(shè)備B被用于永久地編組到社會(huì)同步ObjectUID/DartHandlerUId列表,輸入確定聯(lián)系列表的特定編組邏輯示例的128位UIDA。該輸入還包括存儲(chǔ)在相同的設(shè)備上的Dart的UID,其中該設(shè)備能夠用于實(shí)現(xiàn)同步該列表的聯(lián)系。注意到通常地,處理程序Dart能夠?qū)崿F(xiàn)可以被表示為Dart的任何同步?jīng)Q定或操作或規(guī)則,并且在該例中不限于簡(jiǎn)單的數(shù)據(jù)同步操作。
現(xiàn)在這三個(gè)設(shè)備都包含包括了UID和初始聯(lián)系列表的兩個(gè)名稱的社會(huì)同步輸入,即使設(shè)備C從沒有直接與設(shè)備A通信也是如此。
在該例中,在設(shè)備被編組后,關(guān)閉連接并且由運(yùn)行ContactHandlerDartZ的用戶將新的名字添加到設(shè)備C上的列表中。三個(gè)模塊圖表示在將第三個(gè)名字添加到設(shè)備C后的三個(gè)設(shè)備的狀態(tài)。
接著ContactHandlerDart Z或者運(yùn)行在設(shè)備C上的任何其它Dart啟動(dòng)到設(shè)備A的連接。當(dāng)建立連接時(shí),設(shè)備C上的DartEngine自動(dòng)地比較兩個(gè)設(shè)備上的社會(huì)同步UID,并確定它們共享128位UIDA UID。設(shè)備C上的DartEngine自動(dòng)地啟動(dòng)ContactHandlerDart Z,并且將協(xié)調(diào)數(shù)據(jù)的同步,而不管該數(shù)據(jù)是存儲(chǔ)在Darts中或者被分離地存儲(chǔ)?,F(xiàn)在設(shè)備A和C包括了其聯(lián)系列表中的所有三個(gè)名字。
在設(shè)備B連接到設(shè)備A或設(shè)備C后,將類似地運(yùn)行ContactHandlerDartY,將實(shí)現(xiàn)設(shè)備B和設(shè)備B連接到的設(shè)備之間的名字的同步。注意到即使在同步之前A從來沒有與C通信,但是它們知道需要進(jìn)行同步并知道如何進(jìn)行同步,這是因?yàn)樵诟鱾€(gè)編組期間Dart和數(shù)據(jù)通過了中間設(shè)備B。
可以從邏輯上得出這樣的結(jié)果,即任何數(shù)量的設(shè)備能夠被已經(jīng)被編組的任何設(shè)備容易地過渡地添加到組中,即使新的設(shè)備直到被編組才了解聯(lián)系列表/ContactHandler Dart或初始Dart也是如此。只要在設(shè)備組之間有足夠的的專門連接,則所有的設(shè)備自動(dòng)地保持共享的聯(lián)系列表的高度同步,甚至當(dāng)沒有任何主設(shè)備時(shí)也是如此。
本發(fā)明系統(tǒng)、方法,和計(jì)算機(jī)程序以及計(jì)算機(jī)程序產(chǎn)品還提供了串行化和同步的平臺(tái)。圖15、圖16、圖18中表示的設(shè)備內(nèi)的DartRuntime和圖17中表示的設(shè)備間的DartRuntime共同創(chuàng)建了單個(gè)事件驅(qū)動(dòng)的DartRuntime,其中在所有被編組的設(shè)備的所有處理單元上有利地細(xì)致地串行化和同步所有操作。圖9表示如何在包括在Dart Recruitment、DartRenditioning、DartSource、DartTools、DartFramework、DartRuntime以及DartEngine中的DartPlatform中實(shí)現(xiàn)該串行化和同步基礎(chǔ)設(shè)施。這些系統(tǒng)、方法以及裝置共同提供了一種用于確保Dart互操作應(yīng)用程序的穩(wěn)定的互操作性的基礎(chǔ)設(shè)施,對(duì)部分Dart程序員而言只需要很少的工作來建立或管理復(fù)雜的交互作用和對(duì)在多個(gè)設(shè)備上或設(shè)備之間協(xié)作的處理單元的操作進(jìn)行排序,甚至當(dāng)出現(xiàn)通信錯(cuò)誤和其它錯(cuò)誤時(shí)也是如此。
使用DartPlatform特別地使用DartFramework編寫Dart應(yīng)用程序自動(dòng)地賦予應(yīng)用程序在所有DartDevices上的二進(jìn)制可移植性、穩(wěn)定的電源管理、穩(wěn)定的應(yīng)用程序級(jí)錯(cuò)誤恢復(fù)、簡(jiǎn)單并有效的設(shè)備編組能力,智能發(fā)現(xiàn)并使用設(shè)備上的資源,以及DartPlatform的許多其它的優(yōu)點(diǎn),對(duì)部分Dart程序員來說所有這些都需要相對(duì)較少的工作。如圖9的例子所示,通過很大程度上自動(dòng)的串行化和同步事件,用于產(chǎn)生這些優(yōu)點(diǎn)的關(guān)鍵要素包括在DartRuntime中。
DartRuntime協(xié)調(diào)進(jìn)行互操作和通信的初始設(shè)備和被招募的設(shè)備之間的Dart事件和相關(guān)的文件的傳遞和交換。在任何數(shù)量的編組設(shè)備的事件隊(duì)列中自動(dòng)地備份和/或同步Dart事件。直接在所有設(shè)備的所有事件隊(duì)列中分配被指定為同步的事件的事件,其中的事件隊(duì)列共享同步的事件類型列表。如圖9中的例子所示,以如下的方式實(shí)施1初始應(yīng)用程序,Dart 700的再現(xiàn)程序701a用例子為特定的未指定的設(shè)備間協(xié)作功能表示初始設(shè)備400-1上的連接管理器對(duì)象示例。連接管理器是在DartPlarform(圖3)中提供的作為DartFramework的一部分(圖3 102)的連接管理器類的示例。
2初始再現(xiàn)程序701a使用招募和再現(xiàn)招募設(shè)備組來創(chuàng)建設(shè)備組,共享的復(fù)制的事件類型列表在所有協(xié)作的設(shè)備上串行化和同步。該列表被每個(gè)編組的設(shè)備(400-1,400-2,400-3,400-N)上的連接管理器420的示例維護(hù)。
3無論何時(shí)將任何事件放入處于共享的列表中的任何編組的設(shè)備上的隊(duì)列中,都首先將事件放入所有直接連接的編組的設(shè)備的所有隊(duì)列(660)中,接著推遲事件在初始設(shè)備隊(duì)列中的放置,直到接收到事件被成功地放入到所有直接被編組的設(shè)備隊(duì)列中的確認(rèn)信息。由于所有的其它設(shè)備將進(jìn)行相同的操作,則初始事件不會(huì)被放入初始設(shè)備隊(duì)列中,直到所有的其它編組設(shè)備在其隊(duì)列中放入事件為止,甚至那些沒有直接連接到初始設(shè)備的設(shè)備也是如此。這就確保如果存在任何阻止將事件放入在任何編組設(shè)備的隊(duì)列中的錯(cuò)誤,事件就不會(huì)被任何編組設(shè)備處理。通過順序地將初始事件的應(yīng)答與表示事件正在返回的狀態(tài)的錯(cuò)誤標(biāo)記以及以事件結(jié)構(gòu)示例的返回值字表示的錯(cuò)誤碼傳播到發(fā)送方,來報(bào)告錯(cuò)誤。
4為了防止一個(gè)設(shè)備生成的事件混亂地到達(dá)任何直接連接的設(shè)備,通過直到接收到前面發(fā)送的事件已經(jīng)被成功地放置在隊(duì)列中的確認(rèn)信息,才允許任何新的事件放置在編組設(shè)備的隊(duì)列中,來串行化將被放置在所有直接連接的編組設(shè)備的事件隊(duì)列上的所有事件。需要該操作的情況的例子是第一事件是用于將新的幻燈片添加到共享幻燈片放映中的ADD_SLIDE類型的事件的情況,以及第二事件是顯示將被表示的新的幻燈片的放映幻燈片(SHOW_SLIDE)類型事件的情況。由于其大小要小得多,因此非??赡苁堑诙录⒃诘谝皇录蛻?yīng)用程序試圖放映幻燈片之前到達(dá)設(shè)備上,其中第一事件和應(yīng)用程序試圖是在第二事件到達(dá)設(shè)備之前試圖放映幻燈片的。這就是為什么需要在所有直接連接設(shè)備之間串行化事件的原因。
將串行化的事件發(fā)送到所有直接連接的設(shè)備上確保將以正確的順序在所有編組的設(shè)備上處理從單獨(dú)的設(shè)備發(fā)送的所有事件;然而,當(dāng)兩個(gè)或多個(gè)不同的設(shè)備獨(dú)立地以信號(hào)方式發(fā)送被標(biāo)記為同步的事件時(shí),還需要根據(jù)所有編組設(shè)備上表示的共享的同步的事件列表430同步事件的正確順序。
一種用于確保在所有設(shè)備上以相同的順序處理所有同步的事件(即使當(dāng)同步的事件需要被兩個(gè)或多個(gè)設(shè)備獨(dú)立地以信號(hào)方式發(fā)送時(shí))的優(yōu)選方法是通過使用保留的用于被連接管理器使用的MasterSendEvent事件類型。每個(gè)連接管理器將通過直接的連接招募它的設(shè)備看作其邏輯上的主機(jī)。在圖9中設(shè)備400-N的邏輯主機(jī)是設(shè)備400-3,設(shè)備400-3的邏輯主機(jī)是設(shè)備400-2,設(shè)備400-2的邏輯主機(jī)是設(shè)備400-1。因?yàn)樵O(shè)備400-1執(zhí)行設(shè)備組的初始招募,因此設(shè)備400-1沒有邏輯主機(jī)。這就使得設(shè)備400-1成為設(shè)備組的主機(jī)。具有邏輯主機(jī)的連接管理器的任何設(shè)備不會(huì)將事件放入其隊(duì)列中,除非該事件被其邏輯主機(jī)放置,相反地,連接管理器將包括需要的所有信息以將事件以信號(hào)方式發(fā)送到MasterSendEvent事件類型的事件,并放置在所有其直接連接的編組設(shè)備中。所有這種MasterSendEvent事件最終將傳播到設(shè)備組的主機(jī)。當(dāng)將事件放置在其隊(duì)列中時(shí),知道其設(shè)備組主機(jī)的連接管理器將試圖將重建的初始包括的事件放置在其隊(duì)列中。如果包括的事件類型處于連接管理器的同步列表中,則以串行的方式將其傳播到所有編組的設(shè)備上,就如同該事件類型是由設(shè)備組主機(jī)生成和以信號(hào)方式發(fā)出的。
實(shí)際上,設(shè)備組主機(jī)是唯一被允許發(fā)送將被放置在其它編組設(shè)備的隊(duì)列中的同步事件的設(shè)備。所有的其它設(shè)備需要請(qǐng)求主機(jī)為其發(fā)送任何同步的事件。由于所有的同步事件是由設(shè)備組主機(jī)通過串行信道發(fā)送的,因此設(shè)備組中的所有設(shè)備將以正好相同的順序在其隊(duì)列上接受所有事件,按照需要在所有編組設(shè)備上保持同步操作的完整性。
注意到,在一個(gè)優(yōu)選實(shí)施例中,同步事件的串行化能夠被用于確保所有設(shè)備上的連接管理器保持正好相同的將被同步的事件類型列表。同時(shí)串行化系統(tǒng)能夠被用于發(fā)送串行化和同步事件類型,該類型表示新的設(shè)備將被當(dāng)作設(shè)備組的主機(jī)。由于串行化和同步宣布新的主機(jī)事件,因此所有設(shè)備將以正好相同的順序接收這種事件,確保多個(gè)發(fā)送這種宣布不同新的主機(jī)的事件的設(shè)備將最終決定所有設(shè)備得到相同的宣布新的主機(jī)的最后的事件,從而最后處理的這種事件將會(huì)勝出。
現(xiàn)在描述本發(fā)明的社會(huì)同步互操作性方法或更特別的Dart社會(huì)同步的選定的特定實(shí)施例。在一個(gè)實(shí)施例(1)中,本發(fā)明提供了一種用于在一個(gè)或多個(gè)動(dòng)態(tài)產(chǎn)生的相同和/或不同設(shè)備的組中維持資源的同步的方法,其中的設(shè)備可能是間斷地直接地連接和/或通過一系列直接連接間接地連接,這些直接連接可以是在其它編組設(shè)備之間建立的獨(dú)立的間斷的連接,所述方法包括(1)在互操作性設(shè)備上運(yùn)行一個(gè)或多個(gè)獨(dú)立可執(zhí)行圖像的初始互操作性應(yīng)用程序包,該應(yīng)用程序包邏輯地或物理地封裝將被同步的資源和/或包括收集和管理將被同步的資源所需要的所有能力;以及(2)通過初始互操作性應(yīng)用程序來對(duì)其它設(shè)備進(jìn)行編組,其中對(duì)其它設(shè)備進(jìn)行可能間斷的連接,初始應(yīng)用程序?qū)⒒ゲ僮餍孕畔鞑サ叫碌谋痪幗M的設(shè)備上。
在另一個(gè)實(shí)施例(2)中,本發(fā)明提供(1)所述的方法,其中所述方法進(jìn)一步可選地包括(3)重復(fù)對(duì)其它設(shè)備進(jìn)行編組,其中運(yùn)行在任何一個(gè)或多個(gè)編組設(shè)備上的互操作性應(yīng)用程序包作為初始互操作性應(yīng)用程序包起作用,從而設(shè)備組能夠繼續(xù)以有限的或可能無限的方式增長(zhǎng)。
在另一個(gè)實(shí)施例(3)中,本發(fā)明提供(1)所述的方法,其中所述方法進(jìn)一步可選地包括(4)在設(shè)備中和在設(shè)備之間同步資源。
在另一個(gè)實(shí)施例(4)中,本發(fā)明提供(1)所述的方法,其中所述方法進(jìn)一步可選地包括(3)重復(fù)對(duì)其它設(shè)備進(jìn)行編組,其中運(yùn)行在任何一個(gè)或多個(gè)編組設(shè)備上的互操作性應(yīng)用程序包作為初始互操作性應(yīng)用程序包起作用,從而設(shè)備組能夠繼續(xù)以有限的或可能無限的方式增長(zhǎng);以及(4)在設(shè)備中和在設(shè)備之間同步資源。
在另一個(gè)實(shí)施例(5)中,本發(fā)明提供(3)所述的方法,其中所述同步方法進(jìn)一步可選地包括(a)在任何兩個(gè)編組的設(shè)備之間啟動(dòng)通信會(huì)話;(b)將一個(gè)設(shè)備上的同步唯一ID與另一個(gè)設(shè)備上的同步唯一ID相比較;(c)運(yùn)行與每個(gè)匹配的唯一ID相關(guān)的互操作性應(yīng)用程序;(d)在兩個(gè)設(shè)備上傳播互操作性應(yīng)用程序的執(zhí)行;以及(e)通過使其操作在兩個(gè)設(shè)備上傳播的互操作性應(yīng)用程序,執(zhí)行實(shí)現(xiàn)互操作性同步所需要的任何同步方法。
在另一個(gè)實(shí)施例(6)中,本發(fā)明提供(4)所述的方法,其中所述同步方法進(jìn)一步可選地包括(a)在任何兩個(gè)編組的設(shè)備之間啟動(dòng)通信會(huì)話;(b)將一個(gè)設(shè)備上的同步唯一ID與另一個(gè)設(shè)備上的同步唯一ID相比較;(c)運(yùn)行與每個(gè)匹配的唯一ID相關(guān)的互操作性應(yīng)用程序;(d)在兩個(gè)設(shè)備上傳播互操作性應(yīng)用程序的執(zhí)行;以及(e)通過使其操作在兩個(gè)設(shè)備上傳播的互操作性應(yīng)用程序,執(zhí)行實(shí)現(xiàn)互操作性同步所需要的任何同步方法。
在另一個(gè)實(shí)施例(7)中,本發(fā)明提供(1)所述的方法,其中所述互操作性信息包括(i)被用于表示為特殊的同步目的編組設(shè)備的一個(gè)或多個(gè)互操作性通用的唯一ID;以及(ii)與通用的唯一ID相關(guān)聯(lián)的一個(gè)或多個(gè)互操作性應(yīng)用程序包,通用的唯一ID可以被執(zhí)行以實(shí)現(xiàn)同步的目的。
在另一個(gè)實(shí)施例(8)中,本發(fā)明提供(6)所述的方法,其中所述互操作性信息包括(i)被用于表示為特殊的同步目的編組設(shè)備的一個(gè)或多個(gè)互操作性通用的唯一ID;以及(ii)與通用的唯一ID相關(guān)聯(lián)的一個(gè)或多個(gè)互操作性應(yīng)用程序包,通用的唯一ID可以被執(zhí)行以實(shí)現(xiàn)同步的目的。
在另一個(gè)實(shí)施例(9)中,本發(fā)明提供(1)所述的方法,其中下述中一個(gè)或以任何組合的多個(gè)為真(1)至少部分地使用設(shè)備招募程序或Dart招募形成設(shè)備組;(2)一個(gè)或多個(gè)互操作性設(shè)備是DartDevice;(3)互操作性應(yīng)用程序包符合互操作性格式或者符合DartFormat和或?yàn)镈art;(4)獨(dú)立的可執(zhí)行圖像是再現(xiàn)程序或Dart再現(xiàn)程序;(5)資源是所描述的互操作性資源類型中的一種或多種;(6)使用社會(huì)安全性程序基礎(chǔ)創(chuàng)建互操作性通用的唯一ID;以及(7)使用招募方法或創(chuàng)造方法中的一個(gè)或兩個(gè)生成一個(gè)或多個(gè)互操作性應(yīng)用程序包。在另一個(gè)實(shí)施例(10)中,本發(fā)明提供(1)所述的方法,其中同步包括下述中一個(gè)或以任何組合的多個(gè)(1)以這種方式,即以維護(hù)下述一個(gè)或多個(gè)所需要的任何方式,不依賴于單獨(dú)的示例進(jìn)行變化,來維護(hù)獨(dú)立的示例和/或共同確定的數(shù)據(jù)庫(kù)示例的語義和/或可以被數(shù)據(jù)庫(kù)或包括在數(shù)據(jù)庫(kù)中的元素保存的任何東西(a)包括與共同的身份相關(guān)的指定的數(shù)據(jù)和目的的數(shù)據(jù)庫(kù)的完整性;(b)數(shù)據(jù)庫(kù)的元素;(c)數(shù)據(jù)庫(kù)的定義和/或數(shù)據(jù)庫(kù)的要素之間的相互關(guān)系;以及(d)數(shù)據(jù)庫(kù)示例的共同身份;(2)跟蹤獨(dú)立存儲(chǔ)的和或在獨(dú)立的設(shè)備上修改的項(xiàng)目列表上元素的添加、刪除或修改;(3)設(shè)備組收集和或處理和或比較信息;(4)維護(hù)控制和限制對(duì)設(shè)備資源和能力的訪問所需要的唯一的ID、共享的密鑰和安全設(shè)置的列表;(5)管理設(shè)備間的設(shè)置,實(shí)現(xiàn)設(shè)備或一組設(shè)備的操作;(6)在多個(gè)設(shè)備上配置管理;(7)在多個(gè)設(shè)備上安裝軟件或內(nèi)容;(8)獲得設(shè)備和或設(shè)備資源或設(shè)備可達(dá)到的資源或一個(gè)或多個(gè)設(shè)備為其保存和或維護(hù)信息的資源的詳細(xì)目錄;(9)在多個(gè)設(shè)備上分配或更新軟件或內(nèi)容;以及(10)上述的任何組合。
XIX.社會(huì)安全互操作性模型/Dart社會(huì)安全再次想到社會(huì)安全是一種特別便于管理的方法,用于在可能進(jìn)行間斷連接的設(shè)備之間形成安全的網(wǎng)絡(luò)。社會(huì)安全的工作方式類似于人類如何彼此信任的方式。社會(huì)安全的基礎(chǔ)是使用SocialSynchronization傳播利用DartSecurity系統(tǒng)生成的唯一的ID以及過渡性地從一個(gè)設(shè)備傳播到另一個(gè)設(shè)備的允許的存取權(quán)限。從來沒有直接地進(jìn)行通信的設(shè)備通常會(huì)發(fā)現(xiàn)它們是設(shè)備組的一部分,其中允許所述的設(shè)備以一定的存取權(quán)限進(jìn)行互操作而不需要進(jìn)行其它的獲得允許的操作。
在安全性問題上,所屬領(lǐng)域當(dāng)前狀態(tài)中的一個(gè)最大的問題是終端用戶難于得知和管理安全方法,并最終根本不能使用安全模型。在使用的安全方法力度和管理的復(fù)雜度之間存在直接的聯(lián)系。在傳統(tǒng)的企業(yè)和政府的計(jì)算機(jī)網(wǎng)絡(luò)中,認(rèn)為高力度被認(rèn)為是必須的并且必須由經(jīng)過訓(xùn)練的全職專業(yè)人員管理。很少重新配置這種網(wǎng)絡(luò)的事實(shí)使得對(duì)于專業(yè)人員來說管理的工作量是合理的。這些相同的傳統(tǒng)的安全方法通常用于開發(fā)和產(chǎn)生個(gè)人使用的移動(dòng)設(shè)備的網(wǎng)絡(luò),其中的個(gè)人沒有經(jīng)過訓(xùn)練并且沒有時(shí)間或耐心進(jìn)行確保設(shè)備網(wǎng)絡(luò)安全的全職管理,而由于移動(dòng)設(shè)備來回移動(dòng)因此需要經(jīng)常的管理。盡管本發(fā)明的社會(huì)安全方法不象企業(yè)和政府網(wǎng)絡(luò)中采用的傳統(tǒng)方法有效,但是能產(chǎn)生很好的安全水平,同時(shí)對(duì)于設(shè)備來說易于管理,當(dāng)人們通常不使用或避開傳統(tǒng)的方法時(shí),大部分人實(shí)際上是采用社會(huì)安全方法的。因此在不另外地采用安全方法的情況下,社會(huì)安全有利地產(chǎn)生很好的安全水平。
電子郵件是一個(gè)很好的例子??梢允褂脗鹘y(tǒng)的安全電子郵件協(xié)議,并自從人們開始使用電子郵件開始將其建立在多數(shù)已有的電子郵件用戶的客戶機(jī)軟件中;然而,很少有電子郵件的終端用戶利用這些安全電子郵件協(xié)議。一個(gè)原因是得到、保護(hù)和使用證書并確保他們希望發(fā)送電子郵件到達(dá)的每個(gè)人也執(zhí)行了得到、保護(hù)和使用證書所需要的管理,所需要的管理太復(fù)雜并且令人厭煩。另一個(gè)例子是難于在無線接入端口建立安全性,從而許多家庭無線網(wǎng)絡(luò)都是不安全的。
社會(huì)安全類似于保護(hù)互相活動(dòng)的安全性的人類模型。一個(gè)人學(xué)習(xí)信任了解公司的專有信息的公司的新雇員,這是因?yàn)樵撔鹿蛦T是被公司的其它人介紹的。很可能老雇員從來沒有與最初了解該新雇員的任何人進(jìn)行直接交談,就開始信任該新雇員是公司的真實(shí)雇員。不需要任何中心協(xié)調(diào)或跟蹤就能建立這種信任網(wǎng)。如蜂窩電話、打印機(jī)、PDA、膝上型電腦、數(shù)字照相機(jī)以及便攜式音樂播放器的設(shè)備通常共享媒體、信息或控制,但是它們從來沒有一次共同連接在一起或沒有連接到任何一個(gè)相同的中心設(shè)備源。但是希望使用安全方法來保護(hù)設(shè)備上的信息的完整性不會(huì)被其它設(shè)備或軟件錯(cuò)誤地使用或者破壞。社會(huì)安全方法是本發(fā)明的互操作性安全或本發(fā)明的DartPlatform的DartSecurity方法的特定子集,其中將訪問權(quán)限從設(shè)備傳遞到設(shè)備,自動(dòng)建立信任的設(shè)備、軟件應(yīng)用程序或Dart的網(wǎng)絡(luò),特定的一組訪問權(quán)限具有設(shè)備的用戶所需要的最少管理或訓(xùn)練。
在該文章的其它地方描述了建立在DartSecurity方法之上的社會(huì)安全方法。DartSecurity(圖29)確保每個(gè)DartDevice和Dart應(yīng)用程序具有通用的唯一標(biāo)識(shí)符,UID。每個(gè)DartDevice還維持其它DartDevice的UID列表,其中承認(rèn)DartDevices的二進(jìn)制標(biāo)記集所示的訪問權(quán)限。對(duì)每個(gè)二進(jìn)制訪問權(quán)限標(biāo)記集分配一個(gè)等級(jí)。
社會(huì)安全是一種用于形成和保持設(shè)備組并在所有編組的設(shè)備上分配和保持具有共同的訪問權(quán)限的設(shè)備列表的遞推方法。圖31表示左側(cè)具有設(shè)備安全列表,被撤銷的列表,以及社會(huì)安全的設(shè)備UID元素的DartDevice。表示的社會(huì)同步列表是該文章中其它地方描述的社會(huì)同步方法的一部分,在優(yōu)選的執(zhí)行過程中被用于至少部分地在設(shè)備上遞推地傳播和同步DartLists。
圖31的右側(cè)表示編組前和編組后舊的DartDevices和新的DartDevices的狀態(tài)的例子,以幫助說明社會(huì)安全方法。在該例子中,在編組前,舊的DartDevice UIDA具有應(yīng)用程序和設(shè)備的UID列表,其中的應(yīng)用程序和設(shè)備將被允許在相應(yīng)與列表等級(jí)的標(biāo)記的訪問權(quán)限內(nèi)進(jìn)行互操作。在編組前,新的DartDevice UIDZ的唯一的設(shè)備安全列表允許設(shè)備自已在等級(jí)9與自己進(jìn)行互操作。通常從生產(chǎn)商處與設(shè)備一起運(yùn)送的一些Dart應(yīng)用程序需要高級(jí)的訪問權(quán)限,以配置設(shè)備和或設(shè)備的安全性方面,因此設(shè)備將對(duì)其上的應(yīng)用程序授予高級(jí)的訪問權(quán)限,如通過使設(shè)備自身的UID處于級(jí)別9列表中所示的。當(dāng)新設(shè)備上的Dart開始設(shè)備與舊的設(shè)備的初次連接,并試圖發(fā)送和運(yùn)行由其自身的再現(xiàn)程序生成的Dart,以在舊的設(shè)備上運(yùn)行時(shí),檢查新的設(shè)備和Dart的訪問權(quán)限。當(dāng)然舊的設(shè)備根本不了解新的設(shè)備,并且在該例子中,也不擁有關(guān)于Dart應(yīng)用程序的訪問權(quán)限的任何信息,其中的Dart應(yīng)用程序試圖將其執(zhí)行擴(kuò)展到舊的設(shè)備上。在該例子中,根據(jù)Dart中的標(biāo)記傳輸?shù)脑L問需要,將通過每個(gè)設(shè)備上的用戶接口請(qǐng)求用戶允許這些設(shè)備進(jìn)行互操作。圖31的右側(cè)下部表示在允許設(shè)備在級(jí)別7進(jìn)行互操作后設(shè)備的狀態(tài),相應(yīng)于準(zhǔn)予Dart中指定的所有訪問權(quán)限被傳遞到舊的設(shè)備的訪問標(biāo)記集。在通過用戶接口得到用戶的允許后,舊的和新的DartDevices現(xiàn)在都包含了相同的設(shè)備和Darts的UID的級(jí)別7的列表,其中允許設(shè)備和Darts進(jìn)行互操作而不需要請(qǐng)求允許。注意到,如果新的DartDevice將試圖向其新的級(jí)別7列表上具有相同安全訪問標(biāo)記要求的任何其它設(shè)備發(fā)送Dart,則允許運(yùn)行該新的DartDevice,而不需要詢問用戶。實(shí)際上,設(shè)備為其了解的所有其它設(shè)備提供擔(dān)保。如果設(shè)備的UID列表已經(jīng)通過連接(即使與設(shè)備組中的其它設(shè)備間斷地連接)在設(shè)備上分配,則信任的設(shè)備組將彼此信任,即使以前從來沒有直接進(jìn)行聯(lián)系也是如此。在優(yōu)選執(zhí)行過程中,使用該文章其它地方描述的社會(huì)同步方法中的一些部分同步UID列表。
應(yīng)該注意到,需要用戶參與和了解以形成和維護(hù)設(shè)備組的唯一的管理,是能夠直接回答這種問題的,即在設(shè)備能夠以需要的方式開始互操作前必須授予什么類型的訪問。采用設(shè)備和Darts的簡(jiǎn)單任務(wù)促進(jìn)訪問權(quán)限的收集和分配,只有少量的易于了解的來自用戶的允許請(qǐng)求。
也可以采用社會(huì)安全來撤銷設(shè)備的訪問權(quán)限,以傳播撤銷的設(shè)備和Darts的UID的列表。在優(yōu)選的執(zhí)行過程中,不會(huì)允許在設(shè)備之間進(jìn)行互操作的任何嘗試,其中的設(shè)備是具有要求的權(quán)限的設(shè)備被撤銷列表中之一,并且將刪除用于適當(dāng)?shù)陌踩?jí)別的被撤銷的設(shè)備組列表中的UID。
現(xiàn)在描述本發(fā)明的社會(huì)安全互操作性模型的其它特定實(shí)施例以及Dart社會(huì)安全模型的更加特殊的形式。在一個(gè)實(shí)施例(1)中,本發(fā)明提供了一種用于自動(dòng)地和遞推地在互操作性設(shè)備之間傳播訪問權(quán)限和證書的方法,所述方法包括(1)向每個(gè)互操作性設(shè)備分配唯一的ID;(2)向每個(gè)互操作性設(shè)備分配一組初始的訪問權(quán)限;(3)向每個(gè)互操作性軟件包分配一個(gè)或多個(gè)唯一的ID,并在包中嵌入所有和或每個(gè)獨(dú)立可執(zhí)行圖像需要的唯一的ID集和相關(guān)的訪問權(quán)限,其中的獨(dú)立可執(zhí)行圖像是應(yīng)用程序包的一部分;以及(4)當(dāng)兩個(gè)互操作性設(shè)備開放通信信道時(shí),用于與唯一的ID相關(guān)的設(shè)備組或應(yīng)用程序的任何現(xiàn)有的訪問權(quán)限與其它設(shè)備上的訪問權(quán)限同步,其中所述唯一的ID的限制性不比任何設(shè)備上的兩個(gè)設(shè)備的互操作性的現(xiàn)有的訪問權(quán)限的限制性大。
在另一個(gè)實(shí)施例(2)中,本發(fā)明提供(1)所述的方法,其中下述中一個(gè)或多個(gè)為真(1)互操作性設(shè)備包括Dart設(shè)備;(2)唯一的ID的基礎(chǔ)是互操作性安全程序;(3)訪問權(quán)限是在互操作性安全程序中描述的;(4)程序包是互操作性軟件包和/或Dart;(5)作為設(shè)備招募程序的一部分開始通信信道的開放;以及(6)采用社會(huì)同步程序同步訪問權(quán)限。
在另一個(gè)實(shí)施例(3)中,本發(fā)明提供(1)所述的方法,其中以下述步驟實(shí)現(xiàn)所述方法(1)啟動(dòng)從運(yùn)行在初始互操作設(shè)備上的互操作性軟件包到目標(biāo)互操作性設(shè)備的通信會(huì)話,以實(shí)現(xiàn)特定的互操作性目的;(2)確定在設(shè)備之間和設(shè)備中是否存在用于指定目的的適當(dāng)?shù)脑L問權(quán)限;以及(3)如果存在適當(dāng)?shù)脑L問權(quán)限,則允許應(yīng)用程序軟件包通過向目標(biāo)設(shè)備發(fā)送獨(dú)立地可執(zhí)行的圖像并在具有需要的訪問權(quán)限的環(huán)境中運(yùn)行所說圖像,將其執(zhí)行延伸到目標(biāo)設(shè)備上。
XX.互操作性設(shè)備/DartDevice再次想到DartDevice是能夠進(jìn)行高度的互操作的設(shè)備,這是由于DartDevice運(yùn)行包含DartEngine的DartPlayer,并且DartDevice將用于進(jìn)行連接的至少一個(gè)通信協(xié)議傳輸?shù)狡渌麯artDevice上。在圖3(300)和圖4(3000)中描述互操作性設(shè)備和更特定的DartDevice的各個(gè)方面。
在一個(gè)實(shí)施例(1)中,本發(fā)明提供了一種互操作性設(shè)備,包括(1)基于物理的圖靈機(jī)(Turing)完整指令集的處理器與能夠執(zhí)行通用計(jì)算和輸入/輸出操作的物理存儲(chǔ)器連接;(2)至少一個(gè)用于與其它設(shè)備進(jìn)行雙向通信的裝置;以及(3)在處理器上運(yùn)行的互操作性引擎,互操作性引擎被封裝在互操作性播放器中,以可執(zhí)行的形式實(shí)現(xiàn),可以在設(shè)備上加載和執(zhí)行。
在另一個(gè)實(shí)施例(2)中,本發(fā)明提供(1)所述的互操作性設(shè)備,進(jìn)一步包括互操作性播放器。
在另一個(gè)實(shí)施例(3)中,本發(fā)明提供(1)所述的互操作性設(shè)備,其中下述中獨(dú)立的一個(gè)或以任何組合的多個(gè)為真(1)互操作性設(shè)備是DartDevice;(2)互操作性引擎包括DartEngine;以及(3)互操作性播放器包括DartPlayer。
在另一個(gè)實(shí)施例(4)中,本發(fā)明提供用于以與其它相似或不同設(shè)備進(jìn)行互操作的模式操作設(shè)備的方法,所述方法包括(1)提供可以在與物理內(nèi)存相連的處理器中執(zhí)行的,并且能夠執(zhí)行一般的計(jì)算和輸入/輸出操作的物理的圖靈機(jī)(Turing)全部的指令集;(2)至少在設(shè)備和另一個(gè)設(shè)備之間發(fā)送和接收雙向通信;以及(3)操作處理器上的互操作性引擎,互操作性引擎被封裝在互操作性播放器中,以可執(zhí)行的形式實(shí)現(xiàn),可以在設(shè)備上加載和執(zhí)行。
XXI.互操作性平臺(tái)/DartPlatform再次想到DartPlatform可以是Dart方法的任何組,能夠?qū)崿F(xiàn)DartDevice的指定、生成、智能編組,并且有助于在一個(gè)或多個(gè)DartDevice上傳播并運(yùn)行Dart互操作性應(yīng)用程序。在圖3中和在該詳細(xì)描述的其它部分中描述了互操作性平臺(tái),以及一般的互操作性平臺(tái)的更特別的DartPlatform的各個(gè)方面。
現(xiàn)在描述互操作性平臺(tái)的其它實(shí)施例,其中Dart平臺(tái)是一個(gè)特殊的例子。在一個(gè)實(shí)施例(1)中,本發(fā)明提供了一種用于在多個(gè)可能不同的設(shè)備上,以安全、可靠、有效和穩(wěn)定的方式指定、建立、分配,以及實(shí)現(xiàn)獨(dú)立地可執(zhí)行的圖像的互操作性軟件包的目的的系統(tǒng),所述系統(tǒng)包括(1)用于指定互操作性計(jì)算機(jī)程序軟件包的互操作源;(2)用于建立程序指令的互操作性工具;(3)用于至少打包程序指令的互操作性格式;(4)用于表示互操作性工具生成的程序指令的的互操作性指令集;(5)用于在所有互操作性設(shè)備上運(yùn)行互操作性軟件包并提供共同的互操作性基礎(chǔ)設(shè)施的互操作性引擎;以及(6)用于形成、分配,以及維護(hù)互操作性設(shè)備組的設(shè)備招募裝置。
在另一個(gè)實(shí)施例(2)中,本發(fā)明提供(1)所述的系統(tǒng),其中所述設(shè)備招募裝置進(jìn)一步包括用于通過至少一個(gè)通信鏈接,向不同于初始源設(shè)備的至少一個(gè)可到達(dá)的設(shè)備發(fā)送可操作的尋找具有需要的資源或能力的設(shè)備的檢驗(yàn)程序的裝置,所述檢驗(yàn)程序包括以初始源設(shè)備和檢驗(yàn)程序?qū)⒌竭_(dá)的設(shè)備共用的可執(zhí)行的形式編碼的檢驗(yàn)程序指令;用于直接地或間接地通過通信鏈接,在初始設(shè)備上從每個(gè)可到達(dá)的設(shè)備接收返回的響應(yīng)的裝置;用于通過在初始設(shè)備上執(zhí)行的程序,分析從所有發(fā)出響應(yīng)的可到達(dá)的設(shè)備接收的應(yīng)答,來確定識(shí)別初始源設(shè)備和發(fā)出響應(yīng)的可到達(dá)的設(shè)備的能力和資源的組合的利用計(jì)劃,以最佳地實(shí)現(xiàn)軟件應(yīng)用程序的目的的裝置;以及用于通過在初始設(shè)備上執(zhí)行的應(yīng)用程序?qū)⒖蓤?zhí)行代碼、數(shù)據(jù)、內(nèi)容,和/或Dart中至少之一分配到每個(gè)可到達(dá)設(shè)備中至少之一的裝置,其中根據(jù)確定的利用計(jì)劃可到達(dá)的設(shè)備被確定為具有需要的資源或能力。
在另一個(gè)實(shí)施例(3)中,本發(fā)明提供(1)所述的系統(tǒng),其中在所述系統(tǒng)中包括或使用下述可選組件中的一個(gè)或以任何組合的多個(gè)(1)互操作性框架;(2)線性任務(wù)分配裝置;(3)垂直分層裝置;(4)應(yīng)用程序驅(qū)動(dòng)的電源管理裝置;(5)應(yīng)用程序驅(qū)動(dòng)的錯(cuò)誤恢復(fù)裝置;(6)互操作性運(yùn)行時(shí)間;(7)互操作性應(yīng)用程序驅(qū)動(dòng)的運(yùn)行時(shí)間;(8)創(chuàng)造裝置;(9)虛指針;(10)互操作性安全模型裝置;(11)社會(huì)同步裝置;(12)社會(huì)安全裝置;以及(13)互操作性設(shè)備授權(quán)裝置。
在另一個(gè)實(shí)施例(4)中,本發(fā)明提供(1)所述的系統(tǒng),其中下述中一個(gè)或以任何組合的多個(gè)為真(1)所述系統(tǒng)包括DartPlatform;(2)互操作性軟件包符合互操作性格式或者為符合DartFormat的Dart;(3)獨(dú)立的可執(zhí)行的圖像為再現(xiàn)程序;(4)互操作性源為DartSource;(5)互操作性工具為DartTools;(6)互操作性格式為DartFormat;(7)互操作性指令集為DartInstructionSet;以及(8)招募方法是Dart招募方法。
XXII.虛指針傳統(tǒng)的程序大多通常面向傳統(tǒng)的處理器被編譯和鏈接,傳統(tǒng)的處理器可以直接尋址一個(gè)線性數(shù)據(jù)地址空間。處理器通常提供虛擬內(nèi)存,以允許程序和操作系統(tǒng)通過執(zhí)行虛擬內(nèi)存的系統(tǒng),直接地尋址比物理內(nèi)存大的主內(nèi)存,其中有限數(shù)量的真實(shí)內(nèi)存塊,或內(nèi)存頁被自動(dòng)地交換到更大的但是更慢的存儲(chǔ)設(shè)備內(nèi)或外。這就有利地將程序員從必須關(guān)注直接管理在直接可尋址的快速主內(nèi)存和慢速但是更大的存儲(chǔ)設(shè)備之間的交換所需要的邏輯中解放出來。
但是程序員必須經(jīng)常關(guān)注內(nèi)存管理邏輯,以使單獨(dú)的數(shù)據(jù)結(jié)構(gòu)不會(huì)彼此沖突地尋址,因?yàn)檫@些數(shù)據(jù)結(jié)構(gòu)在執(zhí)行程序的過程中動(dòng)態(tài)地改變大小。動(dòng)態(tài)地分割和管理共同使用的單個(gè)地址空間通常是復(fù)雜的并易于出現(xiàn)故障,甚至當(dāng)使用虛擬內(nèi)存技術(shù)產(chǎn)生更大的有效的數(shù)據(jù)地址空間時(shí)也是如此。
傳統(tǒng)的虛擬內(nèi)存技術(shù)的另一個(gè)限制是處理器僅支持固定大小的真實(shí)內(nèi)存頁,而不考慮正在運(yùn)行的程序的特征,或者按照要求真實(shí)內(nèi)存大小是變化的方式用于多個(gè)程序,其中的大小并不是最優(yōu)地匹配所有同時(shí)加載的程序或程序的部分的需要。
在本發(fā)明的一個(gè)執(zhí)行過程中,在硬件處理器中或軟件指令集執(zhí)行引擎中采用多個(gè)復(fù)雜的尋址邏輯,以提供多個(gè)獨(dú)立的地址控制,被每個(gè)程序使用,并且允許真實(shí)的內(nèi)存頁的數(shù)量和其大小有利地根據(jù)可用的真實(shí)的主內(nèi)存的物理大小、速度和性能特征,以及希望的特定程序到特定數(shù)據(jù)集的訪問方式,進(jìn)行變化。在源代碼、編譯器和鏈接器中支持本發(fā)明的編程語言擴(kuò)展,以提供對(duì)本發(fā)明的虛指針的應(yīng)用。采用虛指針具有下述優(yōu)點(diǎn)1多個(gè)大的獨(dú)立的地址空間。可以在其自己的不同的虛指針地址空間中保存每個(gè)動(dòng)態(tài)地重新規(guī)定大小的數(shù)據(jù)結(jié)構(gòu),從而不會(huì)出現(xiàn)與在其它地址空間中的數(shù)據(jù)結(jié)構(gòu)的沖突。
2對(duì)于每個(gè)獨(dú)立的地址空間的真實(shí)的內(nèi)存頁的數(shù)量的應(yīng)用程序?qū)S玫目刂?。可以根?jù)希望的訪問方式來設(shè)置優(yōu)選的真實(shí)的內(nèi)存頁的數(shù)量,以限制要求的真實(shí)的內(nèi)存的數(shù)量,和或限制需要在進(jìn)行讀寫的慢速內(nèi)存塊的數(shù)量,以在真實(shí)的內(nèi)存和存儲(chǔ)器之間交換數(shù)據(jù)。例如,如果總是在零點(diǎn)處訪問大量的數(shù)據(jù),并以線性順序繼續(xù),則多個(gè)內(nèi)存頁將是多余的??梢詫?nèi)存頁的大小設(shè)置為實(shí)際存儲(chǔ)器的最優(yōu)的訪問內(nèi)存塊大小,以確保良好的性能、速度,或者限制訪問存儲(chǔ)塊的數(shù)量,從而不會(huì)耗盡設(shè)備。
3對(duì)真正的內(nèi)存頁大小的設(shè)備專用的控制,以匹配存儲(chǔ)設(shè)備性能特征或提高存儲(chǔ)設(shè)備的壽命。通常,設(shè)備采用閃存進(jìn)行存儲(chǔ),在設(shè)備開始出現(xiàn)故障之前,閃存具有已知的有限數(shù)量的保證的存儲(chǔ)塊訪問。硬盤通常在特定大小的存儲(chǔ)塊中存儲(chǔ)或緩存數(shù)據(jù)。
4程序員不需要預(yù)測(cè)或管理數(shù)據(jù)結(jié)構(gòu)或列表需要的內(nèi)存數(shù)量,因?yàn)樘撝羔樧詣?dòng)地邏輯地包括地址空間的值,這種地址空間的值大于使用這種數(shù)據(jù)結(jié)構(gòu)或列表訪問的希望的最大地址空間。
5以獨(dú)立于內(nèi)存頁大小或內(nèi)存頁數(shù)量的形式自動(dòng)地保存數(shù)據(jù)。可以使用DartSource設(shè)置每個(gè)虛指針變量的參數(shù),該虛指針變量表示采用DartInstructionSet SAVE_INSTRUCTION的Dart的保存是否自動(dòng)地保存地址控制的完整的數(shù)據(jù)狀態(tài)。在一個(gè)優(yōu)選的執(zhí)行過程中,將被保存的每個(gè)虛指針的值保存為具有值范圍的解析列表的DartPart,而不考慮目前被運(yùn)行的Dart使用的內(nèi)存頁大小或內(nèi)存頁數(shù)量。這就使得可能在其它設(shè)備上-運(yùn)行保存的Dart,其中在其它的設(shè)備上需要改變內(nèi)存頁大小和或內(nèi)存頁數(shù)量。
6有效地緩存來自更大的并且可能更慢的數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù),最小數(shù)量的寶貴的主內(nèi)存RAM允許應(yīng)用程序運(yùn)行,就如同它們具有比實(shí)際上大得多的RAM內(nèi)存一樣運(yùn)行。
7用于索引數(shù)據(jù)庫(kù)操作的簡(jiǎn)單的和有效的基礎(chǔ)設(shè)施,其中在不同的虛擬地址空間中保存數(shù)據(jù)和索引。
在優(yōu)選的執(zhí)行過程中,DartSource、DartTools,以及DartEngine支持虛指針,以提供上述列出的優(yōu)點(diǎn)。
在DartSource中,使用C或C++語言的擴(kuò)展,#pragma虛指針(參數(shù)),來指定每個(gè)虛指針,其中參數(shù)包括1當(dāng)程序開始執(zhí)行時(shí),保持虛擬地址空間的起始地址的指針變量的名稱。
2建議使用的真正的內(nèi)存頁的數(shù)量。
3表示地址空間中的值是否隨應(yīng)用程序自動(dòng)地保存的二進(jìn)制標(biāo)記。
4建議的真正的內(nèi)存頁的大小。
DartTools處理DartSource # pragma語句,以建立將加載指針地址值的Dart,該地址值有效地作為分離的地址空間的起始偏差。該起始偏差實(shí)際上是多字段地址的一部分,多字段地址由DartEngine解釋以確定特定的虛指針。
在圖32中表示Dart虛指針的例子。在優(yōu)選的執(zhí)行過程中,Dart的地址空間的單位是32位字,而不是更普遍的多數(shù)傳統(tǒng)的處理器的8位字節(jié),傳統(tǒng)的處理器最大的可直接尋址的空間是2^32 8-位字節(jié)。DartPlatform使用32位地址的兩個(gè)最高有效位作為表示將被使用的地址空間的字段。由于DartEngine執(zhí)行的DartInstructionSet的可尋址單位是32位字,因此在可編址內(nèi)存的大小中不存在損失,為2^30 32位字。圖32的例子表示地址空間類型字段表示這是虛指針地址空間的地址。后面5位字段表示使用虛指針1,在該執(zhí)行過程中意味能夠存在多達(dá)2^5=32個(gè)不同的虛指針地址空間。剩余的25位是虛指針1的地址空間中的數(shù)據(jù)的偏移或地址。
圖32的例子表示對(duì)于具體的地址,0x50001,在特定設(shè)備上的DartEngine如何管理虛指針1的存取的具體示例。由于塊(頁)大小是64K=2^16個(gè)字,因此25位偏移量的前9位表示哪個(gè)64K塊包括被存取的數(shù)據(jù)值。在所示的例子中,兩個(gè)真實(shí)的內(nèi)存頁目前都不保存該塊。同時(shí)用于虛指針1的閃存塊文件都不保存需要的數(shù)據(jù)塊。這些文件是過去存取的結(jié)果,要求用于塊100和101的真實(shí)的內(nèi)存頁在過去被其它頁代替。在代替真實(shí)的內(nèi)存頁之前,DartEngine自動(dòng)地在兩個(gè)閃存文件中保存這些塊的數(shù)據(jù)值。對(duì)于該次存取實(shí)際上當(dāng)前的數(shù)據(jù)值仍然存在于虛指針1部分的運(yùn)行的Dart文件中。當(dāng)使用數(shù)據(jù)值最后保存運(yùn)行的Dart,接著保存在其虛指針1的地址空間時(shí),就產(chǎn)生了該部分。在該例中當(dāng)塊101的數(shù)據(jù)值從這部分的第三范圍讀入兩個(gè)真實(shí)的內(nèi)存頁之一時(shí),就完成該次存取。如果將被代替的真實(shí)的內(nèi)存頁具有被改變的或被污染的數(shù)據(jù)集時(shí),則將寫出新的閃存文件以在其值被代替之前在真實(shí)的內(nèi)存頁中保存當(dāng)前值。當(dāng)返回指向現(xiàn)在處于真實(shí)內(nèi)存中的0x50001值的指針,以由存取Dart指令處理時(shí),就完成了該次存取。
現(xiàn)在描述虛指針的其它方面和實(shí)施例,以及其相對(duì)于本發(fā)明的其它方面的使用。在一個(gè)實(shí)施例(1)中,本發(fā)明提供了一種用于在軟件應(yīng)用程序中提供多個(gè)大的獨(dú)立的可存取的數(shù)據(jù)存取地址空間的方法,其中的地址空間有效地利用物理內(nèi)存和或物理存儲(chǔ)設(shè)備,所述方法包括(1)指定一個(gè)或多個(gè)獨(dú)立的地址空間的性質(zhì);(2)將計(jì)算機(jī)程序代碼源語句處理為適于在特定的軟件引擎和或支持虛指針功能的硬件處理器上運(yùn)行的可執(zhí)行圖像;以及(3)在特定的軟件引擎或執(zhí)行指令集的硬件處理器上運(yùn)行可執(zhí)行圖像,該指令集通過采用快速存取限制大小的主內(nèi)存和較慢存取但是更大的二級(jí)存儲(chǔ)器,以有效的方式?jīng)Q定對(duì)地址空間引用的數(shù)據(jù)進(jìn)行存取。
在另一個(gè)實(shí)施例(2)中,本發(fā)明提供了(1)所述的方法,其中指定一個(gè)或多個(gè)獨(dú)立的地址空間的性質(zhì)是采用計(jì)算機(jī)編程語言實(shí)現(xiàn)的,所述計(jì)算機(jī)編程語言支持遵循語法和語義的語句。
在另一個(gè)實(shí)施例(3)中,本發(fā)明提供了(1)所述的方法,其中所述處理包括運(yùn)行軟件工具,其中所述軟件工具將源語句處理為適于在特定的軟件引擎和或硬件處理器上運(yùn)行的可執(zhí)行的圖像。
在另一個(gè)實(shí)施例(4)中,本發(fā)明提供了(1)所述的方法,其中至少部分地通過下述步驟實(shí)現(xiàn)有效地利用和有效的方式(1)對(duì)于每個(gè)獨(dú)立的地址空間,建立和維護(hù)許多真實(shí)的內(nèi)存頁,它們均為相同的特定大?。?2)當(dāng)在獨(dú)立的地址空間中邏輯地進(jìn)行數(shù)據(jù)存取時(shí),決定存取并返回一個(gè)值或指向包括這個(gè)值的主內(nèi)存的指針到進(jìn)行存取的指令或程序,采用了下述程序(a)確定數(shù)據(jù)是否處于主內(nèi)存頁之一中;(b)如果數(shù)據(jù)沒有處于一個(gè)主內(nèi)存頁中,則執(zhí)行下述程序(i)確定數(shù)據(jù)是否處于二級(jí)存儲(chǔ)器中;(ii)如果數(shù)據(jù)沒有處于二級(jí)存儲(chǔ)器中,則執(zhí)行下述程序中的一個(gè)或多個(gè)(1)返回默認(rèn)值;(2)返回指向包括默認(rèn)值的主內(nèi)存數(shù)據(jù)元素的指針的指針;以及(3)返回存取未知數(shù)據(jù)代碼或其它指示,即不存在用于數(shù)據(jù)的已知值;(c)如果數(shù)據(jù)處于二級(jí)存儲(chǔ)器中,則執(zhí)行下述程序(i)選擇真實(shí)的內(nèi)存頁,并開始對(duì)包括需要的數(shù)據(jù)值的數(shù)據(jù)塊尋址;(ii)如果所選擇的真實(shí)的內(nèi)存頁被標(biāo)記為被污染,則寫出或另外地使所選擇的真實(shí)的內(nèi)存頁中的值被寫入到二級(jí)存儲(chǔ)器中;(iii)讀取或另外地加載連續(xù)范圍的可編址數(shù)據(jù)到真實(shí)的內(nèi)存頁中,它與所選擇的真實(shí)的內(nèi)存頁具有相同的大小和相同的新的起始地址;(iv)將該真實(shí)的內(nèi)存頁中的數(shù)據(jù)標(biāo)記為未被污染;以及(v)返回現(xiàn)在處于所選擇的主內(nèi)存頁中的數(shù)據(jù)值或者指向現(xiàn)在處于所選擇的主內(nèi)存頁中的數(shù)據(jù)的指針。(d)如果數(shù)據(jù)處于一個(gè)主內(nèi)存頁中,則執(zhí)行下述程序(i)如果已知存取表示這個(gè)值的使用者可能改變數(shù)據(jù)值,則將主內(nèi)存頁標(biāo)記為被污染;以及(ii)返回處于主內(nèi)存頁中的數(shù)據(jù)值或者指向主內(nèi)存頁中的數(shù)據(jù)的指針,其中發(fā)現(xiàn)該主內(nèi)存頁包括該數(shù)據(jù)。
在另一個(gè)實(shí)施例(5)中,本發(fā)明提供了(4)所述的方法,其中如果數(shù)據(jù)沒有處于真實(shí)的內(nèi)存頁中并且沒有處于二級(jí)存儲(chǔ)器中,則如同數(shù)據(jù)處于二級(jí)存儲(chǔ)器中來進(jìn)行處理,除了不用從二級(jí)存儲(chǔ)器加載所選擇的帶有數(shù)據(jù)的真實(shí)內(nèi)存頁外,還將選擇的真實(shí)內(nèi)存頁填充默認(rèn)值。
XXIII.示例性應(yīng)用程序和應(yīng)用程序環(huán)境A.中微子檢測(cè)器應(yīng)用程序例子參照?qǐng)D21所示,描述了本發(fā)明實(shí)施例的例子,表示通過采用DartInstructionSet的OEM_BUILTIN_INSTRUCTION,DartPlatform如何被用于產(chǎn)生新型DartDevice,家庭中微子檢測(cè)器3500的本地功能,甚至當(dāng)移動(dòng)電話DartDevice3600最初不了解中微子檢測(cè)器3500的存在或特征時(shí),也能發(fā)現(xiàn)和使用中微子檢測(cè)器3500。
家庭中微子檢測(cè)器3500目前僅在理論上存在,但是如果真正存在的話,應(yīng)該知道沒有與這種設(shè)備的互操作的現(xiàn)有的標(biāo)準(zhǔn)。然而DartPlatform提供了用于使中微子檢測(cè)器(ND)與其它DartDevices(在該例中為移動(dòng)電話3600)能夠進(jìn)行互操作的方法,即使移動(dòng)電話DartDevice3600的制造商不了解現(xiàn)有的標(biāo)準(zhǔn)或這種設(shè)備的功能也能夠進(jìn)行互操作。
ND的制造商是Mirabella Electronics,它被分配唯一的ID,MIRABELLA_ELECTRONICS_ID,從而使Mirabella Electronics制造和使用的任何唯一的OEM功能與所有其它制造商制造和使用的功能相區(qū)別。Mirabella希望其設(shè)備能夠與DartDevice進(jìn)行互操作,將DartEngine作為運(yùn)行在ND上的DartPlayer的一部分進(jìn)行移植。為了表現(xiàn)設(shè)備在五秒的時(shí)間段內(nèi)采樣通過檢測(cè)器的中微子的數(shù)量的獨(dú)特能力,從HAL的OEM(<oemld>,<subfunction>)方法調(diào)用本地嵌入的函數(shù)CollectSamples,所說函數(shù)產(chǎn)生收集和返回通過檢測(cè)器的中微子的數(shù)量。接著MirabellaElectronics采用DartSource和DartTools創(chuàng)建控制面板Dart,該控制面板Dart包括再現(xiàn)程序R1和再現(xiàn)程序R0,R1顯示用于控制面板的用戶接口,R0處理被保留為表示將進(jìn)行采樣的Dart專用的類型的事件。
具有用戶接口能力的每個(gè)DartDevice通常將被與存在于其上的GetControlPanels Dart一同運(yùn)送,以用于發(fā)現(xiàn)所有實(shí)現(xiàn)為可到達(dá)的DartDevices上的Darts的控制面板,該DartDevices愿意于其它DartDevics共享其控制面板Darts。當(dāng)GetControlPanels Dart在移動(dòng)電話3600上啟動(dòng)時(shí),發(fā)送GetControlPanelList DartProcedure,以通過任何通信協(xié)議在所有可到達(dá)的設(shè)備上運(yùn)行。在這種情況下,移動(dòng)電話通過兩個(gè)設(shè)備共用的藍(lán)牙協(xié)議發(fā)現(xiàn)并建立通信會(huì)話,接著將DartProcedure作為RunProcedure類型事件的一部分發(fā)送到運(yùn)行DartProcedure的中微子檢測(cè)器。當(dāng)DartProcedure在ND上執(zhí)行時(shí),通過使用作為每個(gè)DartDevice的DartInstructionSet的一部分的嵌入的指令,收集ControlPanel Dart的名稱、描述以及唯一的ID的列表。存在于ND上的可用控制面板Dart的名稱和描述被發(fā)送回移動(dòng)電話,并被GetControlPanels Dart顯示以由用戶選擇。在從移動(dòng)電話上的列表中選擇控制面板后,發(fā)送事件,請(qǐng)求通過唯一ID確定的控制面板Dart開始在ND上執(zhí)行,并接著通過建立的通信會(huì)話招募移動(dòng)電話,這就自動(dòng)地將電話上的GetControlPanel Dan替換為運(yùn)行的R1再現(xiàn)程序,其中R1再現(xiàn)程序是由進(jìn)行招募的ND的并且運(yùn)行R0再現(xiàn)程序的ControlPanelDart發(fā)送的。
再現(xiàn)程序R1則在移動(dòng)電話屏幕上顯示大的綠色采樣按鈕。當(dāng)用戶選擇該按鈕時(shí),R1產(chǎn)生標(biāo)記為同步的事件,請(qǐng)求進(jìn)行采樣。DartRuntime自動(dòng)地將事件發(fā)送到編組的ND的事件隊(duì)列中,這就使得通過使用OEM_BUILTIN_INSTRUCTION處理事件,來通過使DartEngine調(diào)用halOEM()的方法實(shí)現(xiàn)采樣,其參數(shù)被Mirabella Electronics分配,以生成CollectSamples()本地設(shè)備函數(shù)和將采樣數(shù)返回到halOEM()的調(diào)用者,接著被引擎返回到執(zhí)行的R0再現(xiàn)程序。R0接著調(diào)用以將標(biāo)記為同步的DisplayNumberOfSamples類型事件放置在其隊(duì)列中,這就使得將DisplayNumberOfSamples類型事件放置在編組的移動(dòng)電話的隊(duì)列中。運(yùn)行在移動(dòng)電話上的R1再現(xiàn)程序接著處理事件和在屏幕上顯示檢測(cè)到的中微子數(shù)量,它被包含在DisplayNumberOfSamples類型事件的參數(shù)中。
因此圖21的例子說明DartPlatform能夠被有利地用于將甚至非常獨(dú)特的設(shè)備的能力和控制展示和延伸到DartDevices上,而事先并不了解該獨(dú)特設(shè)備的存在、特征或能力。
上述例子和描述中的一些要點(diǎn)包括首先,其獨(dú)特的目的不能被標(biāo)準(zhǔn)委員會(huì)考慮的設(shè)備能夠成為DartDevice400,需要幾乎與使任何其它設(shè)備成為DartDevice400相同的開發(fā)工作量。
第二,該新的設(shè)備能夠容易地將其獨(dú)特的硬件能力展示給在任何這種類型的設(shè)備存在之前就已經(jīng)存在的其它設(shè)備。已有的DartDevice400能夠與新的設(shè)備進(jìn)行互操作,控制對(duì)于任何設(shè)備來說是新的、獨(dú)特的和未知的活動(dòng)。
第三,使中微子監(jiān)測(cè)器3500成為DartDevice400所需要的開發(fā)工作類似于使任何設(shè)備成為DartDevice400所需要的開發(fā)工作,對(duì)于任何其它設(shè)備不需要任何其它工作,即使這些設(shè)備在出現(xiàn)該技術(shù)前就已經(jīng)存在時(shí)也是如此。即,當(dāng)采用傳統(tǒng)的互操作性方法時(shí)以N-平方的方式出現(xiàn)的開發(fā)工作量,在采用DartPlatform中包括的方法實(shí)現(xiàn)時(shí),僅是N的一階的工作量。因?yàn)镈artApplication的再現(xiàn)程序于來自相同的初始Darts的其它再現(xiàn)程序進(jìn)行通信,因此與傳統(tǒng)的互操作能力相比可以獲得高度的可靠性,傳統(tǒng)的互操作能力可能需要分別的執(zhí)行和分配更可能會(huì)不兼容的互操作性組件。
B.幻燈片放映應(yīng)用程序例子-開發(fā)到使用的步驟現(xiàn)在我們更加詳細(xì)地以例子描述示例性的系統(tǒng)、方法、計(jì)算機(jī)程序和組件,該例子采用幻燈片放映Dart應(yīng)用程序作為基本的示例性應(yīng)用程序,描述開發(fā)到使用的步驟。該幻燈片放映的例子僅是為了說明目的的,應(yīng)該知道對(duì)于實(shí)際上任何軟件應(yīng)用程序(包括與硬件交互作用或利用或控制硬件的軟件應(yīng)用程序,實(shí)際上都需要在任何設(shè)備或設(shè)備組上運(yùn)行,不管是順序地每次在一個(gè)設(shè)備上運(yùn)行、同時(shí)或并行地在多個(gè)設(shè)備上運(yùn)行)可以有利地采用相同的技術(shù)。
在該例子中,設(shè)計(jì)DartSource(圖3 100)文件(C++)和DartFramework(圖3 102)類定義和源代碼(圖3 101)作為表示構(gòu)建互操作性應(yīng)用程序需要的算法和代碼的可選基礎(chǔ)。
參照?qǐng)D3所示,示例性幻燈片放映Dart應(yīng)用程序作為DartSource文件開始(圖3 100)。應(yīng)用程序代碼101通常符合標(biāo)準(zhǔn)的C++語言?;脽羝庞矰artSource100還包括標(biāo)準(zhǔn)的C++源文件,它表示DartFramework102。DartFramework102是一組類定義和代碼,被設(shè)計(jì)為作為表示構(gòu)建互操作性應(yīng)用程序需要的算法和代碼的可選基礎(chǔ),該應(yīng)用程序?qū)⒈辉佻F(xiàn)為DartFormat300并符合DartRuntime8000(參照?qǐng)D15所示)。
通過作為DartInstructionSet一部分的BUILTIN_INSTRUCTION(圖20 670),DartSource100調(diào)用Dart引擎函數(shù)。通過編譯器201生成的BUILTIN_INSTRUCTION 670(參照?qǐng)D20所示)(它是設(shè)備獨(dú)立的DartEngine 600執(zhí)行的DartInstructionSet的一部分),C++源代碼調(diào)用引擎函數(shù),其中DartEngine 600是運(yùn)行在DartDevice 400上的設(shè)備專用的DartPlayer 500的一部分。
對(duì)C++語言進(jìn)行有利的擴(kuò)展,從而可以從應(yīng)用程序代碼101和DartFramework 102引用許多類型的資源103。這是通過特定名稱的嵌入函數(shù)、特定名稱的數(shù)據(jù)結(jié)構(gòu),以及具有Dart編譯器201認(rèn)可的關(guān)鍵字的#pragma擴(kuò)展實(shí)現(xiàn)的。
資源可以包括文件內(nèi)任何地方的,或動(dòng)態(tài)生成的和通過文件系統(tǒng)(參照?qǐng)D22 612、圖27 5100、圖28 5000、圖26)或任何形式的網(wǎng)絡(luò)訪問、無線訪問,或任何形式的通信可由DartTools 200到達(dá)的任何類型的數(shù)據(jù),或代碼,或?qū)?shù)據(jù)或代碼的引用。拿幻燈片放映應(yīng)用程序舉例來說,資源103可以例如包括JPEG格式的背景圖像文件、PCM格式的音效文件,和/或任何圖片幻燈片或圖像、視頻、文本、字符,或者甚至作為默認(rèn)的演示幻燈片包括的完整的Dart文件(700)。C++語言的Pragma擴(kuò)展還可以用于確定DartTools 200,其函數(shù)被自動(dòng)地加入到DartProcedures 4000(參照?qǐng)D14所示)或部分303(參照?qǐng)D13所示),而不是被包括在MainCode2103和MainData 2102(參照?qǐng)D13所示)部分(圖3 303)中。C++語言的擴(kuò)展partnumber()嵌入函數(shù)可以被用在源代碼中,以使編譯器201生成該部分ID的32位數(shù)值,當(dāng)用作函數(shù)或嵌入指令(DartInstructionSet的一部分)的參數(shù)時(shí),用于引用該部分。
DartFramework 102(參照?qǐng)D3和圖11)有利地包括類說明和實(shí)現(xiàn)的體系結(jié)構(gòu)。一個(gè)關(guān)鍵的基類是Gizmo 115類。Gizmo 115可以被用于封裝一個(gè)處理的函數(shù)單元。Gizmo 115導(dǎo)出的類包含Setup()和Process()方法,以及對(duì)雙親Gizmo和子女Gizmo的列表的引用。這些引用可選地可以為空引用。
再現(xiàn)程序114類是從Gizmo類繼承的,并被設(shè)計(jì)為用作一部分應(yīng)用程序的起始點(diǎn),其中的一部分應(yīng)用程序能夠獨(dú)立于應(yīng)用程序中的其它再現(xiàn)程序114被加載和運(yùn)行。
MasterRendition 113類是從再現(xiàn)程序114類繼承的。這是MasterDart230中的唯一有效再現(xiàn)程序(參見圖12)。MasterDart 230是二進(jìn)制DartFormat 300文件或從DartTools 200輸出的圖像(參照?qǐng)D3和圖12所示),優(yōu)選地包括一個(gè)MasterRendition示例。MasterDart 230可以有利地包括在源代碼中引用的所有的代碼、數(shù)據(jù)、內(nèi)容、程序,以及資源,并且當(dāng)在MasterPlayer 203上播放時(shí)被自動(dòng)地加載。在加載MasterDart 230后,MasterPlayer 203執(zhí)行C++構(gòu)造方法,C++構(gòu)造方法應(yīng)該在啟動(dòng)main()輸入點(diǎn)之前運(yùn)行。MasterRendition 113的main()方法用作MasterDart 230的邏輯開始點(diǎn)。
圖12表示將DartSource 100輸入到DartTools 200中的實(shí)施例。編譯器201將DartSource轉(zhuǎn)換為DartInstructionSet,一次將一個(gè)文件轉(zhuǎn)換為對(duì)象220,并將這些對(duì)象收集到庫(kù)中。可選地,可以由庫(kù)工具創(chuàng)建這些庫(kù)。對(duì)象和/或庫(kù)220也可以用作其它DartMasters和Dart應(yīng)用程序的DartSource 100的資源103。除了某些大的差別外,編譯器201的操作、可選的庫(kù)工具,以及鏈接器202通常類似于現(xiàn)在使用的傳統(tǒng)的C++編譯器、庫(kù)以及鏈接器。這些差別中的某一些包括首先,目標(biāo)指令集來自于DartInstructionSet。第二,輸出的可執(zhí)行指令是將在MasterPlayer 203上執(zhí)行的MasterDart 230,它不是面向?qū)嶋H終端目標(biāo)設(shè)備;并且,MasterDart和MasterPlayer表示本發(fā)明特有的組件。第三,許多在使用后被丟棄的傳統(tǒng)的編譯器、庫(kù)和鏈接器的操作中生成的類定義和鏈接結(jié)構(gòu)(使用后通常被丟棄)被保存在MasterDart中,以被MasterPlayer使用。被保存的類定義和鏈接結(jié)構(gòu)也不同于可以暫時(shí)存在于傳統(tǒng)的編譯器、庫(kù)和鏈接器中的類定義和鏈接結(jié)構(gòu)。第四,DartTools 200處理源語言的擴(kuò)展(i)指定或自動(dòng)地收集執(zhí)行過程中需要的運(yùn)行時(shí)間資源要求;(ii)作為部分303包括在資源103的MasterDart中(圖3、圖13);以及partnumber()源代碼函數(shù)提供用作被DartTools 200分配的資源的標(biāo)識(shí)符的部分?jǐn)?shù)量,以被應(yīng)用程序使用。其它的發(fā)明性在于最終的DartTools輸出的MasterDarts和Darts可以包括任何數(shù)量的再現(xiàn)程序和信息,這些再現(xiàn)程序和信息是將Dart或MasterDart圖像中可能被共享的部分放在一起以按需要構(gòu)造這些再現(xiàn)程序所需要的。另外的發(fā)明性還在于DartTools輸出的Darts和MasterDarts包括實(shí)現(xiàn)招募所需要的程序、數(shù)據(jù)、代碼和內(nèi)容,以智能地建立專用的設(shè)備組,并根據(jù)DartRuntime實(shí)現(xiàn)應(yīng)用程序的目的。
編譯器202(圖12)組合對(duì)象/庫(kù)202并將其打包為符合DartFormat300(圖3)的單個(gè)二進(jìn)制圖像。該圖像為DartMaster 230。DartMaster 230將在MasterPlayer 203上運(yùn)行,DartMaster 230包括DartEngine 500(參照?qǐng)D22所示)。該DartEngine 500包括一些BuiltInInstruction(參照?qǐng)D25和圖20所示),它們支持調(diào)用利用符號(hào)表部分2100(參照?qǐng)D13和圖14所示)的DartEngine系統(tǒng)函數(shù),以及編譯器201和鏈接器202生成的其它圖元數(shù)據(jù)部分。這些函數(shù)可以被MasterDart中的代碼用于幫助收集例如,資源103,初始化數(shù)據(jù),以及將部分2100和部分2200組合為Dart 700或Darts組700。通過將被生成的Dart或Darts中需要的部分2100和數(shù)據(jù),這些函數(shù)也有助于減少代碼的大小,或增加代碼的處理效率。
MasterDart符合DartFormat 300(參照?qǐng)D3所示),但是可能限于僅有一個(gè)RenditionTable 2104,RenditionTable 2104被RenditionTable 2101中的Partld引用。Partld是用作Dart 700中的部分(圖12 303)的參考值引用的整數(shù)值標(biāo)識(shí)符。在一個(gè)實(shí)施例中,Partld是32位,但是是具有不同計(jì)數(shù)位的標(biāo)識(shí)符,例如16位、24位、40位、48位、64位或可以使用的任何其它位數(shù)。在一個(gè)實(shí)施例中,在DartSource中僅允許一個(gè)MasterRendition對(duì)象示例。DartTools 200利用源代碼中的信息用于初始化MasterRendition 113對(duì)象示例,利用其引用的數(shù)據(jù)結(jié)構(gòu)初始化RenditionsTable 2101記錄中的參數(shù)。相應(yīng)于MasterRendition 113示例的RenditionsTable 2101記錄中的一些參數(shù)可以被DartTools 200自動(dòng)地填充。這些RenditionsTable參數(shù)包括事件和文件的數(shù)量,當(dāng)再現(xiàn)程序114對(duì)象示例首先被加載并準(zhǔn)備由DartPlayer 500運(yùn)行時(shí),應(yīng)該最初分配堆內(nèi)存的數(shù)量。在任何Dart 700運(yùn)行在任何DartPlayer 500上之前,運(yùn)行在DartDevice 400之上的DartPlayer 500的DartEngine 600應(yīng)該有利地首先選擇并加載再現(xiàn)程序。
DartPlayer 500在DartEngine 600周圍提供設(shè)備專用的應(yīng)用程序可執(zhí)行殼(shell),DartPlayer 500能夠指定運(yùn)行的再現(xiàn)程序Partld,或能夠指定零(“0”),這在一個(gè)實(shí)施例中表示其為無效的Partld。如果指定零,則DartEngine將加載具有RenditionsTable 2101的第一記錄的Partld的再現(xiàn)程序114。
為了發(fā)現(xiàn)RenditionsTable,DartEngine 600應(yīng)該首先加載跟蹤器305(參照?qǐng)D3所示),它在一個(gè)實(shí)施例中應(yīng)為Dart 700文件中的最后四個(gè)32位字。跟蹤器305包括自Dart 700文件開始的PartTable 304的偏移。PartTableRecored 314(參照?qǐng)D14所示)中的每條記錄,在PartTable 304中包括Partld,例如32位Partld,以及自Dart 700文件開頭的startOffset和endOffset,其中在Dart 700文件中找到部分303的連續(xù)圖像。
通常在DartFormat 300文件中僅允許一個(gè)RenditionsTable 2101(圖13),它具有被永久分配的Partld值,該值被引擎用于尋找相應(yīng)于RenditionsTable 2101部分的PartTableRecord 314。該P(yáng)artTableRecord 314中的偏移用于尋找RenditionsTable 2101,RenditionsTable記錄包括關(guān)于MainData 2102和MainCode 2103部分中的線性分段的信息,MainData2102和MainCode 2103是該記錄中Partld引用的再現(xiàn)程序所需要的。RenditionsTable 2101記錄還包括開始再現(xiàn)程序114示例的執(zhí)行的開始代碼圖像地址。最佳地RenditionTable 2104記錄僅是一個(gè)32位字,它保存屬于再現(xiàn)程序114示例的部分的Partld。
在本發(fā)明的一個(gè)實(shí)施例中,有幾個(gè)與在DartPlayer 203上加載Dart230相關(guān)聯(lián)的步驟。使用相同的步驟在MasterPlayer上加載MasterDart,這些步驟分別是Dart和DartPlayer的特定示例。這些步驟可以包括下述步驟,包括可選的但是有利執(zhí)行的步驟步驟1 應(yīng)用程序開發(fā)設(shè)備900上的DartPlayer 203(參照?qǐng)D12所示)調(diào)用Dart Engine.Init()方法(圖24 6000、圖23 4002),具有規(guī)定RenditionPartld從0值開始的參數(shù)。
步驟2 DartEngine 600接著從Dart 230文件的末端讀取跟蹤器,并取出PartTable 304的偏移。
步驟3 讀取PartTable 304的每條記錄,直到對(duì)于所有RenditionsTables的Partld發(fā)現(xiàn)具有預(yù)先分配的固定值的記錄為止。在任何DartFormat圖像中只允許一個(gè)具有該固定值的Partld的RenditionsTable。
步驟4 DartEngine 600取出RenditionsTable 2101的startOffset和endOffset,并使用startOffset和endOffset讀出第一RenditionsTable記錄。
步驟5 讀出第一RenditionsTable記錄,提取初始運(yùn)行時(shí)間參數(shù),例如為其分配內(nèi)存的文件和事件的數(shù)量,為堆和堆棧分配的空間數(shù)量。還提取出RenditionsTable 2104 Partld。
步驟6 RenditionsTable Partld用于從用于該P(yáng)artld的PartTable 304中尋找RenditionsTable 2104的startOffset和endOffset。
步驟7 讀出RenditionsTable 2104中的每條記錄。在一個(gè)實(shí)施例中,每條記錄僅是一個(gè)32位字,具有屬于再現(xiàn)程序的部分的Partld。每個(gè)PartTableRecord 314包括管理在加載時(shí)發(fā)生的事件的標(biāo)記和參數(shù)。例如,如果根據(jù)contentType、參數(shù)0、參數(shù)1和/或參數(shù)2的值,或者根據(jù)一些其它的參數(shù)或條件,以某種方式處理這一部分,則可能存在標(biāo)記。MainData和MainCode部分是這種部分的例子,即其必須在加載時(shí)被處理,以在再現(xiàn)程序開始執(zhí)行之前將需要的代碼和數(shù)據(jù)放入內(nèi)存中。
步驟8 當(dāng)發(fā)現(xiàn)需要的MainCode 2103 PartTableRecord 314時(shí),contentType將保存被分配給MainCode 2103contentType的固定值,并且設(shè)置標(biāo)記參數(shù)字中的自動(dòng)加載的標(biāo)記位,參數(shù)0和參數(shù)1將保存包括在MainCode 2103部分中的第一和最后DartInstructionSet代碼圖像地址。盡管從廣泛可用的C++工具輸出的多數(shù)可執(zhí)行圖像將產(chǎn)生總是在相同的固定偏移開始的代碼圖像,但是對(duì)于Darts卻不總是如此,因?yàn)閷?duì)于再現(xiàn)程序僅需要的線性連續(xù)的區(qū)域,它被作為運(yùn)行MasterDart 230的結(jié)果輸出或者保存Dart的一組再現(xiàn)程序,以進(jìn)行備份或發(fā)送到另一個(gè)編組的設(shè)備。換句話,Dart代碼圖像不總是在相同的固定偏移開始的,僅可以正常地顯示再現(xiàn)程序需要的線性連續(xù)的區(qū)域,再現(xiàn)程序是通過使用創(chuàng)造法或SAVE_INSTRUCTION或保存的BUILTIN_INSTRUCITON,從MasterDart230或Dart輸出的。有利地形成其它Darts的任何Dart 700通常僅包括DartTools 200輸出的源代碼或數(shù)據(jù)的線性連續(xù)尋址的部分,這些部分是實(shí)際在生成的Dart中的再現(xiàn)程序所需要的。例如,一旦作為加載過程的一部分運(yùn)行MasterDart 230的靜態(tài)構(gòu)造代碼,則當(dāng)運(yùn)行MasterDart 230時(shí)通常不需要構(gòu)造代碼占用生成的Darts中的空間。這是因?yàn)樯傻腄arts其自身通常不包括MasterDart 230。對(duì)于通過執(zhí)行MasterDart 230或其它Dart產(chǎn)生的Dart文件的MainData 2102部分中的數(shù)據(jù)來說也是如此。步驟9對(duì)環(huán)境結(jié)構(gòu)或環(huán)境對(duì)象示例分配內(nèi)存,以跟蹤與被加載的Dart相關(guān)聯(lián)的內(nèi)存、訪問權(quán)限、狀態(tài)。生成唯一的contextld值以用作可以在相同的DartEngine 600示例上運(yùn)行的Dart代碼或其它Darts調(diào)用的全局引用參考值。環(huán)境標(biāo)記將限制Dart代碼對(duì)明確分配為特定的運(yùn)行的Dart的數(shù)據(jù)、DartHeap,或DartStack的內(nèi)存的訪問。同時(shí)試圖訪問不是該Dart或其DartEngine環(huán)境一部分或者對(duì)其沒有建立訪問權(quán)限(如環(huán)境的標(biāo)記值表示的)的函數(shù)、內(nèi)存或文件,在一個(gè)實(shí)施例中這將產(chǎn)生來自DartEngine程序調(diào)用4300的負(fù)值的錯(cuò)誤返回代碼,這將使得在可能發(fā)生非法訪問之前,結(jié)束Dart的執(zhí)行。
步驟10 提取以PartTableRecords 314的參數(shù)和RenditionsTable的記錄表示的環(huán)境和初始內(nèi)存要求。如果需要為任何引擎維護(hù)的EventInfo結(jié)構(gòu)、FileInfo結(jié)構(gòu)、或CommSessionInfo結(jié)構(gòu)分配和重新分配內(nèi)存,或者存在將被加載的Dart的預(yù)期執(zhí)行需要的其它資源,則進(jìn)行分配、重新分配、初始化等,以準(zhǔn)備在相同的DartEngine示例上運(yùn)行的DartContexts、DartProcedureContexts和DartIdleContexts共享的DartContexts和DartEngine環(huán)境。
步驟11 優(yōu)選地打開和讀出子文件,例如SubFile 698(見圖26),以處理或執(zhí)行DartFormat 300圖像文件的部分,如同它們是獨(dú)立的文件,不需要將數(shù)據(jù)備份到獨(dú)立的文件中。
DartPlatform50有利地采用唯一的文件系統(tǒng)。執(zhí)行該文件系統(tǒng)612(參照?qǐng)D26所示),以產(chǎn)生連接到文件標(biāo)識(shí)符(字段)值的文件抽象,它可以被用于引用Dart代碼中的文件或當(dāng)讀出、傳遞、寫入或共享數(shù)據(jù)時(shí)引用文件。
幾個(gè)BuiltinInstruction 670(參照?qǐng)D20所示)操作代碼值可以被用于讀出、寫入、打開、關(guān)閉、重命名,以及定位操作。以一對(duì)一的方式與每個(gè)字段相關(guān)聯(lián)的FileInfo結(jié)構(gòu)跟蹤存儲(chǔ)器的類型和形式、特性和訪問權(quán)限、以及當(dāng)前存儲(chǔ)器位置、文件中當(dāng)前指針位置等等。
有利地,設(shè)備專用的halBase對(duì)象映射DartEngine 600執(zhí)行過程的可移植部分與在DartDevice 400上操作所需要的小組函數(shù),設(shè)備專用的halBase對(duì)象非常小并且簡(jiǎn)單,因?yàn)槎鄶?shù)不與實(shí)際的獨(dú)立物理存儲(chǔ)的文件相關(guān)的操作被DartEngine中的可移植代碼虛擬化,如圖26所示。
對(duì)于文件的處理,僅僅需要執(zhí)行HAL的讀出、寫入、打開、關(guān)閉、定位、得到位置、重命名以及刪除操作,以將DartEngine 600移植到新的DartDevice 400中。DartEngine 600執(zhí)行過程的可移植部分為保存在分配的內(nèi)存697(參照?qǐng)D26所示)中的文件,或者子文件或其它文件生成文件存取抽象。一旦子文件被打開就能象任何其它文件那樣被讀出,但是數(shù)據(jù)源和邊界范圍實(shí)際上是以前打開的另一個(gè)文件的適當(dāng)?shù)淖蛹?br>
有利地,即使源文件在子文件之前被關(guān)閉,但是子文件仍然保持運(yùn)行。使用子文件讀出用于執(zhí)行的Dart的代碼允許適當(dāng)?shù)貓?zhí)行代碼,這就使得不需要將代碼從文件加載到內(nèi)存中。當(dāng)Dart處于ROM中或者DartDevice的文件存儲(chǔ)是以一些其它快速可讀存儲(chǔ)設(shè)備實(shí)現(xiàn)而不是以慢速的硬盤驅(qū)動(dòng)等實(shí)現(xiàn)時(shí),這種方法特別有利。
如果希望提高執(zhí)行速度,與將被運(yùn)行的再現(xiàn)程序相關(guān)的Dart的代碼部分,可以被加載到為保存和運(yùn)行DartContext的代碼分配的內(nèi)存中,并且內(nèi)存文件(圖26 697)或其等效函數(shù)可以被用于執(zhí)行實(shí)際的DartCode。
步驟12 在這里描述的特別有利的實(shí)施例和執(zhí)行過程中,DartTools200為MasterDart 230或任何其它的Dart 700(仍然可以包括初始構(gòu)造器)生成的Dart代碼,可以在初始構(gòu)造器程序位置開始執(zhí)行,在調(diào)用main()函數(shù)前調(diào)用該程序。開始執(zhí)行的代碼地址在RenditionsTable記錄的一個(gè)32位字中,其中的RenditionsTable記錄相應(yīng)于將運(yùn)行的再現(xiàn)程序示例。
步驟13 DartTools 200自動(dòng)地將BuiltinInstruction 659放在初始構(gòu)造器的最后,初始構(gòu)造器具有子函數(shù)值,這使得一旦第一次調(diào)用DartEngine.Process方法4003,則DartEngine設(shè)置起始執(zhí)行地址和用于MasterDart 230指令的連續(xù)執(zhí)行的對(duì)象示例指針。
根據(jù)本發(fā)明方法和計(jì)算機(jī)程序的特定實(shí)施例,這是創(chuàng)建和加載Dart的最后步驟(步驟13)。
Dart和Dart程序的動(dòng)態(tài)生成-創(chuàng)造法由Darts和其衍生的Darts連續(xù)地動(dòng)態(tài)地生成Darts和/或DartProcedures的能力是基于DartPlatform 50和Dart技術(shù)的系統(tǒng)和方法的更有效的特性之一。在整個(gè)系統(tǒng)中設(shè)計(jì)和構(gòu)造DartPlatform 50的實(shí)施例,以支持由以前的Darts連續(xù)地有效地生成Darts。用于實(shí)現(xiàn)上述的方法被稱為創(chuàng)造法。
例如,通過使用C++擴(kuò)展,DartSource 100可以包括在Darts中的再現(xiàn)程序的生成中被組合、匹配和共享的部分的說明,所述Darts是由初始MasterDart 230生成或直接地由其它DartTools生成的。
DartFramework 102的實(shí)施例固有地提供了用于指定再現(xiàn)程序,和將被包括在每個(gè)再現(xiàn)程序中的代碼、數(shù)據(jù)和部分的機(jī)制和方法。這就允許DartTools 200通過編譯器201和鏈接器202生成的對(duì)象的依賴樹進(jìn)行解析,以形成動(dòng)態(tài)地生成Darts和DartProcedures 4000所需要的代碼、數(shù)據(jù)和資源的有效數(shù)據(jù)庫(kù)。以類似的方式,MasterPlayer 203能夠通過在運(yùn)行時(shí)間可到達(dá)的數(shù)據(jù)、代碼、方法和功能跟蹤任何開始點(diǎn)的組合,從而有利地形成需要的信息,以生成僅包括需要的數(shù)據(jù)、代碼和資源的Darts。根據(jù)包括的再現(xiàn)程序開始點(diǎn)和數(shù)據(jù)值,自動(dòng)地從DartFormat圖像中排除不可到達(dá)的數(shù)據(jù)、代碼和內(nèi)容。
DartPlatform 50的其它機(jī)制可以被有利地用于限制需要的代碼和數(shù)據(jù)量,當(dāng)生成其它Darts 700或DartProcedures 4000時(shí),自動(dòng)地保存運(yùn)行的Dart的全部或選擇的數(shù)據(jù)狀態(tài),并作為上述的DartEngine的Dart加載步驟的一部分,自動(dòng)地重新加載全部或選擇的數(shù)據(jù)狀態(tài)。因?yàn)檫\(yùn)行的Darts的數(shù)據(jù)值和內(nèi)容是DartFormat圖像本身的一部分,因此它們?cè)谶\(yùn)行時(shí)易于被保存和存儲(chǔ),因此通常不需要生成用于最初構(gòu)造和建立代碼的Darts,所說最初構(gòu)造和建立代碼通常構(gòu)成許多類型的用戶為中心的應(yīng)用程序,其中對(duì)該應(yīng)用程序優(yōu)化和設(shè)計(jì)DartPlatform 50。例如,當(dāng)MasterDart230最初被加載時(shí),在設(shè)置在main()函數(shù)開始執(zhí)行前調(diào)用許多構(gòu)造器。對(duì)于多數(shù)C++生成的程序和本發(fā)明可以使用的其它不同的軟件或編程語言生成的程序來說也是如此。有利地,MasterDart 230可以利用BuiltinInstruction 659的嵌入函數(shù),在main()函數(shù)中保存最小的指令集,以訪問DartEngine的Save()。由于默認(rèn)地保存當(dāng)前數(shù)據(jù)值的完整圖像,并且當(dāng)加載保存的Dart 700時(shí)進(jìn)行恢復(fù),因此不需要在保存的Dart 700中運(yùn)行構(gòu)造代碼。因此,MasterDart 230能夠引導(dǎo)保存過程,從而執(zhí)行已經(jīng)運(yùn)行的最初構(gòu)造的連續(xù)線性范圍的代碼不包括在生成的Dart中的任何再現(xiàn)程序中。以這種方式,生成的Dart可能比生成它的MasterDart 230明顯較小。它還可能比類似功能的傳統(tǒng)的應(yīng)用程序可執(zhí)行圖像小很多,其中的可執(zhí)行圖像保存所有需要的靜態(tài)構(gòu)造器和建立代碼,以當(dāng)無論何時(shí)開始應(yīng)用程序時(shí),重新建立數(shù)據(jù)狀態(tài)。
不需要包括初始構(gòu)造代碼正是用于優(yōu)化生成的Darts的大小、復(fù)雜度,和計(jì)算要求的許多其它機(jī)制和方法之一。與傳統(tǒng)的機(jī)制和方法相比,這些優(yōu)化通常產(chǎn)生更小的大小和更低的復(fù)雜度和計(jì)算要求。
當(dāng)符合DartFormat 300,在MasterPlayer 203上運(yùn)行的MasterDart 230或任何Dart 700生成Dart或Darts集時(shí),執(zhí)行數(shù)據(jù)成員消除法。通過MasterPlayer 203的用戶接口或在MasterPlayer 203上播放的Dart的執(zhí)行,可以選擇任何適當(dāng)?shù)脑佻F(xiàn)程序?qū)ο笞蛹?,以被包括在將被生成的Dart 700中。
通常,僅將所選擇的再現(xiàn)程序需要的代碼和數(shù)據(jù)的一些部分放入生成的Dart(s)中。這是由DartTools 200和MasterPlayer 203實(shí)現(xiàn)的,為此要通過解析來自編譯器201和鏈接器202生成的圖元數(shù)據(jù)的對(duì)象的關(guān)系,并且通過跟蹤運(yùn)行時(shí)間數(shù)據(jù)成員、程序方法調(diào)用和實(shí)際的指針值,來發(fā)現(xiàn)所有數(shù)據(jù)成員、代碼成員,和每個(gè)類的方法,然后動(dòng)態(tài)地從對(duì)象示例排除并訪問代碼所有的引用參考值和數(shù)據(jù)成員、結(jié)構(gòu)成員和方法成員的空間,而這些是不能通過運(yùn)行從開始的Process()成員函數(shù)中選擇的再現(xiàn)程序達(dá)到的。因此,一旦對(duì)于將被生成的Dart(s)700確定所有的開始位置,則根據(jù)運(yùn)行在MasterPlayer 203上的Dart的實(shí)際運(yùn)行時(shí)間設(shè)置,有效地優(yōu)化所有類信息。同時(shí)有利地,從再現(xiàn)程序的起始方法不能到達(dá)的所有設(shè)置代碼不包括在生成的Darts中。
通常以用戶為中心的應(yīng)用程序的重要部分,例如主要為其設(shè)計(jì)DartPlatform的部分,包括用于為用戶接口圖像設(shè)置初始屏幕位置、初始化數(shù)據(jù)結(jié)構(gòu)、構(gòu)建連接對(duì)象的圖形、生成表等的代碼和數(shù)據(jù)。DartFramework 102在多數(shù)類定義中包括Setup()方法,Setup()方法將僅被MasterRendition或來自其它Setup()調(diào)用的嵌套調(diào)用所調(diào)用。有利地,如果MasterRendition不被選擇為包括在生成的Dart(s)700中,則Setup()方法和其它方法和函數(shù),以及不會(huì)另外地從所選擇的再現(xiàn)程序達(dá)到的所有類的數(shù)據(jù)成員或靜態(tài)數(shù)據(jù)元素,都不會(huì)被包括在生成的Dart(s)700中。有利地,進(jìn)行優(yōu)化的Setup()調(diào)用不是特殊的,因?yàn)椴荒軓乃x擇的運(yùn)行時(shí)間起始點(diǎn)到達(dá)的任何代碼、數(shù)據(jù)、方法等不會(huì)被DartTools 200包括在生成的Dart(s)700中。
收集資源程序收集資源程序或方法是將被用在DartFramework 102中以消除生成的Dart(s)700中的不必要的代碼和數(shù)據(jù)的另一個(gè)程序。來自對(duì)該MasterRendition方法的調(diào)用的Setup()方法或調(diào)用樹可以調(diào)用與GatherResouces()相關(guān)的方法和函數(shù)的體系結(jié)構(gòu),以當(dāng)MasterDart 230在MasterPlayer 203上運(yùn)行時(shí),提供用戶接口或動(dòng)態(tài)收集數(shù)據(jù)、內(nèi)容或其它資源。
還應(yīng)該注意的是,結(jié)合這里的描述,DartTools 200可以在MasterDart230中包括許多部分,以保存符號(hào)表、類定義、MasterPlayer 203執(zhí)行剛剛描述的優(yōu)化所需要的其它圖元數(shù)據(jù)。如果這些部分沒有被包括在任何所選擇的再現(xiàn)程序中,則它們將有利地不會(huì)被包括在生成的Dart(s)700中。
一些選擇的MasterDarts的其它用途對(duì)于MasterDarts 230,包括大小和復(fù)雜度比將被生成的Dart應(yīng)用程序700大得多的DartPlatform 50代碼和數(shù)據(jù)是通常的(但不是必須的)。這種額外的代碼用于執(zhí)行存取、請(qǐng)求、初始化、用戶接口、表的預(yù)計(jì)算、組合各個(gè)部分,等等。因此MasterDart(s)230一旦被編譯器201編譯并被鏈接器202鏈接,就能被程序員或非編程人員使用和重新使用,以利用新的參數(shù)、資源、或可能隨時(shí)間變化或根據(jù)其它情況(例如庫(kù)存報(bào)價(jià))變化的其它數(shù)據(jù)生成定制的Dart(s)700,以在被鏈接器202鏈接后,通過在MasterPlayer 203上運(yùn)行MasterDart 230或者自動(dòng)地或者應(yīng)用戶的請(qǐng)求,生成非常寬變化范圍的Dart應(yīng)用程序。
動(dòng)態(tài)地重新配置、生成、組合,以及優(yōu)化各部分現(xiàn)在應(yīng)該知道MasterDarts 230和由其它Darts生成的Darts能夠動(dòng)態(tài)地重新配置、生成、組合,以及優(yōu)化各部分的選擇和各部分中的部分,以生成適于新的功能和目標(biāo)傳輸和環(huán)境的繼承的子女Darts。
根據(jù)contextType參數(shù)加載各部分一旦已經(jīng)使用RenditionsTable加載Dart 230的再現(xiàn)程序,其中再現(xiàn)程序引用RenditionsTables,其中對(duì)于每一個(gè)再現(xiàn)程序每個(gè)RenditionsTable引用被包括的部分,根據(jù)contextType參數(shù)加載需要被加載的所有部分。DartInstructionSet的BuiltinInstruction實(shí)現(xiàn)的DartInstructionSet和擴(kuò)展有利于由任何Dart 700或Dart程序4000有效地重新配置和生成高度優(yōu)化的Darts 700或DartProcedures 4000。在一個(gè)優(yōu)選執(zhí)行過程中,僅對(duì)于那些在加載中具有要求的contentType專用的處理的部分,設(shè)置PartTableEntry記錄的標(biāo)記參數(shù)中的標(biāo)記位。
MasterDart通??赡馨ㄓ糜谒写a的完整的代碼圖像,其中所有的代碼可以在開始MainCode部分中的MasterRendition對(duì)象示例時(shí)得到。類似地,MasterDart通常可能包括用于所有數(shù)據(jù)的完整的數(shù)據(jù)圖像,其中所有的數(shù)據(jù)可以在開始MasterRendition對(duì)象示例時(shí)得到。這些中的許多將被從生成的DartFormat圖像中刪除。
DartFramwork、DartRuntime,以及DartEngine現(xiàn)在將更完整地描述DartFramwork 102、DartRuntime 8000,以及DartEngine 600。盡管應(yīng)該知道使用多數(shù)任何運(yùn)行時(shí)間能夠成功地構(gòu)建和運(yùn)行大多數(shù)任何的C++程序,其中的C++程序可能執(zhí)行,或者在任何標(biāo)準(zhǔn)的C++工具集上實(shí)現(xiàn),但是DartFramwork有效地利用被構(gòu)造為DartEngine的功能,某種DartRuntime操作。DartFramwork的一個(gè)主要的能力主要是來自于其緊密的集成度和使用作為DartEngine的一部分實(shí)現(xiàn)的指令、機(jī)制、程序和函數(shù)。例如,由壓縮的JPEG文件或部分解壓縮和構(gòu)建位像,可以通過編譯來自JPEG標(biāo)準(zhǔn)例子(在互聯(lián)網(wǎng)上可以得到)的C++源代碼實(shí)現(xiàn),但是這種代碼的執(zhí)行可能比嵌入函數(shù)的簡(jiǎn)單使用慢得多,其中的嵌入函數(shù)采用BuiltInInstruction(在該文章的其它地方也被稱為BUILTIN_INSTRUCTION)來調(diào)用DartEngine方法,以當(dāng)為DartDevice的實(shí)際處理器編譯DartEngine源代碼時(shí),利用生成的本地代碼執(zhí)行JPEG解壓縮操作。
類似地,DartFramwork 102在DartPlatform 50的整個(gè)執(zhí)行中利用嵌入函數(shù)的生態(tài)系統(tǒng)或環(huán)境,例如,在一些實(shí)施例中包括但不限于實(shí)際的DartInstructionSet、DartRuntime 8000系統(tǒng)、通信子系統(tǒng)、事件處理系統(tǒng)、文件系統(tǒng)(參考圖26中的文件系統(tǒng)612)、圖形和輸入系統(tǒng)、電源管理系統(tǒng)、Dart組合壓縮和加密機(jī)制,以及解壓縮、存取、保護(hù)、數(shù)字權(quán)限管理和生成機(jī)制。
應(yīng)該知道,使以用戶為中心的函數(shù)的很好定義的廣集和集合是用被包括在任何或每個(gè)設(shè)備中的為本地處理器生成的代碼表示的,這樣的集合是有利的,并且在一些實(shí)施例中,是生成能夠?qū)⑵渥陨頂U(kuò)展到其它設(shè)備上的可移植的應(yīng)用程序所需要的函數(shù)和適配的關(guān)鍵。
特別地,應(yīng)該知道,盡管在理論上,任何圖靈機(jī)兼容的指令集能夠被用于生成任何其它代碼或?qū)崿F(xiàn)任何算法,但是實(shí)際上該方法永遠(yuǎn)不會(huì)如提供相對(duì)完整的平臺(tái)的緊密集成的平臺(tái)那樣進(jìn)行執(zhí)行、存儲(chǔ)、提供能量,或成本有效,并且以平臺(tái)專用的方式執(zhí)行必須的計(jì)算或存儲(chǔ)饑餓功能,如同DartInstructionSet的DartEngine處理。
通常,為了將設(shè)備看作Dart設(shè)備(DartDevice)400,應(yīng)該在該設(shè)備上安裝Dart播放器,例如DartPlayer 500,并且在授權(quán)的設(shè)備上應(yīng)該支持至少一個(gè)通信機(jī)制。DartPlayer 500是設(shè)備專用的可執(zhí)行單元,用于提供啟動(dòng)、初始化、給予處理器控制并關(guān)閉DartEngine 600所需要的環(huán)境和可選的用戶接口。DartEngine 600被構(gòu)建為兩個(gè)互相連接的類(便攜式playerBase類和設(shè)備專用的halBase類)的示例。當(dāng)DartEngine 600被移植到新的設(shè)備上時(shí),必須構(gòu)建設(shè)備專用的DartPlayer 500應(yīng)用程序,以封裝DartEngine的執(zhí)行,并且必須構(gòu)建設(shè)備專用的halBase導(dǎo)出類,以提供從獨(dú)立于DartEngine部分的平臺(tái)到實(shí)際的設(shè)備操作系統(tǒng)和/或硬件的橋梁。
在圖23中表示DartPlayer 500主循環(huán)流程。首先調(diào)用DartEngine.Init()6000函數(shù),如果存在參數(shù)的話,則加載識(shí)別Dart 700的參數(shù)。接著在循環(huán)中調(diào)用DartEngine.Process()(圖23 4002、圖24 6000),直到返回負(fù)值,使得調(diào)用DartPlayer.Uninit(),并且關(guān)閉DartPlayer 500應(yīng)用程序。正的返回值使得在返回主循環(huán)之前,執(zhí)行值專用的DartPlayer處理(參照?qǐng)D23 4000所示)。
這種專用的DartPlayer處理包括釋放對(duì)可能在設(shè)備上運(yùn)行的其它應(yīng)用程序或處理的控制,根據(jù)電源管理值中止PlayerEngine線程,收集如鼠標(biāo)移動(dòng)和鍵盤按壓的輸入并將其轉(zhuǎn)換為對(duì)將事件800添加到DartEngine的EventQueue的調(diào)用(參照?qǐng)D15 8002和圖16 5000所示)。如果正的返回代碼值是被保留為表示Dart完成處理的值之一,則將調(diào)用DartProcess.Uninit()并且中斷Dart處理。例如,返回DONE正的返回代碼值是通常的方法,其中運(yùn)行的Dart將以信號(hào)表示其自己的結(jié)束。
在圖24中表示DartEngine.Init()的處理,用于調(diào)用包括引用被加載的Dart 700的DartEngine.Init()。當(dāng)環(huán)境不被激活并且沒有被加載的Dart 700時(shí),在調(diào)用DartEngine 600的情況下,DartEngine內(nèi)部的IdleProcedure將被加載到IdleContext中,而不是Dart 700被加載。在IdleContext中運(yùn)行的IdleProcedure由DartInstructionSet指令的循環(huán)構(gòu)成,這些指令執(zhí)行保持DartEngineEvents(圖23 4003)處理有效所需要的處理。在一個(gè)優(yōu)選執(zhí)行過程中,IdleProcedure簡(jiǎn)單地執(zhí)行實(shí)現(xiàn)對(duì)EngineEventProcessing函數(shù)的調(diào)用的指令(圖12和圖15 8002)。在一個(gè)優(yōu)選執(zhí)行過程中,DartPlayer 500的一個(gè)示例通常能夠以多個(gè)方式中的任何一個(gè),處理任何數(shù)量的執(zhí)行的Darts 700。一種方式是通過改變主循環(huán)400,在相同的運(yùn)行的本地處理器線程中調(diào)用單獨(dú)的循環(huán),或者通過生成任何數(shù)量的獨(dú)立的DartEngine 600示例,或者通過使用獨(dú)立的線程,或上述的任何組合。一種可選的方案是Dart被明確地加載,并作為subDart或運(yùn)行的雙親Dart的子女Dart運(yùn)行。這里subDart一旦作為被編譯和被鏈接的雙親Dart的一部分被加載,則通過事件處理單元的事件處理將被傳輸?shù)絪ubDart的事件處理單元。在優(yōu)選的執(zhí)行過程中,這些事件處理單元被稱為Gizmos,并且是DartFramework類Gizmo的示例。
GizmosDarts 700自身也能夠以串行的,或并行的,或高度協(xié)作的方式,在其它Darts 700上運(yùn)行,其中Darts作為其它Darts的處理體系結(jié)構(gòu)的一部分運(yùn)行。DartFramework 102主要由Gizmo 115導(dǎo)出的對(duì)象組成。根據(jù)子女Gizmo和雙親Gizmo指針的引用,以嚴(yán)格定義的線性順序有利地配置這些Gizmos(參照?qǐng)D18 10000所示)。該順序用于將Gizmos集中到互相連接的樹狀圖形中,所述樹狀圖形確定執(zhí)行順序和在訪問權(quán)限和屏幕視野、時(shí)間感,以及其它環(huán)境特征方面的關(guān)系。例如,雙親Gizmo能夠?yàn)樽优瓽izmos和其派生Gizmos改變時(shí)間和表觀時(shí)間變化速率,以控制其處理和速度。在圖18的例子中,通過嚴(yán)格地堅(jiān)持特定的處理順序,所有這些都變得更加易于以穩(wěn)定的方式實(shí)現(xiàn)。
圖18表示Gizmo 115導(dǎo)出的對(duì)象的體系結(jié)構(gòu)的例子,其中Gizmo 115導(dǎo)出的對(duì)象用于運(yùn)行幻燈片放映Dart 700應(yīng)用程序。重要的在于明白幻燈片放映Dart 700應(yīng)用程序利用DartEngine 600實(shí)現(xiàn)組成幻燈片放映Dart的代碼的DartInstructionSet指令。特別地,注意到使用面向DartDevice400的本地處理器和操作系統(tǒng)的標(biāo)準(zhǔn)的構(gòu)建工具編譯、鏈接,加載和運(yùn)行DartPlayer 500和DartEngine 600。正是DartEngine 600執(zhí)行由DartInstructionSet的指令構(gòu)成的幻燈片放映Dart 700的代碼,其中DartInstructionSet由DartTools 200生成。作為調(diào)用DartPlayer.Process()的調(diào)用的結(jié)果,當(dāng)基于DartInstructionSet的Menu.Process()方法開始在引擎上執(zhí)行時(shí),首先控制圖18所示的體系結(jié)構(gòu)頂層的菜單Gizmo,其中DartPlayer.Process()的調(diào)用使得DartEngine 600開始處理Dart 700的指令。注意到在優(yōu)選的執(zhí)行過程中,體系結(jié)構(gòu)頂層的Gizmo是從圖11中的基Gizmo類繼承的再現(xiàn)程序?qū)ο箢悺?br>
在圖18的例子中,每個(gè)圓角框表示Gizmo導(dǎo)出的對(duì)象,用于處理幻燈片放映應(yīng)用程序的用戶接口單元。用于選擇不同功能的處理用戶接口的菜單包括添加幻燈片、開始幻燈片的自動(dòng)排序、選擇幻燈片過渡效果,等等。可以從菜單中選擇的一個(gè)選項(xiàng)是觀看幻燈片放映。在該例子中觀看可以是例如包括超鏈接索引觀看,其中用戶能夠點(diǎn)擊幻燈片的名稱和描述;可以是縮圖索引觀看,其中用戶能夠點(diǎn)擊幻燈片的小的縮圖;可以是幻燈片放映觀看,其中幻燈片占用大部分屏幕,并且在屏幕上箭頭、物理按鈕或鼠標(biāo)或畫筆被用于向前和向后移動(dòng)通過幻燈片的結(jié)構(gòu)。菜單僅有一個(gè)子女Gizmo導(dǎo)出的對(duì)象,但是當(dāng)用戶從菜單中選擇視圖時(shí),指向子女Gizmo導(dǎo)出的對(duì)象的指針被變換到支持所選擇的視圖的Gizmo。因此,有利地,對(duì)用戶如何觀看和導(dǎo)航幻燈片進(jìn)行改變所需要的操作是改變菜單Gizmo中的一個(gè)指針。
在該例子中,每個(gè)視圖具有指向三個(gè)子女Gizmo 115導(dǎo)出的對(duì)象的指針的列表,在圖18中被表示在它們下面的一行中。子女Gizmo都是簡(jiǎn)單的靜止圖片或幻燈片,以三個(gè)視圖的每個(gè)子女指針列表中指針的從左到右的順序表示。Gizmo導(dǎo)出的對(duì)象的子女指針列表被標(biāo)記為“3”,以從左到右的順序指向三個(gè)子女Gizmo。被標(biāo)記為“4”的對(duì)象表示Gizmo115導(dǎo)出的對(duì)象,Gizmo 115導(dǎo)出的對(duì)象封裝了獨(dú)立生成的運(yùn)行的subDart,作為一個(gè)幻燈片包括在幻燈片放映中,但是實(shí)際上能夠包括其自己的幻燈片體系結(jié)構(gòu),其中每個(gè)幻燈片自身能夠包括任何圖片、視圖或Darts 700和所有功能。被標(biāo)記為“7”和“9”的框包括Gizmo 115導(dǎo)出的對(duì)象,這個(gè)Gizmo 115導(dǎo)出的對(duì)象顯示實(shí)時(shí)回放的視頻/音頻幻燈片。應(yīng)該注意到,對(duì)于該幻燈片,所有Gizmo 115導(dǎo)出的對(duì)象進(jìn)行的事件處理和被包括的Dart回放Gizmos 115的Darts 700以指向子女和雙親的指針產(chǎn)生的圖形的正確的順序接收處理控制。在圖18的框內(nèi)表示的數(shù)字值的順序中明確地表示了該順序。
由于幾乎Gizmo 115導(dǎo)出的對(duì)象的所有的處理是通過對(duì)其Process()方法的調(diào)用,指針指向作為參數(shù)進(jìn)行處理的事件,因此任何雙親類可以生成或改變其子女類可見的事件的參數(shù)或類型,或者能夠決定是否將被處理的事件傳遞到子女類。因此實(shí)際上,任何雙親類能夠?yàn)槠渌凶优愒O(shè)置環(huán)境。例如,包括Gizmo對(duì)象的Dart不需要知道它僅被給予其雙親類可用屏幕的一部分。類似地,當(dāng)Gizmo 115導(dǎo)出的對(duì)象訪問GetTime()方法時(shí),如果雙親類表示它是子類的時(shí)間源,則它將自動(dòng)地從其雙親類請(qǐng)求時(shí)間,而不是從嵌入的對(duì)引擎的調(diào)用中請(qǐng)求。雙親類能夠控制其子女類的運(yùn)行時(shí)間環(huán)境,這是DartFramework 200和DartRuntime 8000的非常有效的特征。這就使得易于構(gòu)造例如,幻燈片放映的放映,收集剛剛收集Darts的Darts,允許用戶選擇將運(yùn)行的Darts,能夠從打印機(jī)或其它Dart激活的設(shè)備得到Dart 700形式的控制面板,并在嵌入提取的Dart的方形中運(yùn)行。
DartEngine體系結(jié)構(gòu)-傳遞控制DartEngine 600的體系結(jié)構(gòu)有助于將控制從Dart容器Gizmo 115導(dǎo)出的對(duì)象傳遞到包含的Dart體系結(jié)構(gòu)的最頂層Gizmo 115,這是通過包括BUILTIN_INSTRUCTION函數(shù)以允許包含的Gizmo 115導(dǎo)出的對(duì)象為包含的Dart 700創(chuàng)建DartContext,使Dart 700被加載到該環(huán)境中,并接著通過DartEngine的BUILTIN_INSTRUCTION調(diào)用體系結(jié)構(gòu)的最頂層Gizmo 115的包含的Dart的Process(),來調(diào)用包含的Dart 700的Process()實(shí)現(xiàn)的。
與調(diào)用一起,管理和傳遞處理到包含的Darts 700,DartEngine 600也使得從容器Dart 700的代碼到被包含的Dart的代碼的轉(zhuǎn)換更有效,這是通過允許包括指向事件800的指針的EventProcessing結(jié)構(gòu)示例被包含的Dart處理,并直接通過使用指向有效地在所有DartContexts之間共享的內(nèi)存的特定指針(參照?qǐng)D32指針類型11),處于可存取的內(nèi)存中。這就允許在Darts 700之間有效地傳遞事件800和其它參數(shù),其中每個(gè)Dart 700具有另外地分離的地址空間。
當(dāng)從一個(gè)Dart 700調(diào)用另一個(gè)Dart 700時(shí),DartEngine記憶調(diào)用Dart的DartContext,并接著開始在被調(diào)用的Dart的DartContext外進(jìn)行操作,直到當(dāng)引擎堆棧處于與最初調(diào)用相同的位置時(shí),調(diào)用的Dart的DartContext執(zhí)行DoneInsturction為止。因此DartEngine 600使得Darts 700能夠容易地和有效地運(yùn)行運(yùn)行Darts 700的Darts 700(作為Gizmo 115導(dǎo)出的體系結(jié)構(gòu)的部分),如同它們作為一個(gè)Dart 700由DartTools生成。包含Darts能夠提供其想為被包含的Darts 700提供的任何環(huán)境,正如同其能夠?yàn)樽优瓽izmo 115導(dǎo)出的對(duì)象提供一樣。
可能假設(shè),將控制簡(jiǎn)單地向下傳遞通過整個(gè)體系結(jié)構(gòu)將浪費(fèi)調(diào)用Gizmo 115導(dǎo)出的對(duì)象的處理器時(shí)間,該導(dǎo)出的對(duì)象不需要進(jìn)行處理,例如表示靜止圖片的Gizmo 115導(dǎo)出的對(duì)象不需要被重新顯示。在優(yōu)選的實(shí)施例中,用于刪除Gizmo 115導(dǎo)出的對(duì)象調(diào)用的樹的系統(tǒng)可能會(huì)對(duì)這種問題產(chǎn)生不良影響。每個(gè)EventType 801的值是由正好設(shè)置一位的類型標(biāo)記字段和將被屬于該類型處理的用于特定的事件800的事件子類型字段組成。在一個(gè)實(shí)施例中,存在相應(yīng)于EventType 801的類型標(biāo)記的兩組標(biāo)記。如果Gizmo導(dǎo)出的對(duì)象本身需要控制該類型的事件,則設(shè)置一個(gè)標(biāo)記,如果其任何繼承對(duì)象需要看到事件801的特定類型則設(shè)置另一個(gè)標(biāo)記。在一個(gè)實(shí)施例中,在每次通過體系結(jié)構(gòu)時(shí),Gizmo 115導(dǎo)出的對(duì)象為其自身設(shè)置標(biāo)記,并收集其調(diào)用的所有子女對(duì)象設(shè)置的標(biāo)記的邏輯OR的集合。因此根據(jù)將被處理的事件800的類型,Gizmo總是知道其子女Gizmo是否需要被調(diào)用或不被調(diào)用。EventsTypes的集合定義類型以有效地刪除不必要的調(diào)用。例如,事件800需要處理用戶的輸入,不需要向下傳遞通過Gizmo 115導(dǎo)出的對(duì)象的樹,該樹不包括需要處理用戶的輸入的任何Gizmo 115導(dǎo)出的對(duì)象。DartEngine.Process()處理在圖23、圖15和圖16的實(shí)施例中表示DartEngine.Process()處理的例子。這就驅(qū)動(dòng)了DartDartInstructionSet指令611的主要執(zhí)行。執(zhí)行主循環(huán)以從Dart指令流得到下一條指令,解碼指令的操作碼和源字段和目的字段,檢查被尋址的源參數(shù)和目的參數(shù)沒有處于Dart的DartContext的數(shù)據(jù)區(qū)域之外,接著跳到執(zhí)行指令的操作字段調(diào)用的函數(shù)的DartPlayer600方法和函數(shù)的設(shè)備處理器本地代碼。如果指令的源字段或目的字段指定處于被允許存取范圍之外的參數(shù),則根據(jù)操作碼不進(jìn)行調(diào)度,并且正好在DartPlayer.Process()調(diào)用后返回控制,特定的負(fù)返回值表示特定的違反規(guī)定的存取。這就使得DartPlayer 500調(diào)用DartPlayer.Uninit()并以錯(cuò)誤信息或其它可選的指示結(jié)束Dart的執(zhí)行。
圖22表示DartPlayer 500、DartEngine 600和硬件抽象層(HAL)650的關(guān)系和其一些功能。HAL 650是播放器的一部分,它被實(shí)現(xiàn)為從halBase類導(dǎo)出的類,用于封裝所需要的設(shè)備專用存取函數(shù)。有利地,將被要求執(zhí)行的halBase函數(shù)的數(shù)量和復(fù)雜度降低到最小,從而能夠快速和容易地移植到新的DartDevice 400。halBase設(shè)計(jì)的最低要求方法還有助于保證分別執(zhí)行的DartEngine 600能夠獲得高度的兼容性,因?yàn)樗鼈児蚕砹硕鄶?shù)執(zhí)行源代碼函數(shù)。因此將盡可能多的函數(shù)移動(dòng)到DartPlayer 500的可移植設(shè)備的獨(dú)立部分是非常有益的。便于移植以及高度的兼容性是DartPlatform 50實(shí)施例的重要特征,通過在任何可能的時(shí)候使用可移植代碼和在每個(gè)設(shè)備上使用相同的源代碼,可以部分地實(shí)現(xiàn)上述特征。因此盡管對(duì)每個(gè)不同類型的設(shè)備來說,通常需要重新編譯和鏈接,但是大多數(shù)函數(shù)將從與其它設(shè)備相同的源代碼編譯,希望其它設(shè)備能夠與設(shè)備協(xié)作地工作。
體系結(jié)構(gòu)的電源管理特征電源管理盡管是可選的,但是它是在DartPlatform 50體系結(jié)構(gòu)的許多部分中運(yùn)行的另一個(gè)特征。當(dāng)DartPlayer 500調(diào)用DartEngine.Process4003方法時(shí),通過將保存需要的毫秒單位(或任何其它單位)的響應(yīng)時(shí)間的變量設(shè)置為可以表示的最大值,來開始Gizmo導(dǎo)出的對(duì)象體系結(jié)構(gòu)的執(zhí)行。由于事件是通過排序的Gizmo 115導(dǎo)出的對(duì)象的樹處理的,因此每個(gè)對(duì)象采用BUILTIN_INSTRUCTION來告訴DartEngine600直到它需要再次調(diào)用Process()方法,還需要等待多長(zhǎng)時(shí)間。
例如,對(duì)于顯示運(yùn)動(dòng)視頻的對(duì)象,如果是視頻的幀速率的話,可能是三十分之一秒。DartEngine 600收集BUILTIN_INSTRUCTION報(bào)告的最低響應(yīng)時(shí)間要求,BUILTIN_INSTRUCTION實(shí)現(xiàn)收集作為參數(shù)傳遞的最小響應(yīng)時(shí)間要求。在完整地通過Gizmo樹形的體系結(jié)構(gòu)后,當(dāng)控制返回到DartPlayer 500時(shí),DartPlayer 500或DartEngine 600能夠利用該信息阻擋其線程或者另外地用信號(hào)表示至少在所示的時(shí)間內(nèi)不需要電源。通常DartPlayer 500將利用等于收集的最小響應(yīng)時(shí)間的超時(shí)來阻擋其線程。如果新的輸入表示需要被Dart 700處理,則該阻擋也將結(jié)束。應(yīng)該知道在許多情況下,運(yùn)行在處理器上的應(yīng)用程序是在所有時(shí)間都知道真正的響應(yīng)時(shí)間要求的唯一實(shí)體,可以以這種方式,即易于使DartPlayer 500接收該信息并利用該信息極大地降低設(shè)備的電源和能量消耗要求,而不會(huì)極大地降級(jí)動(dòng)態(tài)應(yīng)用程序的性能,來有利地設(shè)計(jì)和生成Dart應(yīng)用程序。
事件處理排隊(duì)機(jī)制在EngineEventProcessing(圖15 8002、圖16 5000)處理期間執(zhí)行的事件處理排隊(duì)機(jī)制也可以跟蹤或監(jiān)視異步處理(圖16虛線框的內(nèi)容)所需要的響應(yīng)時(shí)間,其中的異步處理不是Gizmo.Process(EventInfo*)調(diào)用體系結(jié)構(gòu)的一部分。這樣,有效的Darts報(bào)告的最小的響應(yīng)時(shí)間要求反映了Gizmo樹的線性任務(wù)分配執(zhí)行的主流同步的Dart應(yīng)用程序處理,和DartEngine 600的事件處理部分控制的異步處理。
安全性和完整性-在指令解碼過程中執(zhí)行檢查通過使用在解碼DartInstructionSet的指令時(shí)執(zhí)行的檢查,至少部分地保證DartPlatform 50的安全性、完整性和穩(wěn)定性。數(shù)據(jù)和指令的源字段的地址被引擎檢測(cè),以保證它們指向正在執(zhí)行的Darts范圍內(nèi)的數(shù)據(jù),根據(jù)所運(yùn)行的DartContext,所述范圍是有效的可存取的數(shù)據(jù)區(qū)域。類似地,Dart應(yīng)用程序和組成應(yīng)用程序的DartInstructionSet指令限于僅存取屬于運(yùn)行的Dart的物理存儲(chǔ)器。這是為了防止惡意的或無效的Dart有能力存取私人數(shù)據(jù)或不應(yīng)被運(yùn)行的Dart存取的存儲(chǔ)資源。
硬件抽象層(HAL)文件系統(tǒng)命名規(guī)定保證Dart應(yīng)用程序不能指定其合法范圍之外的文件(但是可看到可選的研究過的例外)。當(dāng)為例如打開或刪除的操作指定文件時(shí),Dart應(yīng)用程序不能指定完整的文件路徑,而僅是locationId和數(shù)字,或者locationId和終端名稱字符串,如圖28 5010所示。這樣,在HAL中可存取的物理存儲(chǔ)器限于圖28 5020中表示的位置。僅根據(jù)指定文件的這些參數(shù),由HAL決定執(zhí)行打開、關(guān)閉、讀出、寫入、定位、重命名以及得到位置操作。在HAL執(zhí)行的沙箱外不進(jìn)行存取的一個(gè)有意的但是可選的例外是在HAL中可以可選地支持相應(yīng)于USER_SPECIFIED_LOCATION的locationId,以提供對(duì)Darts環(huán)境限制之外的文件的存取。由HAL決定何時(shí)打開、刪除或重命名文件,以明確地提示用戶選擇文件。雖然僅有用戶的參與所給予不明確的同意,但是這允許應(yīng)用程序輸入和輸出文件。
盡管已經(jīng)參考一些特定實(shí)施例描述了本發(fā)明的結(jié)構(gòu)、方法、裝置、計(jì)算機(jī)程序,以及計(jì)算機(jī)程序產(chǎn)品,但是該描述用于解釋本發(fā)明的,而不應(yīng)看作是對(duì)本發(fā)明的限制。所屬領(lǐng)域技術(shù)人員可以進(jìn)行各種修改,而不脫離隨附的權(quán)利要求限定的本發(fā)明的真正精神和范圍。這里引用的參考文獻(xiàn)被包含在此以作參考。
權(quán)利要求
1.一種用于運(yùn)行在源設(shè)備上的軟件應(yīng)用程序招募設(shè)備組的方法,所述方法包括以下步驟通過至少一個(gè)通信鏈接,將可操作地尋找具有需要的資源或能力的設(shè)備的檢驗(yàn)程序發(fā)送到不同于所述初始源設(shè)備的至少一個(gè)可到達(dá)設(shè)備,所述檢驗(yàn)程序包括以可執(zhí)行的形式編碼的檢驗(yàn)程序指令,所述的可執(zhí)行的形式是所述初始源設(shè)備和所述檢驗(yàn)程序?qū)⒌竭_(dá)的所述設(shè)備所共用的;直接或間接地通過通信鏈接,在所述初始設(shè)備上接收來自每個(gè)所述可到達(dá)設(shè)備的應(yīng)答響應(yīng);通過在所述初始設(shè)備上執(zhí)行的程序,分析所接收的來自所有發(fā)出響應(yīng)的可到達(dá)設(shè)備的應(yīng)答,以確定識(shí)別所述初始源設(shè)備和所述發(fā)出響應(yīng)的可到達(dá)設(shè)備的能力和資源的組合的利用計(jì)劃,以最佳地實(shí)現(xiàn)所述軟件應(yīng)用程序的目的;以及根據(jù)所述被確定的利用計(jì)劃,通過在所述初始設(shè)備上執(zhí)行的應(yīng)用程序,將可執(zhí)行代碼、數(shù)據(jù)、內(nèi)容,和/或Dart中的至少一個(gè)分配到被識(shí)別為具有需要的資源或能力的每個(gè)所述可到達(dá)設(shè)備中的至少一個(gè)上。
2.一種用于招募設(shè)備組的方法,所述方法包括以下步驟在候選設(shè)備上接收并執(zhí)行可操作的檢驗(yàn)程序,以確定接收的可到達(dá)的候選設(shè)備是否具有另一個(gè)通過通信鏈接進(jìn)行招募的設(shè)備所需要的資源或能力,所述檢驗(yàn)程序包括以可執(zhí)行的形式編碼的檢驗(yàn)程序指令,所述的可執(zhí)行的形式是所述接收設(shè)備和所述進(jìn)行招募的設(shè)備所已知的;對(duì)于所述接收的檢查程序識(shí)別所述源設(shè)備,并發(fā)送對(duì)于所述源設(shè)備狀態(tài)和關(guān)于所述接收的可到達(dá)設(shè)備是否有權(quán)使用被確定為所述初始源設(shè)備需要的資源或能力或資源和能力組的信息;以及當(dāng)所述源設(shè)備確定所述可到達(dá)的設(shè)備具有形成一個(gè)設(shè)備組以實(shí)現(xiàn)所述應(yīng)用程序的目的所需要的資源或能力的情況下,從所述資源、設(shè)備、進(jìn)行招募的設(shè)備,或另一個(gè)候選設(shè)備接收可執(zhí)行的代碼、數(shù)據(jù)、內(nèi)容,和/或Dart中至少之一。
3.一種用于招募設(shè)備組的方法,所述方法包括以下步驟(a)通過至少一個(gè)通信鏈接,從初始源設(shè)備將可操作地尋找具有需要的資源或能力的設(shè)備的檢查程序發(fā)送到不同于所述初始源設(shè)備的至少一個(gè)可到達(dá)的設(shè)備,所述檢查程序包括以可執(zhí)行的形式編碼的檢查程序指令,所述的可執(zhí)行的形式是所述初始源設(shè)備和所述檢查程序?qū)⒌竭_(dá)的所述設(shè)備所共用的;(b)接收并在每個(gè)所述可到達(dá)的設(shè)備上執(zhí)行所述接收的檢查程序,以確定是否存在所述初始源設(shè)備所需要的所述可到達(dá)設(shè)備的資源或能力的至少之一;(c)至少當(dāng)所述可到達(dá)設(shè)備有權(quán)使用被識(shí)別為所述初始源設(shè)備所需要的資源或能力時(shí),向所述初始源設(shè)備發(fā)送應(yīng)答;(d)直接或間接地通過通信鏈接,接收來自每個(gè)所述可到達(dá)設(shè)備的所述應(yīng)答;(e)通過在所述初始設(shè)備上執(zhí)行的程序,分析所接收的來自所有發(fā)出響應(yīng)的可到達(dá)設(shè)備的應(yīng)答,以確定識(shí)別所述初始源設(shè)備和所述發(fā)出響應(yīng)的可到達(dá)設(shè)備的能力和資源的組合的利用計(jì)劃,以最佳地實(shí)現(xiàn)所述軟件應(yīng)用程序的目的;以及(f)根據(jù)所述被確定的利用計(jì)劃,通過在所述初始設(shè)備上執(zhí)行的應(yīng)用程序,將可執(zhí)行代碼、數(shù)據(jù)、內(nèi)容,和/或Dart中的至少一個(gè)分配到被識(shí)別為具有需要的資源或能力的每個(gè)所述可到達(dá)設(shè)備中的至少一個(gè)上。
4.如權(quán)利要求3所述的方法,其進(jìn)一步包括通過所述至少一個(gè)可到達(dá)的設(shè)備接收所述分配的可執(zhí)行代碼、數(shù)據(jù)、內(nèi)容,和/或Dart中至少之一。
5.如權(quán)利要求3所述的方法,其中所述方法進(jìn)一步包括與所述至少一個(gè)可到達(dá)的設(shè)備進(jìn)行互操作以實(shí)現(xiàn)至少一部分所述初始設(shè)備應(yīng)用程序的目的,其中所述可執(zhí)行代碼、數(shù)據(jù)、內(nèi)容,和Dart中至少之一被分配到所述至少一個(gè)可到達(dá)的設(shè)備。
6.如權(quán)利要求3所述的方法,其中所述方法進(jìn)一步包括每個(gè)可到達(dá)的設(shè)備作為第二初始源設(shè)備,在所述初始設(shè)備和可到達(dá)的設(shè)備上傳播可執(zhí)行代碼、數(shù)據(jù)、內(nèi)容,和/或Dart,可選地還要傳播存在于所述可到達(dá)設(shè)備上的所述應(yīng)用程序代碼、數(shù)據(jù)、內(nèi)容,和/或Dart,進(jìn)一步又按照需要遞推地傳播到以前到達(dá)的和編組的設(shè)備可以到達(dá)的其它設(shè)備上,以按照需要或要求將所述應(yīng)用程序擴(kuò)展到其它可到達(dá)的設(shè)備上,直到達(dá)到實(shí)現(xiàn)所述初始源設(shè)備應(yīng)用程序的所述目的所需要的設(shè)備和資源或能力的所有的或預(yù)定標(biāo)準(zhǔn)為止,以有效地形成更大的完整的設(shè)備組;以及根據(jù)所述初始設(shè)備應(yīng)用程序的要求和需要,從所述初始設(shè)備和可到達(dá)設(shè)備組并在其之間分配可執(zhí)行代碼、數(shù)據(jù)、內(nèi)容,和/或Dart,以執(zhí)行所述要求的或需要的操作和資源存取,以通過執(zhí)行代碼和交換實(shí)現(xiàn)和/或協(xié)調(diào)所述操作所需要的任何可執(zhí)行代碼、數(shù)據(jù)、內(nèi)容,和/或Dart,來實(shí)現(xiàn)所述初始設(shè)備應(yīng)用程序的所述目的,其中所述的操作在所述設(shè)備組上執(zhí)行以實(shí)現(xiàn)所述初始應(yīng)用程序的所述目的。
7.如權(quán)利要求3所述的方法,其中所述初始源設(shè)備直接從最初到達(dá)的設(shè)備接收所述應(yīng)答,所述最初到達(dá)的設(shè)備是所述初始設(shè)備向其發(fā)送所述招募消息的設(shè)備,或者間接地以串行或遞推的方式通過一個(gè)或多個(gè)中間可到達(dá)的設(shè)備從另一個(gè)可到達(dá)的設(shè)備接收所述應(yīng)答。
8.如權(quán)利要求3所述的方法,其中當(dāng)所述可到達(dá)的設(shè)備不能使用被確定為所述初始源設(shè)備需要的資源或能力時(shí),也向所述初始源設(shè)備發(fā)送所述應(yīng)答。
9.如權(quán)利要求3所述的方法,其中到所述初始源設(shè)備的所述應(yīng)答是簡(jiǎn)單的參數(shù),所述參數(shù)標(biāo)識(shí)所述可到達(dá)的設(shè)備本身擁有或可以使用(例如,真或邏輯“1”)或本身不擁有或不能使用(例如,假或邏輯“0”)被確定為所述初始源設(shè)備需要的所述資源或能力。
10.如權(quán)利要求3所述的方法,其中到所述初始源設(shè)備的所述應(yīng)答包括DartEvent、Dart的一部分、數(shù)據(jù)、內(nèi)容、可執(zhí)行程序、一個(gè)Dart、多個(gè)Dart,以及上述任何組合中之一。
11.如權(quán)利要求3所述的方法,其中到所述初始源設(shè)備的所述應(yīng)答包括通過所述通信協(xié)議識(shí)別對(duì)于所述初始設(shè)備的所述特定的可到達(dá)設(shè)備的資源和/或能力的返回?cái)?shù)據(jù)或內(nèi)容。
12.如權(quán)利要求3所述的方法,其中所述檢查程序包括檢查所述初始源設(shè)備需要的至少一個(gè)特別確定的資源或能力,以實(shí)現(xiàn)至少部分地在所述初始源設(shè)備上執(zhí)行的所述應(yīng)用程序任務(wù)的所述目的的指令。
13.如權(quán)利要求3所述的方法,其中所述方法至少部分地被編碼為計(jì)算機(jī)程序產(chǎn)品的軟件應(yīng)用程序執(zhí)行,其中所述軟件應(yīng)用程序產(chǎn)品在設(shè)備組上招募并有效地運(yùn)行應(yīng)用程序。
14.如權(quán)利要求3所述的方法,其中所述方法有效地連接并接著允許控制所述進(jìn)行招募的和被招募的設(shè)備的操作,如同這些設(shè)備是具有所有所述進(jìn)行招募的和被招募的設(shè)備的所述組合資源的一個(gè)設(shè)備。
15.如權(quán)利要求3所述的方法,其中所述應(yīng)答包括下述中任何之一沒有任何應(yīng)答、數(shù)據(jù)或內(nèi)容應(yīng)答、任何數(shù)字化編碼的信息、一個(gè)或多個(gè)程序、所述設(shè)備將是有用的顯示、返回的事件、通過文件凈載荷包括任何數(shù)量的數(shù)據(jù)或數(shù)據(jù)集的應(yīng)答事件、應(yīng)答程序、Dart、包括文本名稱和設(shè)備描述從而人可以從所述初始設(shè)備菜單上選擇使用哪個(gè)設(shè)備(哪些設(shè)備)的應(yīng)答事件、存在于所述源設(shè)備上或者能夠在所述源設(shè)備上生成的一組可執(zhí)行代碼、數(shù)據(jù)以及內(nèi)容的至少一個(gè)示例的特定包的標(biāo)識(shí)符、最適合于在所述設(shè)備上運(yùn)行的再現(xiàn)程序或再現(xiàn)程序集,或者上述的任何組合。
16.如權(quán)利要求3所述的方法,其中所述至少一個(gè)資源或能力是從包括下述的組中選擇的(i)可用的資源或特別需要的資源;(ii)可用的能力或特別需要的能力;(iii)所述可到達(dá)設(shè)備的一個(gè)或多個(gè)相互關(guān)聯(lián)的資源和能力組,或所述可到達(dá)設(shè)備為實(shí)現(xiàn)所述應(yīng)用程序的所述目的可用的那些資源和/或能力;以及(iv)這些的任何組合。
17.如權(quán)利要求3所述的方法,其中所述資源或能力包括從包括下述的資源或能力組中選擇的至少一個(gè)確定的能力確定的數(shù)據(jù)處理軟件、確定的信息處理軟件、確定的計(jì)算軟件、確定的圖片處理軟件、確定的通信軟件、確定的通信硬件、確定的介質(zhì)、確定的數(shù)據(jù)集(多個(gè)數(shù)據(jù)集)、確定的內(nèi)容、確定的程序或多個(gè)程序、確定的配置信息、確定的圖形加速硬件或軟件、確定的存儲(chǔ)介質(zhì)而不管其是暫時(shí)的或不是暫時(shí)的(永久的)、確定的打印能力、確定的傳真能力、確定的掃描能力、確定的用戶接口設(shè)備,而無論所述用戶接口設(shè)備為輸入或?yàn)檩敵龌蛘呒仁禽斎胗质禽敵?、?duì)其它設(shè)備的所述資源的存取,由于所述資源,所述設(shè)備能夠進(jìn)行通信并且所述其它設(shè)備能夠在不斷的鏈條中進(jìn)行通信、以及這些的兩個(gè)或多個(gè)的任何組合。
18.如權(quán)利要求3所述的方法,其中以共同可執(zhí)行形式的所述檢查程序包括由Dart兼容的指令集(DartInstructionSet)或任何其它互操作性指令集形成的至少一個(gè)檢查程序,其中所述的Dart兼容的指令集被包括在Dart指令兼容的引擎(DartEngine)中。
19.如權(quán)利要求3所述的方法,其中所述至少一個(gè)通信鏈接包括任何數(shù)量的通信鏈接、信道,和/或協(xié)議,所述協(xié)議包括任何數(shù)量或組的相同或不同的通信協(xié)議,而不管這些通信協(xié)議是有線的或無線的,是永久可用的或是間斷可用的。
20.如權(quán)利要求3所述的方法,其中所述相同或不同的通信鏈接、信道,以及協(xié)議被確定的硬件抽象層工具支持,其中所述硬件抽象層工具是運(yùn)行在任何兩個(gè)或多個(gè)通信設(shè)備上的播放器的部分。
21.如權(quán)利要求20所述的方法,其中所述確定的硬件抽象層工具包括作為DartEngine組件的Dart硬件抽象層工具。
22.如權(quán)利要求3所述的方法,其中所述至少一個(gè)通信鏈接和通信協(xié)議被用于發(fā)送運(yùn)行程序類型的事件,所說事件的事件標(biāo)識(shí)符引用識(shí)別在所述可到達(dá)的設(shè)備上運(yùn)行的所述程序的文件。
23.如權(quán)利要求22所述的方法,其中所述事件包括DartEvents,所述運(yùn)行程序類型事件包括Dart RUN_PROCEDURE類型事件。
24.如權(quán)利要求3所述的方法,其中引用識(shí)別將在所述可到達(dá)的設(shè)備上運(yùn)行的所述程序的文件的事件標(biāo)識(shí)符包括指向包括將在所述可到達(dá)設(shè)備上運(yùn)行的所述程序的圖像的文件的所述事件的文件標(biāo)識(shí)符。
25.如權(quán)利要求24所述的方法,其中所述文件包括符合所述DartFormat的Dart兼容的文件(DartFile),所述程序的所述圖像包括Dart Procedure(DartProcedure)的二進(jìn)制數(shù)據(jù)圖像。
26.如權(quán)利要求3所述的方法,其中所述檢查程序包括DartProcedures或完整的Darts。
27.如權(quán)利要求3所述的方法,其中將所述檢查程序作為與事件相關(guān)聯(lián)的所述文件發(fā)送,可到達(dá)設(shè)備將所述檢驗(yàn)程序作為與所述事件相關(guān)聯(lián)的所述文件接收,使得所述檢驗(yàn)程序開始在所述可到達(dá)設(shè)備上執(zhí)行。
28.如權(quán)利要求3所述的方法,其中所述檢驗(yàn)程序包括DartProcedure。
29.如權(quán)利要求3所述的方法,其中通過利用指令集輪廓指令確定包括所述可到達(dá)設(shè)備的基本資源和能力的資源和能力。
30.如權(quán)利要求29所述的方法,其中所述指令集輪廓指令包括Dart順應(yīng)的指令集(DartInstructionSet)的Dart順應(yīng)輪廓指令(DartPROFILE_INSTRUCTION)。
31.如權(quán)利要求3所述的方法,其中在每個(gè)可到達(dá)設(shè)備中執(zhí)行的所述檢查程序根據(jù)再現(xiàn)程序確定規(guī)則確定包括應(yīng)用程序的初始Dart的最佳再現(xiàn)程序,以被發(fā)送到每個(gè)特定的可到達(dá)設(shè)備并將所述確定的最佳再現(xiàn)程序的標(biāo)識(shí)符作為所述返回的數(shù)據(jù)的一部分發(fā)送回來。
32.如權(quán)利要求31所述的方法,其中所述再現(xiàn)程序確定規(guī)則被包括在至少一個(gè)程序中,所述程序適于執(zhí)行任何復(fù)雜度的任何需要的計(jì)算并通過輪廓指令存取任何需要的輪廓信息,以確定所述可到達(dá)設(shè)備的所述資源、能力,和/或狀態(tài)。
33.如權(quán)利要求31所述的方法,其中所述檢查程序執(zhí)行過程參考定義再現(xiàn)程序的順序的規(guī)則,從多個(gè)再現(xiàn)程序中確定最佳再現(xiàn)程序,并檢查每個(gè)可到達(dá)設(shè)備以確定是否以預(yù)定義的再現(xiàn)程序優(yōu)先順序滿足所述多個(gè)再現(xiàn)程序的每一個(gè)的所有要求,直到發(fā)現(xiàn)所述排序的多個(gè)再現(xiàn)程序中的第一再現(xiàn)程序滿足所有所述再現(xiàn)程序的要求為止。
34.如權(quán)利要求3所述的方法,其中所述檢查程序(多個(gè)程序)通過所述通信鏈接,使用知道的通信協(xié)議,將Darts、程序、數(shù)據(jù)或內(nèi)容返回到所述初始設(shè)備。
35.如權(quán)利要求3所述的方法,其中所述應(yīng)答包括返回的程序、數(shù)據(jù)或內(nèi)容和下述中任何一個(gè)或組合中的至少之一完整的Darts、DartParts、DartProcedures、或DartEvents,可以將其中的一個(gè)或任何組合與相關(guān)聯(lián)的事件文件一起或不與相關(guān)聯(lián)的事件文件一起返回。
36.如權(quán)利要求3所述的方法,其中所述應(yīng)答包括返回的程序、數(shù)據(jù)或內(nèi)容和/或Dart中至少之一,并可選地還包括表示發(fā)生錯(cuò)誤的應(yīng)答代碼、確定或者發(fā)生特定的錯(cuò)誤或者發(fā)生非特定的錯(cuò)誤的錯(cuò)誤代碼,并且所述錯(cuò)誤代碼可選地包括在改正或傳輸所述特定的錯(cuò)誤和/或所述錯(cuò)誤的性質(zhì)中有用的信息。
37.如權(quán)利要求3所述的方法,其中所述應(yīng)用程序代碼是下述中至少之一Dart、DartProcedure,或可以在所述初始設(shè)備或所述初始設(shè)備能夠使用的設(shè)備上執(zhí)行的任何形式的任何程序,用于啟動(dòng)轉(zhuǎn)移或執(zhí)行程序和利用所述執(zhí)行的結(jié)果。
38.如權(quán)利要求3所述的方法,其中所述應(yīng)用程序代碼包括Dart、DartProcedure,或可以在所述可到達(dá)設(shè)備(多個(gè)設(shè)備)上執(zhí)行或另外地向所述可到達(dá)設(shè)備(多個(gè)設(shè)備)傳遞信息的另一種程序格式,而不管所述程序格式是否利用將在所述可到達(dá)設(shè)備上執(zhí)行的所述DartInstructionSet。
39.如權(quán)利要求3所述的方法,其中所述被招募的設(shè)備組可以按照需要,在有效期內(nèi)或在為執(zhí)行所述應(yīng)用程序定義的時(shí)間段內(nèi),動(dòng)態(tài)地?cái)U(kuò)展所述組以包括其它可到達(dá)的設(shè)備,或減少所述設(shè)備組以按照需要排除可到達(dá)的設(shè)備。
40.如權(quán)利要求3所述的方法,其中通過發(fā)送Darts、DartProcedures、數(shù)據(jù)、內(nèi)容,或其它信息中至少之一、或這些的任何組合,實(shí)現(xiàn)所述分配,所述Darts、DartProcedures、數(shù)據(jù)、內(nèi)容,或其它信息被封裝為Dart事件(DartEvents)的一部分,而不管所述事件中的字段引用的所述信息是否隨所述事件或作為所述事件的一部分被發(fā)送。
41.如權(quán)利要求3所述的方法,其中根據(jù)所述初始應(yīng)用程序的所述需要從所述設(shè)備組和在所述設(shè)備組中分配的所述代碼、數(shù)據(jù),以及內(nèi)容,執(zhí)行所述要求的操作和資源存取,以通過執(zhí)行代碼和可選地交換實(shí)現(xiàn)或協(xié)調(diào)所述操作所需要的任何其它或不同的代碼、數(shù)據(jù)和內(nèi)容,來實(shí)現(xiàn)所述初始應(yīng)用程序的所述目的,其中所述的操作將在所述設(shè)備組上執(zhí)行以進(jìn)一步實(shí)現(xiàn)所述初始設(shè)備的所述目的。
42.如權(quán)利要求3所述的方法,其中所述應(yīng)用程序被包括在單個(gè)二進(jìn)制圖像中,所述二進(jìn)制圖像包括作為所述招募程序的一部分被分配到所有所述設(shè)備的所述代碼。
43.如權(quán)利要求3所述的方法,其中所述方法進(jìn)一步包括同步、串行化,以及協(xié)調(diào)所述設(shè)備組的活動(dòng),通過單獨(dú)地或可選地同與DartEvents或事件相關(guān)的文件一起,傳遞或交換事件或DartEvents,全部地或部分地實(shí)現(xiàn)所述同步、串行化,以及協(xié)調(diào)。
44.如權(quán)利要求43所述的方法,其中所述事件引用至少一個(gè)文件,從而所述事件通過該引用有效地包括并合并具有任何復(fù)雜度的文件圖像的文件或多個(gè)文件,這些文件圖像是與所述事件結(jié)構(gòu)內(nèi)容一同進(jìn)行傳輸?shù)摹?br>
45.如權(quán)利要求3所述的方法,進(jìn)一步包括在進(jìn)行互操作的和進(jìn)行通信的初始設(shè)備和被招募的設(shè)備之間,單獨(dú)地或者可選地同與DartEvents或事件相關(guān)的文件一起,傳遞或交換DartEvents事件,通過所述DartEvent結(jié)構(gòu)中引用的文件標(biāo)識(shí)符(字段),所述事件有效地包括任何復(fù)雜度的文件或其它數(shù)據(jù)或數(shù)據(jù)結(jié)構(gòu),并且當(dāng)進(jìn)行引用時(shí)文件圖像總是與所述事件結(jié)構(gòu)內(nèi)容一同進(jìn)行傳輸。
46.如權(quán)利要求43所述的方法,其中在任何數(shù)量的編組設(shè)備的事件隊(duì)列中,所述DartFramework、DartRuntime,和/或DartEngine自動(dòng)地備份和/或同步所述DartEvents或事件,或者可選地,非DartPlatform專用的事件驅(qū)動(dòng)的工具自動(dòng)地備份和/或同步所述DartEvents或事件,從而被確定為自動(dòng)的同步和被Dart放置在事件隊(duì)列中的DartEvents或事件以自動(dòng)串行化和同步的方式出現(xiàn)在任何數(shù)量的編組設(shè)備的所述事件隊(duì)列中。
47.如權(quán)利要求46所述的方法,其中所述自動(dòng)串行化和同步是通過用于自動(dòng)串行化和同步事件驅(qū)動(dòng)的協(xié)作的應(yīng)用程序、功能或在多個(gè)協(xié)作的設(shè)備上運(yùn)行的再現(xiàn)程序的程序?qū)崿F(xiàn)的,所述協(xié)作的設(shè)備包括初始設(shè)備,所述方法包括通過用于需要的每個(gè)設(shè)備間協(xié)作功能的應(yīng)用程序,在所述初始設(shè)備上例示連接管理器對(duì)象示例;通過所述應(yīng)用程序按照程序?qū)⒃谒袇f(xié)作的設(shè)備上同步的事件類型列表傳輸?shù)剿鲞B接管理器;在每個(gè)設(shè)備上建立具有一個(gè)連接管理器的協(xié)作設(shè)備組,并共享相同的所述同步事件類型列表;以及由所述連接管理器維護(hù)確定編組設(shè)備和將被同步的事件類型的會(huì)話列表;并且由所述連接管理器檢查將被放在所述事件隊(duì)列中的所有事件,如果被檢查的特定事件是所述連接管理器從所述應(yīng)該被同步的會(huì)話列表得知的事件類型,則將所述事件標(biāo)記為將與所述其它會(huì)話同步的事件,并將所述事件放置在所述連接管理器中列出的所述設(shè)備的所述事件隊(duì)列。
48.如權(quán)利要求47所述的方法,其中通過直到接收到這種確認(rèn)信息,即所述事件被所述任何一個(gè)設(shè)備直接發(fā)送到的所有協(xié)作設(shè)備事件隊(duì)列已經(jīng)成功地被放置在所述協(xié)作設(shè)備的事件隊(duì)列中,才允許事件被放置在所述任何一個(gè)設(shè)備的事件隊(duì)列中,來串行化將被所述事件驅(qū)動(dòng)的協(xié)作應(yīng)用程序功能或再現(xiàn)程序中任何一個(gè)放置在協(xié)作設(shè)備的事件隊(duì)列中的所有事件。
49.如權(quán)利要求48所述的方法,其中通過直到接收到這種確認(rèn)信息,即所述事件被所述任何一個(gè)接收設(shè)備發(fā)送到的所有協(xié)作設(shè)備事件隊(duì)列已經(jīng)成功地被放置在所述協(xié)作設(shè)備的事件隊(duì)列中,才允許事件被放置在所述接收的任何一個(gè)設(shè)備的事件隊(duì)列中,來串行化將被所述事件驅(qū)動(dòng)的協(xié)作應(yīng)用程序功能或再現(xiàn)程序中任何一個(gè)接收的放置在協(xié)作設(shè)備的事件隊(duì)列中的所有事件。
50.如權(quán)利要求48所述的方法,其中無論所述設(shè)備是直接進(jìn)行通信或間接地通過直接通信的設(shè)備鏈進(jìn)行通信,任何數(shù)量的協(xié)作設(shè)備事件隊(duì)列在所有協(xié)作設(shè)備上建立一個(gè)排隊(duì)事件的串行化系統(tǒng)。
51.如權(quán)利要求49所述的方法,其中無論所述設(shè)備是直接進(jìn)行通信或間接地通過直接通信的設(shè)備鏈進(jìn)行通信,任何數(shù)量的協(xié)作設(shè)備事件隊(duì)列在所有協(xié)作設(shè)備上建立一個(gè)排隊(duì)事件的串行化系統(tǒng)。
52.如權(quán)利要求47所述的方法,其中將被放置在來自兩個(gè)或多個(gè)協(xié)作設(shè)備的協(xié)作設(shè)備隊(duì)列中的事件被系統(tǒng)同步為所述協(xié)作設(shè)備隊(duì)列中的一個(gè)串行化事件,在所述系統(tǒng)中僅允許一個(gè)主設(shè)備放置將被同步的所述事件類型列表中的所述類型的事件,從而在所有協(xié)作設(shè)備上串行化所有這種事件。
53.如權(quán)利要求52所述的方法,其中通知所述主設(shè)備通過包括所述主設(shè)備將所述指定的事件放入所有協(xié)作設(shè)備的所述隊(duì)列中所需要的所述信息的主請(qǐng)求事件類型事件,代表其它協(xié)作設(shè)備產(chǎn)生的所述事件。
54.如權(quán)利要求52所述的方法,其中被所述協(xié)作設(shè)備組中的另一個(gè)設(shè)備招募到所述協(xié)作設(shè)備組中的每個(gè)設(shè)備認(rèn)為其相對(duì)的主設(shè)備為招募其的所述設(shè)備。
55.如權(quán)利要求53所述的方法,其中被所述協(xié)作設(shè)備組中的另一個(gè)設(shè)備招募到所述協(xié)作設(shè)備組中的每個(gè)設(shè)備認(rèn)為其相對(duì)的主設(shè)備為招募其的所述設(shè)備。
56.如權(quán)利要求54所述的方法,其中將主請(qǐng)求事件類型事件放入相對(duì)的主設(shè)備隊(duì)列中將使得所述事件被從設(shè)備傳播到相對(duì)的主設(shè)備上,直到?jīng)]有相對(duì)主設(shè)備的初始主設(shè)備接著使用所述主設(shè)備需要的所述信息形成事件,并將所述指定的事件放入所有協(xié)作設(shè)備的所述隊(duì)列中。
57.如權(quán)利要求52所述的方法,其中通過向所述協(xié)作設(shè)備的同步的和/或串行化的隊(duì)列發(fā)送改變主設(shè)備類型事件,來改變所述指定的主設(shè)備,其中所述改變主設(shè)備類型事件處于所述串行化事件列表中,所述改變主設(shè)備類型事件以同步的串行化的方式通知所有設(shè)備新的主設(shè)備將代替所述當(dāng)前的主設(shè)備。
58.如權(quán)利要求54所述的方法,其中所述主請(qǐng)求事件傳播通過所述協(xié)作設(shè)備隊(duì)列,直到所述新的主設(shè)備處理所述事件。
59.如權(quán)利要求55所述的方法,其中所述主請(qǐng)求事件傳播通過所述協(xié)作設(shè)備隊(duì)列,直到所述新的主設(shè)備處理所述事件。
60.如權(quán)利要求53所述的方法,其中如果存在這種文件引用,則被確定為這種事件,即被指定被所述主請(qǐng)求事件類型事件發(fā)送的事件,的一部分的可選的文件被保存在每個(gè)進(jìn)行傳播的設(shè)備上,并具有允許所述事件被重新與將被所述主設(shè)備發(fā)送的所述事件相關(guān)聯(lián),就如同其被作為所述主設(shè)備發(fā)送的所述事件的一部分發(fā)送一樣的標(biāo)識(shí)符,作為所述主設(shè)備處理的主請(qǐng)求事件類型的結(jié)果,這就減少了可能另外地需要作為每個(gè)事件一部分發(fā)送的信息量。
61.一種初始設(shè)備,所述設(shè)備包括處理器,其與內(nèi)存相連并適于執(zhí)行包括用于實(shí)現(xiàn)指定任務(wù)的指令的程序;用于至少部分地在所述處理器和內(nèi)存上執(zhí)行的裝置,其用于招募至少一個(gè)不同于所述設(shè)備并在所述設(shè)備之外的被招募的設(shè)備,以參與實(shí)現(xiàn)所述指定的任務(wù),所述被招募的設(shè)備至少包括實(shí)現(xiàn)所述指定任務(wù)所需要的硬件資源;以及完全存儲(chǔ)在所述設(shè)備中以補(bǔ)充所述被招募的設(shè)備的所述資源的裝置,從而所述硬件資源加上所述授權(quán)補(bǔ)充的資源使所述被招募的設(shè)備完全能夠執(zhí)行所述指定的任務(wù)。
62.如權(quán)利要求61所述的初始設(shè)備,其中所述設(shè)備和所述被招募的設(shè)備中的每一個(gè)都操作在共同的程序環(huán)境中,至少部分地在所述處理器和內(nèi)存上執(zhí)行以進(jìn)行招募的所述裝置包括用于通過至少一個(gè)連接將所述共同的程序環(huán)境中實(shí)現(xiàn)的程序廣播到也包括在或操作在共同的程序環(huán)境中的其它設(shè)備的裝置。
63.如權(quán)利要求62所述的初始設(shè)備,其中所述用于招募的裝置進(jìn)一步包括用于啟動(dòng)所述程序在所述其它設(shè)備上的執(zhí)行,以程序性地檢查每個(gè)所述其它設(shè)備上的所述資源和能力,以確定每個(gè)設(shè)備是否具有參與實(shí)現(xiàn)所述特定任務(wù)所需要的資源或能力的裝置。
64.如權(quán)利要求63所述的初始設(shè)備,其中至少部分地通過存取存儲(chǔ)在所述特定設(shè)備中或關(guān)于所述特定設(shè)備計(jì)算的設(shè)備專用的硬件抽象層信息,在每個(gè)特定的其它設(shè)備中執(zhí)行所述檢查。
65.如權(quán)利要求64所述的初始設(shè)備,其中用于補(bǔ)充的裝置進(jìn)一步包括用于發(fā)送和安裝使每個(gè)設(shè)備實(shí)現(xiàn)其相應(yīng)的特定任務(wù)部分所需要的授權(quán)程序、數(shù)據(jù),和/或內(nèi)容的裝置。
66.如權(quán)利要求61所述的初始設(shè)備,其進(jìn)一步包括用于暫時(shí)地或永久地在所述初始設(shè)備和其它設(shè)備上同步操作的裝置,所述用于同步的裝置包括任務(wù)事件隊(duì)列和用于維護(hù)所述任務(wù)事件隊(duì)列的裝置。
67.一種被招募的設(shè)備,所述設(shè)備包括一組硬件資源,其包括處理器和連接到所述處理器的內(nèi)存,以及適于執(zhí)行一組任務(wù)的計(jì)算機(jī)程序代碼資源,所述硬件資源能夠或執(zhí)行特定任務(wù)的至少一個(gè)執(zhí)行版本,但是所述計(jì)算機(jī)程序代碼資源最初不能執(zhí)行用于實(shí)現(xiàn)所述特定任務(wù)或所述特定任務(wù)的一方面的希望的版本或方法,用于接收包括計(jì)算機(jī)程序代碼通信和數(shù)據(jù)通信中至少之一的通信的裝置,所述計(jì)算機(jī)程序代碼通信包括補(bǔ)充的計(jì)算機(jī)程序代碼資源,其使得所述設(shè)備能夠執(zhí)行所述希望的版本、方法或所述特定任務(wù)的一方面。
68.如權(quán)利要求67所述的被招募的設(shè)備,其中所述被招募的設(shè)備和所述初始設(shè)備中的每一個(gè)都操作在共同的程序環(huán)境中。
69.如權(quán)利要求68所述的被招募的設(shè)備,其進(jìn)一步包括用于執(zhí)行從所述初始設(shè)備接收的所述程序的裝置,以程序性地檢查所述被招募的設(shè)備上的所述資源和能力,以確定所述被招募的設(shè)備是否具有參與實(shí)現(xiàn)所述特定任務(wù)所需要的資源或能力。
70.如權(quán)利要求69所述的被招募的設(shè)備,其中至少部分地通過存取存儲(chǔ)在所述被招募的設(shè)備中或關(guān)于所述被招募的設(shè)備計(jì)算的設(shè)備專用的硬件抽象層信息,在所述被招募的設(shè)備中執(zhí)行所述檢查。
71.如權(quán)利要求70所述的被招募的設(shè)備,其進(jìn)一步包括用于安裝使所述被招募的設(shè)備實(shí)現(xiàn)其相應(yīng)的特定任務(wù)部分所需要的授權(quán)程序、數(shù)據(jù),和/或內(nèi)容的裝置。
72.如權(quán)利要求61所述的被招募的設(shè)備,其進(jìn)一步包括用于暫時(shí)地在所述初始設(shè)備和所述被招募的設(shè)備上同步操作的裝置,所述用于同步的裝置包括任務(wù)事件隊(duì)列和用于維護(hù)所述任務(wù)事件隊(duì)列的裝置。
73.一種用于在多個(gè)不同設(shè)備中形成集成的專用的飛行式分布信息處理系統(tǒng),以參與實(shí)現(xiàn)特定任務(wù)的方法,所述方法包括通過初始設(shè)備開始形成所述分布信息處理系統(tǒng),所述形成包括使用至少一個(gè)通信信道和協(xié)議廣播消息,其目的是確定和招募可能擁有參與執(zhí)行所述特定任務(wù)的資源或能力的其它被招募的設(shè)備;以及按照需要將程序、數(shù)據(jù)和內(nèi)容中至少之一傳輸?shù)矫總€(gè)所述被招募的設(shè)備上,從而每個(gè)所述被招募的設(shè)備能夠?qū)崿F(xiàn)其所述特定任務(wù)的一部分。
74.如權(quán)利要求73所述的方法,其進(jìn)一步包括至少部分地在所述初始設(shè)備的處理器和內(nèi)存上執(zhí)行用于招募至少一個(gè)不同于所述初始設(shè)備并在所述初始設(shè)備之外的被招募的設(shè)備,以參與實(shí)現(xiàn)所述指定的任務(wù),所述被招募的設(shè)備至少包括實(shí)現(xiàn)所述指定任務(wù)所需要的硬件資源;以及完全在所述初始設(shè)備中存儲(chǔ)程序和可選的數(shù)據(jù),以補(bǔ)充所述被招募的設(shè)備的所述資源,從而所述硬件資源加上所述授權(quán)補(bǔ)充的資源使所述被招募的設(shè)備完全能夠執(zhí)行所述指定的任務(wù)。
75.如權(quán)利要求74所述的方法,其中所述初始設(shè)備和所述被招募的設(shè)備中的每一個(gè)都操作在共同的程序環(huán)境中,至少部分地在所述處理器和內(nèi)存上執(zhí)行以進(jìn)行招募的所述程序包括通過至少一個(gè)連接將所述共同的程序環(huán)境中實(shí)現(xiàn)的程序傳播到也包括在或操作在共同的程序環(huán)境中的其它設(shè)備。
76.如權(quán)利要求75所述的方法,其中所述招募進(jìn)一步包括在所述其它設(shè)備上開始執(zhí)行所述程序,以程序性地檢查每個(gè)所述其它設(shè)備的所述資源和能力,從而確定每個(gè)設(shè)備是否具有參與執(zhí)行所述特定任務(wù)所需要的資源或能力。
77.如權(quán)利要求76所述的方法,其中至少部分地通過存取存儲(chǔ)在所述特定設(shè)備中或關(guān)于所述特定設(shè)備計(jì)算的設(shè)備專用的硬件抽象層信息,在每個(gè)特定的其它的被招募的設(shè)備中執(zhí)行所述檢查。
78.如權(quán)利要求77所述的方法,其中所述補(bǔ)充進(jìn)一步包括發(fā)送和安裝使每個(gè)設(shè)備實(shí)現(xiàn)其相應(yīng)的特定任務(wù)部分所需要的授權(quán)程序、數(shù)據(jù),和/或內(nèi)容。
79.如權(quán)利要求77所述的方法,其進(jìn)一步包括暫時(shí)地在所述初始和其它被招募的設(shè)備上同步操作,所述同步包括生成和維護(hù)任務(wù)事件隊(duì)列。
80.如權(quán)利要求73所述的方法,其中所述通信是既不是客戶機(jī)-服務(wù)器通信交互活動(dòng)也不是對(duì)等通信交互活動(dòng)的通信和交互活動(dòng)。
81.如權(quán)利要求73所述的方法,其中所述招募執(zhí)行專用的設(shè)備、服務(wù),以及資源發(fā)現(xiàn),以確定需要的設(shè)備,接著向利用事件的所述設(shè)備發(fā)送授權(quán)程序和信息;智能地并且有效地形成設(shè)備組,接著利用事件協(xié)調(diào)所述設(shè)備組,以實(shí)現(xiàn)最初運(yùn)行在所述初始源設(shè)備上的Dart或應(yīng)用程序或任務(wù)的目的。
82.如權(quán)利要求73所述的方法,其中所述分布式信息處理系統(tǒng)包括存取和協(xié)調(diào)一些或所有所述設(shè)備的物理能力的利用。
83.如權(quán)利要求82所述的方法,其中所述設(shè)備的所述物理能力是從可選地包括下述能力的組中選擇的打印、傳真、顯示、再現(xiàn)音樂、再現(xiàn)視頻、控制其它設(shè)備、在任何介質(zhì)上存儲(chǔ)數(shù)字或模擬的數(shù)據(jù)、生產(chǎn)產(chǎn)品、提供刪除、照相,或能夠被所述設(shè)備的處理能力存取、監(jiān)視或控制的任何其它的物理能力。
84.如權(quán)利要求1所述的方法,其中運(yùn)行在多個(gè)設(shè)備上的軟件應(yīng)用程序至少部分地在兩個(gè)或多個(gè)設(shè)備上執(zhí)行所述互操作性操作,所述兩個(gè)或多個(gè)設(shè)備具有最初在所述初始設(shè)備上的一個(gè)軟件包的一部分的代碼和或數(shù)據(jù)和或內(nèi)容,以享有比用于執(zhí)行所述互操作性操作的獨(dú)立開發(fā)和或獨(dú)立分配的應(yīng)用程序更可靠的互操作性。
85.一種用于與計(jì)算機(jī)系統(tǒng)或信息設(shè)備結(jié)合使用的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì)和嵌入在其中的計(jì)算機(jī)程序機(jī)制,所述計(jì)算機(jī)程序機(jī)制包括程序模塊,用于指引所述計(jì)算機(jī)系統(tǒng)或信息設(shè)備以特定的方式工作,為進(jìn)行互操作招募被招募的設(shè)備組,所述程序模塊包括用于以下操作的指令通過至少一個(gè)通信鏈接,將可操作地尋找具有需要的資源或能力的設(shè)備的檢查程序發(fā)送到不同于所述初始源設(shè)備的至少一個(gè)可到達(dá)的設(shè)備,所述檢查程序包括以可執(zhí)行的形式編碼的檢查程序指令,所述的可執(zhí)行的形式是所述初始源設(shè)備和所述檢查程序?qū)⒌竭_(dá)的所述設(shè)備所共用的;直接或間接地通過通信鏈接,在所述初始設(shè)備上接收來自每個(gè)所述可到達(dá)設(shè)備的應(yīng)答響應(yīng);通過在所述初始設(shè)備上執(zhí)行的程序,分析所接收的來自所有發(fā)出響應(yīng)的可到達(dá)設(shè)備的應(yīng)答,以確定識(shí)別所述初始源設(shè)備和所述發(fā)出響應(yīng)的可到達(dá)設(shè)備的能力和資源的組合的利用計(jì)劃,以最佳地實(shí)現(xiàn)所述軟件應(yīng)用程序的目的;以及根據(jù)所述被確定的利用計(jì)劃,通過在所述初始設(shè)備上執(zhí)行的應(yīng)用程序,將可執(zhí)行代碼、數(shù)據(jù)、內(nèi)容,和/或Dart中的至少一個(gè)分配到被識(shí)別為具有需要的資源或能力的每個(gè)所述可到達(dá)設(shè)備中的至少一個(gè)上。
86.一種用于與計(jì)算機(jī)系統(tǒng)或信息設(shè)備結(jié)合使用的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì)和嵌入在其中的計(jì)算機(jī)程序機(jī)制,所述計(jì)算機(jī)程序機(jī)制包括程序模塊,用于指引所述計(jì)算機(jī)系統(tǒng)或信息設(shè)備以特定的方式工作,以在多個(gè)不同設(shè)備中形成集成的專用的飛行分布式信息處理系統(tǒng),以作為單個(gè)虛擬設(shè)備發(fā)揮作用,并參與實(shí)現(xiàn)所述特定任務(wù),所述程序模塊包括用于下述操作的指令通過初始設(shè)備開始形成所述分布式信息處理系統(tǒng),所述形成包括使用至少一個(gè)通信信道和協(xié)議廣播消息,其目的是確定和招募可能擁有參與執(zhí)行所述特定任務(wù)的資源或能力的其它被招募的設(shè)備;以及按照需要將程序、數(shù)據(jù)和內(nèi)容中至少之一傳輸?shù)矫總€(gè)所述被招募的設(shè)備上,從而每個(gè)所述被招募的設(shè)備能夠?qū)崿F(xiàn)其所述特定任務(wù)的一部分。
87.一種用于將軟件應(yīng)用程序分為一組分別可執(zhí)行的圖像的方法,所述方法包括根據(jù)可能遇到的設(shè)備的用于實(shí)現(xiàn)所述應(yīng)用程序所述目的的一個(gè)或多個(gè)方面的可能的資源和能力,將所述可能遇到的設(shè)備分為不同等級(jí);根據(jù)用于實(shí)現(xiàn)所述應(yīng)用程序所述目的的一個(gè)或多個(gè)方面所需要的不同再現(xiàn)的或其它的運(yùn)行時(shí)間要求,將可能遇到的環(huán)境或操作要求分為不同等級(jí);對(duì)于每個(gè)等級(jí)的設(shè)備和每個(gè)等級(jí)的環(huán)境或操作要求,為要求的可執(zhí)行圖像實(shí)現(xiàn)所述應(yīng)用程序所述目的的一個(gè)或多個(gè)方面指定所述要求的數(shù)據(jù)、代碼、內(nèi)容以及其它數(shù)字化表示的資源;對(duì)于特定的候選設(shè)備列表、其資源和能力,以及所述要求的或希望的環(huán)境或操作參數(shù),生成利用計(jì)劃,以選擇哪些設(shè)備和相應(yīng)的獨(dú)立分配的可執(zhí)行圖像將運(yùn)行在每個(gè)設(shè)備上,以用于實(shí)現(xiàn)所述應(yīng)用程序的所述目的;以及對(duì)于每個(gè)等級(jí)的設(shè)備和每個(gè)等級(jí)的環(huán)境或操作要求,指定所述要求的數(shù)據(jù)、代碼、內(nèi)容以及其它數(shù)字化表示的資源,以執(zhí)行和實(shí)現(xiàn)所述利用計(jì)劃。
88.如權(quán)利要求87所述的方法,其中所述軟件應(yīng)用程序旨在運(yùn)行在一個(gè)或多個(gè)相同或不同的通信設(shè)備上。
89.如權(quán)利要求87所述的方法,其中選擇正好一個(gè)這種被選擇的可執(zhí)行圖像,以在具有特定環(huán)境的給定設(shè)備上運(yùn)行。
90.如權(quán)利要求89所述的方法,其中根據(jù)所述應(yīng)用程序的關(guān)于每個(gè)設(shè)備的所述資源和能力以及所述環(huán)境和操作要求的所述需要,,在每個(gè)設(shè)備上選擇和運(yùn)行所述正好一個(gè)這種可執(zhí)行圖像。
91.如權(quán)利要求89所述的方法,其中至少一個(gè)所述設(shè)備是Dart設(shè)備。
92.如權(quán)利要求87所述的方法,其進(jìn)一步包括執(zhí)行所述生成的利用計(jì)劃。
93.如權(quán)利要求87所述的方法,其中所述軟件應(yīng)用程序被表示為Dart。
94.如權(quán)利要求87所述的方法,其中所述分別執(zhí)行的圖像是再現(xiàn)程序。
95.如權(quán)利要求93所述的方法,其中所述再現(xiàn)程序被以符合所述DartFormat的所述DartTools打包的Dart再現(xiàn)程序的形式表示。
96.如權(quán)利要求88所述的方法,其中權(quán)利要求1所述的利用計(jì)劃全部地或部分地實(shí)現(xiàn)為被發(fā)送以在所述候選設(shè)備上運(yùn)行的程序,以確定設(shè)備的特定級(jí)別、其資源和/或操作環(huán)境。
97.如權(quán)利要求96所述的方法,其中所述程序是至少部分地表現(xiàn)為互操作性指令集的指令的DartProcedures。
98.如權(quán)利要求97所述的方法,其中所述互操作性指令集是DartInstructionSet。
99.如權(quán)利要求97所述的方法,其中所述互操作性指令集是可以在一個(gè)或多個(gè)運(yùn)行程序的相同或不同通信設(shè)備上執(zhí)行的形式。
100.如權(quán)利要求99所述的方法,其中所述通信設(shè)備運(yùn)行程序以確定設(shè)備的特定級(jí)別、其資源和/或操作環(huán)境。
101.如權(quán)利要求96所述的方法,其中所述程序被表示作為所述應(yīng)用程序一部分的Darts。
102.如權(quán)利要求101所述的方法,其中所述應(yīng)用程序被表示為包括其它Darts的Dart,用于在不同的通信設(shè)備上實(shí)現(xiàn)所述應(yīng)用程序的所述目的。
103.如權(quán)利要求87所述的方法,其中權(quán)利要求1所述的招募方法被用于發(fā)送和分配所述程序和分離的可執(zhí)行圖像,以形成不同或相同設(shè)備的組。
104.如權(quán)利要求87所述的方法,其中各部分可以在不同目標(biāo)設(shè)備中的不同的分別執(zhí)行的圖像和處理環(huán)境之間共享,從而可以限制互操作性應(yīng)用程序的大小。
105.如權(quán)利要求87所述的方法,其中各部分可以在分別執(zhí)行的圖像之間共享,從而可以限制將被存儲(chǔ)在所述軟件中的數(shù)據(jù)量。
106.如權(quán)利要求87所述的方法,其中各部分可以在分別執(zhí)行的圖像之間共享,從而可以限制將在設(shè)備之間傳輸?shù)臄?shù)據(jù)量。
107.如權(quán)利要求104所述的方法,其中各部分是下述中之一代碼、數(shù)據(jù)、內(nèi)容、程序、代碼集、數(shù)據(jù)集、內(nèi)容、內(nèi)容集、關(guān)于如何找到和合并所述各部分的圖元信息、描述文本、圖片、視頻、圖像、數(shù)據(jù)表,或能夠以數(shù)字形式表示的任何其它信息單元或信息集。
108.如權(quán)利要求107所述的方法,其中各部分是DartParts和或被表示為Dart RenditionsTable部分的圖元信息,和或Dart RenditionsTable部分,和或Dart PartTable,和或DartTrailer。
109.一種用于將軟件應(yīng)用程序分為一組分別可執(zhí)行的圖像的方法,所述方法包括根據(jù)可能遇到的設(shè)備的可能的資源和能力,將所述可能遇到的設(shè)備分為不同等級(jí);將可能遇到的環(huán)境或操作要求分為不同等級(jí);對(duì)于每個(gè)等級(jí)的設(shè)備和每個(gè)等級(jí)的環(huán)境或操作要求,為可執(zhí)行圖像實(shí)現(xiàn)所述應(yīng)用程序所述目的的一個(gè)或多個(gè)方面指定所述要求的數(shù)據(jù)、代碼、內(nèi)容和/或其它數(shù)字化表示的資源;生成利用計(jì)劃,以選擇哪些設(shè)備和可執(zhí)行圖像將運(yùn)行在每個(gè)設(shè)備上,以用于實(shí)現(xiàn)所述應(yīng)用程序的所述目的。
110.一種用于將軟件應(yīng)用程序分為一組分別可執(zhí)行的圖像的裝置,所述裝置包括用于根據(jù)可能遇到的設(shè)備的用于實(shí)現(xiàn)所述應(yīng)用程序所述目的的一個(gè)或多個(gè)方面的可能的資源和能力,將所述可能遇到的設(shè)備分為不同等級(jí)的裝置;用于根據(jù)用于實(shí)現(xiàn)所述應(yīng)用程序所述目的的一個(gè)或多個(gè)方面所需要的不同再現(xiàn)或其它運(yùn)行時(shí)間要求,將可能遇到的環(huán)境或操作要求分為不同等級(jí)的裝置;用于對(duì)于每個(gè)等級(jí)的設(shè)備和每個(gè)等級(jí)的環(huán)境或操作要求,為要求的可執(zhí)行圖像實(shí)現(xiàn)所述應(yīng)用程序所述目的的一個(gè)或多個(gè)方面指定所述要求的數(shù)據(jù)、代碼、內(nèi)容以及其它數(shù)字化表示的資源的裝置;用于對(duì)于特定的候選設(shè)備列表、其資源和能力,以及所述要求的或希望的環(huán)境或操作參數(shù),生成利用計(jì)劃,以選擇哪些設(shè)備和相應(yīng)的獨(dú)立分配的可執(zhí)行圖像將運(yùn)行在每個(gè)設(shè)備上,以用于實(shí)現(xiàn)所述應(yīng)用程序的所述目的的裝置;以及用于對(duì)于每個(gè)等級(jí)的設(shè)備和每個(gè)等級(jí)的環(huán)境或操作要求,指定所述要求的數(shù)據(jù)、代碼、內(nèi)容以及其它數(shù)字化表示的資源,以執(zhí)行和實(shí)現(xiàn)所述利用計(jì)劃的裝置。
111.一種用于與計(jì)算機(jī)系統(tǒng)或信息設(shè)備結(jié)合使用的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì)和嵌入在其中的計(jì)算機(jī)程序機(jī)制,所述計(jì)算機(jī)程序機(jī)制包括程序模塊,用于指引所述計(jì)算機(jī)系統(tǒng)或信息設(shè)備以特定的方式工作,以將計(jì)算機(jī)程序軟件代碼應(yīng)用程序分為一組分別可執(zhí)行的計(jì)算機(jī)程序軟件代碼圖像,所述程序模塊包括用于下述操作的指令根據(jù)可能遇到的設(shè)備的可能的資源和能力,將所述可能遇到的設(shè)備分為不同等級(jí);將可能遇到的環(huán)境或操作要求分為不同等級(jí);對(duì)于每個(gè)等級(jí)的設(shè)備和每個(gè)等級(jí)的環(huán)境或操作要求,為可執(zhí)行圖像實(shí)現(xiàn)所述應(yīng)用程序所述目的的一個(gè)或多個(gè)方面指定所述要求的數(shù)據(jù)、代碼、內(nèi)容和/或其它數(shù)字化表示的資源;生成利用計(jì)劃,以選擇哪些設(shè)備和可執(zhí)行圖像將運(yùn)行在每個(gè)設(shè)備上,以用于實(shí)現(xiàn)所述應(yīng)用程序的所述目的。
113.一種用于與計(jì)算機(jī)系統(tǒng)或信息設(shè)備結(jié)合使用的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì)和嵌入在其中的計(jì)算機(jī)程序機(jī)制,所述計(jì)算機(jī)程序機(jī)制包括程序模塊,用于指引所述計(jì)算機(jī)系統(tǒng)或信息設(shè)備以特定的方式工作,以將計(jì)算機(jī)程序軟件代碼應(yīng)用程序分為一組分別可執(zhí)行的計(jì)算機(jī)程序軟件代碼圖像,所述程序模塊包括用于下述操作的指令根據(jù)可能遇到的設(shè)備的用于實(shí)現(xiàn)所述應(yīng)用程序所述目的的一個(gè)或多個(gè)方面的可能的資源和能力,將所述可能遇到的設(shè)備分為不同等級(jí);根據(jù)用于實(shí)現(xiàn)所述應(yīng)用程序所述目的的一個(gè)或多個(gè)方面所需要的不同再現(xiàn)或其它運(yùn)行時(shí)間要求,將可能遇到的環(huán)境或操作要求分為不同等級(jí);對(duì)于每個(gè)等級(jí)的設(shè)備和每個(gè)等級(jí)的環(huán)境或操作要求,為要求的可執(zhí)行圖像實(shí)現(xiàn)所述應(yīng)用程序所述目的的一個(gè)或多個(gè)方面指定所述要求的數(shù)據(jù)、代碼、內(nèi)容以及其它數(shù)字化表示的資源;對(duì)于特定的候選設(shè)備列表、其資源和能力,以及所述要求的或希望的環(huán)境或操作參數(shù),生成利用計(jì)劃,以選擇哪些設(shè)備和相應(yīng)的獨(dú)立分配的可執(zhí)行圖像將運(yùn)行在每個(gè)設(shè)備上,以用于實(shí)現(xiàn)所述應(yīng)用程序的所述目的;以及對(duì)于每個(gè)等級(jí)的設(shè)備和每個(gè)等級(jí)的環(huán)境或操作要求,指定所述要求的數(shù)據(jù)、代碼、內(nèi)容以及其它數(shù)字化表示的資源,以執(zhí)行和實(shí)現(xiàn)所述利用計(jì)劃。
114.一種用于運(yùn)行在源設(shè)備上的軟件應(yīng)用程序招募設(shè)備組并將所述軟件應(yīng)用程序分為在所述設(shè)備組上可執(zhí)行的一組分別執(zhí)行的圖像,所述方法包括通過至少一個(gè)通信鏈接,將可操作地尋找具有需要的資源或能力的設(shè)備的檢查程序發(fā)送到不同于所述初始源設(shè)備的至少一個(gè)可到達(dá)的設(shè)備,所述檢查程序包括以可執(zhí)行的形式編碼的檢查程序指令,所述的可執(zhí)行的形式是所述初始源設(shè)備和所述檢查程序?qū)⒌竭_(dá)的所述設(shè)備所共用的;直接或間接地通過通信鏈接,在所述初始設(shè)備上接收來自每個(gè)所述可到達(dá)設(shè)備的應(yīng)答響應(yīng);通過在所述初始設(shè)備上執(zhí)行的程序,分析所接收的來自所有發(fā)出響應(yīng)的可到達(dá)設(shè)備的應(yīng)答,以確定識(shí)別所述初始源設(shè)備和所述發(fā)出響應(yīng)的可到達(dá)設(shè)備的能力和資源的組合的利用計(jì)劃,以最佳地實(shí)現(xiàn)所述軟件應(yīng)用程序的目的;根據(jù)所述被確定的利用計(jì)劃,通過在所述初始設(shè)備上執(zhí)行的應(yīng)用程序,將可執(zhí)行代碼、數(shù)據(jù)、內(nèi)容,和/或Dart中的至少一個(gè)分配到被識(shí)別為具有需要的資源或能力的每個(gè)所述可到達(dá)設(shè)備中的至少一個(gè)上;以及根據(jù)可能遇到的設(shè)備的用于實(shí)現(xiàn)所述應(yīng)用程序所述目的的一個(gè)或多個(gè)方面的可能的資源和能力,將所述可能遇到的設(shè)備分為不同等級(jí);根據(jù)用于實(shí)現(xiàn)所述應(yīng)用程序所述目的的一個(gè)或多個(gè)方面所需要的不同再現(xiàn)或其它運(yùn)行時(shí)間要求,將可能遇到的環(huán)境或操作要求分為不同等級(jí);對(duì)于每個(gè)等級(jí)的設(shè)備和每個(gè)等級(jí)的環(huán)境或操作要求,為要求的可執(zhí)行圖像實(shí)現(xiàn)所述應(yīng)用程序所述目的的一個(gè)或多個(gè)方面指定所述要求的數(shù)據(jù)、代碼、內(nèi)容以及其它數(shù)字化表示的資源;對(duì)于特定的候選設(shè)備列表、其資源和能力,以及所述要求的或希望的環(huán)圖像將運(yùn)行在每個(gè)設(shè)備上,以用于實(shí)現(xiàn)所述應(yīng)用程序的所述目的;以及對(duì)于每個(gè)等級(jí)的設(shè)備和每個(gè)等級(jí)的環(huán)境或操作要求,指定所述要求的數(shù)據(jù)、代碼、內(nèi)容以及其它數(shù)字化表示的資源,以執(zhí)行和實(shí)現(xiàn)所述利用計(jì)劃。
全文摘要
提供了用于在具有相似或不同特征的設(shè)備之間提供通信并促進(jìn)它們之間的無縫互操作性的系統(tǒng)、設(shè)備、方法,以及計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品。提供了用于在相似或不同的永久或間斷連接的電子設(shè)備上共享內(nèi)容、應(yīng)用程序、資源和控制的計(jì)算機(jī)程序軟件和方法以及系統(tǒng)和設(shè)備。提供了用于在框架內(nèi)提供通信和/或互操作的設(shè)備、系統(tǒng)、應(yīng)用程序,等等。提供了招募互操作性方法、再現(xiàn)程序適配和互操作性分段方法、互操作性源、互操作性框架、互操作性工具、互操作性格式、互操作性運(yùn)行時(shí)間、線性任務(wù)分配、垂直分層、應(yīng)用程序驅(qū)動(dòng)的電源管理、互操作性應(yīng)用程序驅(qū)動(dòng)的錯(cuò)誤恢復(fù)、互操作性指令集、創(chuàng)造法、互操作性引擎、互操作性設(shè)備授權(quán)、互操作性安全模型、社會(huì)同步互操作性方法、社會(huì)安全互操作性模型、互操作性設(shè)備、互操作性平臺(tái)、虛指針,以及Dart特定形式或這些的執(zhí)行。
文檔編號(hào)G06F15/16GK101031882SQ200580026780
公開日2007年9月5日 申請(qǐng)日期2005年6月8日 優(yōu)先權(quán)日2004年6月8日
發(fā)明者丹尼爾·伊洛斯基, 布魯斯·伯恩斯坦, 理查德·米拉貝拉, 沃爾夫?qū)てぐ2? 雷蒙德·西德尼, 理查德·泰伯瑞, 邁克爾·溫奧科 申請(qǐng)人:達(dá)爾特設(shè)備公司