專利名稱:加速多媒體內(nèi)容的制作方法
技術(shù)領(lǐng)域:
本公開內(nèi)容涉及計算機處理領(lǐng)域。
背景技術(shù):
JavaTM語言已在萬維網(wǎng)及其它通信介質(zhì)上發(fā)布多媒體內(nèi)容時廣泛地使用。例如,可以使用與可從地處加州圣荷西(San Jose,Ca)的Sun微系統(tǒng)有限公司(Sun Microsystems,Inc)買到的JavaTM語言規(guī)范第二版相兼容的Java程序,來把包括圖形、聲音、文本或其它強制的內(nèi)容在內(nèi)的代碼傳輸?shù)皆L問特定萬維網(wǎng)站點的用戶。這類內(nèi)容可以向用戶告知特定供應(yīng)商所提供的產(chǎn)品或服務(wù)。在其它的情況下,JavaTM代碼可以為那些訪問特定萬維網(wǎng)站點的用戶提供娛樂服務(wù)。
通常,JavaTM語言是解釋性語言。典型地,應(yīng)用程序設(shè)計者編寫可由具備JavaTM虛擬機的設(shè)備解釋的一般性Java應(yīng)用字節(jié)碼,所述虛擬機可以與可從Sun微系統(tǒng)有限公司買到的JavaTM虛擬機規(guī)范第二版相兼容。虛擬機(VM)解釋JavaTM字節(jié)碼以便可以在可使用的目標(biāo)硬件平臺上執(zhí)行所述字節(jié)碼,所述目標(biāo)硬件平臺例如是Intel奔騰TM4微處理器。令人遺憾的是,被解釋的代碼往往是非線性的,并且典型地在目標(biāo)硬件平臺上執(zhí)行得很慢。往往緩慢的性能可能是因被解釋的代碼與本機代碼之間的性能差異而造成的,所述本機代碼可以直接由目標(biāo)平臺的處理器來執(zhí)行。
作為典型的使用,JavaTM小應(yīng)用程序(applet)以壓縮形式下載至用戶計算機。用戶計算機可以將已下載的文件解壓縮到諸如系統(tǒng)RAM之類的易失性存儲器當(dāng)中。接著,用戶計算機上所運行的解釋器可以以線性方式翻譯來自于RAM的每個字節(jié)碼,然后在用戶計算機上執(zhí)行所述翻譯的代碼。當(dāng)每個執(zhí)行實例結(jié)束時,可以丟棄被翻譯的代碼。這一過程因其特性而典型地使用大量的系統(tǒng)RAM,并且可能由于代碼執(zhí)行速度或易失性存儲器使用效率而未被優(yōu)化。
因此,所需要的就是為高效的Java代碼執(zhí)行及其它好處而提供一種方法和設(shè)備。
最好參照下列說明書和附圖來理解本發(fā)明,這些附圖用來舉例說明本發(fā)明的實施例。在附圖中圖1是根據(jù)本發(fā)明實施例的基于處理器的系統(tǒng)的示意性描繪圖。
圖2圖示說明依照本發(fā)明實施例的通信鏈路。
圖3是根據(jù)本發(fā)明實施例的用于生成可執(zhí)行本機代碼的數(shù)據(jù)流程圖。
圖4是根據(jù)本發(fā)明實施例的用于生成具有安全特性的可執(zhí)行本機代碼的流程圖。
圖5圖示說明依照本發(fā)明實施例的無線通信鏈路。
具體實施例方式
在下面的說明中,闡述了許多技術(shù)規(guī)范細(xì)節(jié)來提供對本發(fā)明的詳細(xì)理解。然而,本領(lǐng)域普通技術(shù)人員將容易領(lǐng)會到,本發(fā)明可以在沒有這些細(xì)節(jié)的情況下加以實施。例如,許多描述的代碼段可能符合JavaTM程序設(shè)計語言的版本。然而,由于同樣也可以使用其它的程序設(shè)計語言和結(jié)構(gòu),因而這只是舉例說明而非作為限制。
參照圖1,基于處理器的系統(tǒng)10可以包含耦合于接口14的處理器12。接口14可以耦合于顯示器16或顯示器控制器(未示出)和系統(tǒng)存儲器18,所述接口可以是橋接器(bridge)。系統(tǒng)存儲器18可以包括可有助于存儲系統(tǒng)10中的應(yīng)用程序及其它代碼的多個動態(tài)隨機存取存儲器裝置(“DRAM”)或其它裝置。接口14還可以耦合于一條或多條總線20。
總線20又依次耦合于一個或多個存儲裝置22,比如像硬盤驅(qū)動器(HDD)。硬盤驅(qū)動器22或其它存儲裝置可以存儲包括操作系統(tǒng)代碼(未示出)、編譯器26及其它代碼在內(nèi)的各種軟件。在一些實施例中,基本輸入/輸出系統(tǒng)(BIOS)存儲器24還可以耦合于總線20。
當(dāng)然,也可以使用很多種類的其它基于處理器的系統(tǒng)體系結(jié)構(gòu)。在一些實施例中,可以將編譯器26及其它支持代碼存儲在硬盤22上或其它存儲裝置上,并且隨后可以按照系統(tǒng)10的請求將其載入到系統(tǒng)存儲器18中。繼而,處理器12執(zhí)行使編譯器26及其它代碼工作的指令。
另外,在一些實施例中,網(wǎng)絡(luò)控制器28也可以耦合于總線20。網(wǎng)絡(luò)控制器28可以提供到通信網(wǎng)絡(luò)的接口,作為兩個示例,比如像萬維網(wǎng)或無線網(wǎng)絡(luò)。
現(xiàn)在參照圖2,宿主站點201可以寄宿用JavaTM編碼的多媒體應(yīng)用。在一些實施例中,可將這些應(yīng)用傳送給諸如萬維網(wǎng)之類的通信網(wǎng)203。然后,通信網(wǎng)絡(luò)203可以將所述多媒體應(yīng)用從宿主站點201傳輸?shù)接脩羝脚_205上,所述用戶平臺可能是基于處理器的系統(tǒng),比如像系統(tǒng)10。
現(xiàn)在參照圖5,寄宿站點201可以通過通信網(wǎng)絡(luò)來傳輸基于Java的多媒體應(yīng)用,所述通信網(wǎng)絡(luò)可以包括將由用戶平臺205使用的天線207或其它無線設(shè)備。在一些實施例中,用戶平臺205可以是基于處理器的系統(tǒng),比如像系統(tǒng)10。在其它實施例中,用戶平臺205可以是例如諸如像蜂窩式電話、個人數(shù)字助理(PDA)之類的無線設(shè)備,或其它設(shè)備。用戶平臺205可以耦合于天線209。天線209可以是偶極天線、接地天線或其它天線。
現(xiàn)在參照圖3,壓縮代碼301可以是也許已經(jīng)由通信網(wǎng)絡(luò)例如23或無線網(wǎng)絡(luò)接收到的壓縮JavaTM源程序。在一些實施例中,壓縮代碼301可以由解壓縮器303來進(jìn)行解壓縮。這個解壓縮器303可以是將壓縮代碼301作為輸入而將諸如字節(jié)碼305之類的解壓縮代碼作為輸出的軟件程序。在一些實施例中,字節(jié)碼305可以是與JavaTM程序設(shè)計語言相兼容的源代碼。
在一些實施例中,將機器專用編譯器集成到虛擬機(VM)307中,消除了間接指示的這一步驟。在這個VM中,307可以把字節(jié)碼305當(dāng)作輸入。另外,在一些實施例中,解釋器307可以動態(tài)鏈接在庫309中可能發(fā)現(xiàn)的優(yōu)化后的本機代碼,然后在非易失存儲器中保存新建的二進(jìn)制代碼,一旦從VM調(diào)用下一個實例時可以隨時使用它。
在一些實施例中,本機代碼311可以從系統(tǒng)10中任何可用的適當(dāng)存儲器那里執(zhí)行,在未進(jìn)一步解釋的情況下,可以由虛擬機或能提供這一功能的類似模塊來調(diào)用。結(jié)合圖3所圖示說明并描述的過程可以在受管理執(zhí)行環(huán)境中提供改善的移動式代碼執(zhí)行。
例如,一旦已經(jīng)生成本機代碼311,對于代碼的未來調(diào)用而言則就不再需要Java代碼的進(jìn)一步解釋,這可以在執(zhí)行速度方面提供顯著的改善。另外,編譯器307和庫309可以包括這樣的代碼,其提供了為諸如系統(tǒng)10之類的特定平臺而生成的本機代碼的優(yōu)化。在一些實施例中,本機代碼311可以包含全部應(yīng)用代碼的完整的靜態(tài)編譯,因此在一些實施例中不需要運行時鏈接和運行時庫的利用。
現(xiàn)在參照圖4,在一些實施例中,壓縮代碼301可以由解壓縮代碼303解壓縮成字節(jié)碼和安全碼401。正如結(jié)合圖3描述的那樣,字節(jié)碼可以是解壓縮JavaTM代碼。安全碼例如可以是已下載的具有JavaTM多媒體應(yīng)用的安全證書。
在其它實施例中,安全碼可以是與JavaTM多媒體應(yīng)用一起下載的某個其它代碼,其可以表明應(yīng)用代碼處于由特定源或提供商提供中或授權(quán)中。
安全碼可以經(jīng)受安全檢查403,以確保能夠信賴所述多媒體應(yīng)用。這為特定的用戶平臺授權(quán)編譯/授權(quán)進(jìn)一步的運行時實例。如果安全檢查證實能夠信賴所述代碼,那么編譯器307就可以編譯如上面結(jié)合圖3所述的獨立于平臺的字節(jié)碼。
然而,如果安全檢查失敗的話,那么就將阻止編譯器307編譯所述字節(jié)碼。在這種情況下,在一些實施例中,可以通知用戶安全檢查403已判定用戶或平臺未被授權(quán)來對已壓縮的Java多媒體應(yīng)用301進(jìn)行編譯。
盡管已經(jīng)相對于有限的實施例而描述了本發(fā)明,但是本領(lǐng)域的技術(shù)人員將認(rèn)識到,其中的許多修改和變形都是可以的。例如,盡管編譯器和優(yōu)化器307是作為單個程序加以說明的,但是可以在多個程序、代碼段、庫或其它編程裝置之間分割該編譯器和優(yōu)化器的功能。因此,意圖讓所附的權(quán)利要求涵蓋所有這類的修改和變形,而這類修改和變形均落入本發(fā)明的精神和范圍內(nèi)。
權(quán)利要求
1.一種方法,包括接收壓縮的字節(jié)碼;對接收到的壓縮的字節(jié)碼進(jìn)行解壓縮;和在應(yīng)用層將解壓縮的字節(jié)碼編譯成本機代碼,并且將該本機代碼存儲在非易失存儲器中。
2.如權(quán)利要求1所述的方法,進(jìn)一步包括接收安全碼;以及部分地根據(jù)安全碼的內(nèi)容來將解壓縮的字節(jié)碼編譯成本機代碼。
3.如權(quán)利要求2所述的方法,其中接收安全碼包括接收安全證書。
4.如權(quán)利要求2所述的方法,其中接收安全碼包括接收表明壓縮的字節(jié)碼的源的信息。
5.如權(quán)利要求2所述的方法,其中接收安全碼包括接收表明壓縮的字節(jié)碼的提供商的信息。
6.如權(quán)利要求2所述的方法,其中接收安全碼包括接收表明是否可以編譯已接收到的字節(jié)碼的信息。
7.如權(quán)利要求1所述的1,其中將解壓縮的字節(jié)碼編譯成本機代碼包括將解壓縮的字節(jié)碼編譯成全部應(yīng)用代碼的靜態(tài)編譯。
8.如權(quán)利要求7所述的方法,其中解壓縮的字節(jié)碼的靜態(tài)編譯可以在不使用非本機運行時庫的情況下由處理器執(zhí)行。
9.如權(quán)利要求8所述的方法,其中將已下載的字節(jié)碼的靜態(tài)編譯保存在非易失存儲器中。
10.如權(quán)利要求1所述的1,進(jìn)一步包括從通信網(wǎng)絡(luò)接收壓縮的字節(jié)代碼。
11.一種提供指令的機器可讀介質(zhì),當(dāng)所述指令由一個或多個處理器組執(zhí)行時,使所述處理器組能夠執(zhí)行以下操作,包括接收壓縮的字節(jié)碼;對接收到的壓縮的字節(jié)碼進(jìn)行解壓縮;將解壓縮的字節(jié)碼編譯成本機代碼;以及在非易失性存儲器中存儲本機代碼。
12.如權(quán)利要求11所述的本機可讀介質(zhì),進(jìn)一步包括接收安全碼;以及部分地根據(jù)安全碼的內(nèi)容來將解壓縮的字節(jié)碼編譯成本機代碼。
13.如權(quán)利要求11所述的本機可讀介質(zhì),其中接收安全碼包括接收安全證書。
14.如權(quán)利要求11所述的本機可讀介質(zhì),其中接收安全碼包括接收表明壓縮的字節(jié)碼的源的信息。
15.如權(quán)利要求11所述的本機可讀介質(zhì),其中接收安全碼包括接收表明壓縮的字節(jié)碼的提供商的信息。
16.如權(quán)利要求11所述的本機可讀介質(zhì),其中接收安全碼包括接收表明是否可以編譯接收到的字節(jié)碼的信息。
17.如權(quán)利要求11所述的本機可讀介質(zhì),其中將解壓縮的字節(jié)碼編譯成本機代碼包括將解壓縮的字節(jié)碼編譯成全部應(yīng)用代碼的靜態(tài)編譯。
18.如權(quán)利要求11所述的本機可讀介質(zhì),其中從通信網(wǎng)絡(luò)接收壓縮的字節(jié)碼。
19.一種設(shè)備,包括接收器,用于接收壓縮的字節(jié)碼;耦合于接收器的解壓縮器,用于對接收到的壓縮的字節(jié)碼進(jìn)行解壓縮;和耦合于接收器的編譯器,用于將解壓縮的字節(jié)碼編譯成本機代碼。
20.如權(quán)利要求21所述的設(shè)備,其中所述壓縮的字節(jié)碼是從通信網(wǎng)絡(luò)接收的。
21.如權(quán)利要求21所述的設(shè)備,其中所述編譯器將解壓縮的字節(jié)碼編譯成包括全部應(yīng)用代碼的靜態(tài)編譯的本機代碼。
22.如權(quán)利要求21所述的設(shè)備,進(jìn)一步包括所述接收器接收安全碼;以及所述編譯器部分地根據(jù)安全碼的內(nèi)容來將解壓縮的字節(jié)碼編譯成本機代碼。
全文摘要
可以接收壓縮的字節(jié)碼??梢詫邮盏降淖止?jié)碼進(jìn)行解壓縮??梢栽趹?yīng)用層將解壓縮的字節(jié)碼耦合到本機代碼??梢栽诜且资Т鎯ζ?18)中存儲本機代碼。
文檔編號G06F9/45GK1703675SQ03803412
公開日2005年11月30日 申請日期2003年6月19日 優(yōu)先權(quán)日2002年7月31日
發(fā)明者A·坎伯, S·薩克曼 申請人:英特爾公司