專利名稱:本地編譯方法、本地編譯預(yù)處理方法、計(jì)算機(jī)程序及服務(wù)器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種包括服務(wù)器及移動(dòng)體通信終端裝置的通信系統(tǒng),特別是涉及本地編譯(Native Compile)預(yù)處理方法、本地編譯方法、計(jì)算機(jī)程序和服務(wù)器。
背景技術(shù):
近年來(lái),在便攜式電話等移動(dòng)體通信終端裝置中,經(jīng)由因特網(wǎng)等網(wǎng)絡(luò)從服務(wù)器取得應(yīng)用程序,通過(guò)在移動(dòng)體通信終端裝置中執(zhí)行應(yīng)用程序,能夠在裝置中追加新的功能。
作為這樣的應(yīng)用程序,使用Java(注冊(cè)商標(biāo))語(yǔ)言編寫(xiě)的計(jì)算機(jī)程序(源代碼)編譯后變成稱為字節(jié)碼的中間代碼。字節(jié)碼不是由各個(gè)計(jì)算機(jī)的CPU直接執(zhí)行,而是通過(guò)由軟件生成的計(jì)算引擎即虛擬計(jì)算機(jī)執(zhí)行,另外,由于其不依賴于特定硬件或OS(Operating System操作系統(tǒng))、大小比較小,因此,適合于在網(wǎng)絡(luò)上進(jìn)行程序發(fā)行。但是,虛擬計(jì)算機(jī)中的執(zhí)行形式是通過(guò)解釋器(軟件)依次分析執(zhí)行,存在著執(zhí)行速度慢的問(wèn)題。
與此相對(duì),CPU能夠直接執(zhí)行的代碼被稱為本地代碼(機(jī)器語(yǔ)言),其執(zhí)行速度與使用解釋器的執(zhí)行速度相比顯著提高。為了有效利用移動(dòng)體通信終端裝置的CPU的執(zhí)行速度,需要將字節(jié)碼變換為本地代碼,即進(jìn)行所謂的本地編譯。
雖然也可以考慮在服務(wù)器執(zhí)行本地編譯后將其結(jié)果所得的本地代碼發(fā)送到移動(dòng)體通信終端裝置的方法,但本地代碼有可能隨移動(dòng)體通信終端裝置的機(jī)型(主要是CPU或OS種類)而有所不同,機(jī)型種類將來(lái)有可能增加,因此,在服務(wù)器一側(cè)針對(duì)機(jī)型執(zhí)行本地編譯及本地代碼的管理,其負(fù)擔(dān)很大。因此,本地編譯最好是由移動(dòng)體通信終端裝置一側(cè)負(fù)責(zé)。
但是,移動(dòng)體通信終端裝置的本地編譯耗時(shí)很多,因此,在其處理結(jié)束之前,程序無(wú)法執(zhí)行。目前,作為縮短本地編譯所需時(shí)間的方法,已知有JIT(Just In Time即時(shí))編譯器(參照例如特開(kāi)2002-215411號(hào)公報(bào))。JIT編譯器是在應(yīng)用程序執(zhí)行時(shí)將字節(jié)碼變換為本地代碼,在CPU中直接執(zhí)行。程序第1次執(zhí)行時(shí),將字節(jié)碼編譯成本地代碼后執(zhí)行,從第2次開(kāi)始則直接執(zhí)行存儲(chǔ)器中保存下來(lái)的本地代碼,從而提高執(zhí)行效率。由此,能夠高速執(zhí)行Java應(yīng)用程序。不過(guò),JIT編譯器的執(zhí)行是在第1次程序執(zhí)行時(shí)進(jìn)行的,在程序開(kāi)始執(zhí)行之前不可避免地需要等待。
另一方面,目前移動(dòng)體通信終端裝置能夠使用的數(shù)據(jù)通信速度比較慢。便攜式電話數(shù)據(jù)包網(wǎng)這樣的無(wú)線通信與光通信網(wǎng)、ADSL網(wǎng)等寬帶通信網(wǎng)相比,數(shù)據(jù)傳送速度低很多。近年來(lái),便攜式電話中搭載的CPU的高速化正在發(fā)展,與此相比,無(wú)線通信網(wǎng)的數(shù)據(jù)傳送速度仍然不高。因此,為了接收某一應(yīng)用程序的全部字節(jié)碼需要相應(yīng)的時(shí)間,進(jìn)一步,CPU雖然已經(jīng)高速化了,但將該字節(jié)碼進(jìn)行本地編譯也需要相應(yīng)時(shí)間。因此,存在的問(wèn)題是,通信開(kāi)始后到該應(yīng)用程序開(kāi)始執(zhí)行前時(shí)間很長(zhǎng)。
特開(kāi)2000-40007號(hào)公報(bào)中公開(kāi)了一種技術(shù),在接收J(rèn)AR文件(將多個(gè)類文件壓縮為1個(gè)文件)的同時(shí)啟動(dòng)應(yīng)用程序,通過(guò)并行進(jìn)行接收處理和應(yīng)用處理來(lái)縮短應(yīng)用程序啟動(dòng)時(shí)用戶的等待時(shí)間。
但是,該技術(shù)利用解釋器執(zhí)行中間代碼,不是利用本地代碼執(zhí)行應(yīng)用程序。另外,在本地編譯的情況下,如果不接收全部字節(jié)碼,就不能開(kāi)始編譯處理。原因在于,通常情況下在編譯某個(gè)類時(shí),當(dāng)該類參照了其他類時(shí),需要確認(rèn)該類是否存在以及該類中特定方法或字段是否存在。因此,即使將本地編譯與中間代碼的下載處理并行執(zhí)行,當(dāng)尚未接收到所參照的類時(shí),在接收到該類之前,也必須保留該類的編譯處理。應(yīng)用程序只能在該編譯處理結(jié)束后開(kāi)始執(zhí)行。其結(jié)果是,存在的問(wèn)題是,接收之后的應(yīng)用程序的執(zhí)行需要相當(dāng)長(zhǎng)的等待時(shí)間。
發(fā)明內(nèi)容
本發(fā)明是在這樣的背景下開(kāi)發(fā)出來(lái)的,其目的是提供能夠通過(guò)與中間代碼的下載處理并行執(zhí)行本地編譯處理來(lái)縮短執(zhí)行等待時(shí)間的通信系統(tǒng)、本地編譯預(yù)處理方法、本地編譯方法、計(jì)算機(jī)程序及服務(wù)器。
本發(fā)明的本地編譯方法是一種在移動(dòng)體通信終端裝置中將不依賴于OS的中間代碼變換為本地代碼的本地編譯方法,其特征在于,具備下述步驟經(jīng)由無(wú)線通信網(wǎng)以塊為單位依次接收附加了外部參照信息的單位塊的中間代碼,上述外部參照信息包括在將各單位塊的中間代碼變換為本地代碼時(shí)該單位塊所參照的其他單位塊的屬性信息;在全部中間代碼接收結(jié)束前,開(kāi)始將已經(jīng)接收的單位塊的中間代碼變換為本地代碼的本地編譯處理;以及在將某個(gè)單位塊的中間代碼變換為本地代碼時(shí),參照與該單位塊相關(guān)的已經(jīng)接收到的外部參照信息,執(zhí)行該單位塊的本地編譯處理。
移動(dòng)體通信終端裝置在全部中間代碼接收結(jié)束前,開(kāi)始對(duì)已經(jīng)接收的單位塊的中間代碼進(jìn)行本地編譯處理。此時(shí),該單位塊所參照的其他單位塊的屬性信息所構(gòu)成的外部參照信息與該單位塊同時(shí)被接收下來(lái),因此,不會(huì)影響立即開(kāi)始本地編譯。此外,在本說(shuō)明書(shū)中所謂的“經(jīng)由無(wú)線通信網(wǎng)”并不意味著只能經(jīng)由無(wú)線通信網(wǎng),不僅是無(wú)線通信網(wǎng),也可以經(jīng)由有線通信網(wǎng)。
由此,本地編譯所需時(shí)間可以包含在中間代碼的下載時(shí)間的全部或一部分中。即,可以與應(yīng)用程序的下載并行,利用CPU的空余時(shí)間進(jìn)行向本地代碼的變換。其結(jié)果是,與在啟動(dòng)時(shí)執(zhí)行編譯的情況相比,能夠大幅度縮短應(yīng)用程序的執(zhí)行等待時(shí)間。
本發(fā)明的另一本地編譯方法是一種在移動(dòng)體通信終端裝置中從外部接收不依賴于OS的中間代碼同時(shí)將其變換為本地代碼的本地編譯方法,其特征在于,具備下述步驟經(jīng)由無(wú)線通信網(wǎng)在接收屬性信息結(jié)合而成的一組外部參照信息之后接著接收多個(gè)單位塊的中間代碼,上述屬性信息是在將各單位塊的中間代碼變換為本地代碼時(shí)該單位塊所參照的其他單位塊的屬性信息;在全部中間代碼接收結(jié)束前,開(kāi)始將已經(jīng)接收的單位塊的中間代碼變換為本地代碼的本地編譯處理;以及在將某個(gè)單位塊的中間代碼變換為本地代碼時(shí),參照與該單位塊相關(guān)的已經(jīng)接收到的外部參照信息,執(zhí)行該單位塊的本地編譯處理。該方法中,不是與各單位塊一起接收外部參照信息,而是在接收多個(gè)單位塊之前接收一組外部參照信息。這種情況下,也能夠與應(yīng)用程序的下載并行,利用CPU的空余時(shí)間進(jìn)行向本地代碼的變換。
本發(fā)明的本地編譯預(yù)處理方法是一種在服務(wù)器中經(jīng)由網(wǎng)絡(luò)將不依賴于OS的中間代碼發(fā)送到移動(dòng)體通信終端裝置時(shí)的本地編譯預(yù)處理方法,其特征在于,具備下述步驟將源程序變換為各個(gè)單位塊的中間代碼;將各單位塊的中間代碼變換為本地代碼時(shí)該單位塊所參照的其他單位塊的屬性信息作為外部參照信息收集起來(lái);將收集起來(lái)的外部參照信息附加到該各單位塊中;以及將附加了上述外部參照信息的各單位塊經(jīng)由無(wú)線通信網(wǎng)依次發(fā)送到上述移動(dòng)體通信終端裝置。
在該方法中,服務(wù)器將收集到的外部參照信息附加到各單位塊,經(jīng)由無(wú)線通信網(wǎng)依次發(fā)送到移動(dòng)體通信終端裝置。這種情況下,當(dāng)某一單位塊中應(yīng)附加的外部參照信息與先前發(fā)送的單位塊中附加的外部參照信息相同時(shí),可以省略對(duì)后面發(fā)送的單位塊附加該相同外部參照信息。由此,發(fā)送數(shù)據(jù)量降低。
本發(fā)明的另一本地編譯預(yù)處理方法是一種在服務(wù)器中經(jīng)由網(wǎng)絡(luò)將不依賴于OS的中間代碼發(fā)送到移動(dòng)體通信終端裝置時(shí)的本地編譯預(yù)處理方法,其特征在于,具備下述步驟將源程序變換為各個(gè)單位塊的中間代碼;將各單位塊的中間代碼變換為本地代碼時(shí)該單位塊所參照的其他單位塊的屬性信息作為外部參照信息收集起來(lái);以及經(jīng)由無(wú)線通信網(wǎng)將多個(gè)單位塊接著收集到的一組外部參照信息依次發(fā)送到上述移動(dòng)體通信終端裝置。
該方法中,不是將收集到的外部參照信息附加到各單位塊中,而是在上述多個(gè)單位塊之前將收集到的外部參照信息整理為一組外部參照信息發(fā)送出去。
本發(fā)明也能夠作為用來(lái)執(zhí)行各本地編譯方法的各步驟的計(jì)算機(jī)程序。
本發(fā)明的服務(wù)器是一種執(zhí)行在經(jīng)由網(wǎng)絡(luò)將不依賴于OS的中間代碼發(fā)送到移動(dòng)體通信終端裝置時(shí)的本地編譯預(yù)處理的服務(wù)器,其特征在于,具備下述單元將源程序變換為各單位塊的中間代碼;在將各單位塊的中間代碼變換為本地代碼時(shí),將該單位塊所參照的其他單位塊的屬性信息作為外部參照信息收集起來(lái);將收集起來(lái)的外部參照信息附加到該各單位塊中;以及將附加了上述外部參照信息的各單位塊經(jīng)由無(wú)線通信網(wǎng)依次發(fā)送到上述移動(dòng)體通信終端裝置。該服務(wù)器的功能如對(duì)上述第1本地編譯預(yù)處理方法說(shuō)明的那樣。
本發(fā)明的另一服務(wù)器是一種執(zhí)行在經(jīng)由網(wǎng)絡(luò)將不依賴于OS的中間代碼發(fā)送到移動(dòng)體通信終端裝置時(shí)的本地編譯預(yù)處理的服務(wù)器,其特征在于,具備下述裝置將源程序變換為各單位塊的中間代碼;在將各單位塊的中間代碼變換為本地代碼時(shí)將該單位塊所參照的其他單位塊的屬性信息作為外部參照信息收集起來(lái);以及經(jīng)由無(wú)線通信網(wǎng)將多個(gè)單位塊接著收集到的外部參照信息依次發(fā)送到上述移動(dòng)體通信終端裝置。該服務(wù)器的功能如對(duì)上述第2本地編譯預(yù)處理方法說(shuō)明的那樣。
本發(fā)明進(jìn)一步可以看做一種通信系統(tǒng),其具備用來(lái)執(zhí)行上述本地編譯預(yù)處理方法的服務(wù)器和從該服務(wù)器經(jīng)由通信網(wǎng)絡(luò)接收不依賴于OS的中間代碼后執(zhí)行本地編譯處理的移動(dòng)體通信終端裝置。
圖1是表示應(yīng)用了本發(fā)明的通信系統(tǒng)的概略結(jié)構(gòu)的圖。
圖2是表示圖1所示的移動(dòng)體通信終端的概略硬件結(jié)構(gòu)實(shí)例的框圖。
圖3是表示圖1所示的服務(wù)器的概略硬件結(jié)構(gòu)實(shí)例的框圖。
圖4是表示2個(gè)Java應(yīng)用程序的類的源代碼實(shí)例的圖。
圖5是表示關(guān)于圖4的類A、B的外部參照信息的實(shí)例的圖。
圖6是用來(lái)說(shuō)明本發(fā)明的實(shí)施方式中根據(jù)Java源代碼得到與其對(duì)應(yīng)的本地代碼為止的第1數(shù)據(jù)變換方法的圖。
圖7是與圖6的數(shù)據(jù)變換方法對(duì)應(yīng)的處理的流程圖。
圖8是用來(lái)說(shuō)明本發(fā)明的實(shí)施方式中根據(jù)Java源代碼得到與其對(duì)應(yīng)的本地代碼為止的第2數(shù)據(jù)變換方法的圖。
圖9是與圖8的數(shù)據(jù)變換方法對(duì)應(yīng)的處理的流程圖。
具體實(shí)施例方式
下面,參照附圖詳細(xì)說(shuō)明本發(fā)明的實(shí)施方式。
圖1表示應(yīng)用了本發(fā)明的通信系統(tǒng)的概略結(jié)構(gòu)。圖中,作為移動(dòng)體通信終端裝置的實(shí)例,表示了便攜式電話10A及便攜式信息終端(PDA)10B。應(yīng)用了本發(fā)明的移動(dòng)體通信終端裝置并不限于這些,而是適用于從通信網(wǎng)絡(luò)下載中間代碼及進(jìn)行本地編譯的任意同樣的終端裝置。本說(shuō)明書(shū)中,將這些終端裝置統(tǒng)稱為移動(dòng)體通信終端裝置10(以下簡(jiǎn)稱為移動(dòng)體通信終端)。移動(dòng)體通信終端10經(jīng)由基站15連接到便攜式電話網(wǎng)17,進(jìn)一步經(jīng)由網(wǎng)關(guān)(G/W)18連接到因特網(wǎng)19之類的通信網(wǎng)絡(luò)。因特網(wǎng)19中連接了各種網(wǎng)站的服務(wù)器20,移動(dòng)體通信終端10能夠訪問(wèn)服務(wù)器20,由此以中間代碼形式下載Java應(yīng)用程序之類所期望的應(yīng)用程序。
圖2表示移動(dòng)體通信終端10的概略硬件結(jié)構(gòu)實(shí)例。移動(dòng)體通信終端10具備用來(lái)控制終端整體的CPU100。CPU100連接到ROM101、RAM102、閃存103、無(wú)線通信控制部104、液晶顯示器111、觸摸屏112、輸入接口113及聲音控制部117。
ROM101是用來(lái)保存CPU100執(zhí)行的各種程序及固定數(shù)據(jù)的非易失性只讀存儲(chǔ)器。RAM102是用來(lái)提供CPU100的工作區(qū)域及數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域的可寫(xiě)存儲(chǔ)器。閃存103是用來(lái)非易失地存儲(chǔ)追加式應(yīng)用程序或各種數(shù)據(jù)的可重寫(xiě)存儲(chǔ)器。無(wú)線通信控制部104是經(jīng)由天線105與基站15之間進(jìn)行聲音及數(shù)據(jù)的無(wú)線通信(接收發(fā)送)的部件。液晶顯示器111構(gòu)成具有顯示畫(huà)面的顯示部。觸摸屏112通常與顯示畫(huà)面重疊配置,是用來(lái)檢測(cè)棒或手指等在畫(huà)面上的接觸位置的輸入設(shè)備。不過(guò),該觸摸屏在本發(fā)明中不是必需的。輸入接口部113是用來(lái)接收由用戶作出的移動(dòng)體通信終端的操作部的撥號(hào)按鈕114或游標(biāo)鍵115的輸入操作的部位。聲音控制部117連接了話筒118及揚(yáng)聲器119,是用來(lái)控制聲音的輸入輸出的部位。
圖3表示服務(wù)器20的概略硬件結(jié)構(gòu)實(shí)例。服務(wù)器20具有控制該服務(wù)器整體的CPU200。CPU200連接到存儲(chǔ)器201、網(wǎng)絡(luò)接口部202、顯示部204、輸入部205和外部存儲(chǔ)裝置206。存儲(chǔ)器201包含上述ROM、RAM、閃存等。網(wǎng)絡(luò)接口部202是用來(lái)與因特網(wǎng)19之類的通信網(wǎng)絡(luò)進(jìn)行連接的部位。顯示部204是任意的顯示器裝置,輸入部205是鍵盤(pán)等輸入裝置。外部存儲(chǔ)裝置206是硬盤(pán)裝置等大容量存儲(chǔ)裝置。
以下說(shuō)明本系統(tǒng)的工作。在本實(shí)施方式中,作為下載對(duì)象的計(jì)算機(jī)程序是Java應(yīng)用程序的字節(jié)碼(中間代碼)。不過(guò),作為本發(fā)明對(duì)象的應(yīng)用程序并不限于Java,也可以適用于具有同樣的中間代碼的任意計(jì)算機(jī)程序,例如C#等。
Java應(yīng)用程序通常由多個(gè)類構(gòu)成。類是Java的最小執(zhí)行單位,通常包含多個(gè)方法和字段(變量)。方法定義了工作,字段確定數(shù)據(jù)。圖4表示2個(gè)Java應(yīng)用程序的類的源代碼實(shí)例。類A(ClassA)記述了調(diào)用類B(ClassB)的print方法并向其傳遞“Hello”字符串的處理,類B記述了顯示該字符串的處理。因此,將類A的中間代碼進(jìn)行本地編譯時(shí),需要檢查類A所參照的其他類和方法是否存在等。這是為了預(yù)先避免發(fā)生在執(zhí)行編譯后的本地代碼時(shí)該計(jì)算機(jī)程序不可執(zhí)行之類的情況。
因此,在某個(gè)類的中間代碼的本地編譯時(shí),該類參照的類的信息是必要的。這種情況下,該參照對(duì)象類如果已經(jīng)下載則可,但由于在通信結(jié)束前開(kāi)始編譯,因此,該類并不一定已經(jīng)下載。這里需要留意的是,本地編譯所必需的不是整個(gè)該參照對(duì)象類,只要有該類的屬性信息即可。本說(shuō)明書(shū)中稱這樣的屬性信息為外部參照信息。本發(fā)明中,各類的字節(jié)碼的本地編譯時(shí),如后所述,至少需要該類所參照的類的外部參照信息已經(jīng)獲得。
圖5表示關(guān)于圖4的類A、B的外部參照信息的實(shí)例。圖5(a)表示類A展示給外部的信息,圖5(b)表示類B展示給外部的信息。某個(gè)類展示給外部的信息是其他類可以使用的外部參照信息,包含其類名、父類名、方法信息等。方法信息包含該類中包含的各個(gè)方法的方法編號(hào)、方法名、訪問(wèn)限制、參數(shù)信息和返回值信息等。
圖6用來(lái)說(shuō)明本發(fā)明的實(shí)施方式中根據(jù)Java源代碼得到與其對(duì)應(yīng)的本地代碼為止的第1數(shù)據(jù)變換方法。
利用Java編譯器(字節(jié)碼編譯器)根據(jù)Java源代碼獲得其中間代碼即Java字節(jié)碼41的處理與現(xiàn)有技術(shù)相同。在本實(shí)施方式中,在服務(wù)器中根據(jù)該Java字節(jié)碼41生成包含外部參照信息的下載數(shù)據(jù)42a。本說(shuō)明書(shū)中,將該本地編譯預(yù)處理稱為本地預(yù)編譯。該例中的下載數(shù)據(jù)42a以類為單位將該類的本地編譯所需外部參照信息附加為頭部。即,與某個(gè)類對(duì)應(yīng)的字節(jié)碼塊431中附加了關(guān)于該類所參照的類的外部參照信息的集合即頭部421。某個(gè)類展示給外部的信息本身不需要包含在該類的頭部。對(duì)于字節(jié)碼塊432、433也一樣。
不過(guò),由于預(yù)先知道類的發(fā)送順序,因此,當(dāng)在先前下載的類的頭部包含的相同外部參照信息在后面的類中也需要時(shí),可以省略在后面的類中附加外部參照信息。例如,當(dāng)利用移動(dòng)體通信終端下載時(shí),假定從服務(wù)器以字節(jié)碼塊431、432、433的順序進(jìn)行發(fā)送,則在應(yīng)附加到字節(jié)碼塊432的頭部422中,可以省略先前發(fā)送的字節(jié)碼塊431的頭部421中包含的外部參照信息。同樣地,字節(jié)碼塊433中應(yīng)附加的頭部423中,可以省略先前發(fā)送的字節(jié)碼塊431、432的頭部421、422中包含的外部參照信息。依照此種方式,能夠減少頭部的總信息量。對(duì)于完全不參照其他類的類,其字節(jié)碼塊中不需附加頭部。
這種結(jié)構(gòu)的下載數(shù)據(jù)42a在移動(dòng)體通信終端一側(cè)被接收,以Java字節(jié)碼的類單位的塊為單位,按照其接收順序進(jìn)行本地編譯。在某個(gè)類的字節(jié)碼塊接收結(jié)束后,該類的本地編譯所需的信息即全部齊備,因此,可以立即執(zhí)行本地編譯。即,各字節(jié)碼塊431、432、433利用各自的頭部421、422、423中的外部參照信息及先前接收的內(nèi)容進(jìn)行本地編譯,生成本地代碼441、442、443。
另外,在本實(shí)施方式中,以類為單位附加的外部參照信息作為頭部附加到各個(gè)字節(jié)碼塊的開(kāi)頭。這在準(zhǔn)備必要的外部參照信息這一點(diǎn)上是可取的,但并不限定于此。例如,即使附加在各個(gè)字節(jié)碼塊的最后(作為腳注)或分散附加在單位塊內(nèi)部,也可以獲得相應(yīng)效果。
圖7表示與圖6的數(shù)據(jù)變換方法對(duì)應(yīng)的處理流程圖。該處理的前半部分對(duì)應(yīng)于服務(wù)器20的處理,后半部分對(duì)應(yīng)于移動(dòng)體通信終端10的處理。這里,作為典型的實(shí)例,假定基于來(lái)自移動(dòng)體通信終端10對(duì)服務(wù)器中的數(shù)據(jù)庫(kù)中登錄的應(yīng)用程序的下載要求,被指示的應(yīng)用程序的中間代碼從服務(wù)器被發(fā)送到移動(dòng)體通信終端。
首先,服務(wù)器20將發(fā)送對(duì)象的源程序40通過(guò)字節(jié)碼編譯器變換為中間代碼(Java字節(jié)碼)41(S1)。即,執(zhí)行源代碼的符號(hào)化(S11)、其分析(S12)及中間代碼的生成(S13)。服務(wù)器20對(duì)該中間代碼41進(jìn)一步進(jìn)行本地預(yù)編譯(S2)。具體說(shuō)來(lái),以塊(這里是類)為單位收集有關(guān)于其他塊的參照的外部參照信息(S14),將該外部參照信息作為頭部附加到各塊(S15)。依照此種方式準(zhǔn)備上述下載數(shù)據(jù)42a,該下載數(shù)據(jù)42a經(jīng)由通信網(wǎng)絡(luò)以塊為單位依次發(fā)送到移動(dòng)體通信終端。
移動(dòng)體通信終端以塊為單位依次接收下載數(shù)據(jù)42a(S3),暫時(shí)保存到接收高速緩存51中。該接收高速緩存51設(shè)置在例如RAM102(圖2)中。移動(dòng)體通信終端在最初的中間代碼單位塊接收結(jié)束后立即以單位塊43為單位取出接收高速緩存51中的中間代碼,進(jìn)行本地編譯處理(S4)。即,參照必要的外部參照信息的同時(shí)將中間代碼變換為依賴于CPU的本地代碼。更具體地,該本地編譯由其他類參照的合法性檢查(S16)、本地代碼生成(S17)和最優(yōu)化(S18)構(gòu)成。類參照的合法性檢查是基于圖5所示的外部參照信息事先確認(rèn)從某個(gè)類參照其他類時(shí)參照對(duì)象的適當(dāng)信息是否確實(shí)存在、及訪問(wèn)限制是否適當(dāng)?shù)鹊奶幚?。最?yōu)化并不一定執(zhí)行。利用以塊為單位的本地編譯,可得本地代碼塊44。這些本地代碼塊44暫時(shí)保存在代碼高速緩存52(RAM102中)。移動(dòng)體通信終端接著將這些本地代碼塊44鏈接起來(lái),作為執(zhí)行對(duì)象的本地代碼45保存到本地代碼保存部53。本地代碼保存部53可以使用RAM102或閃存103。當(dāng)非易失性地保存本地代碼時(shí)使用后者。依照此種方式得到的本地代碼被加載到執(zhí)行存儲(chǔ)器54(RAM102中)由CPU執(zhí)行。
圖6、圖7中說(shuō)明的第1數(shù)據(jù)變換方法在各個(gè)類的字節(jié)碼塊的本地編譯時(shí),該類必需的外部參照信息作為該塊的頭部已經(jīng)接收到,因此,可以立即執(zhí)行本地編譯。
其次,說(shuō)明在本實(shí)施方式中根據(jù)Java源代碼得到與其對(duì)應(yīng)的本地代碼為止的第2數(shù)據(jù)變換方法。
圖8是用來(lái)說(shuō)明該第2數(shù)據(jù)變換方法的圖。與圖6對(duì)應(yīng)的部分附加相同的參照符號(hào)。與圖6的第1數(shù)據(jù)變換方法的不同點(diǎn)在于,第1數(shù)據(jù)變換方法中以各個(gè)類為單位將類的字節(jié)碼與該類所需的外部參照信息組合為塊(分散配置),但在第2數(shù)據(jù)變換方法中,將整個(gè)類所需的一組外部參照信息整理為一個(gè)外部參照信息文件46(集中起來(lái))。該外部參照信息文件46將各個(gè)類展示給外部的信息(圖5(a)(b))不重復(fù)地整理為一組。外部參照信息文件46在下載時(shí),在從服務(wù)器向移動(dòng)體通信終端進(jìn)行發(fā)送時(shí)先于字節(jié)碼塊最先發(fā)送。在移動(dòng)體通信終端本地編譯時(shí),通過(guò)參照該外部參照信息文件46,可以得到任意一個(gè)類的本地編譯所需的信息。此外,外部參照信息文件46并不一定包含整個(gè)類展示給外部的信息。即,對(duì)于不被其他類參照的類,不需要包含其信息。另外,并不一定采用文件形式,只要在字節(jié)碼中附加實(shí)質(zhì)上與文件中所含的等價(jià)數(shù)據(jù)即可。
圖9表示與圖8的數(shù)據(jù)變換方法對(duì)應(yīng)的處理的流程圖。該處理與圖7的第1處理類似,主要說(shuō)明其不同點(diǎn)。不同點(diǎn)在于,服務(wù)器的本地預(yù)編譯處理S2、及移動(dòng)體通信終端的本地編譯處理S4的內(nèi)容。即,服務(wù)器的本地預(yù)編譯處理S2中,以塊(這里是類)為單位收集與其他類的參照相關(guān)的外部參服信息(S24),整理該外部參照信息生成外部參照信息文件46(S25)。
移動(dòng)體通信終端的本地編譯處理S4中,除了參照外部參照信息文件46進(jìn)行本地編譯處理之外,與圖7中的本地編譯處理S4相同。
圖8、圖9中說(shuō)明的第2數(shù)據(jù)變換方法中,在各個(gè)類的字節(jié)碼塊的本地編譯時(shí),該類必需的外部參照信息通過(guò)最初接收到的外部參照信息文件46而提供,因此,可以立即執(zhí)行本地編譯。
以上針對(duì)本發(fā)明的適當(dāng)實(shí)施方式進(jìn)行了說(shuō)明,但只要不脫離權(quán)利要求的范圍,在上述提到的內(nèi)容之外,也可以進(jìn)行各種變形、改變。
例如,雖然是將單位塊與類對(duì)應(yīng),但也可以采用其他單位塊。
本地編譯是在最初的字節(jié)碼塊接收完成后開(kāi)始的,但也可以在最初的字節(jié)碼塊接收結(jié)束前開(kāi)始。
外部參照信息文件也可以在發(fā)送時(shí)進(jìn)行數(shù)據(jù)壓縮,在接收端解壓后使用。
另外,本發(fā)明在上述說(shuō)明的無(wú)線通信網(wǎng)中會(huì)獲得最顯著的效果,但也能夠廣泛適用于包含有線通信網(wǎng)的通信網(wǎng)中中間代碼的下載。
進(jìn)一步,本發(fā)明并不限于從服務(wù)器向客戶端下載中間代碼,也能夠適用于終端之間的中間代碼的傳送。
利用本發(fā)明,在服務(wù)器通過(guò)本地預(yù)編譯處理生成外部參照信息,將其與中間代碼一起發(fā)送,由此,在移動(dòng)體通信終端裝置一側(cè),在中間代碼的接收完成之前利用外部參照信息開(kāi)始本地編譯,能夠?qū)⒈镜鼐幾g所需時(shí)間包含在中間代碼的下載時(shí)間的全部或一部分之中。即,利用CPU的空余時(shí)間,與應(yīng)用程序的下載并行進(jìn)行向本地代碼的變換,由此,與在應(yīng)用程序啟動(dòng)時(shí)開(kāi)始編譯的情況相比,能夠縮短執(zhí)行等待時(shí)間。
本發(fā)明優(yōu)選適用于通信速度比較低的通信系統(tǒng)。
權(quán)利要求
1.一種本地編譯方法,在移動(dòng)體通信終端裝置中將不依賴于OS的中間代碼變換為本地代碼,其特征在于,具備下述步驟經(jīng)由無(wú)線通信網(wǎng)以塊為單位依次接收附加了外部參照信息的單位塊的中間代碼,上述外部參照信息包括在將各單位塊的中間代碼變換為本地代碼時(shí)該單位塊所參照的其他單位塊的屬性信息;在全部中間代碼接收結(jié)束前,開(kāi)始將已經(jīng)接收的單位塊的中間代碼變換為本地代碼的本地編譯處理;以及在將某個(gè)單位塊的中間代碼變換為本地代碼時(shí),參照與該單位塊相關(guān)的已經(jīng)接收到的外部參照信息,執(zhí)行該單位塊的本地編譯處理。
2.一種本地編譯方法,在移動(dòng)體通信終端裝置中從外部接收不依賴于OS的中間代碼同時(shí)將其變換為本地代碼,其特征在于,具備下述步驟經(jīng)由無(wú)線通信網(wǎng)在接收屬性信息結(jié)合而成的一組外部參照信息之后接著接收多個(gè)單位塊的中間代碼,上述屬性信息是在將各單位塊的中間代碼變換為本地代碼時(shí)該單位塊所參照的其他單位塊的屬性信息;在全部中間代碼接收結(jié)束前,開(kāi)始將已經(jīng)接收的單位塊的中間代碼變換為本地代碼的本地編譯處理;以及在將某個(gè)單位塊的中間代碼變換為本地代碼時(shí),參照與該單位塊相關(guān)的已經(jīng)接收到的外部參照信息,執(zhí)行該單位塊的本地編譯處理。
3.一種本地編譯預(yù)處理方法,是一種在服務(wù)器中經(jīng)由網(wǎng)絡(luò)將不依賴于OS的中間代碼發(fā)送到移動(dòng)體通信終端裝置時(shí)的本地編譯預(yù)處理方法,其特征在于,具備下述步驟將源程序變換為各個(gè)單位塊的中間代碼;將各單位塊的中間代碼變換為本地代碼時(shí)該單位塊所參照的其他單位塊的屬性信息作為外部參照信息收集起來(lái);將收集起來(lái)的外部參照信息附加到該各單位塊中;以及將附加了上述外部參照信息的各單位塊經(jīng)由無(wú)線通信網(wǎng)依次發(fā)送到上述移動(dòng)體通信終端裝置。
4.如權(quán)利要求3所述的本地編譯預(yù)處理方法,其特征在于,當(dāng)某一單位塊中應(yīng)附加的外部參照信息與先前發(fā)送的單位塊中附加的外部參照信息相同時(shí),省略對(duì)后面發(fā)送的單位塊附加該相同外部參照信息。
5.一種本地編譯預(yù)處理方法,是一種在服務(wù)器中經(jīng)由網(wǎng)絡(luò)將不依賴于OS的中間代碼發(fā)送到移動(dòng)體通信終端裝置時(shí)的本地編譯預(yù)處理方法,其特征在于,具備下述步驟將源程序變換為各個(gè)單位塊的中間代碼;將各單位塊的中間代碼變換為本地代碼時(shí)該單位塊所參照的其他單位塊的屬性信息作為外部參照信息收集起來(lái);以及經(jīng)由無(wú)線通信網(wǎng)將多個(gè)單位塊接著收集到的一組外部參照信息依次發(fā)送到上述移動(dòng)體通信終端裝置。
6.一種計(jì)算機(jī)程序,將不依賴于OS的中間代碼變換為本地代碼,其特征在于,具備下述步驟經(jīng)由無(wú)線通信網(wǎng)以塊為單位依次接收附加了外部參照信息的單位塊的中間代碼,上述外部參照信息包括在將各單位塊的中間代碼變換為本地代碼時(shí)該單位塊所參照的其他單位塊的屬性信息;在全部中間代碼接收結(jié)束前,開(kāi)始將已經(jīng)接收的單位塊的中間代碼變換為本地代碼的本地編譯處理;以及在將某個(gè)單位塊的中間代碼變換為本地代碼時(shí),參照與該單位塊相關(guān)的已經(jīng)接收到的外部參照信息,執(zhí)行該單位塊的本地編譯處理。
7.一種計(jì)算機(jī)程序,在移動(dòng)體通信終端裝置中從外部接收不依賴于OS的中間代碼同時(shí)將其變換為本地代碼,其特征在于,具備下述步驟經(jīng)由無(wú)線通信網(wǎng)在接收屬性信息結(jié)合而成的一組外部參照信息之后接著接收多個(gè)單位塊的中間代碼,上述屬性信息是在將各單位塊的中間代碼變換為本地代碼時(shí)該單位塊所參照的其他單位塊的屬性信息;在全部中間代碼接收結(jié)束前,開(kāi)始將已經(jīng)接收的單位塊的中間代碼變換為本地代碼的本地編譯處理;以及在將某個(gè)單位塊的中間代碼變換為本地代碼時(shí),參照與該單位塊相關(guān)的已經(jīng)接收到的外部參照信息,執(zhí)行該單位塊的本地編譯處理。
8.一種服務(wù)器,執(zhí)行在經(jīng)由網(wǎng)絡(luò)將不依賴于OS的中間代碼發(fā)送到移動(dòng)體通信終端裝置時(shí)的本地編譯預(yù)處理,其特征在于,具備下述單元將源程序變換為各單位塊的中間代碼;將各單位塊的中間代碼變換為本地代碼時(shí)該單位塊所參照的其他單位塊的屬性信息作為外部參照信息收集起來(lái);將收集起來(lái)的外部參照信息附加到該各單位塊中;以及將附加了上述外部參照信息的各單位塊經(jīng)由無(wú)線通信網(wǎng)依次發(fā)送到上述移動(dòng)體通信終端裝置。
9.如權(quán)利要求8所述的服務(wù)器,其特征在于,當(dāng)某一單位塊中應(yīng)附加的外部參照信息與先前發(fā)送的單位塊中附加的外部參照信息相同時(shí),省略對(duì)后面發(fā)送的單位塊附加該相同外部參照信息。
10.一種服務(wù)器,執(zhí)行在經(jīng)由網(wǎng)絡(luò)將不依賴于OS的中間代碼發(fā)送到移動(dòng)體通信終端裝置時(shí)的本地編譯預(yù)處理,其特征在于,具備下述單元將源程序變換為各單位塊的中間代碼;將各單位塊的中間代碼變換為本地代碼時(shí)該單位塊所參照的其他單位塊的屬性信息作為外部參照信息收集起來(lái);以及經(jīng)由無(wú)線通信網(wǎng)將多個(gè)單位塊接著收集到的外部參照信息依次發(fā)送到上述移動(dòng)體通信終端裝置。
11.一種通信系統(tǒng),具備服務(wù)器和從該服務(wù)器經(jīng)由通信網(wǎng)絡(luò)接收不依賴于OS的中間代碼的移動(dòng)體通信終端裝置,其特征在于,上述服務(wù)器,將源程序變換為各單位塊的中間代碼,將各單位塊的中間代碼變換為本地代碼時(shí)該單位塊所參照的其他單位塊的屬性信息作為外部參照信息收集起來(lái),將收集起來(lái)的外部參照信息附加到該各單位塊中,將附加了上述外部參照信息的各單位塊經(jīng)由無(wú)線通信網(wǎng)依次發(fā)送到上述移動(dòng)體通信終端裝置,上述移動(dòng)體通信終端裝置,經(jīng)由無(wú)線通信網(wǎng)以塊單位依次接收附加了上述外部參照信息的單位塊的中間代碼,在全部中間代碼接收結(jié)束前,開(kāi)始將已經(jīng)接收的單位塊的中間代碼變換為本地代碼的本地編譯處理,在將某個(gè)單位塊的中間代碼變換為本地代碼時(shí),參照與該單位塊相關(guān)的已經(jīng)接收到的外部參照信息,執(zhí)行該單位塊的本地編譯處理,執(zhí)行由該本地編譯處理所得的本地代碼。
12.一種通信系統(tǒng),具備服務(wù)器和從該服務(wù)器經(jīng)由通信網(wǎng)絡(luò)接收不依賴于OS的中間代碼的移動(dòng)體通信終端裝置,其特征在于,上述服務(wù)器,將源程序變換為各單位塊的中間代碼,將各單位塊的中間代碼變換為本地代碼時(shí)該單位塊所參照的其他單位塊的屬性信息作為外部參照信息收集起來(lái),經(jīng)由無(wú)線通信網(wǎng)將多個(gè)單位塊接著收集到的一組外部參照信息依次發(fā)送到上述移動(dòng)體通信終端裝置,上述移動(dòng)體通信終端裝置,接著上述一組外部參照信息接收上述多個(gè)單位塊的中間代碼,在全部中間代碼接收結(jié)束前,開(kāi)始將已經(jīng)接收的單位塊的中間代碼變換為本地代碼的本地編譯處理,在將某個(gè)單位塊的中間代碼變換為本地代碼時(shí),參照與該單位塊相關(guān)的已經(jīng)接收到的外部參照信息,執(zhí)行該單位塊的本地編譯處理,執(zhí)行由該本地編譯處理所得的本地代碼。
全文摘要
本發(fā)明提供一種通過(guò)與中間代碼的下載處理并行執(zhí)行本地編譯處理來(lái)縮短執(zhí)行等待時(shí)間的方法和系統(tǒng)。服務(wù)器(20)生成將外部參照信息作為頭部附加的下載數(shù)據(jù)(42a),該外部參照信息包括移動(dòng)體通信終端(10)進(jìn)行本地編譯時(shí)需要的各中間代碼的單位塊所參照的其他單位塊的屬性信息。移動(dòng)體通信終端(10)在從服務(wù)器接收完全部中間代碼之前,開(kāi)始已經(jīng)接收的單位塊的本地編譯處理。在某個(gè)單位塊的本地編譯時(shí),參照與該單位塊相關(guān)的已經(jīng)接收到的外部參照信息,執(zhí)行該單位塊的本地編譯處理。服務(wù)器(20)也可以將各個(gè)類的本地編譯所需的外部參照信息作為整理成一組的外部參照信息先于中間代碼的整個(gè)塊之前發(fā)送。
文檔編號(hào)G06F9/45GK1751291SQ20048000455
公開(kāi)日2006年3月22日 申請(qǐng)日期2004年2月17日 優(yōu)先權(quán)日2003年2月18日
發(fā)明者鐮田富久, 鈴木浩之 申請(qǐng)人:株式會(huì)社愛(ài)可信