欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在托管應(yīng)用程序進(jìn)程中引發(fā)異步行為變化的方法和系統(tǒng)的制作方法

文檔序號:6446181閱讀:203來源:國知局

專利名稱::在托管應(yīng)用程序進(jìn)程中引發(fā)異步行為變化的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
:本發(fā)明一般涉及異步行為變化,特別是涉及一種在托管應(yīng)用程序進(jìn)程中引發(fā)異步行為變化的方法和系統(tǒng)。
背景技術(shù)
:在微處理器設(shè)計(jì)和組件集成中,近來的發(fā)展已經(jīng)使廣泛的設(shè)備能夠提供日益復(fù)雜的功能和“軟”特征。軟特征包括對設(shè)備的運(yùn)行進(jìn)行增強(qiáng)和定制的軟件應(yīng)用程序。這些設(shè)備包括標(biāo)準(zhǔn)的計(jì)算設(shè)備,例如桌面計(jì)算機(jī)和便攜式計(jì)算機(jī),可移動的計(jì)算設(shè)備例如個(gè)人數(shù)據(jù)助理,以及消費(fèi)設(shè)備例如蜂窩電話、消息呼機(jī)、游戲控制臺和機(jī)頂盒(STB)?,F(xiàn)在,大多數(shù)設(shè)備包括一個(gè)操作系統(tǒng)以支持軟特征和其他的擴(kuò)展。由這些可軟件升級的設(shè)備提供的增強(qiáng)功能也已經(jīng)造成了某些用戶期望。通常,用戶并不了解技術(shù),并且不能容忍由體系結(jié)構(gòu)難題引起的性能折衷,例如緩慢的或者不一致的應(yīng)用程序性能。同樣地,用戶通常期望能夠訪問大量的獨(dú)立的應(yīng)用程序,這些應(yīng)用程序在系統(tǒng)級是通過多任務(wù)來實(shí)現(xiàn)的。普遍可用的軟件應(yīng)用程序通過跨多個(gè)平臺的一致性和增強(qiáng)呈現(xiàn)來保證了用戶的良好感受。然而,對于軟件開發(fā)者而言,為異構(gòu)的計(jì)算平臺開發(fā)軟件應(yīng)用程序必然伴有增加的開發(fā)費(fèi)用和持續(xù)的支持以及對每個(gè)所支持的體系結(jié)構(gòu)的升級承諾。托管代碼平臺通過引出機(jī)器無關(guān)和體系結(jié)構(gòu)中立的操作環(huán)境,為尋求多平臺支持的軟件開發(fā)者提供了一個(gè)解決方案。托管代碼平臺包括和用戶應(yīng)用程序一樣由操作系統(tǒng)執(zhí)行的編程語言編譯器和解釋器,但是它們提供了兼容應(yīng)用程序可在其中運(yùn)行的虛擬運(yùn)行時(shí)環(huán)境。例如,用Java編程語言編寫的應(yīng)用程序和Java虛擬機(jī)(JVM)結(jié)合時(shí),可以在獨(dú)立于機(jī)器特定的環(huán)境和配置設(shè)置的異構(gòu)計(jì)算機(jī)系統(tǒng)上執(zhí)行。在P.vanderLinden,“JustJava”,Ch.1,SunMicrosystems,Inc.(2ded.1997)中對Java編程語言的概述進(jìn)行了描述,在此將該文獻(xiàn)中所公開的內(nèi)容通過引用的形式并入。JVM是整個(gè)Java運(yùn)行環(huán)境的關(guān)鍵組件,可將其移植到所有的計(jì)算設(shè)備,包括存儲受限的消費(fèi)設(shè)備。托管代碼平臺一般被設(shè)計(jì)為用于單個(gè)應(yīng)用程序?qū)嵗膯握{(diào)執(zhí)行。托管代碼平臺和一個(gè)應(yīng)用程序?qū)嵗慕M合形成了應(yīng)用程序進(jìn)程。因此,可以執(zhí)行多個(gè)應(yīng)用程序進(jìn)程以模擬多個(gè)獨(dú)立應(yīng)用程序的多任務(wù)行為。每個(gè)“多任務(wù)”的應(yīng)用程序在一個(gè)單獨(dú)的托管代碼平臺下執(zhí)行,該托管代碼平臺提供分離的虛擬運(yùn)行時(shí)環(huán)境。而每個(gè)托管代碼平臺又在底層操作系統(tǒng)的控制下在單獨(dú)的進(jìn)程空間中執(zhí)行??梢允褂貌僮飨到y(tǒng)提供的工具實(shí)現(xiàn)對托管代碼平臺的有限控制,例如進(jìn)程間通信(IPC)和相關(guān)機(jī)制例如信號處理器,但是通常這類工具并不能用于控制在托管代碼平臺下執(zhí)行的應(yīng)用程序。應(yīng)用程序控制不可用有幾個(gè)原因。首先,每個(gè)應(yīng)用程序可以源自不同的源并且可以使用不同的應(yīng)用程序模型、編程語言和運(yùn)行假設(shè)來編程。同樣,每個(gè)應(yīng)用程序在托管代碼平臺提供的虛擬運(yùn)行時(shí)環(huán)境內(nèi)是隔離的,而且必須使用在運(yùn)行時(shí)環(huán)境內(nèi)運(yùn)行的擴(kuò)展庫函數(shù)把進(jìn)程間控制明確地編入應(yīng)用程序中。這種程序擴(kuò)展通常很慢,并且潛在地引入兼容性和互操作性的問題。而且,在簡單性、健壯性和效率方面,隔離的應(yīng)用程序執(zhí)行通常優(yōu)于協(xié)作的應(yīng)用程序執(zhí)行。盡管如此,通常還是使用一個(gè)應(yīng)用程序管理器來基于用戶請求對執(zhí)行于某種設(shè)備(尤其是消費(fèi)設(shè)備)上的多個(gè)應(yīng)用程序進(jìn)程提供最小程度的中央控制。但是,所述控制一般限于提供對應(yīng)用程序的啟動和終止的大粒度控制。由于應(yīng)用程序控制工具不可用,因而也就不支持對應(yīng)用程序級的行為特征的細(xì)粒度控制。例如,應(yīng)用程序?qū)傩曰蛘哂脩艚缑娴耐庥^和感覺可能需要由運(yùn)行時(shí)環(huán)境動態(tài)改變,或者需要確保一致的外觀和用戶體驗(yàn)。但是,應(yīng)用程序間控制工具的缺乏阻礙了這種運(yùn)行時(shí)改變的進(jìn)行。因此,需要一種提供對隔離的應(yīng)用程序進(jìn)程的動態(tài)中央控制的方法。優(yōu)選地,這種方法會影響每個(gè)應(yīng)用程序進(jìn)程的異步變化而不會影響分離的應(yīng)用程序的執(zhí)行。而且,這種方法會進(jìn)一步提供靈活的機(jī)制以傳達(dá)行為變化,而在無顯式協(xié)作的情況下使每個(gè)應(yīng)用程序進(jìn)程繼續(xù)進(jìn)行。
發(fā)明內(nèi)容應(yīng)用程序管理器和托管代碼平臺在應(yīng)用程序框架中執(zhí)行,該框架支持多個(gè)獨(dú)立的隔離用戶應(yīng)用程序的產(chǎn)生。托管代碼平臺包括一個(gè)運(yùn)行時(shí)系統(tǒng)進(jìn)程例如虛擬機(jī),以解釋定義兼容應(yīng)用程序的機(jī)器可移植(machine-portable)代碼。每個(gè)執(zhí)行應(yīng)用程序和運(yùn)行時(shí)系統(tǒng)進(jìn)程對構(gòu)成一個(gè)托管應(yīng)用程序進(jìn)程。該應(yīng)用程序管理器通過一個(gè)實(shí)現(xiàn)進(jìn)程間通信(IPC)機(jī)制的監(jiān)聽器例如專用控制線程異步地訪問該運(yùn)行時(shí)系統(tǒng)。該監(jiān)聽器的一個(gè)實(shí)例駐留在每個(gè)托管應(yīng)用程序進(jìn)程的地址空間中。應(yīng)用程序管理器通過“句柄”可以訪問該監(jiān)聽器。例如,TCP/IP可以被用作應(yīng)用程序管理器和托管應(yīng)用程序進(jìn)程之間的IPC機(jī)制,而該句柄被指定為TCP端口號。運(yùn)行時(shí)系統(tǒng)進(jìn)程上下文包括一組應(yīng)通知對象(notifiableobject),其被用于把行為變化透明地強(qiáng)加于在運(yùn)行時(shí)系統(tǒng)進(jìn)程中執(zhí)行的應(yīng)用程序。合適的托管代碼平臺和托管應(yīng)用程序進(jìn)程的一個(gè)例子是Java運(yùn)行環(huán)境和Java虛擬機(jī)(JVM)體系結(jié)構(gòu),其由加利福尼亞州帕洛阿爾托的太陽微系統(tǒng)公司特許授權(quán)。一個(gè)實(shí)施例提供了一種在托管應(yīng)用程序進(jìn)程中引發(fā)異步行為變化的方法和系統(tǒng)。執(zhí)行一個(gè)應(yīng)用程序管理器進(jìn)程。執(zhí)行一個(gè)托管應(yīng)用程序進(jìn)程。執(zhí)行至少一個(gè)應(yīng)用程序,該應(yīng)用程序被提供為在托管代碼平臺控制下的面向?qū)ο蟪绦虼a。所述托管應(yīng)用程序進(jìn)程與所述應(yīng)用程序管理器進(jìn)程邏輯地進(jìn)行通信。識別與應(yīng)通知對象的類相對應(yīng)的一個(gè)或多個(gè)構(gòu)造器。執(zhí)行時(shí),每個(gè)這樣的構(gòu)造器把所關(guān)心的新構(gòu)造的應(yīng)通知對象放在列表上。將變化請求廣播到托管應(yīng)用程序進(jìn)程。由構(gòu)造器透明跟蹤的應(yīng)通知對象被遍歷以在所述的托管應(yīng)用程序進(jìn)程中實(shí)現(xiàn)行為變化。對于在作為托管應(yīng)用程序進(jìn)程一部分的運(yùn)行時(shí)系統(tǒng)進(jìn)程中執(zhí)行的非協(xié)作的應(yīng)用程序,行為變化被透明地執(zhí)行。利用所述監(jiān)聽器和被透明地跟蹤的應(yīng)通知對象,可以通過在托管應(yīng)用程序進(jìn)程上執(zhí)行的應(yīng)用程序管理器實(shí)現(xiàn)行為變化,其獨(dú)立于且不需要分離的執(zhí)行應(yīng)用程序的顯式協(xié)作。對于本領(lǐng)域的技術(shù)人員,根據(jù)下面的詳細(xì)描述,本發(fā)明的其他實(shí)施例將變得更加清楚,其中通過對預(yù)計(jì)用來實(shí)現(xiàn)本發(fā)明的最佳模式進(jìn)行圖解說明的方式描述了本發(fā)明的實(shí)施例。正如將實(shí)現(xiàn)的,本發(fā)明能夠有其他的、不同的實(shí)施例,并且在各個(gè)明顯的方面,它具有若干細(xì)節(jié)可以修改,但所有的這些都不偏離本發(fā)明的精神和范圍。因此,附圖和詳細(xì)描述將被認(rèn)為是示意性的而非限制性的。圖1是一個(gè)功能框圖,作為例子示出了在多種異構(gòu)設(shè)備上實(shí)現(xiàn)的運(yùn)行時(shí)環(huán)境。圖2是一個(gè)框圖,示出了一種根據(jù)本發(fā)明的在一個(gè)托管應(yīng)用程序進(jìn)程中引發(fā)異步行為變化的系統(tǒng)。圖3A~圖3C是功能框圖,作為例子示出了在一個(gè)應(yīng)用程序管理器和多個(gè)托管應(yīng)用程序進(jìn)程之間的異步控制和數(shù)據(jù)交換。圖4是一個(gè)流程圖,示出了一種根據(jù)本發(fā)明的在一個(gè)托管應(yīng)用程序進(jìn)程中引發(fā)異步行為變化的方法。圖5是一個(gè)流程圖,示出了用于執(zhí)行一個(gè)托管應(yīng)用程序進(jìn)程的例程,所述托管應(yīng)用程序進(jìn)程用于圖4的方法中。圖6是一個(gè)流程圖,作為例子示出了用于處理一個(gè)被引發(fā)的異步行為變化的例程,所述變化用于圖5的例程中。具體實(shí)施例方式發(fā)明概述圖1是一個(gè)功能框圖10,作為例子示出了在多種異構(gòu)設(shè)備11上實(shí)現(xiàn)的運(yùn)行時(shí)環(huán)境(RTE)14、22、24、26。每個(gè)異構(gòu)設(shè)備11提供了一個(gè)在運(yùn)行時(shí)環(huán)境14、22、24、26中執(zhí)行的托管代碼平臺,例如Java運(yùn)行環(huán)境。一個(gè)或多個(gè)的應(yīng)用程序(App)27可以在運(yùn)行時(shí)環(huán)境14、22、24、26中執(zhí)行,且每個(gè)執(zhí)行應(yīng)用程序27和運(yùn)行時(shí)環(huán)境14、22、24、26對構(gòu)成一個(gè)托管應(yīng)用程序進(jìn)程28,下面參照圖2對其進(jìn)行進(jìn)一步的描述。異構(gòu)設(shè)備11包括(非排除性地)一個(gè)客戶計(jì)算機(jī)系統(tǒng)13,例如桌面或者便攜式計(jì)算機(jī)系統(tǒng)。每個(gè)客戶13可操作地連接到存儲設(shè)備15并保存一組類16和類庫17,其分別定義了代碼模塊及這些模塊的可共享的集合,其中所述代碼模塊指定了數(shù)據(jù)結(jié)構(gòu)和操作數(shù)據(jù)的方法集。異構(gòu)設(shè)備11還包括可移動的計(jì)算設(shè)備(包括個(gè)人數(shù)據(jù)助理21)和消費(fèi)設(shè)備(例如移動電話23和機(jī)頂盒(STB)25)。最后,服務(wù)器18可操作地連接到存儲設(shè)備19,其中保存了全局共享的類庫20。每個(gè)異構(gòu)設(shè)備11可以通過網(wǎng)絡(luò)12接口,網(wǎng)絡(luò)12包括傳統(tǒng)的硬連線網(wǎng)絡(luò)配置和無線網(wǎng)絡(luò)配置。其他類型的異構(gòu)設(shè)備11和各種網(wǎng)絡(luò)配置、布局和拓?fù)涫强赡艿摹C總€(gè)異構(gòu)設(shè)備11包括一個(gè)操作系統(tǒng),其管理資源、提供對外圍設(shè)備的訪問、分配存儲資源,并控制程序的執(zhí)行和終止。在一個(gè)實(shí)施例中,每個(gè)操作系統(tǒng)都支持一種進(jìn)程克隆機(jī)制,其通過克隆所能指定的進(jìn)程的存儲空間來創(chuàng)建多個(gè)獨(dú)立的隔離的用戶應(yīng)用程序,正如下列普通轉(zhuǎn)讓的待審美國專利申請中所描述的申請日2003年12月22日、名稱“SystemAndMethodforDynamicPreloadingOfClassesThroughMemorySpaceCloningOfAMasterRuntimeSystemProcess”、序列號10/745023;申請日2003年12月22日、名稱“SystemAndMethodforProvidingPrecompiledCodeThroughMemorySpaceCloningOfAMasterRuntimeSystemProcess”、序列號10/745020;申請日2003年12月22日、名稱“SystemAndMethodforEliminatingStaticInitializationOverheadByMemorySpaceCloningOfAMasterRuntimeSystemProcess”、序列號10/745021;這些申請所公開的內(nèi)容在此通過引用并入。適合在本發(fā)明中使用的進(jìn)程克隆機(jī)制的一個(gè)例子是由Unix和Linux操作系統(tǒng)提供的fork()系統(tǒng)調(diào)用,例如在M.J.Bach,“TheDesignOfTheUnixOperatingSystem”,Ch.7,BellTele.Labs.,Inc.(1986)中所描述的,其在此通過引用并入。調(diào)用fork()系統(tǒng)調(diào)用的進(jìn)程被稱為父進(jìn)程,而新創(chuàng)建的進(jìn)程被稱為子進(jìn)程。操作系統(tǒng)為子進(jìn)程分配一個(gè)單獨(dú)的進(jìn)程標(biāo)識符,子進(jìn)程作為單獨(dú)的進(jìn)程執(zhí)行。操作系統(tǒng)通過把父進(jìn)程的存儲空間復(fù)制到子進(jìn)程的存儲空間,也創(chuàng)建了父進(jìn)程的上下文的邏輯拷貝。在fork()系統(tǒng)調(diào)用的一個(gè)寫時(shí)拷貝的變體中,操作系統(tǒng)只把引用復(fù)制到存儲空間,而且實(shí)際上推遲復(fù)制單個(gè)的存儲空間段直到,并且如果,子進(jìn)程試圖修改父進(jìn)程上下文的引用數(shù)據(jù)。寫時(shí)拷貝的fork()系統(tǒng)調(diào)用比非寫時(shí)拷貝的fork()系統(tǒng)調(diào)用更快,并隱式地在父進(jìn)程和子進(jìn)程之間共享任何沒有被寫入的數(shù)據(jù)。引發(fā)異步行為變化的系統(tǒng)圖2是一個(gè)框圖,其示出了根據(jù)本發(fā)明的、用于在托管應(yīng)用程序進(jìn)程34中引發(fā)異步行為變化的系統(tǒng)30。系統(tǒng)30包括一個(gè)運(yùn)行時(shí)環(huán)境,其執(zhí)行一個(gè)應(yīng)用程序管理器31和一個(gè)或多個(gè)托管應(yīng)用程序進(jìn)程32。托管應(yīng)用程序進(jìn)程32包括一個(gè)托管代碼平臺(例如Java虛擬機(jī)),其解釋機(jī)器可移植代碼,該代碼定義了兼容應(yīng)用程序和一個(gè)或多個(gè)執(zhí)行應(yīng)用程序33。存儲設(shè)備39永久地存儲單獨(dú)的類40和類庫42,其形成整個(gè)核心托管代碼平臺。作為示例,現(xiàn)參照J(rèn)ava運(yùn)行環(huán)境來描述該系統(tǒng),雖然也可以使用其他形式的托管代碼平臺,它們執(zhí)行的應(yīng)用程序優(yōu)選使用面向?qū)ο蟮木幊陶Z言(例如Java編程語言)編寫。應(yīng)用程序管理器31提供一個(gè)用戶界面,用戶通過該用戶界面可選擇和執(zhí)行單獨(dú)的應(yīng)用程序。運(yùn)行時(shí),應(yīng)用程序管理器31和托管應(yīng)用程序進(jìn)程32通過監(jiān)聽器34通信地接口。應(yīng)用程序管理器31通過監(jiān)聽器34和一個(gè)或多個(gè)應(yīng)通知對象35的組合間接地在應(yīng)用程序33中引發(fā)行為變化,應(yīng)通知對象35在托管應(yīng)用程序進(jìn)程上下文中實(shí)例化,并且由它們的構(gòu)造器在列表中透明地跟蹤。監(jiān)聽器34從應(yīng)用程序管理器31中提供一個(gè)邏輯信道,通過該邏輯信道,行為變化可以在消息(“Msg”)38中被異步廣播到一個(gè)或多個(gè)的托管應(yīng)用程序進(jìn)程32。應(yīng)用程序管理器31在應(yīng)用程序啟動列表44中記錄所啟動的托管應(yīng)用程序進(jìn)程32。當(dāng)發(fā)起一個(gè)行為變化時(shí),應(yīng)用程序管理器31遍歷應(yīng)用程序啟動列表44,并把相同的消息38發(fā)送給所有創(chuàng)建的托管應(yīng)用程序進(jìn)程32的監(jiān)聽器34。消息38識別該變化請求的性質(zhì),例如改變應(yīng)用程序?qū)傩曰蛘哂脩艚缑娴耐庥^和感覺。其他類型的變化請求也是可能的。應(yīng)用程序管理器31通過在監(jiān)聽器34上定義的句柄36訪問每個(gè)托管應(yīng)用程序進(jìn)程32。應(yīng)用程序管理器31在監(jiān)聽器句柄列表45中記錄監(jiān)聽器句柄36。監(jiān)聽器34駐留在托管應(yīng)用程序進(jìn)程32的地址空間內(nèi)并包括一個(gè)專用的控制線程,直到應(yīng)用程序管理器31請求一個(gè)變化時(shí)才激活該線程,如下面參照圖5進(jìn)一步描述的。在所描述的實(shí)施例中,監(jiān)聽器34是通過IPC機(jī)制(例如TCP)提供的,并且包括一個(gè)被定義為套接字(例如TCP套接字)的句柄36,其可被指定為托管應(yīng)用程序進(jìn)程32上的專用端口號。應(yīng)通知對象35在托管應(yīng)用程序進(jìn)程32的托管代碼平臺的上下文中實(shí)例化。應(yīng)通知對象35的構(gòu)造器41、43在類40中定義,而類定義在類庫42中。托管應(yīng)用程序進(jìn)程32使用應(yīng)通知對象35類型的構(gòu)造器41、43,以把每個(gè)實(shí)例化的應(yīng)通知對象35放入托管應(yīng)用程序進(jìn)程32的本地列表46中。在類40、42中設(shè)計(jì)這些構(gòu)造器41、43以包括實(shí)現(xiàn)這種跟蹤的必要功能。類40、42繼續(xù)滿足編程模型的期望,而且補(bǔ)充額外的跟蹤和變化功能。例如,應(yīng)用程序33經(jīng)常使用某些公知的庫,而且定義這些庫所需的源代碼的實(shí)現(xiàn)一般被指定為系統(tǒng)類,而不是應(yīng)用程序類。因此,可以編寫這些庫,既提供期望的功能,又包括在列表46中跟蹤應(yīng)通知對象35的功能,從而允許行為變化相對于應(yīng)用程序執(zhí)行透明地發(fā)生。在另一個(gè)的實(shí)施例中,每個(gè)類40、42也定義一個(gè)析構(gòu)器或完成器(finalizer),其能夠?yàn)槔厥諜z測應(yīng)通知對象35的資格(eligibility)。然后,析構(gòu)器方法能夠把應(yīng)通知對象35從各自的跟蹤列表中移出,因?yàn)閼?yīng)通知對象35將被垃圾回收器回收。為了發(fā)起一個(gè)行為變化,應(yīng)用程序管理器31發(fā)送一個(gè)消息38,該消息識別實(shí)現(xiàn)行為變化所需的應(yīng)通知對象35的類型。然后,監(jiān)聽器34遍歷在本地列表46中所跟蹤的識別類型的已分配的應(yīng)通知對象35,并代表應(yīng)用程序管理器31透明地實(shí)現(xiàn)該行為變化。異步控制和數(shù)據(jù)交換圖3A~圖3C是功能框圖60、80、90,作為例子示出了一個(gè)應(yīng)用程序管理器(AppMgr)62和多個(gè)托管應(yīng)用程序進(jìn)程(MAP)63、65、67之間的異步控制和數(shù)據(jù)交換。應(yīng)用程序管理器62和托管應(yīng)用程序進(jìn)程63、65、67全都執(zhí)行與運(yùn)行時(shí)環(huán)境61內(nèi)。參見圖3A,每個(gè)托管應(yīng)用程序進(jìn)程63、65、67使用對應(yīng)于應(yīng)通知對象類型的構(gòu)造器69來把應(yīng)通知對象跟蹤進(jìn)一個(gè)本地列表。然后參見圖3B,應(yīng)用程序管理器62經(jīng)由異步“廣播”71將消息38傳送給每個(gè)托管應(yīng)用程序進(jìn)程63、65、67,以開始引發(fā)行為變化,其被在每個(gè)托管應(yīng)用程序進(jìn)程63、65、67中實(shí)現(xiàn)的監(jiān)聽器(“L”)64、66、68接收。廣播71有兩個(gè)功能。第一,廣播71通知每個(gè)托管應(yīng)用程序進(jìn)程63、65、67應(yīng)用程序管理器62正在請求一個(gè)行為變化。第二,廣播71識別所請求的行為變化類型。作為示例,這些變化可能會影響每個(gè)托管應(yīng)用程序進(jìn)程63、65、67的屬性或外觀以及感覺特征。其他類型的變化也是可能的。最后參見圖3C,單獨(dú)的托管應(yīng)用程序進(jìn)程63、65、67實(shí)現(xiàn)了所請求的行為變化。每個(gè)托管應(yīng)用程序進(jìn)程63、65、67采取的動作類型取決于定義每個(gè)應(yīng)通知對象69的代碼。監(jiān)聽器64、66、68負(fù)責(zé)在每個(gè)托管應(yīng)用程序進(jìn)程63、65、67的相應(yīng)地址空間中查找每組被跟蹤的應(yīng)通知對象并遍歷應(yīng)通知對象以實(shí)現(xiàn)行為變化。其他類型的動作是可能的。引發(fā)異步行為變化的方法圖4是一個(gè)流程圖,示出了根據(jù)本發(fā)明的、在一個(gè)托管的應(yīng)用程序進(jìn)程中引發(fā)異步行為變化的方法90。方法100被描述成一系列的進(jìn)程操作或步驟,例如其可由圖2的運(yùn)行時(shí)環(huán)境31或者其他組件來執(zhí)行。初始時(shí),裝載應(yīng)用程序管理器31(框91)。當(dāng)開始一個(gè)被引發(fā)的行為變化時(shí),應(yīng)用程序管理器31識別實(shí)現(xiàn)行為變化所需的應(yīng)通知對象35的類型(框92)。然后,應(yīng)用程序管理器31通過分別定義在每個(gè)托管應(yīng)用程序進(jìn)程32上的句柄36調(diào)用所有已創(chuàng)建的托管應(yīng)用程序進(jìn)程32的監(jiān)聽器34(框93)。然后,描述行為變化的消息38被廣播到托管應(yīng)用程序進(jìn)程32(框94)。處理無限地繼續(xù)下去直到應(yīng)用程序管理器31被終止時(shí)為止。執(zhí)行托管應(yīng)用程序進(jìn)程的例程圖5是一個(gè)流程圖,其示出了用于執(zhí)行托管應(yīng)用程序進(jìn)程32的例程100,托管應(yīng)用程序進(jìn)程32在圖4的方法90中使用。這個(gè)例程的一個(gè)目的是發(fā)起一個(gè)異步行為變化以響應(yīng)從應(yīng)用程序管理器31中收到的變化請求。初始時(shí),由托管應(yīng)用程序進(jìn)程32的托管代碼平臺執(zhí)行應(yīng)用程序33(框101)。創(chuàng)建句柄36,并在監(jiān)聽句柄36的托管應(yīng)用程序進(jìn)程32中啟動一個(gè)專用的控制線程(框102)。該控制線程立即進(jìn)入不活動的休眠模式(框103)。當(dāng)從應(yīng)用程序管理器31接收到變化請求時(shí)(框104),該控制線程被喚醒(框105)并處理一個(gè)被引發(fā)的行為變化(框106),如下面參照圖6進(jìn)一步描述的。處理無限地繼續(xù)下去直到應(yīng)用程序管理器31被終止時(shí)為止。處理變化的例程圖6是一個(gè)流程圖,作為例子示出了例程110,其用于處理一個(gè)被引發(fā)的異步行為變化,該變化在圖5的例程100中使用。這個(gè)例程的一個(gè)目的是通過執(zhí)行應(yīng)通知對象110、111在托管應(yīng)用程序進(jìn)程102上實(shí)現(xiàn)行為變化。當(dāng)監(jiān)聽器34從應(yīng)用程序管理器31中收到消息38的廣播時(shí),監(jiān)聽器34觸發(fā)該執(zhí)行。然后,監(jiān)聽器34負(fù)責(zé)在托管應(yīng)用程序進(jìn)程32的相應(yīng)地址空間中查找每組應(yīng)通知對象35,并遍歷應(yīng)通知對象35以實(shí)現(xiàn)該行為變化。初始時(shí),識別所請求的行為變化的類型(框111)。在一個(gè)實(shí)施例中,通過識別(框113)和通知一個(gè)或多個(gè)的注冊屬性變化監(jiān)聽器(框114),可以實(shí)現(xiàn)托管應(yīng)用程序進(jìn)程32的屬性變化(框112)。在另一個(gè)實(shí)施例中,可以實(shí)現(xiàn)托管應(yīng)用程序進(jìn)程32的用戶界面的外觀和感覺特征的變化(框116)。如果所請求的變化識別了一個(gè)有效的外觀和感覺類(框117),那么外觀和感覺行為變化是必要的。托管應(yīng)用程序進(jìn)程32遍歷(框118~120)每個(gè)注冊的頂級用戶界面組件并發(fā)送外觀和感覺變化消息(框119)。然后以適于使用的工具包的方式實(shí)現(xiàn)這個(gè)變化。例如,這個(gè)變化可以被排隊(duì)以暫時(shí)推遲執(zhí)行或者可以被立即執(zhí)行。在實(shí)現(xiàn)變化之后,該例程返回。作為例子,如果由應(yīng)用程序管理器31發(fā)送的消息38包括“PROPERTY_CHANGEpropertyName=value”,那么監(jiān)聽器34識別那些為<propertyName>注冊的屬性變化監(jiān)聽器并使用propertyChanged()調(diào)用通知每個(gè)屬性變化監(jiān)聽器。作為另一個(gè)例子,如果由應(yīng)用程序管理器31發(fā)送的消息38包括“LANDF_CHANGElookAndFellClassName”,那么監(jiān)聽器34確定<lookAndFellClassName>是有效的并且不同于當(dāng)前的外觀和感覺。如果改變是必要的,那么監(jiān)聽器34遍歷所有注冊的頂級用戶界面組件并發(fā)送外觀和感覺變化消息。行為變化的其他類型是可能的。雖然已經(jīng)參照本發(fā)明的實(shí)施例具體地示出和描述了本發(fā)明,但本領(lǐng)域的技術(shù)人員將明白,在不脫離本發(fā)明的精神和范圍的情況下可以進(jìn)行形式和細(xì)節(jié)上的前述變化和其他變化。權(quán)利要求1.一種在托管應(yīng)用程序進(jìn)程中引發(fā)異步行為變化的系統(tǒng),其包括一個(gè)托管應(yīng)用程序進(jìn)程,其包括至少一個(gè)應(yīng)用程序,其被提供為在托管代碼平臺控制下的面向?qū)ο蟪绦虼a;和一個(gè)與執(zhí)行應(yīng)用程序管理器進(jìn)程邏輯地進(jìn)行通信的句柄;一個(gè)本地列表,以識別一個(gè)或多個(gè)對應(yīng)于應(yīng)通知對象的構(gòu)造器,所述應(yīng)通知對象被提供為面向?qū)ο蟪绦虼a;至少一個(gè)控制線程,以將變化請求廣播到所述托管應(yīng)用程序進(jìn)程;一個(gè)監(jiān)聽器,以遍歷由每個(gè)識別的構(gòu)造器所跟蹤的所述應(yīng)通知對象以在所述托管應(yīng)用程序進(jìn)程中實(shí)現(xiàn)行為變化。2.根據(jù)權(quán)利要求1所述的系統(tǒng),進(jìn)一步包括一個(gè)指定所述監(jiān)聽器的控制線程,其中使所述控制線程相對于接收所述變化請求休眠。3.根據(jù)權(quán)利要求2所述的系統(tǒng),其中在所述控制線程上定義的流中從所述應(yīng)用程序管理器中傳送信息。4.根據(jù)權(quán)利要求3所述的系統(tǒng),其中所述句柄包括TCP套接字,所述流包括TCP流。5.根據(jù)權(quán)利要求1所述的系統(tǒng),進(jìn)一步包括一個(gè)或多個(gè)構(gòu)造器,其對應(yīng)于所述應(yīng)通知對象,并為垃圾回收指定所述應(yīng)通知對象的資格。6.根據(jù)權(quán)利要求1所述的系統(tǒng),進(jìn)一步包括與至少一個(gè)應(yīng)用程序相關(guān)的至少一個(gè)屬性,其通過所述至少一個(gè)這樣的應(yīng)通知對象被改變。7.根據(jù)權(quán)利要求6所述的系統(tǒng),進(jìn)一步包括至少一個(gè)屬性變化監(jiān)聽器,其指定至少一個(gè)屬性變化。8.根據(jù)權(quán)利要求7所述的系統(tǒng),進(jìn)一步包括所述的至少一個(gè)屬性變化監(jiān)聽器相對于接收所述變化請求被通知。9.根據(jù)權(quán)利要求6所述的系統(tǒng),進(jìn)一步包括與所述至少一個(gè)應(yīng)用程序相關(guān)的至少一個(gè)外觀和感覺特征,其通過所述至少一個(gè)這樣的應(yīng)通知對象被改變。10.根據(jù)權(quán)利要求9所述的系統(tǒng),進(jìn)一步包括至少一個(gè)注冊的頂級用戶界面組件,其指定所述至少一個(gè)外觀和感覺特征的變化。11.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述監(jiān)聽器相對于接收所述的變化請求遍歷各個(gè)至少一個(gè)注冊的頂級用戶界面組件。12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中實(shí)現(xiàn)至少一個(gè)外觀和感覺特征變化的完成,包括以下至少一個(gè)一個(gè)隊(duì)列,其相對于接收所述的變化請求排隊(duì)所述的至少一個(gè)注冊的頂級用戶界面組件以暫時(shí)推遲執(zhí)行;和一個(gè)處理線程,其相對于接收所述的變化請求立即執(zhí)行所述的至少一個(gè)注冊的頂級用戶界面組件。13.根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述的面向?qū)ο蟪绦虼a是用Java編程語言編寫的。14.根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述的托管代碼平臺是Java虛擬機(jī)。全文摘要本文介紹了一種在托管應(yīng)用程序進(jìn)程中引發(fā)異步行為變化的方法和系統(tǒng)。執(zhí)行一個(gè)應(yīng)用程序管理器進(jìn)程。執(zhí)行一個(gè)托管應(yīng)用程序進(jìn)程。執(zhí)行至少一個(gè)應(yīng)用程序,其被提供為在托管代碼平臺控制下的面向?qū)ο蟪绦虼a。托管應(yīng)用程序進(jìn)程與應(yīng)用程序管理器進(jìn)程邏輯地進(jìn)行通信。識別一個(gè)或多個(gè)對應(yīng)于應(yīng)通知對象的構(gòu)造器,所述應(yīng)通知對象被提供為面向?qū)ο蟪绦虼a。每個(gè)構(gòu)造器在托管應(yīng)用程序進(jìn)程中的列表中保持對實(shí)例化應(yīng)通知對象的跟蹤。將變化請求廣播到托管應(yīng)用程序進(jìn)程。對每個(gè)識別的構(gòu)造器所跟蹤的應(yīng)通知對象進(jìn)行遍歷以在所述托管應(yīng)用程序進(jìn)程中實(shí)現(xiàn)行為變化。文檔編號G06F9/44GK1797346SQ200410102419公開日2006年7月5日申請日期2004年12月22日優(yōu)先權(quán)日2003年12月22日發(fā)明者N·弗雷斯科申請人:太陽微系統(tǒng)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
安平县| 喀喇| 东乡县| 桦甸市| 镇原县| 富顺县| 温州市| 肥乡县| 岳阳市| 道真| 南陵县| 顺昌县| 沙湾县| 临猗县| 镇宁| 广南县| 金塔县| 澄迈县| 邛崃市| 临颍县| 四会市| 洮南市| 汾西县| 新源县| 临湘市| 灯塔市| 元朗区| 内乡县| 肥乡县| 汤阴县| 西宁市| 曲周县| 建始县| 巴里| 南澳县| 观塘区| 始兴县| 通榆县| 哈巴河县| 佛教| 湖口县|