專利名稱::一種移動(dòng)設(shè)備上應(yīng)用程序的啟動(dòng)方法及裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及通信
技術(shù)領(lǐng)域:
,尤其涉及一種移動(dòng)設(shè)備上應(yīng)用程序的啟動(dòng)。
背景技術(shù):
:隨著3G和智能機(jī)時(shí)代的來(lái)臨,手機(jī)等移動(dòng)設(shè)備上的應(yīng)用程序越來(lái)越多。用戶對(duì)手機(jī)等移動(dòng)設(shè)備上的應(yīng)用程序的使用模式具有啟動(dòng)頻繁、每次使用時(shí)間不長(zhǎng)的特點(diǎn),這對(duì)應(yīng)用程序的啟動(dòng)速度提出了較高要求。如果應(yīng)用程序的啟動(dòng)速度過(guò)于緩慢,用戶等待應(yīng)用程序的啟動(dòng)時(shí)間可能跟真正使用該應(yīng)用程序的時(shí)間相同甚至更多,這將大大降低手機(jī)等移動(dòng)設(shè)備的用戶體驗(yàn)。例如,目前常用的移動(dòng)設(shè)備上使用Java語(yǔ)言開發(fā)的應(yīng)用程序,可稱為Java應(yīng)用程序,具有移植性好、一次編譯運(yùn)行、開發(fā)難度低、開發(fā)效率高、開發(fā)成本低等優(yōu)點(diǎn)。由于Java語(yǔ)言是解釋型語(yǔ)言,其執(zhí)行效率比較低,因此,Java應(yīng)用程序會(huì)遇到嚴(yán)重的啟動(dòng)速度比較慢的問(wèn)題。目前,提高Java應(yīng)用程序的啟動(dòng)速度的方法有很多。一類方法是Java應(yīng)用程序根據(jù)自身處理邏輯進(jìn)行優(yōu)化,采用延遲加載和懶惰初始化等手段來(lái)加快啟動(dòng)速度,這類方法的有效性只適用于單個(gè)Java應(yīng)用程序本身,并且其采用的手段跟Java應(yīng)用程序的特點(diǎn)密切相關(guān);還有一類方法是在手機(jī)軟件平臺(tái)中,采用預(yù)先啟動(dòng)、預(yù)先加載、預(yù)先初始化、寫時(shí)拷貝(COW)、應(yīng)用進(jìn)程在退出時(shí)進(jìn)行緩存等來(lái)加速Java應(yīng)用程序的啟動(dòng)速度,這類方法對(duì)所有Java應(yīng)用程序啟動(dòng)速度都能起加速作用,并且不需要應(yīng)用做任何修改。由于Java應(yīng)用程序啟動(dòng)速度的瓶頸在于Java應(yīng)用程序是解釋執(zhí)行的,因此,現(xiàn)有方法對(duì)提高Java應(yīng)用程序的啟動(dòng)速度并沒(méi)有良好的效果。JITCJustinTime)是一種及時(shí)編譯機(jī)制,它把Java代碼編譯成本地語(yǔ)言來(lái)執(zhí)行,避免解釋執(zhí)行,從而大大提高了Java應(yīng)用程序的運(yùn)行速度。但是,現(xiàn)有的JIT是要Java應(yīng)用程序中的代碼執(zhí)行到一定次數(shù)時(shí)才會(huì)把代碼編譯成本地語(yǔ)言來(lái)執(zhí)行;另外,JIT的編譯結(jié)果隨著Java應(yīng)用程序的退出而丟棄,Java應(yīng)用程序再次運(yùn)行時(shí)沒(méi)有任何JIT編譯結(jié)果可以利用,需要在本次運(yùn)行過(guò)程中再次編譯。由于應(yīng)用啟動(dòng)流程只在應(yīng)用程序啟動(dòng)時(shí)執(zhí)行一次,這就導(dǎo)致了Java應(yīng)用程序啟動(dòng)流程無(wú)法利用JIT獲得加速。因?yàn)镴IT不會(huì)編譯只執(zhí)行一次的代碼,同時(shí)Java應(yīng)用程序啟動(dòng)是Java應(yīng)用程序再次運(yùn)行的開始階段,也沒(méi)有任何JIT編譯結(jié)果可以執(zhí)行。從而,現(xiàn)有技術(shù)中JIT無(wú)法提高Java應(yīng)用程序的啟動(dòng)速度。類似的,移動(dòng)設(shè)備上使用其它具有JIT編譯機(jī)制的解釋型語(yǔ)言開發(fā)的應(yīng)用程序也會(huì)遇到同樣的問(wèn)題。因此,如何利用JIT來(lái)提高應(yīng)用程序的啟動(dòng)速度成為現(xiàn)有技術(shù)中亟待解決的問(wèn)題之一。
發(fā)明內(nèi)容本發(fā)明公開了一種移動(dòng)設(shè)備上的應(yīng)用程序的啟動(dòng)裝置及方法,用于提高移動(dòng)設(shè)備上應(yīng)用程序的啟動(dòng)速度。一種移動(dòng)設(shè)備上應(yīng)用程序的啟動(dòng)裝置,包括應(yīng)用管理器模塊、虛擬機(jī)模塊和存儲(chǔ)器管理模塊,其中所述應(yīng)用管理器模塊,用于基于要運(yùn)行的應(yīng)用程序啟動(dòng)虛擬機(jī)模塊運(yùn)行,并控制所述虛擬機(jī)模塊執(zhí)行所述應(yīng)用程序代碼;所述虛擬機(jī)模塊,用于調(diào)用所述存儲(chǔ)器管理模塊分別加載所述應(yīng)用程序代碼、以及應(yīng)用程序的啟動(dòng)流程的JIT編譯結(jié)果到內(nèi)存中,在執(zhí)行每一段應(yīng)用程序的啟動(dòng)流程代碼段時(shí),在所述JIT編譯結(jié)果中查找所述要執(zhí)行的啟動(dòng)流程代碼段對(duì)應(yīng)的本地JIT編譯代碼,并執(zhí)行查找到的本地JIT編譯代碼;所述存儲(chǔ)器管理模塊,用于保存和讀取應(yīng)用程序代碼、以及對(duì)應(yīng)用程序的啟動(dòng)流程進(jìn)行JIT編譯后得到的JIT編譯結(jié)果,所述JIT編譯結(jié)果包括已進(jìn)行JIT編譯的各段啟動(dòng)流程代碼段對(duì)應(yīng)的JIT編譯代碼。一種移動(dòng)設(shè)備上應(yīng)用程序的啟動(dòng)方法,包括應(yīng)用管理器模塊基于要運(yùn)行的應(yīng)用程序啟動(dòng)虛擬機(jī)模塊運(yùn)行,并控制所述虛擬機(jī)模塊執(zhí)行所述應(yīng)用程序代碼;所述虛擬機(jī)模塊調(diào)用存儲(chǔ)器管理模塊分別加載所述應(yīng)用程序代碼、以及應(yīng)用程序的啟動(dòng)流程的JIT編譯結(jié)果到內(nèi)存中,在執(zhí)行每一段應(yīng)用程序的啟動(dòng)流程代碼段時(shí),在所述JIT編譯結(jié)果中查找所述要執(zhí)行的啟動(dòng)流程代碼段對(duì)應(yīng)的本地JIT編譯代碼,并執(zhí)行查找到的本地JIT編譯代碼。本發(fā)明實(shí)施例提供的一種移動(dòng)設(shè)備上應(yīng)用程序的啟動(dòng)裝置及方法,在應(yīng)用程序的啟動(dòng)過(guò)程中,應(yīng)用管理器模塊基于要運(yùn)行的應(yīng)用程序啟動(dòng)虛擬機(jī)模塊運(yùn)行,該虛擬機(jī)模塊調(diào)用存儲(chǔ)器管理模塊分別加載應(yīng)用程序代碼、以及該應(yīng)用程序的啟動(dòng)流程的JIT編譯結(jié)果到內(nèi)存中,在執(zhí)行每一段應(yīng)用程序的啟動(dòng)流程代碼段時(shí),在該JIT編譯結(jié)果中查找要執(zhí)行的啟動(dòng)流程代碼段對(duì)應(yīng)的本地JIT編譯代碼,并執(zhí)行查找到的本地JIT編譯代碼,這樣,在啟動(dòng)應(yīng)用程序時(shí),由于保存了對(duì)應(yīng)用程序的啟動(dòng)流程的當(dāng)前要執(zhí)行的啟動(dòng)流程代碼段的JIT編譯結(jié)果,因此只需直接執(zhí)行對(duì)應(yīng)的JIT本地編譯結(jié)果即可,無(wú)需對(duì)要執(zhí)行的啟動(dòng)流程代碼段以解釋方式執(zhí)行,從而提高了應(yīng)用程序的啟動(dòng)速度。本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說(shuō)明書中闡述,并且,部分地從說(shuō)明書中變得顯而易見(jiàn),或者通過(guò)實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過(guò)在所寫的說(shuō)明書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來(lái)實(shí)現(xiàn)和獲得。圖1為本發(fā)明實(shí)施例中,移動(dòng)設(shè)備上應(yīng)用程序的啟動(dòng)裝置的一種可能的結(jié)構(gòu)示意圖;圖2為本發(fā)明實(shí)施例中,移動(dòng)設(shè)備上應(yīng)用程序的啟動(dòng)方法的實(shí)施流程示意圖;圖3為本發(fā)明實(shí)施例中,Android手機(jī)軟件平臺(tái)中Java應(yīng)用程序啟動(dòng)裝置的邏輯結(jié)構(gòu)圖;圖4為本發(fā)明實(shí)施例中,Android手機(jī)平臺(tái)軟件中,Activity的啟動(dòng)實(shí)施流程示意圖。具體實(shí)施例方式為了實(shí)現(xiàn)提高移動(dòng)設(shè)備上的應(yīng)用程序的啟動(dòng)速度,本發(fā)明實(shí)施例提供了一種移動(dòng)設(shè)備上的應(yīng)用程序的啟動(dòng)裝置及方法。以下結(jié)合說(shuō)明書附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說(shuō)明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí)施例僅用于說(shuō)明和解釋本發(fā)明,并不用于限定本發(fā)明,并且在不沖突的情況下,本發(fā)明中的實(shí)施例及實(shí)施例中的特征可以相互組合。如圖1所示,為本發(fā)明實(shí)施例提供的移動(dòng)設(shè)備上應(yīng)用程序的啟動(dòng)裝置一種可能的結(jié)構(gòu)示意圖,包括應(yīng)用管理器模塊101、虛擬機(jī)模塊102和存儲(chǔ)器管理模塊103,其中應(yīng)用管理器模塊101,用于基于要運(yùn)行的應(yīng)用程序啟動(dòng)虛擬機(jī)模塊102運(yùn)行,并控制虛擬機(jī)模塊102執(zhí)行該應(yīng)用程序代碼;虛擬機(jī)模塊102,用于調(diào)用存儲(chǔ)器管理模塊103分別加載該應(yīng)用程序代碼、以及應(yīng)用程序的啟動(dòng)流程的JIT編譯結(jié)果到內(nèi)存中,在執(zhí)行每一段應(yīng)用程序的啟動(dòng)流程代碼段時(shí),在該JIT編譯結(jié)果中查找該要執(zhí)行的啟動(dòng)流程代碼段對(duì)應(yīng)的本地JIT編譯代碼,并執(zhí)行查找到的本地JIT編譯代碼;存儲(chǔ)器管理模塊103,用于保存和讀取應(yīng)用程序代碼、以及對(duì)應(yīng)用程序的啟動(dòng)流程進(jìn)行JIT編譯后得到的JIT編譯結(jié)果,該JIT編譯結(jié)果包括已進(jìn)行JIT編譯的各段啟動(dòng)流程代碼段對(duì)應(yīng)的JIT編譯代碼。具體實(shí)施中,移動(dòng)設(shè)備上應(yīng)用程序的啟動(dòng)裝置還可以包括JIT編譯器模塊104,其中虛擬機(jī)模塊102,還用于在JIT編譯結(jié)果中未查找到要執(zhí)行的啟動(dòng)流程代碼段對(duì)應(yīng)的本地JIT編譯代碼時(shí),通知所述JIT編譯器模塊104對(duì)該要執(zhí)行的啟動(dòng)流程代碼段進(jìn)行JIT編譯,并采用解釋方式執(zhí)行該要執(zhí)行的啟動(dòng)流程代碼;JIT編譯器模塊104,用于根據(jù)虛擬機(jī)模塊102的通知,確認(rèn)配置虛擬機(jī)模塊102時(shí)劃分的內(nèi)存空間有剩余空間時(shí),對(duì)該要執(zhí)行的啟動(dòng)流程代碼段進(jìn)行JIT編譯。具體的,JIT編譯器模塊在接收到虛擬機(jī)模塊的通知后,查詢配置虛擬機(jī)模塊102時(shí)劃分的內(nèi)存空間是否還有足夠的空間來(lái)保存該要執(zhí)行的啟動(dòng)流程代碼段的編譯代碼,如果有足夠的空間保存,便會(huì)對(duì)要執(zhí)行的啟動(dòng)流程代碼段進(jìn)行JIT編譯;否則,丟棄該要執(zhí)行的啟動(dòng)流程代碼段。具體的,應(yīng)用管理器模塊101,用于獲取要運(yùn)行的應(yīng)用程序的標(biāo)識(shí)信息,并在啟動(dòng)虛擬機(jī)模塊102運(yùn)行的同時(shí)將獲取到的該應(yīng)用程序的標(biāo)識(shí)信息傳遞給虛擬機(jī)模塊102,通過(guò)該應(yīng)用程序的標(biāo)識(shí)信息控制所述虛擬機(jī)模塊執(zhí)行所述應(yīng)用程序代碼;虛擬機(jī)模塊102,用于根據(jù)該應(yīng)用程序的標(biāo)識(shí)信息,調(diào)用存儲(chǔ)器管理模塊103分別加載應(yīng)用程序代碼、以及應(yīng)用程序的啟動(dòng)流程的JIT編譯結(jié)果到內(nèi)存中之后,獲取該應(yīng)用程序的第一段啟動(dòng)流程代碼段;在所述JIT編譯結(jié)果中查找當(dāng)前要執(zhí)行的該第一段啟動(dòng)流程代碼段對(duì)應(yīng)的本地JIT編譯代碼,并在查找到該代碼段對(duì)應(yīng)的本地JIT編譯代碼時(shí),執(zhí)行查找到的本地JIT編譯代碼,在未查找到該代碼段對(duì)應(yīng)的本地JIT編譯代碼時(shí),通知所述JIT編譯器模塊對(duì)所述應(yīng)用程序當(dāng)前要執(zhí)行的該代碼段進(jìn)行JIT編譯,并采用解釋方式執(zhí)行該代碼段;如果應(yīng)用程序的啟動(dòng)流程未執(zhí)行結(jié)束,則根據(jù)該代碼段的執(zhí)行結(jié)果確定下一步要執(zhí)行的應(yīng)用程序的啟動(dòng)7流程代碼段,并返回執(zhí)行上一步,直至應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束。具體實(shí)施中,本發(fā)明實(shí)施例涉及的啟動(dòng)流程代碼段可以包括一條代碼也可以包括多條代碼,這由執(zhí)行應(yīng)用程序的系統(tǒng)支持的JIT編譯器具體決定。具體的,虛擬機(jī)模塊在JIT編譯結(jié)果文件中查找JIT編譯結(jié)果并執(zhí)行代碼段對(duì)應(yīng)的JIT編譯代碼時(shí),當(dāng)該JIT編譯代碼執(zhí)行完后,相當(dāng)于已經(jīng)執(zhí)行了該代碼為起始的一段代碼,則下一段要執(zhí)行的代碼可以根據(jù)由執(zhí)行的編譯結(jié)果來(lái)決定。具體實(shí)施中,應(yīng)用程序的標(biāo)識(shí)信息可以包括所述應(yīng)用程序的程序名稱和軟件包名稱等。具體實(shí)施中,應(yīng)用管理器模塊101,還可以用于在確認(rèn)應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束后,判斷在該應(yīng)用程序的啟動(dòng)流程執(zhí)行過(guò)程中是否進(jìn)行了JIT編譯,并在判斷結(jié)果為是時(shí),從JIT編譯器模塊104獲取該應(yīng)用程序的啟動(dòng)流程對(duì)應(yīng)的JIT編譯代碼,并將該JIT編譯代碼傳遞給存儲(chǔ)器管理模塊103,存儲(chǔ)器管理模塊103可以用于將接收到的應(yīng)用程序的啟動(dòng)流程的JIT編譯代碼保存在指定的外部存儲(chǔ)器中。具體的,存儲(chǔ)器管理模塊103在接收到應(yīng)用程序的啟動(dòng)過(guò)程中,啟動(dòng)流程代碼段的JIT編譯代碼后以一定的格式保存在外部存儲(chǔ)器中。較佳的,本發(fā)明實(shí)施例中涉及的應(yīng)用程序可以為Java應(yīng)用程序。也可以是其它具有JIT編譯機(jī)制的解釋型語(yǔ)言開發(fā)的應(yīng)用程序。特別的,應(yīng)用程序的啟動(dòng)流程中涉及的代碼可能由于各種JIT的實(shí)現(xiàn)技術(shù)的限制,例如內(nèi)存容量的限制而不會(huì)被全部編譯,只有部分被編譯的情況,本發(fā)明實(shí)施例也適用于這種情況。較佳的,本發(fā)明實(shí)施例中,存儲(chǔ)管理器保存的JIT編譯結(jié)果的保存格式可以為表格,如表1所示,該表格的關(guān)鍵字是被JIT編譯的應(yīng)用程序的啟動(dòng)流程代碼在應(yīng)用程序代碼中的位置,該表格的內(nèi)容是該應(yīng)用程序的啟動(dòng)流程代碼進(jìn)行JIT編譯后得到的本地JIT編譯代碼的存放位置。當(dāng)所涉及的代碼段由多條代碼組成時(shí),以被編譯的代碼段中第一條代碼在應(yīng)用程序代碼中的位置作為關(guān)鍵字去查詢本地JIT編譯代碼的存放位置。因此,編譯結(jié)果表格中的代碼地址所對(duì)應(yīng)的編譯結(jié)果,可能不僅僅是該代碼的編譯結(jié)果,也可能是以該代碼為起始的一段代碼的編譯結(jié)果。表1關(guān)鍵字內(nèi)容100本地代碼存放的位置340本地代碼存放的位置800本地代碼存放的位置其中,關(guān)鍵字為100時(shí),表明內(nèi)容是應(yīng)用程序的代碼中位置為100開始的啟動(dòng)流程代碼進(jìn)行JIT編譯后得到的本地JIT編譯代碼的存放位置;同樣,關(guān)鍵字為340時(shí),表明內(nèi)容是應(yīng)用程序的代碼中位置為340開始的啟動(dòng)流程代碼進(jìn)行JIT編譯后得到的本地JIT編譯代碼的存放位置;關(guān)鍵字為800時(shí),表明內(nèi)容是應(yīng)用程序的代碼中位置為800開始的啟動(dòng)流程代碼進(jìn)行JIT編譯后得到的本地JIT編譯代碼的存放位置。在具體實(shí)施中,以表格的方式保存JIT編譯結(jié)果是因?yàn)樵谠摲绞较卤容^容易查找將要執(zhí)行的應(yīng)用程序的啟動(dòng)流程的代碼與其對(duì)應(yīng)的JIT編譯結(jié)果,并且該方式易于維護(hù),也是較為常見(jiàn)的保存方式。具體實(shí)施中,應(yīng)用管理器模塊101,還可以用于在確認(rèn)應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束后,通知虛擬機(jī)模塊102;虛擬機(jī)模塊102,還用于在獲知應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束后,判斷在該應(yīng)用程序的啟動(dòng)流程執(zhí)行過(guò)程中是否進(jìn)行了JIT編譯,并在判斷結(jié)果為是時(shí),從JIT編譯器模塊104獲取應(yīng)用程序的啟動(dòng)流程對(duì)應(yīng)的JIT編譯代碼,并將該JIT編譯代碼傳遞給存儲(chǔ)器管理模塊103;存儲(chǔ)器管理模塊103,具體用于將接收到的應(yīng)用程序的啟動(dòng)流程的JIT編譯代碼保存在指定的外部存儲(chǔ)器中。具體實(shí)施中,應(yīng)用管理器模塊101,還用于在確認(rèn)應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束后,通知JIT編譯器模塊104JIT編譯器模塊104,還用于在獲知應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束后,判斷在該應(yīng)用程序的啟動(dòng)流程執(zhí)行過(guò)程中是否進(jìn)行了JIT編譯,并在判斷結(jié)果為是時(shí),將JIT編譯代碼傳遞給存儲(chǔ)器管理模塊103;存儲(chǔ)器管理模塊103,具體用于將接收到的應(yīng)用程序的啟動(dòng)流程的JIT編譯代碼保存在指定的外部存儲(chǔ)器中?;谕话l(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一種移動(dòng)設(shè)備上應(yīng)用程序的啟動(dòng)方法,由于該方法解決問(wèn)題的原理與應(yīng)用程序的啟動(dòng)裝置相似,因此該方法的實(shí)施可以參見(jiàn)裝置的實(shí)施,重復(fù)之處不再贅述。圖2為移動(dòng)設(shè)備上應(yīng)用程序的啟動(dòng)方法的實(shí)施流程示意圖,如圖所示,包括如下步驟S201、應(yīng)用管理器模塊基于要運(yùn)行的應(yīng)用程序啟動(dòng)虛擬機(jī)模塊運(yùn)行,并控制該虛擬機(jī)模塊執(zhí)行該應(yīng)用程序代碼;S202、虛擬機(jī)模塊調(diào)用存儲(chǔ)器管理模塊分別加載該應(yīng)用程序代碼、以及應(yīng)用程序的啟動(dòng)流程的JIT編譯結(jié)果到內(nèi)存中,在執(zhí)行每一段應(yīng)用程序的啟動(dòng)流程代碼段時(shí),在所述JIT編譯結(jié)果中查找所述要執(zhí)行的啟動(dòng)流程代碼段對(duì)應(yīng)的本地JIT編譯代碼,并執(zhí)行查找到的本地JIT編譯代碼。具體實(shí)施中,移動(dòng)設(shè)備上應(yīng)用程序的啟動(dòng)方法,還可以包括所述虛擬機(jī)模塊在所述JIT編譯結(jié)果中未查找到所述要執(zhí)行的啟動(dòng)流程代碼段對(duì)應(yīng)的本地JIT編譯代碼時(shí),通知JIT編譯器模塊對(duì)所述要執(zhí)行的啟動(dòng)流程代碼段進(jìn)行JIT編譯,并采用解釋方式執(zhí)行所述要執(zhí)行的啟動(dòng)流程代碼;以及該JIT編譯器模塊根據(jù)該虛擬機(jī)模塊的通知,確認(rèn)配置所述虛擬機(jī)模塊時(shí)劃分的內(nèi)存空間有剩余空間時(shí),對(duì)所述要執(zhí)行的啟動(dòng)流程代碼段進(jìn)行JIT編譯。具體的,應(yīng)用管理器模塊獲取要運(yùn)行的應(yīng)用程序的標(biāo)識(shí)信息,該標(biāo)識(shí)信息可以包括該應(yīng)用程序的程序名稱和軟件包名稱;并啟動(dòng)虛擬機(jī)模塊,同時(shí),將獲取到的標(biāo)識(shí)信息傳遞給虛擬機(jī)模塊,通過(guò)該標(biāo)識(shí)信息控制虛擬機(jī)模塊執(zhí)行應(yīng)用程序代碼。虛擬機(jī)模塊根據(jù)應(yīng)用管理器模塊傳遞過(guò)來(lái)的應(yīng)用程序的標(biāo)識(shí)信息,調(diào)用存儲(chǔ)器管理模塊分別加載應(yīng)用程序代碼、以及應(yīng)用程序的啟動(dòng)流程的JIT編譯結(jié)果到內(nèi)存中;并獲得要執(zhí)行的應(yīng)用程序的第一段啟動(dòng)流程代碼段,把它作為當(dāng)前要執(zhí)行的代碼段;虛擬機(jī)模塊查找到該代碼段對(duì)應(yīng)的本地JIT編譯代碼確認(rèn)當(dāng)前要執(zhí)行的代碼段是否有JIT編譯結(jié)果,如果有,虛擬機(jī)模塊執(zhí)行查找到的本地JIT編譯代碼;否則,虛擬機(jī)模塊通知JIT編譯器模塊,對(duì)當(dāng)前要執(zhí)行的啟動(dòng)流程代碼段進(jìn)行JIT編譯,同時(shí),以解釋的方式執(zhí)行該代碼段。應(yīng)用管理器模塊判斷應(yīng)用程序的啟動(dòng)流程是否執(zhí)行結(jié)束,如果沒(méi)有結(jié)束,虛擬機(jī)模塊根據(jù)該代碼段的執(zhí)行結(jié)果確定下一步要執(zhí)行的應(yīng)用程序的啟動(dòng)流程代碼段,把它作為當(dāng)前要執(zhí)行的代碼段,并返回執(zhí)行上述判斷當(dāng)前要執(zhí)行的啟動(dòng)流程代碼段是否有JIT編譯結(jié)果的流程,直至應(yīng)用管理器模塊確認(rèn)應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束。具體實(shí)施中,當(dāng)應(yīng)用管理器模塊在確認(rèn)應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束后,判斷在該應(yīng)用程序的啟動(dòng)流程執(zhí)行過(guò)程中是否進(jìn)行了JIT編譯,如果是,則從所述JIT編譯器模塊獲取應(yīng)用程序的啟動(dòng)流程對(duì)應(yīng)的JIT編譯代碼,并將獲取到的JIT編譯代碼傳遞給存儲(chǔ)器管理模塊;該存儲(chǔ)器管理模塊將接收到的應(yīng)用程序的啟動(dòng)流程的JIT編譯代碼保存在指定的外部存儲(chǔ)器中。具體的,該JIT編譯結(jié)果可以保存在同一外部存儲(chǔ)器中,也可以保存在不同的外部存儲(chǔ)器中。具體實(shí)施中,當(dāng)應(yīng)用管理器模塊在確認(rèn)應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束后,還可以通知虛擬機(jī)模塊;該虛擬機(jī)模塊在獲知應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束后,判斷在該應(yīng)用程序的啟動(dòng)流程執(zhí)行過(guò)程中是否進(jìn)行了JIT編譯,并在判斷結(jié)果為是時(shí),從JIT編譯器模塊獲取應(yīng)用程序的啟動(dòng)流程對(duì)應(yīng)的JIT編譯代碼,并將獲取到的JIT編譯代碼傳遞給存儲(chǔ)器管理模塊;該存儲(chǔ)器管理模塊將接收到的應(yīng)用程序的啟動(dòng)流程的JIT編譯代碼保存在指定的外部存儲(chǔ)器中。具體實(shí)施中,當(dāng)應(yīng)用管理器模塊在確認(rèn)應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束后,還可以通知JIT編譯器模塊;該JIT編譯器模塊在獲知應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束后,判斷在所述應(yīng)用程序的啟動(dòng)流程執(zhí)行過(guò)程中是否進(jìn)行了JIT編譯,并在判斷結(jié)果為是時(shí),將JIT編譯代碼傳遞給存儲(chǔ)器管理模塊;該存儲(chǔ)器管理模塊將接收到的應(yīng)用程序的啟動(dòng)流程的JIT編譯代碼保存在指定的外部存儲(chǔ)器中。較佳的,本發(fā)明實(shí)施例涉及的應(yīng)用程序可以為Java應(yīng)用程序。具體的,本發(fā)明實(shí)施例涉及的應(yīng)用程序?yàn)镴ava應(yīng)用程序時(shí),移動(dòng)設(shè)備上Java應(yīng)用程序的啟動(dòng)方法,屬于平臺(tái)類的性能改進(jìn)方法,不需要修改任何Java應(yīng)用程序,適用于移動(dòng)設(shè)備上所有的基于Java開發(fā)的應(yīng)用程序,所涉及的移動(dòng)設(shè)備包括MID(MobileInternetDevices,移動(dòng)互聯(lián)網(wǎng)設(shè)備)、MP4(MPEG-4,MovingPictureExpertGroup,動(dòng)態(tài)圖像專家組)、PSP(PlayStationPortable,便攜游戲機(jī))以及手機(jī)等。為了更好的理解本發(fā)明實(shí)施例的實(shí)施方式,下面通過(guò)具體的實(shí)施例對(duì)本發(fā)明的實(shí)施方式進(jìn)行說(shuō)明。本發(fā)明實(shí)施例以Android手機(jī)軟件平臺(tái)為例進(jìn)行描述,Android手機(jī)軟件平臺(tái)的應(yīng)用程序采用Java語(yǔ)言開發(fā),并且其虛擬機(jī)具有JIT功能。圖3為Android手機(jī)軟件平臺(tái)中Java應(yīng)用程序啟動(dòng)裝置的邏輯結(jié)構(gòu)圖,如圖所示,在Android手機(jī)軟件平臺(tái)中,應(yīng)用管理器模塊分成了兩個(gè)軟件模塊實(shí)體=ActivityManagerService和ActivityThread,其中,ActivityManagerService在單獨(dú)的一個(gè)系統(tǒng)進(jìn)程中運(yùn)行,ActivityThread在應(yīng)用程10序的進(jìn)程中運(yùn)行;JIT編譯器模塊對(duì)應(yīng)一個(gè)線程軟件模塊實(shí)體,在應(yīng)用程序的進(jìn)程中運(yùn)行;存儲(chǔ)器管理模塊PackageManager,它和Java虛擬機(jī)模塊分別有對(duì)應(yīng)的函數(shù)/類等軟件模塊實(shí)體,同時(shí),它們都在應(yīng)用程序進(jìn)程的主線程中運(yùn)行。本發(fā)明實(shí)施例中,以Android手機(jī)軟件平臺(tái)中一個(gè)Activity的啟動(dòng)為例進(jìn)行描述。在Android中,一個(gè)Activity可以看作是一個(gè)Java應(yīng)用程序,Activity的第一個(gè)窗口被顯示出來(lái)就標(biāo)志著其啟動(dòng)完畢。本發(fā)明實(shí)施例中,JIT編譯結(jié)果以表格的形式存放在指定的外部存儲(chǔ)器中。如圖4所示,為Android手機(jī)平臺(tái)軟件中,Actiνity的啟動(dòng)實(shí)施流程示意圖,包括如下步驟S40UActivityManagerService創(chuàng)建一個(gè)新的進(jìn)程,以便運(yùn)行Activity;S402、新的進(jìn)程創(chuàng)建Java虛擬機(jī)模塊;S403、Java虛擬機(jī)模塊執(zhí)行ActivityThread的代碼;S404>ActivityThread與ActivityManagerServiceM^fflff^;S405>ActivityManagerService@ActivityThread"RWS^)]^]Activity白勺動(dòng)流程的標(biāo)識(shí)信息;ActivityManagerService@ActivityThread胃i白勺Activity程的標(biāo)識(shí)信息中包括Activity的名稱和軟件包的名稱等。S406、ActivityThread將接收到的Activity的標(biāo)識(shí)信息傳遞給Java虛擬機(jī)模塊;S407、Java虛擬機(jī)模塊從PackageManager獲取將要運(yùn)行的Activity的代碼和Activity的啟動(dòng)流程的JIT編譯結(jié)果。S408、Java虛擬機(jī)模塊打開Activity的代碼和該Activity的啟動(dòng)流程的JIT編譯結(jié)果,并將其讀入內(nèi)存;Java虛擬機(jī)模塊將要Activity的代碼和該Activity的啟動(dòng)流程的JIT編譯結(jié)果后,分別存放在code(代碼)存儲(chǔ)區(qū)和JIT-cache存儲(chǔ)區(qū)(JIT緩存)中;具體的,PackageManager中從指定的外部存儲(chǔ)器中讀取Activity的啟動(dòng)流程的JIT編譯結(jié)果,Java虛擬機(jī)模塊將該JIT編譯結(jié)果讀入內(nèi)存.S409、Java虛擬機(jī)模塊從code存儲(chǔ)區(qū)獲取第一段代碼作為當(dāng)前要執(zhí)行的代碼段;S410、Java虛擬機(jī)模塊確認(rèn)當(dāng)前要執(zhí)行的代碼段是否有對(duì)應(yīng)的JIT編譯結(jié)果,如果有,執(zhí)行S412,否則,執(zhí)行S411;具體的,Java虛擬機(jī)模塊以當(dāng)前要執(zhí)行的代碼段在該Activity的代碼中存放的位置作為關(guān)鍵字,查找JIT-cache存儲(chǔ)區(qū)中的JIT編譯結(jié)果,如果該關(guān)鍵字有對(duì)應(yīng)的內(nèi)容,則該內(nèi)容就是指向存放該當(dāng)前要執(zhí)行的代碼進(jìn)行JIT編譯后得到的本地JIT編譯代碼的指針,根據(jù)該指針,便可以獲取當(dāng)前要執(zhí)行的代碼對(duì)應(yīng)的本地JIT編譯代碼。S411、Java虛擬機(jī)模塊以解釋的方式執(zhí)行當(dāng)前要執(zhí)行的代碼,并通知JIT編譯器模塊編譯當(dāng)前要執(zhí)行的代碼段,并將JIT編譯啟動(dòng)流程標(biāo)識(shí)置為真,設(shè)置下一步將要執(zhí)行的代碼段;S412、Java虛擬機(jī)模塊執(zhí)行當(dāng)前要執(zhí)行的代碼段對(duì)應(yīng)的本地JIT編譯代碼,設(shè)置下一條將要執(zhí)行的代碼段;S413,ActivityManagerService確認(rèn)Activity的啟動(dòng)流程結(jié)束標(biāo)志是否為真,如果是,執(zhí)行S415,否則執(zhí)行S414;S414、執(zhí)行下一步將要執(zhí)行的代碼段,并返回執(zhí)行S410;由于S411或者S412中,當(dāng)前要執(zhí)行的代碼執(zhí)行完畢后,會(huì)設(shè)置下一條要執(zhí)行的代碼段(這是由JIT編譯機(jī)制和Java虛擬機(jī)機(jī)制所保證的),將設(shè)置的下一步要執(zhí)行的代碼段作為當(dāng)前要執(zhí)行的代碼段;S415、ActivityManagerService判斷JIT編譯器模塊啟動(dòng)流程標(biāo)識(shí)是否為真,如果為真,執(zhí)行S416,否則執(zhí)行S417。S416、保存本次啟動(dòng)流程中的JIT編譯代碼;ActivityManagerService從JIT編譯器模塊獲取本次Activity啟動(dòng)的過(guò)程中進(jìn)行JIT編譯的編譯代碼,并傳遞給PackageManager,PackageManager以表格的格式保存在該Activity的安裝目錄下。S417、本次Activity啟動(dòng)流程結(jié)束。本發(fā)明實(shí)施例通過(guò)改進(jìn)JIT機(jī)制,讓Java應(yīng)用程序的啟動(dòng)流程所執(zhí)行的代碼段能夠被JIT編譯成本地JIT編譯代碼,并且該JIT編譯結(jié)果可以保存起來(lái),從而解決了Java應(yīng)用程序啟動(dòng)流程最大的性能瓶頸,提高了Java應(yīng)用程序的啟動(dòng)速度。本發(fā)明實(shí)施例提供的一種移動(dòng)設(shè)備上應(yīng)用程序的啟動(dòng)裝置及方法,在應(yīng)用程序的啟動(dòng)過(guò)程中,應(yīng)用管理器模塊基于要運(yùn)行的應(yīng)用程序啟動(dòng)虛擬機(jī)模塊運(yùn)行,該虛擬機(jī)模塊調(diào)用存儲(chǔ)器管理模塊分別加載應(yīng)用程序代碼、以及該應(yīng)用程序的啟動(dòng)流程的JIT編譯結(jié)果到內(nèi)存中,在執(zhí)行每一段應(yīng)用程序的啟動(dòng)流程代碼段時(shí),在該JIT編譯結(jié)果中查找要執(zhí)行的啟動(dòng)流程代碼段對(duì)應(yīng)的本地JIT編譯代碼,并執(zhí)行查找到的本地JIT編譯代碼,這樣,在啟動(dòng)應(yīng)用程序時(shí),由于保存了對(duì)應(yīng)用程序的啟動(dòng)流程的當(dāng)前要執(zhí)行的啟動(dòng)流程代碼段的JIT編譯結(jié)果,因此只需直接執(zhí)行對(duì)應(yīng)的JIT本地編譯結(jié)果即可,無(wú)需對(duì)要執(zhí)行的啟動(dòng)流程代碼段以解釋方式執(zhí)行,從而提高了應(yīng)用程序的啟動(dòng)速度。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。權(quán)利要求一種移動(dòng)設(shè)備上應(yīng)用程序的啟動(dòng)裝置,其特征在于,包括應(yīng)用管理器模塊、虛擬機(jī)模塊和存儲(chǔ)器管理模塊,其中所述應(yīng)用管理器模塊,用于基于要運(yùn)行的應(yīng)用程序啟動(dòng)虛擬機(jī)模塊運(yùn)行,并控制所述虛擬機(jī)模塊執(zhí)行所述應(yīng)用程序代碼;所述虛擬機(jī)模塊,用于調(diào)用所述存儲(chǔ)器管理模塊分別加載所述應(yīng)用程序代碼、以及應(yīng)用程序的啟動(dòng)流程的JIT編譯結(jié)果到內(nèi)存中,在執(zhí)行每一段應(yīng)用程序的啟動(dòng)流程代碼段時(shí),在所述JIT編譯結(jié)果中查找所述要執(zhí)行的啟動(dòng)流程代碼段對(duì)應(yīng)的本地JIT編譯代碼,并執(zhí)行查找到的本地JIT編譯代碼;所述存儲(chǔ)器管理模塊,用于保存和讀取應(yīng)用程序代碼、以及對(duì)應(yīng)用程序的啟動(dòng)流程進(jìn)行JIT編譯后得到的JIT編譯結(jié)果,所述JIT編譯結(jié)果包括已進(jìn)行JIT編譯的各段啟動(dòng)流程代碼段對(duì)應(yīng)的JIT編譯代碼。2.如權(quán)利要求1所述的裝置,其特征在于,還包括JIT編譯器模塊,其中所述虛擬機(jī)模塊,還用于在所述JIT編譯結(jié)果中未查找到所述要執(zhí)行的啟動(dòng)流程代碼段對(duì)應(yīng)的本地JIT編譯代碼時(shí),通知所述JIT編譯器模塊對(duì)所述要執(zhí)行的啟動(dòng)流程代碼段進(jìn)行JIT編譯,并采用解釋方式執(zhí)行所述要執(zhí)行的啟動(dòng)流程代碼;所述JIT編譯器模塊,用于根據(jù)所述虛擬機(jī)模塊的通知,確認(rèn)所述虛擬機(jī)模塊的內(nèi)存空間有剩余空間時(shí),對(duì)所述要執(zhí)行的啟動(dòng)流程代碼段進(jìn)行JIT編譯。3.如權(quán)利要求2所述的裝置,其特征在于,所述應(yīng)用管理器模塊,還用于獲取要運(yùn)行的應(yīng)用程序的標(biāo)識(shí)信息,并在啟動(dòng)所述虛擬機(jī)模塊運(yùn)行的同時(shí)將獲取到的所述應(yīng)用程序的標(biāo)識(shí)信息傳遞給所述虛擬機(jī)模塊,通過(guò)所述應(yīng)用程序的標(biāo)識(shí)信息控制所述虛擬機(jī)模塊執(zhí)行所述應(yīng)用程序代碼;所述虛擬機(jī)模塊,還用于根據(jù)所述應(yīng)用程序的標(biāo)識(shí)信息,調(diào)用所述存儲(chǔ)器管理模塊分別加載應(yīng)用程序代碼、以及應(yīng)用程序的啟動(dòng)流程的JIT編譯結(jié)果到內(nèi)存中;獲取所述應(yīng)用程序的第一段啟動(dòng)流程代碼段;在所述JIT編譯結(jié)果中查找當(dāng)前要執(zhí)行的該第一段啟動(dòng)流程代碼段對(duì)應(yīng)的本地JIT編譯代碼,并在查找到該代碼段對(duì)應(yīng)的本地JIT編譯代碼時(shí),執(zhí)行查找到的本地JIT編譯代碼,在未查找到該代碼段對(duì)應(yīng)的本地JIT編譯代碼時(shí),通知所述JIT編譯器模塊對(duì)所述應(yīng)用程序當(dāng)前要執(zhí)行的該代碼段進(jìn)行JIT編譯,并采用解釋方式執(zhí)行該代碼段;如果應(yīng)用程序的啟動(dòng)流程未執(zhí)行結(jié)束,則根據(jù)該代碼段的執(zhí)行結(jié)果確定下一步要執(zhí)行的應(yīng)用程序的啟動(dòng)流程代碼段,并返回執(zhí)行上一步,直至應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束。4.如權(quán)利要求2或3所述的裝置,其特征在于,所述應(yīng)用管理器模塊,還用于在確認(rèn)應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束后,判斷在所述應(yīng)用程序的啟動(dòng)流程執(zhí)行過(guò)程中是否進(jìn)行了JIT編譯,并在判斷結(jié)果為是時(shí),從JIT編譯器模塊獲取所述應(yīng)用程序的啟動(dòng)流程對(duì)應(yīng)的JIT編譯代碼,并將獲取到的JIT編譯代碼傳遞給存儲(chǔ)器管理模塊;所述存儲(chǔ)器管理模塊,具體用于將接收到的應(yīng)用程序的啟動(dòng)流程的JIT編譯代碼保存在指定的外部存儲(chǔ)器中。5.如權(quán)利要求2或3所述的裝置,其特征在于,所述應(yīng)用管理器模塊,還用于在確認(rèn)應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束后,通知虛擬機(jī)模塊;所述虛擬機(jī)模塊,還用于在獲知應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束后,判斷在所述應(yīng)用程序的啟動(dòng)流程執(zhí)行過(guò)程中是否進(jìn)行了JIT編譯,并在判斷結(jié)果為是時(shí),從JIT編譯器模塊獲取所述應(yīng)用程序的啟動(dòng)流程對(duì)應(yīng)的JIT編譯代碼,并將獲取到的JIT編譯代碼傳遞給存儲(chǔ)器管理模塊;所述存儲(chǔ)器管理模塊,具體用于將接收到的應(yīng)用程序的啟動(dòng)流程的JIT編譯代碼保存在指定的外部存儲(chǔ)器中。6.如權(quán)利要求2或3所述的裝置,其特征在于,所述應(yīng)用管理器模塊,還用于在確認(rèn)應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束后,通知JIT編譯器模塊;所述JIT編譯器模塊,還用于在獲知應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束后,判斷在所述應(yīng)用程序的啟動(dòng)流程執(zhí)行過(guò)程中是否進(jìn)行了JIT編譯,并在判斷結(jié)果為是時(shí),將所述JIT編譯代碼傳遞給存儲(chǔ)器管理模塊;所述存儲(chǔ)器管理模塊,具體用于將接收到的應(yīng)用程序的啟動(dòng)流程的JIT編譯代碼保存在指定的外部存儲(chǔ)器中。7.如權(quán)利要求1所述的裝置,其特征在于,所述應(yīng)用程序包括Java應(yīng)用程序。8.一種移動(dòng)設(shè)備上應(yīng)用程序的啟動(dòng)方法,其特征在于,應(yīng)用管理器模塊基于要運(yùn)行的應(yīng)用程序啟動(dòng)虛擬機(jī)模塊運(yùn)行,并控制所述虛擬機(jī)模塊執(zhí)行所述應(yīng)用程序代碼;所述虛擬機(jī)模塊調(diào)用存儲(chǔ)器管理模塊分別加載所述應(yīng)用程序代碼、以及應(yīng)用程序的啟動(dòng)流程的JIT編譯結(jié)果到內(nèi)存中,在執(zhí)行每一段應(yīng)用程序的啟動(dòng)流程代碼段時(shí),在所述JIT編譯結(jié)果中查找所述要執(zhí)行的啟動(dòng)流程代碼段對(duì)應(yīng)的本地JIT編譯代碼,并執(zhí)行查找到的本地JIT編譯代碼。9.如權(quán)利要求8所述的方法,其特征在于,還包括所述虛擬機(jī)模塊在所述JIT編譯結(jié)果中未查找到所述要執(zhí)行的啟動(dòng)流程代碼段對(duì)應(yīng)的本地JIT編譯代碼時(shí),通知JIT編譯器模塊對(duì)所述要執(zhí)行的啟動(dòng)流程代碼段進(jìn)行JIT編譯,并采用解釋方式執(zhí)行所述要執(zhí)行的啟動(dòng)流程代碼;以及所述JIT編譯器模塊根據(jù)所述虛擬機(jī)模塊的通知,確認(rèn)所述虛擬機(jī)模塊的內(nèi)存空間有剩余空間時(shí),對(duì)所述要執(zhí)行的啟動(dòng)流程代碼段進(jìn)行JIT編譯。10.如權(quán)利要求9所述的方法,其特征在于,所述應(yīng)用管理器模塊基于要運(yùn)行的應(yīng)用程序啟動(dòng)虛擬機(jī)模塊運(yùn)行,并控制所述虛擬機(jī)模塊執(zhí)行所述應(yīng)用程序代碼,具體包括所述應(yīng)用管理器模塊獲取要運(yùn)行的應(yīng)用程序的標(biāo)識(shí)信息,并在啟動(dòng)所述虛擬機(jī)模塊運(yùn)行的同時(shí)將獲取到的所述應(yīng)用程序的標(biāo)識(shí)信息傳遞給所述虛擬機(jī)模塊,通過(guò)所述應(yīng)用程序的標(biāo)識(shí)信息控制所述虛擬機(jī)模塊執(zhí)行所述應(yīng)用程序代碼。11.如權(quán)利要求10所述的方法,其特征在于,所述應(yīng)用程序的啟動(dòng)流程的執(zhí)行步驟,具體包括所述虛擬機(jī)模塊根據(jù)所述應(yīng)用程序的標(biāo)識(shí)信息,調(diào)用存儲(chǔ)器管理模塊分別加載應(yīng)用程序代碼、以及應(yīng)用程序的啟動(dòng)流程的JIT編譯結(jié)果到內(nèi)存中;獲取所述應(yīng)用程序的第一段啟動(dòng)流程代碼段;所述虛擬機(jī)模塊在所述JIT編譯結(jié)果中查找當(dāng)前要執(zhí)行的該第一段啟動(dòng)流程代碼段對(duì)應(yīng)的本地JIT編譯代碼,并在查找到該代碼段對(duì)應(yīng)的本地JIT編譯代碼時(shí),執(zhí)行查找到的本地JIT編譯代碼,在未查找到該代碼段對(duì)應(yīng)的本地JIT編譯代碼時(shí),通知所述JIT編譯器模塊對(duì)所述應(yīng)用程序當(dāng)前要執(zhí)行的該代碼段進(jìn)行JIT編譯,并采用解釋方式執(zhí)行該代碼段;應(yīng)用管理器模塊判斷應(yīng)用程序的啟動(dòng)流程是否執(zhí)行結(jié)束,如果否,所述虛擬機(jī)模塊根據(jù)該代碼段的執(zhí)行結(jié)果確定下一步要執(zhí)行的應(yīng)用程序的啟動(dòng)流程代碼段,并返回執(zhí)行上一步,直至應(yīng)用管理器模塊確認(rèn)應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束。12.如權(quán)利要求9至11任一項(xiàng)所述的方法,其特征在于,還包括所述應(yīng)用管理器模塊在確認(rèn)應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束后,判斷在所述應(yīng)用程序的啟動(dòng)流程執(zhí)行過(guò)程中是否進(jìn)行了JIT編譯,并在判斷結(jié)果為是時(shí),從JIT編譯器模塊獲取所述應(yīng)用程序的啟動(dòng)流程對(duì)應(yīng)的JIT編譯代碼,并將所述獲取到的JIT編譯代碼傳遞給存儲(chǔ)器管理模塊;所述存儲(chǔ)器管理模塊將接收到的應(yīng)用程序的啟動(dòng)流程的JIT編譯代碼保存在指定的外部存儲(chǔ)器中。13.如權(quán)利要求9至11任一項(xiàng)所述的方法,其特征在于,還包括所述應(yīng)用管理器模塊在確認(rèn)應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束后,通知虛擬機(jī)模塊;所述虛擬機(jī)模塊在獲知應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束后,判斷在所述應(yīng)用程序的啟動(dòng)流程執(zhí)行過(guò)程中是否進(jìn)行了JIT編譯,并在判斷結(jié)果為是時(shí),從所述JIT編譯器模塊獲取所述應(yīng)用程序的啟動(dòng)流程對(duì)應(yīng)的JIT編譯代碼,并將獲取到的JIT編譯代碼傳遞給存儲(chǔ)器管理模塊;所述存儲(chǔ)器管理模塊將接收到的應(yīng)用程序的啟動(dòng)流程的JIT編譯代碼保存在指定的外部存儲(chǔ)器中。14.如權(quán)利要求9至11任一項(xiàng)所述的方法,其特征在于,還包括所述應(yīng)用管理器模塊在確認(rèn)應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束后,通知JIT編譯器模塊;所述JIT編譯器模塊在獲知應(yīng)用程序的啟動(dòng)流程執(zhí)行結(jié)束后,判斷在所述應(yīng)用程序的啟動(dòng)流程執(zhí)行過(guò)程中是否進(jìn)行了JIT編譯,并在判斷結(jié)果為是時(shí),將所述JIT編譯代碼傳遞給存儲(chǔ)器管理模塊;所述存儲(chǔ)器管理模塊將接收到的應(yīng)用程序的啟動(dòng)流程的JIT編譯代碼保存在指定的外部存儲(chǔ)器中。15.如權(quán)利要求8所述的方法,其特征在于,所述應(yīng)用程序包括Java應(yīng)用程序。全文摘要本發(fā)明公開了一種移動(dòng)設(shè)備上應(yīng)用程序的啟動(dòng)裝置及方法,用于提高移動(dòng)設(shè)備上應(yīng)用程序的啟動(dòng)速度。其中,所述移動(dòng)設(shè)備上應(yīng)用程序的啟動(dòng)裝置,包括應(yīng)用管理器模塊,用于基于要運(yùn)行的應(yīng)用程序啟動(dòng)虛擬機(jī)模塊運(yùn)行;虛擬機(jī)模塊,用于加載所述應(yīng)用程序代碼、以及應(yīng)用程序的啟動(dòng)流程的JIT編譯結(jié)果到內(nèi)存中,在執(zhí)行每一段應(yīng)用程序的啟動(dòng)流程代碼段時(shí),在所述JIT編譯結(jié)果中查找所述要執(zhí)行的啟動(dòng)流程代碼段對(duì)應(yīng)的本地JIT編譯代碼,并執(zhí)行查找到的本地JIT編譯代碼;存儲(chǔ)器管理模塊,用于保存和讀取應(yīng)用程序代碼、以及對(duì)應(yīng)用程序的啟動(dòng)流程進(jìn)行JIT編譯后得到的JIT編譯結(jié)果。文檔編號(hào)G06F9/445GK101957770SQ201010504978公開日2011年1月26日申請(qǐng)日期2010年10月9日優(yōu)先權(quán)日2010年10月9日發(fā)明者古幼鵬,徐立鋒,王巍,王澤民,胡煒,鐘聲申請(qǐng)人:中興通訊股份有限公司