專利名稱::從部署服務(wù)器內(nèi)為目標(biāo)系統(tǒng)運(yùn)行時(shí)優(yōu)化應(yīng)用的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及實(shí)時(shí)軟件部署,更具體地說(shuō),涉及用于從部署服務(wù)器內(nèi)部為目標(biāo)系統(tǒng)運(yùn)行時(shí)優(yōu)化應(yīng)用的技術(shù)。
背景技術(shù):
:平臺(tái)無(wú)關(guān)的軟件語(yǔ)言(例如來(lái)自加利福尼亞圣克萊拉的SunMicrosystems的JAVA編程語(yǔ)言)的革新代表了顯著的技術(shù)進(jìn)步,其允許以平臺(tái)無(wú)關(guān)的語(yǔ)言編寫軟件,我們稱這為一次編寫、隨處運(yùn)行(WORA)的語(yǔ)言。平臺(tái)無(wú)關(guān)的語(yǔ)言可以減少軟件開發(fā)時(shí)間和系統(tǒng)維護(hù)時(shí)間(因?yàn)閮H有一個(gè)版本的軟件應(yīng)用需要被開發(fā)和維護(hù)),可以緩解許多“鎖定”情況,并且通常允許以平臺(tái)中立(platformagnostic)方式發(fā)生應(yīng)用的Web部署。但是,目前在系統(tǒng)和應(yīng)用程序中經(jīng)常需要和/或希望進(jìn)行優(yōu)化以改善性能并最小化由平臺(tái)中立軟件所消耗的資源。這些優(yōu)化在存儲(chǔ)器和計(jì)算資源非常珍貴的系統(tǒng)中尤為重要,許多移動(dòng)計(jì)算設(shè)備、普適計(jì)算系統(tǒng)、嵌入式計(jì)算系統(tǒng)等屬于這種情況。示例性資源保存優(yōu)化可以包括,例如,從包中刪除未使用的類、執(zhí)行提前(AOT)編譯、刪除或修改代碼路徑、優(yōu)化應(yīng)用中的存儲(chǔ)器利用等。在某些情況下,優(yōu)化和設(shè)備特定的定制變得不只是奢侈,在通用軟件可以在設(shè)備上運(yùn)行之前提供必要的預(yù)報(bào)。應(yīng)當(dāng)理解,在全球市場(chǎng)中的設(shè)備的類型和用途是極其瑣碎和種類繁多的。也就是說(shuō),即使軟件開發(fā)人員使用WORA語(yǔ)言來(lái)構(gòu)建軟件,設(shè)備的細(xì)微問(wèn)題常常會(huì)導(dǎo)致生成的應(yīng)用運(yùn)行不佳或者甚至出現(xiàn)故障。例如,盡管個(gè)人數(shù)字助理(PDA)可以執(zhí)行JAVA代碼,但是PDA的存儲(chǔ)器或處理器局限會(huì)導(dǎo)致代碼執(zhí)行期間的運(yùn)行時(shí)錯(cuò)誤。在硬件方面的快速技術(shù)進(jìn)步加劇了異類設(shè)備市場(chǎng)中固有的問(wèn)題。由于市場(chǎng)壓力和快速進(jìn)步,同一制造商可以支持同等設(shè)備或設(shè)備線的多種配置,每種配置都具有不同的存儲(chǔ)器和處理器規(guī)范。更成問(wèn)題的是,相同設(shè)備類型的不同制造商可以在大致相同的設(shè)備中使用不同的技術(shù)。結(jié)果,商用市場(chǎng)中設(shè)備硬件和配置差異可以相對(duì)較大,由此負(fù)面地影響了平臺(tái)無(wú)關(guān)的軟件的生存能力。在異類設(shè)備空間內(nèi)實(shí)現(xiàn)軟件的現(xiàn)有解決方案存在缺陷。一種初步的解決方案是,在軟件開發(fā)生命周期的設(shè)計(jì)階段期間,在每個(gè)設(shè)備的基礎(chǔ)上定制和優(yōu)化軟件。但是,此解決方案很昂貴并且很大程度地消除了通過(guò)WORA技術(shù)獲得的收益。進(jìn)而,因?yàn)閯?chuàng)建了新的設(shè)備,需要用于新設(shè)備的軟件的新版本和/或優(yōu)化,這導(dǎo)致支持和維護(hù)軟件應(yīng)用的持續(xù)成本。另一種解決方案是在應(yīng)用的運(yùn)行時(shí)編譯器中執(zhí)行自適應(yīng)優(yōu)化。這樣的解決方案可以在應(yīng)用執(zhí)行期間采集反饋信息,可以將反饋傳送給編譯器,并且可以根據(jù)反饋重新編譯代碼。缺點(diǎn)是需要大量的監(jiān)視開銷以運(yùn)行地捕獲反饋并連續(xù)地重新編譯代碼。開銷的水平會(huì)超過(guò)從該解決方案得到的性能收益。進(jìn)而,資源受限的設(shè)備通常沒(méi)有足夠的可分配資源來(lái)執(zhí)行基礎(chǔ)代碼,更不用說(shuō)自適應(yīng)優(yōu)化客戶端中的基礎(chǔ)代碼所需的額外開銷代碼。還有另一種跨不同基礎(chǔ)部署代碼的解決方案是建立客戶端-服務(wù)器聯(lián)系,其中執(zhí)行的一部分發(fā)生在服務(wù)器處。可以為不同的設(shè)備開發(fā)不同的客戶端,每個(gè)客戶端均能夠在其主機(jī)設(shè)備的資源約束內(nèi)運(yùn)行??蛻舳?服務(wù)器系統(tǒng)可以被進(jìn)一步增強(qiáng)以包括負(fù)載平衡系統(tǒng)、內(nèi)容緩存、并行計(jì)算、冗余服務(wù)器,以及其它用于消除客戶端-服務(wù)器架構(gòu)中常見的瓶頸和通信中斷的網(wǎng)絡(luò)技術(shù)。雖然此解決方案可以減輕對(duì)資源受限設(shè)備某些擔(dān)心,但是其不能解決不同設(shè)備空間的根本問(wèn)題。進(jìn)而,此解決方案需要客戶端與服務(wù)器之間的相對(duì)恒定的通信鏈接,在許多情況下,這是成本昂貴的和/或不利的。此外,客戶端-服務(wù)器解決方案仍需要為不同設(shè)備構(gòu)建不同的客戶端,其中構(gòu)建不同的客戶端涉及上述的問(wèn)題,這未被現(xiàn)有技術(shù)充分地解決。還有一種類型的自適應(yīng)設(shè)備解決方案通過(guò)譯碼解決了呈現(xiàn)和輸入問(wèn)題。例如,移動(dòng)設(shè)備通常具有較小的屏幕和不同于限制較少的設(shè)備的默認(rèn)輸入模式(例如,與鍵盤輸入相反的語(yǔ)音識(shí)別輸入或手寫識(shí)別輸入)。譯碼試圖將為一種類型的設(shè)備設(shè)計(jì)的輸入和輸出修改為不同類型設(shè)備的特性,以便例如為臺(tái)式機(jī)瀏覽器設(shè)計(jì)的網(wǎng)頁(yè)可以在啟用Web的PDA設(shè)備中被清晰地呈現(xiàn)。譯碼解決方案解決不同設(shè)備之間的輸入/輸出差異(deltas),并且不優(yōu)化目標(biāo)平臺(tái)的代碼以便最小化資源消耗。因此,譯碼作為補(bǔ)充解決方案在此提出并且在其它方面與本發(fā)明無(wú)關(guān)。
發(fā)明內(nèi)容本發(fā)明詳述了一種用于從部署服務(wù)器內(nèi)部為目標(biāo)系統(tǒng)運(yùn)行時(shí)優(yōu)化應(yīng)用的系統(tǒng)、方法和裝置。本發(fā)明可以被用在即需環(huán)境中,其中客戶端可以從服務(wù)器請(qǐng)求應(yīng)用或應(yīng)用部分,服務(wù)器響應(yīng)地提供所請(qǐng)求的應(yīng)用。例如,JAVA運(yùn)行時(shí)環(huán)境(JRE)是此類即需環(huán)境的一個(gè)實(shí)例,雖然本發(fā)明并不限于此方面。根據(jù)本發(fā)明,可以開發(fā)并且在部署服務(wù)器內(nèi)部署未針對(duì)特定設(shè)備或平臺(tái)優(yōu)化的稱為通用應(yīng)用的應(yīng)用版本。所述部署服務(wù)器可以包括多個(gè)設(shè)備簡(jiǎn)檔,其定義了可以請(qǐng)求應(yīng)用交付的設(shè)備的屬性。具有關(guān)聯(lián)簡(jiǎn)檔的設(shè)備可以將應(yīng)用請(qǐng)求提交給所述部署服務(wù)器,所述服務(wù)器可以使用所述簡(jiǎn)檔為發(fā)出請(qǐng)求的設(shè)備動(dòng)態(tài)地優(yōu)化所述通用應(yīng)用。當(dāng)所述簡(jiǎn)檔如此指示時(shí),所述部署服務(wù)器可以為接收設(shè)備以適當(dāng)格式將所交付的應(yīng)用與適合的運(yùn)行時(shí)執(zhí)行庫(kù)以及例程一起打包。本發(fā)明可以以各個(gè)方面和實(shí)施例來(lái)表達(dá)并且可以被解釋為具有由此處包括的權(quán)利要求部分所定義的范圍。根據(jù)本發(fā)明的一個(gè)方面,部署服務(wù)器可以包括簡(jiǎn)檔數(shù)據(jù)存儲(chǔ)、通用應(yīng)用數(shù)據(jù)存儲(chǔ)以及優(yōu)化器。所述簡(jiǎn)檔數(shù)據(jù)存儲(chǔ)可以包含多個(gè)設(shè)備屬性,并可以將不同的優(yōu)化參數(shù)或優(yōu)化例程與每個(gè)存儲(chǔ)的屬性關(guān)聯(lián)。所述通用應(yīng)用數(shù)據(jù)存儲(chǔ)可以包含至少一個(gè)以設(shè)備無(wú)關(guān)的方式編寫的通用應(yīng)用。所述優(yōu)化器可以從一類不同的請(qǐng)求設(shè)備接收應(yīng)用請(qǐng)求,并且可以響應(yīng)于接受到的請(qǐng)求動(dòng)態(tài)地生成設(shè)備特定的應(yīng)用。對(duì)于每個(gè)發(fā)出請(qǐng)求的設(shè)備,所述優(yōu)化器可以確定發(fā)出請(qǐng)求的設(shè)備的屬性,使用所述簡(jiǎn)檔數(shù)據(jù)存儲(chǔ)來(lái)標(biāo)識(shí)所述發(fā)出請(qǐng)求的設(shè)備的優(yōu)化參數(shù)或優(yōu)化例程,并且根據(jù)來(lái)自所述簡(jiǎn)檔數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)和根據(jù)從所述通用應(yīng)用數(shù)據(jù)存儲(chǔ)檢索的通用應(yīng)用來(lái)生成設(shè)備特定的應(yīng)用。本發(fā)明的另一個(gè)方面可以包括一種用于優(yōu)化應(yīng)用的計(jì)算機(jī)化方法。所述方法可以包括從客戶端接收對(duì)應(yīng)用的請(qǐng)求的步驟。所述方法可以將所述客戶端與至少一個(gè)先前存儲(chǔ)的簡(jiǎn)檔相匹配,可以根據(jù)所述簡(jiǎn)檔確定特定于所述客戶端的屬性,并且可以根據(jù)所確定的屬性和所述應(yīng)用的通用版本來(lái)動(dòng)態(tài)地生成客戶端優(yōu)化的應(yīng)用。所述客戶端優(yōu)化的應(yīng)用可以被傳送給所述客戶端。應(yīng)當(dāng)指出,本發(fā)明可以被實(shí)現(xiàn)為使控制計(jì)算機(jī)實(shí)現(xiàn)此處所述的功能的程序,或者被實(shí)現(xiàn)為使得計(jì)算機(jī)能夠執(zhí)行與此處公開的步驟對(duì)應(yīng)的過(guò)程的程序??梢酝ㄟ^(guò)在磁盤、光盤、半導(dǎo)體存儲(chǔ)器以及任何其它記錄介質(zhì)中存儲(chǔ)所述程序來(lái)提供所述程序,或者通過(guò)網(wǎng)絡(luò)分發(fā)所述程序。附圖中示出了當(dāng)前優(yōu)選的實(shí)施例,但是可以理解,本發(fā)明并不限于此處所示的精確布置和工具圖1是示出了根據(jù)此處公開的發(fā)明布置的實(shí)施例的用于部署為目標(biāo)客戶端優(yōu)化的應(yīng)用的系統(tǒng)的示意圖;圖2是示出了根據(jù)此處公開的發(fā)明布置的實(shí)施例的優(yōu)化應(yīng)用的方法的流程圖。具體實(shí)施例方式圖1是示出了根據(jù)此處公開的發(fā)明布置的實(shí)施例的用于部署為目標(biāo)客戶端優(yōu)化的應(yīng)用的系統(tǒng)100的示意圖。在系統(tǒng)100中,可以在軟件開發(fā)計(jì)算機(jī)105中開發(fā)通用應(yīng)用120。通用應(yīng)用120是任何未針對(duì)特定客戶端115優(yōu)化的應(yīng)用。在一個(gè)實(shí)施例中,可以以平臺(tái)無(wú)關(guān)的方式來(lái)編寫通用應(yīng)用120,以便最大化其中可以部署通用應(yīng)用120的系統(tǒng)的數(shù)目。例如,可以以JAVA編程語(yǔ)言或者任何其它平臺(tái)無(wú)關(guān)的語(yǔ)言來(lái)編寫通用應(yīng)用120。在開發(fā)之后,通用應(yīng)用120可以通過(guò)網(wǎng)絡(luò)140被傳送給部署服務(wù)器110,其可以被配置為響應(yīng)客戶端115的請(qǐng)求而部署應(yīng)用和/或應(yīng)用組件。當(dāng)客戶端115請(qǐng)求應(yīng)用時(shí),部署服務(wù)器110可以確定與該請(qǐng)求對(duì)應(yīng)的先前存儲(chǔ)的通用應(yīng)用120,可以確定客戶端115的能力,并且可以響應(yīng)地生成客戶端優(yōu)化的應(yīng)用122。可以通過(guò)網(wǎng)絡(luò)142將生成的客戶端優(yōu)化的應(yīng)用122傳送給發(fā)出請(qǐng)求客戶端115。因此,軟件開發(fā)人員可以專注于編寫設(shè)備無(wú)關(guān)的軟件,并且軟件消費(fèi)者可以接收為他們的個(gè)人設(shè)備定制的軟件。軟件開發(fā)服務(wù)器105可以代表設(shè)計(jì)、構(gòu)建、測(cè)試、維護(hù)和/或管理通用應(yīng)用120的軟件開發(fā)環(huán)境內(nèi)所使用的任何計(jì)算機(jī)或通信地鏈接并且互操作的計(jì)算設(shè)備的網(wǎng)絡(luò)??蛻舳?15可以包括在主機(jī)設(shè)備上執(zhí)行的機(jī)器可讀的代碼,所述主機(jī)設(shè)備能夠從部署服務(wù)器110請(qǐng)求應(yīng)用,接收應(yīng)用122并執(zhí)行應(yīng)用122??蛻舳?15可以在執(zhí)行應(yīng)用122時(shí)以自主的方式運(yùn)行,或者在執(zhí)行該應(yīng)用122時(shí)要求與一個(gè)或多個(gè)位于遠(yuǎn)程的服務(wù)器進(jìn)行操作上的通信交換??蛻舳?15不限于特定設(shè)備上主持的任何特定類型的軟件,但是其旨在被廣泛地解釋為包括由瑣碎和異類設(shè)備空間內(nèi)的不同設(shè)備所主持的大量可能的客戶端。客戶端115可以駐留于其上的設(shè)備可以包括,但不限于,嵌入式設(shè)備、普適計(jì)算設(shè)備、移動(dòng)設(shè)備、臺(tái)式計(jì)算設(shè)備、筆記本計(jì)算設(shè)備等。例如,主持客戶端115的設(shè)備可以是資源受限的設(shè)備,例如個(gè)人數(shù)字助理(PDA)、移動(dòng)電話、平板計(jì)算機(jī)、機(jī)頂盒、嵌入交通工具的設(shè)備和/或普遍存在的計(jì)算設(shè)備。在另一個(gè)實(shí)例中,主持設(shè)備可以包括如臺(tái)式計(jì)算機(jī)、筆記本計(jì)算機(jī)或內(nèi)聯(lián)網(wǎng)服務(wù)器這樣的傳統(tǒng)計(jì)算設(shè)備。主持客戶端115的設(shè)備可以是物理設(shè)備或軟件定義的虛擬設(shè)備。所述設(shè)備可以包括地理上為本地的硬件以及分布式聯(lián)網(wǎng)的部件。類似地,可以由集中式或分布式組件形成部署服務(wù)器110,所述組件以這樣的方式互操作可以生成客戶端優(yōu)化的應(yīng)用122并將其傳送給客戶端115。在一個(gè)實(shí)施例中,部署服務(wù)器110可以是用于創(chuàng)建、測(cè)試電子商務(wù)應(yīng)用并將其部署到移動(dòng)和無(wú)線設(shè)備的集成開發(fā)環(huán)境的組件。在這樣的實(shí)施例中,部署服務(wù)器110可以使用可從市場(chǎng)上購(gòu)買的工具,例如MICROANALYZER和SMARTLINKER,它們都是來(lái)自紐約阿蒙克的國(guó)際商業(yè)機(jī)器公司(IBM)的WEBSPHERESTUDIODEVICEDEVELOPER(WSDD)的組件。但是,部署服務(wù)器110并不限于此方面,其可以使用多種方法和組件來(lái)實(shí)現(xiàn),如本領(lǐng)域技術(shù)人員應(yīng)容易地理解的,因?yàn)樵谟?jì)算機(jī)科學(xué)領(lǐng)域存在許多部署服務(wù)器技術(shù),它們可以與此處詳述的發(fā)明布置結(jié)合使用。部署服務(wù)器110可以在接收到通用應(yīng)用120時(shí)為大量定義的客戶端配置生成客戶端優(yōu)化的應(yīng)用122,可以在接收到客戶端請(qǐng)求時(shí)動(dòng)態(tài)地生成客戶端優(yōu)化的應(yīng)用122,或者是二者的組合。例如,部署服務(wù)器110可以(只要資源允許)在請(qǐng)求之前為普及的客戶端配置生成客戶端優(yōu)化的應(yīng)用122,并且可以即需地動(dòng)態(tài)生成不十分普及的優(yōu)化。在另一個(gè)實(shí)例中,部署服務(wù)器110可以以重復(fù)的方式執(zhí)行優(yōu)化腳本,使得從通用應(yīng)用120生成優(yōu)化的應(yīng)用122所需的某些優(yōu)化在接收到請(qǐng)求之前被執(zhí)行,而其他優(yōu)化在接收到請(qǐng)求之后被執(zhí)行。部署服務(wù)器110可以包括分析器150、優(yōu)化器152以及捆綁器154,并且可以使用在簡(jiǎn)檔存儲(chǔ)130、參數(shù)存儲(chǔ)132、通用應(yīng)用存儲(chǔ)134以及庫(kù)存儲(chǔ)136中保存的信息。每個(gè)數(shù)據(jù)存儲(chǔ)130、132、134和136可以是部署服務(wù)器110的本地存儲(chǔ)或者是可以通過(guò)網(wǎng)絡(luò)144訪問(wèn)的位于遠(yuǎn)程的存儲(chǔ)。簡(jiǎn)檔數(shù)據(jù)130可以存儲(chǔ)設(shè)備的多個(gè)屬性,并且可以將不同的優(yōu)化參數(shù)或優(yōu)化例程與每個(gè)存儲(chǔ)的屬性相關(guān)聯(lián)。參數(shù)存儲(chǔ)132可以存儲(chǔ)客戶端特定的參數(shù)、優(yōu)化器特定的參數(shù)以及在優(yōu)化過(guò)程中使用的腳本。通用應(yīng)用數(shù)據(jù)存儲(chǔ)134可以存儲(chǔ)多個(gè)通用應(yīng)用120,提前(在接收到請(qǐng)求之前)構(gòu)建的客戶端優(yōu)化的應(yīng)用122,以及在構(gòu)建客戶端優(yōu)化的應(yīng)用122中使用的通用應(yīng)用120的部分優(yōu)化。庫(kù)存儲(chǔ)136可以包括運(yùn)行時(shí)庫(kù)、模塊、相關(guān)性表等,它們可以被用于確??蛻舳吮粋魉涂蛻舳藘?yōu)化的應(yīng)用122在客戶端115上運(yùn)行所需的任何或全部軟件例程。分析器150可以動(dòng)態(tài)地分析其上駐留了客戶端115的設(shè)備的能力。這些能力可以被轉(zhuǎn)換成一個(gè)或多個(gè)屬性,其可以遵循規(guī)定的標(biāo)準(zhǔn)。因此,盡管不同的客戶端115可以以客戶端特定或設(shè)備特定的方式來(lái)定義它們的能力,但是可以依照標(biāo)準(zhǔn)化的術(shù)語(yǔ)來(lái)存儲(chǔ)設(shè)備簡(jiǎn)檔(稱為客戶端屬性)。例如,不同的中央處理單元(CPU)制造商使用不同的參考框架來(lái)定義CPU能力。不同的優(yōu)化腳本和參數(shù)可以與不同的屬性相關(guān),其中的關(guān)系在參數(shù)存儲(chǔ)132的表或者文件內(nèi)指定。優(yōu)化器152可以從一類不同的客戶端115接收應(yīng)用請(qǐng)求,并且可以使用簡(jiǎn)檔存儲(chǔ)130、參數(shù)存儲(chǔ)132以及通用應(yīng)用存儲(chǔ)134中的信息來(lái)生成客戶端優(yōu)化的應(yīng)用122。例如,當(dāng)生成客戶端優(yōu)化的應(yīng)用122時(shí),優(yōu)化器152可以從通用應(yīng)用120中刪除不需要的類、方法和字段。在一個(gè)實(shí)施例中,優(yōu)化器152可以包括來(lái)自IBM的SMARTLINKER或者由其它提供商提供的類似軟件。捆綁器154可以標(biāo)識(shí)將被與設(shè)備特定的應(yīng)用捆綁的機(jī)器可讀的代碼,以便使客戶端優(yōu)化的應(yīng)用122在主持客戶端115的設(shè)備上可以被執(zhí)行。一旦標(biāo)識(shí)了必要的庫(kù)和軟件例程,捆綁器154就可以從庫(kù)存儲(chǔ)136檢索例程,并且可以將標(biāo)識(shí)的機(jī)器可讀的代碼與客戶端優(yōu)化的應(yīng)用122進(jìn)行捆綁。捆綁器154還可以遵循任何由客戶端115施加的格式限制。例如,捆綁器154可以根據(jù)需要將軟件按客戶端特定的格式(例如JAVA檔案(JAR)格式)分組??蛻舳颂囟ǖ母袷胶蛙浖渲每梢酝ㄟ^(guò)直接詢問(wèn)客戶端115來(lái)確定,可以從來(lái)自客戶端115的應(yīng)用請(qǐng)求來(lái)分析,或者可以從簡(jiǎn)檔存儲(chǔ)130中存儲(chǔ)的簡(jiǎn)檔數(shù)據(jù)來(lái)確定。為了說(shuō)明運(yùn)行中的系統(tǒng)100,客戶端115可以發(fā)出請(qǐng)求,該請(qǐng)求在過(guò)程160中被解析。解析請(qǐng)求可以確定主持客戶端115的發(fā)出請(qǐng)求的設(shè)備的細(xì)節(jié)。使用分析器150以及簡(jiǎn)檔存儲(chǔ)130和參數(shù)存儲(chǔ)132中的信息也可以確定客戶端細(xì)節(jié)。因此,如過(guò)程162所示,可以確定簡(jiǎn)檔和優(yōu)化參數(shù)。在過(guò)程164中,可以建立由優(yōu)化器152使用的腳本。優(yōu)化器152可以對(duì)照通用應(yīng)用數(shù)據(jù)存儲(chǔ)134中包含的文件來(lái)運(yùn)行這些腳本,以便最終根據(jù)客戶端特定的參數(shù)來(lái)生成優(yōu)化的應(yīng)用。在一個(gè)實(shí)施例中,可以以模塊化或逐步的方式來(lái)建立和執(zhí)行所述腳本。因此,優(yōu)化過(guò)程可以作為一系列分離的步驟發(fā)生??商娲?,優(yōu)化過(guò)程可以包括直接生成客戶端優(yōu)化的應(yīng)用122的單個(gè)步驟。無(wú)論何種方式,如過(guò)程166所示,優(yōu)化器都可以產(chǎn)生優(yōu)化的應(yīng)用。在過(guò)程168中,優(yōu)化的應(yīng)用可以被傳送給捆綁器154,以使得所有來(lái)自庫(kù)存儲(chǔ)136的必要例程和庫(kù)可以與優(yōu)化的應(yīng)用一起被分組并被適當(dāng)?shù)馗袷交?,以便?chuàng)建交付給客戶端115的客戶端優(yōu)化的應(yīng)用122。應(yīng)當(dāng)指出,只要使用編碼的電磁信號(hào)來(lái)傳送內(nèi)容,網(wǎng)絡(luò)140、142以及144可以以任何方式被實(shí)現(xiàn)。進(jìn)而,任何通信設(shè)備(例如用戶終端設(shè)備(CPE)、計(jì)算機(jī)、調(diào)制解調(diào)器、路由器、交換機(jī)、接入點(diǎn)等)都可以被包括在網(wǎng)絡(luò)140、142以及144中。網(wǎng)絡(luò)140、142和144中的每個(gè)網(wǎng)絡(luò)都可以以基于分組或基于電路的方式來(lái)傳送內(nèi)容。此外,網(wǎng)絡(luò)140、142和144中的每個(gè)網(wǎng)絡(luò)都可以通過(guò)陸上線路或無(wú)線數(shù)據(jù)通信方法來(lái)傳送內(nèi)容。例如,網(wǎng)絡(luò)140、142和144中的每個(gè)網(wǎng)絡(luò)都可以分別包括內(nèi)聯(lián)網(wǎng)、局域網(wǎng)、廣域網(wǎng)或者其組合。在另一個(gè)實(shí)例中,網(wǎng)絡(luò)140、142和144中的每個(gè)網(wǎng)絡(luò)都可以包括電話網(wǎng)絡(luò),例如移動(dòng)無(wú)線網(wǎng)絡(luò)或者公共交換電話網(wǎng)絡(luò)(PSTN)。數(shù)據(jù)存儲(chǔ)130、132和134可以將信息存儲(chǔ)在任何記錄介質(zhì)(例如磁盤、光盤、半導(dǎo)體存儲(chǔ)器等)中。進(jìn)而,數(shù)據(jù)存儲(chǔ)130、132和134中的每一個(gè)數(shù)據(jù)存儲(chǔ)都可以使用任何信息保存技術(shù),包括基于文件的存儲(chǔ)技術(shù)或數(shù)據(jù)庫(kù)存儲(chǔ)技術(shù)。此外,數(shù)據(jù)存儲(chǔ)130、132和134中的每一個(gè)數(shù)據(jù)存儲(chǔ)都可以是固定到地理位置的存儲(chǔ)區(qū)域或者是跨網(wǎng)絡(luò)空間分布的存儲(chǔ)區(qū)域。此外,數(shù)據(jù)存儲(chǔ)130、132和134中的每一個(gè)數(shù)據(jù)存儲(chǔ)都可以代表一個(gè)永久性存儲(chǔ)區(qū)域(例如硬盤驅(qū)動(dòng)存儲(chǔ)空間)以及易失性存儲(chǔ)區(qū)域(例如隨機(jī)存取存儲(chǔ)器(RAM)存儲(chǔ)空間)。應(yīng)當(dāng)理解,圖1所示的布置只是為了說(shuō)明目的并且本發(fā)明并不限于此方面??蓺w屬于各種組件的功能可以以不同于此處說(shuō)明的方式被組合或分離。例如,數(shù)據(jù)存儲(chǔ)130、132和134可以被實(shí)現(xiàn)為單個(gè)數(shù)據(jù)存儲(chǔ)。在本發(fā)明的另一個(gè)實(shí)施例中,軟件開發(fā)計(jì)算機(jī)105和部署服務(wù)器110可以在單個(gè)軟件開發(fā)和部署服務(wù)器內(nèi)實(shí)現(xiàn)。圖2是示出了根據(jù)此處公開的發(fā)明布置的實(shí)施例的優(yōu)化應(yīng)用的方法200的流程圖。方法200可以在其中應(yīng)用可以被即需地部署到客戶端的任何應(yīng)用部署環(huán)境中執(zhí)行。優(yōu)化可以發(fā)生在部署階段也可以發(fā)生在部署服務(wù)器內(nèi)。例如,方法200可以在用于創(chuàng)建、測(cè)試電子商務(wù)應(yīng)用并將其部署到移動(dòng)和無(wú)線設(shè)備的集成開發(fā)環(huán)境(例如WebSphereStudioDeviceDeveloper(WSDD))中執(zhí)行。在一個(gè)構(gòu)想的布置中,方法200可以在系統(tǒng)100或其它此類系統(tǒng)中實(shí)現(xiàn)。方法200可以在步驟205開始,在步驟205,在軟件開發(fā)環(huán)境中編寫的軟件應(yīng)用可以被發(fā)送給軟件部署服務(wù)器。在一個(gè)實(shí)施例中,可以以平臺(tái)中立的方式和語(yǔ)言來(lái)編寫軟件應(yīng)用。例如,可以以JAVA編程語(yǔ)言或任何其它一次編寫、隨處運(yùn)行(WORA)語(yǔ)言來(lái)編寫軟件應(yīng)用。來(lái)自開發(fā)環(huán)境的軟件版本可以是通用版本,該版本并沒(méi)有針對(duì)任何特定的設(shè)備或平臺(tái)進(jìn)行優(yōu)化。在步驟210中,可以接收來(lái)自客戶端的對(duì)應(yīng)用的請(qǐng)求。在步驟215中,可以分析所述客戶端以確定該客戶端的能力。例如,可以使用諸如來(lái)自IBM的MicroAnalyzer之類的分析程序來(lái)即需地動(dòng)態(tài)執(zhí)行分析。在另一個(gè)實(shí)例中,客戶端可以向部署服務(wù)器登記,此時(shí)可以接收和存儲(chǔ)有關(guān)能力的信息以便在需要時(shí)使用。在步驟220中,可以根據(jù)客戶端標(biāo)識(shí)和/或確定的客戶端能力來(lái)查詢簡(jiǎn)檔數(shù)據(jù)存儲(chǔ)。在步驟225中,查詢可以返回一個(gè)或多個(gè)簡(jiǎn)檔。每個(gè)簡(jiǎn)檔都可以被與參數(shù)和腳本關(guān)聯(lián)。還可以根據(jù)一個(gè)或多個(gè)為特定于客戶端、設(shè)備、簡(jiǎn)檔、應(yīng)用及其組合的信息選擇和/或修改的通用腳本來(lái)為特定的客戶端或應(yīng)用動(dòng)態(tài)地生成腳本。在步驟230中,可以由優(yōu)化器引擎或一個(gè)或多個(gè)優(yōu)化例程來(lái)處理所述參數(shù)和腳本。在步驟235中,所述處理可以得到客戶端優(yōu)化的應(yīng)用。例如,在一個(gè)實(shí)施例中,所述客戶端優(yōu)化的應(yīng)用可以是通用應(yīng)用的這樣的版本從包中刪除了未使用的類并且應(yīng)用處理細(xì)節(jié)適合于所述客戶端的存儲(chǔ)器和處理能力。所述客戶端優(yōu)化的應(yīng)用還可以使用提前(AOT)和內(nèi)聯(lián)編譯技術(shù)。例如,當(dāng)以JAVA編程語(yǔ)言編寫通用應(yīng)用時(shí),所述客戶端優(yōu)化的應(yīng)用可以包括在鏈接時(shí)構(gòu)建的預(yù)檢驗(yàn)的字節(jié)碼可執(zhí)行文件(executables)。在步驟240中,所述方法可以檢查客戶端執(zhí)行所請(qǐng)求的應(yīng)用所需的相關(guān)性、庫(kù)、軟件例程等。當(dāng)找到了必須被捆綁到所請(qǐng)求的應(yīng)用的項(xiàng)目時(shí),可以將發(fā)現(xiàn)的項(xiàng)目與客戶端優(yōu)化的應(yīng)用進(jìn)行捆綁。此外,在可選的步驟245中,判定所述應(yīng)用是否將按照特定的交付格式被提供給客戶端。例如,某些客戶端可能首選或甚至要求關(guān)聯(lián)的軟件例程、文件等為指定的格式,例如JAVA檔案(JAR)格式。當(dāng)指定了特定的格式時(shí),交付的項(xiàng)目的捆綁可以按照指定的格式發(fā)生。在步驟250中,可以將所述客戶端優(yōu)化的應(yīng)用和/或包括所述客戶端優(yōu)化的應(yīng)用的捆綁包傳送給客戶端。本發(fā)明可以以硬件、軟件或硬件和軟件的組合來(lái)實(shí)現(xiàn)。本發(fā)明可以以集中的方式在一個(gè)計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn)或者以分布的方式實(shí)現(xiàn),在所述分布方式中,不同部件可以跨多個(gè)互連的計(jì)算機(jī)系統(tǒng)分布。任何種類的計(jì)算機(jī)系統(tǒng)或其它適于執(zhí)行此處所述的方法的裝置都是適合的。典型的硬件和軟件的組合可以是具有計(jì)算機(jī)程序的通用計(jì)算機(jī)系統(tǒng),當(dāng)所述程序被加載和執(zhí)行時(shí),所述程序控制所述計(jì)算機(jī)系統(tǒng)以使得其執(zhí)行此處所述的方法。本發(fā)明還可以被嵌入計(jì)算機(jī)程序產(chǎn)品,其包括允許實(shí)現(xiàn)此處所述的方法的所有特征,并且當(dāng)被加載到計(jì)算機(jī)系統(tǒng)中時(shí),其能夠執(zhí)行這些方法。當(dāng)前上下文中的計(jì)算機(jī)程序是指一組指令的以任何語(yǔ)言、代碼或符號(hào)表示的任何表達(dá),旨在使具有信息處理能力的系統(tǒng)直接執(zhí)行特定的功能,或者執(zhí)行以下兩者之一或全部后執(zhí)行特定的功能a)轉(zhuǎn)換為另一種語(yǔ)言、代碼或符號(hào);b)以不同的材料形式再現(xiàn)。在不偏離本發(fā)明的精神或本質(zhì)屬性的情況下,可以以其它形式來(lái)實(shí)施本發(fā)明。因此,應(yīng)當(dāng)參考以下權(quán)利要求,而不是上述說(shuō)明書,以此作為本權(quán)利要求1.一種用于優(yōu)化應(yīng)用的計(jì)算機(jī)化方法,所述方法包括以下步驟接收來(lái)自客戶端的對(duì)應(yīng)用的請(qǐng)求;將所述客戶端與至少一個(gè)先前存儲(chǔ)的簡(jiǎn)檔相匹配;根據(jù)所述簡(jiǎn)檔確定所述客戶端特有的屬性;根據(jù)所述確定的屬性和所述應(yīng)用的通用版本動(dòng)態(tài)地生成客戶端優(yōu)化的應(yīng)用;以及將所述客戶端優(yōu)化的應(yīng)用傳送給所述客戶端。2.根據(jù)權(quán)利要求1的計(jì)算機(jī)化方法,包括以下步驟根據(jù)所述確定的屬性建立至少一個(gè)腳本;以及在用于從所述應(yīng)用的所述通用版本中刪除不需要的類、方法以及字段的優(yōu)化器引擎內(nèi)處理所述至少一個(gè)腳本,其中所述客戶端優(yōu)化的應(yīng)用由所述優(yōu)化器引擎來(lái)生成。3.根據(jù)權(quán)利要求1的計(jì)算機(jī)化方法,其中所述應(yīng)用是JAVA編程語(yǔ)言應(yīng)用,并且以字節(jié)碼來(lái)編寫所述客戶端優(yōu)化的應(yīng)用,其中所述生成步驟在鏈接時(shí)預(yù)檢驗(yàn)所述生成的字節(jié)碼可執(zhí)行文件。4.根據(jù)權(quán)利要求1的計(jì)算機(jī)化方法,還包括以下步驟標(biāo)識(shí)其上主持所述客戶端的設(shè)備的硬件配置,其中所述匹配步驟基于所述硬件配置。5.根據(jù)權(quán)利要求1的計(jì)算機(jī)化方法,還包括以下步驟響應(yīng)于所述接收步驟,動(dòng)態(tài)地分析所述客戶端以確定所述客戶端的能力,其中所述匹配步驟利用所述確定的能力。6.根據(jù)權(quán)利要求1的計(jì)算機(jī)化方法,還包括以下步驟標(biāo)識(shí)至少一個(gè)將被與所述客戶端優(yōu)化的應(yīng)用一起捆綁的軟件例程,以使得所述客戶端能夠執(zhí)行所述客戶端優(yōu)化的應(yīng)用;以及將所述標(biāo)識(shí)的至少一個(gè)軟件例程與所述客戶端優(yōu)化的應(yīng)用一起捆綁,其中所述傳送步驟將包括所述標(biāo)識(shí)的至少一個(gè)軟件例程和所述客戶端優(yōu)化的應(yīng)用的捆綁包傳送給所述客戶端。7.根據(jù)權(quán)利要求6的計(jì)算機(jī)化方法,還包括以下步驟根據(jù)所述請(qǐng)求和所述簡(jiǎn)檔中的至少一個(gè),確定交付的應(yīng)用將按照指定的交付格式被提供,其中所述捆綁步驟遵循所述指定的交付格式。8.根據(jù)權(quán)利要求7的計(jì)算機(jī)化方法,其中所述指定的交付格式是JAVA檔案(JAR)格式。9.根據(jù)權(quán)利要求1的計(jì)算機(jī)化方法,還包括以下步驟從軟件開發(fā)計(jì)算機(jī)將所述應(yīng)用的所述通用版本發(fā)送給部署服務(wù)器,其中所述部署服務(wù)器執(zhí)行所述接收、匹配、確定、生成以及所述傳送步驟。10.根據(jù)權(quán)利要求1的計(jì)算機(jī)化方法,其中所述計(jì)算機(jī)化方法是在用于創(chuàng)建、測(cè)試電子商務(wù)應(yīng)用并將所述電子商務(wù)應(yīng)用部署到移動(dòng)和無(wú)線設(shè)備的集成開發(fā)環(huán)境中執(zhí)行的即需軟件部署方法。11.一種機(jī)器可讀的存儲(chǔ)裝置,其上存儲(chǔ)有具有多個(gè)代碼部分的計(jì)算機(jī)程序,所述代碼部分可由機(jī)器執(zhí)行以使得所述機(jī)器執(zhí)行以下步驟接收來(lái)自客戶端的對(duì)應(yīng)用的請(qǐng)求;將所述客戶端與至少一個(gè)先前存儲(chǔ)的簡(jiǎn)檔相匹配;根據(jù)所述簡(jiǎn)檔確定所述客戶端特有的屬性;根據(jù)所述確定的屬性和所述應(yīng)用的通用版本動(dòng)態(tài)地生成客戶端優(yōu)化的應(yīng)用;以及將所述客戶端優(yōu)化的應(yīng)用傳送給所述客戶端。12.根據(jù)權(quán)利要求11的機(jī)器可讀的存儲(chǔ)裝置,包括以下步驟根據(jù)所述確定的屬性建立至少一個(gè)腳本;以及在用于從所述應(yīng)用的所述通用版本中刪除不需要的類、方法以及字段的優(yōu)化器引擎內(nèi)處理所述至少一個(gè)腳本,其中所述客戶端優(yōu)化的應(yīng)用由所述優(yōu)化器引擎來(lái)生成。13.根據(jù)權(quán)利要求11的機(jī)器可讀的存儲(chǔ)裝置,還包括以下步驟響應(yīng)于所述接收步驟,動(dòng)態(tài)地分析所述客戶端以確定所述客戶端的能力,其中所述匹配步驟利用所述確定的能力。14.根據(jù)權(quán)利要求11的機(jī)器可讀的存儲(chǔ)裝置,還包括以下步驟標(biāo)識(shí)至少一個(gè)將被與所述客戶端優(yōu)化的應(yīng)用一起捆綁的軟件例程,以使得所述客戶端能夠執(zhí)行所述客戶端優(yōu)化的應(yīng)用;以及將所述標(biāo)識(shí)的至少一個(gè)軟件例程與所述客戶端優(yōu)化的應(yīng)用一起捆綁,其中所述傳送步驟將包括所述標(biāo)識(shí)的至少一個(gè)軟件例程和所述客戶端優(yōu)化的應(yīng)用的捆綁包傳送給所述客戶端。15.根據(jù)權(quán)利要求11的機(jī)器可讀的存儲(chǔ)裝置,其中所述計(jì)算機(jī)化方法是在用于創(chuàng)建、測(cè)試電子商務(wù)應(yīng)用并將所述電子商務(wù)應(yīng)用部署到移動(dòng)和無(wú)線設(shè)備的集成開發(fā)環(huán)境中執(zhí)行的即需軟件部署方法。16.一種部署服務(wù)器,所述部署服務(wù)器包括簡(jiǎn)檔數(shù)據(jù)存儲(chǔ),所述簡(jiǎn)檔數(shù)據(jù)存儲(chǔ)存儲(chǔ)設(shè)備的多個(gè)屬性并將不同的優(yōu)化參數(shù)或優(yōu)化例程與每個(gè)所述存儲(chǔ)的屬性相關(guān)聯(lián);通用應(yīng)用數(shù)據(jù)存儲(chǔ),所述通用應(yīng)用數(shù)據(jù)存儲(chǔ)存儲(chǔ)至少一個(gè)以設(shè)備無(wú)關(guān)的方式編寫的通用應(yīng)用;以及優(yōu)化器,所述優(yōu)化器被配置成從一類不同的發(fā)出請(qǐng)求的設(shè)備接收應(yīng)用請(qǐng)求,并響應(yīng)于接收的請(qǐng)求動(dòng)態(tài)地生成設(shè)備特定的應(yīng)用,對(duì)于每個(gè)發(fā)出請(qǐng)求的設(shè)備,所述優(yōu)化器被配置成確定發(fā)出請(qǐng)求的設(shè)備的屬性,利用所述簡(jiǎn)檔數(shù)據(jù)存儲(chǔ)來(lái)標(biāo)識(shí)用于所述發(fā)出請(qǐng)求的設(shè)備的優(yōu)化參數(shù)或優(yōu)化例程,以及根據(jù)來(lái)自所述簡(jiǎn)檔數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)和根據(jù)從所述通用應(yīng)用數(shù)據(jù)存儲(chǔ)檢索的通用應(yīng)用來(lái)生成設(shè)備特定的應(yīng)用。17.根據(jù)權(quán)利要求16的部署服務(wù)器,其中所述部署服務(wù)器是用于創(chuàng)建、測(cè)試電子商務(wù)應(yīng)用并將所述電子商務(wù)應(yīng)用部署到移動(dòng)和無(wú)線設(shè)備的集成開發(fā)環(huán)境的組件。18.根據(jù)權(quán)利要求16的部署服務(wù)器,其中所述優(yōu)化器被配置成當(dāng)生成所述設(shè)備特定的應(yīng)用時(shí)從所述通用應(yīng)用中刪除不需要的類、方法和字段。19.根據(jù)權(quán)利要求16的部署服務(wù)器,還包括分析器,所述分析器被配置成在接收到請(qǐng)求時(shí)動(dòng)態(tài)地分析請(qǐng)求發(fā)出設(shè)備的能力,其中分析的能力確定了所述發(fā)出請(qǐng)求的設(shè)備的所述屬性。20.根據(jù)權(quán)利要求16的部署服務(wù)器,還包括捆綁器,所述捆綁器被配置成標(biāo)識(shí)將被與所述設(shè)備特定的應(yīng)用一起捆綁的機(jī)器可讀的代碼以便可以在所述設(shè)備上執(zhí)行所述設(shè)備特定的應(yīng)用,并且隨后將所述標(biāo)識(shí)的機(jī)器可讀的代碼與所述設(shè)備特定的應(yīng)用一起捆綁,其中得到的捆綁包被提供給所述設(shè)備以響應(yīng)發(fā)出的應(yīng)用請(qǐng)求。全文摘要一種部署服務(wù)器,所述服務(wù)器可以包括簡(jiǎn)檔數(shù)據(jù)存儲(chǔ)、通用應(yīng)用數(shù)據(jù)存儲(chǔ)以及優(yōu)化器。所述簡(jiǎn)檔數(shù)據(jù)存儲(chǔ)可以包含設(shè)備的多個(gè)屬性并將不同的優(yōu)化參數(shù)或優(yōu)化例程與每個(gè)所述存儲(chǔ)的屬性相關(guān)聯(lián)。所述通用應(yīng)用數(shù)據(jù)存儲(chǔ)可以包含至少一個(gè)以設(shè)備無(wú)關(guān)的方式編寫的通用應(yīng)用。所述優(yōu)化器可以從一類不同的發(fā)出請(qǐng)求的設(shè)備接收應(yīng)用請(qǐng)求,并響應(yīng)于接收的請(qǐng)求動(dòng)態(tài)地生成設(shè)備特定的應(yīng)用。對(duì)于每個(gè)發(fā)出請(qǐng)求的設(shè)備,所述優(yōu)化器可以確定發(fā)出請(qǐng)求的設(shè)備的屬性,利用所述簡(jiǎn)檔數(shù)據(jù)存儲(chǔ)來(lái)標(biāo)識(shí)用于所述發(fā)出請(qǐng)求的設(shè)備的優(yōu)化參數(shù)或優(yōu)化例程,以及根據(jù)來(lái)自所述簡(jiǎn)檔數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)和根據(jù)從所述通用應(yīng)用數(shù)據(jù)存儲(chǔ)檢索的通用應(yīng)用來(lái)生成設(shè)備特定的應(yīng)用。文檔編號(hào)G06F17/30GK1798153SQ200510129149公開日2006年7月5日申請(qǐng)日期2005年11月14日優(yōu)先權(quán)日2004年12月28日發(fā)明者F·孔查,D·賴克申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司