專利名稱:一種Java電腦程序語言的預先解譯與執(zhí)行方法
技術領域:
本發(fā)明是為一種“Java”電腦程序語言的預先解譯與執(zhí)行方法,尤指應用于連接到一網(wǎng)路上的一嵌入式設備作業(yè)系統(tǒng)中“Java”電腦程序語言的預先解譯與執(zhí)行方法。
隨著網(wǎng)際網(wǎng)路使用的逐漸普及,由美國升陽電腦公司針對網(wǎng)際網(wǎng)路的應用所發(fā)展出來的“Java”電腦程序語言亦逐漸受到重視,因為其具有“跨平臺”的能力,故以其所完成的程序可在任何形態(tài)的電腦環(huán)境下執(zhí)行,使得網(wǎng)路使用者可從網(wǎng)路伺服端下載至使用者的電腦執(zhí)行上,減輕網(wǎng)路伺服端的工作負擔。
由于“Java”電腦程序語言需其有跨平臺的能力方能于網(wǎng)路上流傳,因此在設計上,“Java”電腦程序語言經(jīng)編譯器編譯后所得的執(zhí)行碼是以比特碼(bytecode)為基本單位所組成,而比特碼(bytecode)即相當于Java虛擬機器(Virtual Machine)的“機器語言”,然后采用逐步解譯(Interpret)方式為其程序的執(zhí)行方法。傳統(tǒng)且最常用的方式是為待整個程序以比特碼(bytecode)形式由網(wǎng)路伺服端下載至用戶端后,再于每次執(zhí)行時對其以比特碼(bytecode)所組成的程序碼重新解譯一次,包括將程序中所包含的運算元重新作轉換(由網(wǎng)路格式轉換成機器格式)。如此一來將造成程序執(zhí)行效率不佳,但其優(yōu)點為所占存儲器空間較小。
為改善上述方法所造成程序執(zhí)行效果不佳的缺失,而隨后發(fā)展出的及時編譯(Just-In-Tine Compile,簡稱JIT)法是于整個“Java”電腦程序語言以比特碼(bytecode)形式由網(wǎng)路伺服端下載至用戶端之際,利用下載傳輸速度較慢的等待時間,將所接收到的比特碼立刻編譯轉換成原生碼(Native Code)儲存下來,待整個程序下載完畢欲執(zhí)行時,便可直接執(zhí)行已編譯轉換完成的原生碼,因此有極佳的執(zhí)行效率,但此方法在用戶端需具備有及時編譯器,且編譯轉換完成的原生碼(Native Code)所占的存儲器空間較原始的比特碼(bytecode)為大,故其缺點是為用戶端硬件設備的要求較高,不利硬件設備及存儲器皆有限的嵌入式設備(如具網(wǎng)路瀏覽功能的電視機、電話機、電子字典、掌上型電子數(shù)字助理等)來進行應用。
而如何解決上述種種習用技術手段的缺失,以提供一適用嵌入式設備的硬件限制且執(zhí)行效能較傳統(tǒng)逐步解譯方式為佳的技術手段,是為發(fā)展本發(fā)明的一主要目的。
即,本發(fā)明的目的在于提供一種Java電腦程序語言的預先解譯與執(zhí)行方法,其可提供一適用嵌入式設備的硬件限制且執(zhí)行效能較傳統(tǒng)逐步解譯方式為佳的技術手段。
本發(fā)明是為一種“Java”電腦程序語言的預先解譯與執(zhí)行方法,其是應用于連接到一網(wǎng)路上的一嵌入式設備作業(yè)系統(tǒng)中“Java”電腦程序語言的執(zhí)行上,其方法包含下列步驟(a)于該嵌入式設備中建立一個由比特碼(bytecode)執(zhí)行碼對照至其相對應副程序進入點的指標(pointer)對照表;(b)于該嵌入式設備自該網(wǎng)路下載的一Java程序之時,依序將所接收到的每一比特碼(bytecode)執(zhí)行碼根據(jù)該指標對照表轉成其所相對應的副程序進入點的指標資料,以及將運算元由網(wǎng)路格式轉換成機器格式并經(jīng)一維持其相對定址的正確性的調整步驟后,皆依序儲存于該嵌入式設備中;以及(c)依序讀取代表相對應副程序的指標資料與機器格式的運算元予以執(zhí)行,用以完成該Java程序于該嵌入式設備作業(yè)系統(tǒng)中的執(zhí)行。
根據(jù)上述構想,本發(fā)明所提的“Java”電腦程序語言的預先解譯與執(zhí)行方法,其中該維持其相對定址的正確性的調整步驟是為運算元由網(wǎng)路格式轉換成機器格式之后所遺留的空缺,是以NOP副程序來補足比特組數(shù),以維持程序經(jīng)轉換后相對定址的正確性。
根據(jù)上述構想,本發(fā)明所提的“Java”電腦捏式語言的預先解譯與執(zhí)行方法,其步驟(c)依序讀取代表相對應副程序的指標資料與機器格式的運算元予以執(zhí)行中,是根據(jù)所讀取到的指標資料做為程序執(zhí)行時的一指令指標(Instruction Pointer)來指向所呼叫的副程序,而直接跳入該指令指標所代表的副程序進入點。而在讀取運算元時,先將該指令指標向后移動一個存儲單位,再以該指令指標取出運算元。另外,是于執(zhí)行下一個指令時,是先將變數(shù)(IP)向后移動一個存儲單位,再進行根據(jù)所讀取到的指標資料而直接跳入該指令指標所代表指向的副程序進入點。
為加快傳統(tǒng)逐步解譯(Interpret)方式的執(zhí)行速度,且省去及時編譯(Just-In-Time Compile,簡稱JIT)方式中用戶端所需的硬件設備要求,以求適用于硬件設備及存儲器皆有限制的嵌入式設備(如具網(wǎng)路瀏覽功能的電視機、電話機、電子字典、掌上型電子數(shù)字助理等),而本發(fā)明所揭露的“預先解譯方法”的較佳實施例乃以下列步驟進行(a)于該嵌入式設備中建立一個由比特碼(bytecode)執(zhí)行碼對照至其相對應副程序進入點的指標(pointer)對照表;例如0×00對應至mop()0×01對應至aconst_null()......
0×2e對應至iaload()…等,并將此指標對照表儲存于其存儲器中。
(b)于該嵌入式設備自該網(wǎng)路下載的一Java程序之時,即刻將接收到的每一比特碼(bytecode)執(zhí)行碼根據(jù)該指標對照表的對應,預先轉成其所相對應的副程序進入點的指標資料,并將運算元由網(wǎng)路格式轉換成機器格式,然后將轉換所得依序儲存下來。然而為了維持網(wǎng)路格式轉換成機器格式后程序相對定址的正確性,需將運算元由網(wǎng)路格式轉換成機器格式之后所遺留的空缺,是以NOP副程序來補足比特組數(shù),例如若將兩個以上運算元合并成一個運算元時,其后必須以NOP補足個數(shù),以維持相對定址的正確性。
(c)依序讀取代表相對應副程序的指標資料與機器格式的運算元予以執(zhí)行。然執(zhí)行時是根據(jù)所讀取到的指標資料做為程序執(zhí)行時的一指令指標(Instruction Pointer)來指向所呼叫的副程序,而直接跳入該指令指標所代表的副程序進入點。而在讀取運算元時,先將該指令指標向后移動一個存儲單位,再以該指令指標取出運算元。另外,當欲執(zhí)行下一個指令時,是先將變數(shù)(IP)向后移動一個存儲單位,再進行根據(jù)所讀取到的指標資料而直接跳入該指令指標所代表指向的副程序進入點。
而以本發(fā)明所完成的預先解譯Java虛擬機器(Virtual Machine)執(zhí)行器,是具有下列技術特征1.所采用預先解譯的方式,執(zhí)行效能已接近原生碼,但用戶端的硬件要求沒有及時編譯器的負擔。
2.解譯結果所占存儲器空間是為有限度地放大(16比特機器占用原來比特碼(bytecode)大小的兩倍,32比特機器則占用原來比特碼(bytecode)大小的四倍),可預估并較及時編譯(Just-In-Tine Compile,簡稱JIT)方式節(jié)省存儲器的使用量。
3.運算元由網(wǎng)路格式轉換成機器格式后所遺留的空缺以NOP補足,可簡化分支(branch)命令的復雜度。
綜上所述,本發(fā)明確可解決習用技術手段的缺失,提供一適用嵌入式設備的硬件限制且執(zhí)行效能較傳統(tǒng)逐步解譯方式為佳的技術手段,達成發(fā)展本發(fā)明的主要目的,創(chuàng)作本發(fā)明得由熟習此技藝的人士所作的任何修飾,然皆不脫如附申請專利范圍所欲保護的內容。
權利要求
1.一種Java電腦程序語言的預先解譯與執(zhí)行方法,其是應用于連接到一網(wǎng)路上的一嵌入式設備作業(yè)系統(tǒng)中Java電腦程序語言的執(zhí)行上,其特征在于,其方法包含下列步驟(a)于該嵌入式設備中建立一個由比特碼執(zhí)行碼對照至其相對應副程序進入點的指標對照表;(b)于該嵌入式設備自該網(wǎng)路下載的一Java程序之時,依序將所接收到的每一比特碼執(zhí)行碼根據(jù)該指標對照表轉成其所相對應的副程序進入點的指標資料,以及將運算元由網(wǎng)路格式轉換成機器格式并經(jīng)一維持其相對定址的正確性的調整步驟后,皆依序儲存于該嵌入式設備中;以及(c)依序讀取代表相對應副程序的指標資料與機器格式的運算元予以執(zhí)行,用以完成該Java程序于該嵌入式設備作業(yè)系統(tǒng)中的執(zhí)行。
2.根據(jù)權利要求1所述的Java電腦程序語言的預先解譯與執(zhí)行方法,其特征在于,其中該維持相對定址的正確性的調整步驟是為運算元由網(wǎng)路格式轉換成機器格式之后所遺留的空缺,是以NOP副程序來補足比特組數(shù),以維持程序經(jīng)轉換后相對定址的正確性。
3.根據(jù)權利要求1所述的Java電腦程序語言的預先解譯與執(zhí)行方法,其特征在于,其步驟(c)依序讀取代表相對應副程序的指標資料與機器格式的運算元予以執(zhí)行中,是根據(jù)所讀取到的指標資料做為程序執(zhí)行時的一指令指標來指向所呼叫的副程序,而直接跳入該指令指標所代表的副程序進入點。
4.根據(jù)權利要求3所述的Java電腦程序語言的預先解譯與執(zhí)行方法,其特征在于,其步驟(c)依序讀取代表相對應副程序的指標資料與機器格式的運算元予以執(zhí)行中,是于讀取運算元時,先將該指令指標向后移動一個存儲單位,再以該指令指標取出運算元。
5.根據(jù)權利要求3所述的Java電腦程序語言的預先解譯與執(zhí)行方法,其特征在于,其步驟(c)依序讀取代表相對應副程序的指標資料與機器格式的運算元予以執(zhí)行中,是于執(zhí)行下一個指令時,是先將變數(shù)向后移動一個存儲單位,再進行根據(jù)所讀取到的指標資料而直接跳入該指令指標所代表指向的副程序進入點。
6.一種跨平臺功能的電腦程序語言的預先解譯與執(zhí)行方法,其是應用于連接到一網(wǎng)路上的一嵌入式設備作業(yè)系統(tǒng)中該具跨平臺功能的電腦程序語言的執(zhí)行上,其特征在于,其方法包含下列步驟(a)于該嵌入式設備中建立一個由比特碼執(zhí)行碼對照至其相對應副程序進入點的指標對照表;(b)于該嵌入式設備自該網(wǎng)路下載的一具跨平臺功能的電腦程序碼時,依序將所接收到的每一比特碼執(zhí)行碼根據(jù)該指標對照表轉成其所相對應的副程序進入點的指標資料,以及將運算元由網(wǎng)路格式轉換成機器格式并經(jīng)一維持其相對定址的正確性的調整步驟后,皆依序儲存于該嵌入式設備中;以及(c)依序讀取代表相對應副程序的指標資料與機器格式的運算元予以執(zhí)行,用以完成該具跨平臺功能的電腦程序于該嵌入式設備作業(yè)系統(tǒng)中的執(zhí)行。
7.根據(jù)權利要求6所述的具跨平臺功能的電腦程序語言的預先解譯與執(zhí)行方法,其特征在于,其中該跨平臺功能的電腦程序語言是為一Java電腦程序語言。
8.根據(jù)權利要求7所述的具跨平臺功能的電腦程序語言的預先解譯與執(zhí)行方法,其特征在于,其中該維持相對定址的正確性的調整步驟是為運算元由網(wǎng)路格式轉換成機器格式之后所遺留的空缺,是以NOP副程序來補足比特組數(shù),以維持程序經(jīng)轉換后相對定址的正確性。
9.根據(jù)權利要求7所述的具跨平臺功能的電腦程序語言的預先解譯與執(zhí)行方法,其特征在于,其步驟(c)依序讀取代表相對應副程序的指標資料與機器格式的運算元予以執(zhí)行中,是根據(jù)所讀取到的指標資料做為程序執(zhí)行時的一指令指標來指向所呼叫的副程序,而直接跳入該指令指標所代表的副程序進入點。
10.根據(jù)權利要求9所述的具跨平臺功能的電腦程序語言的預先解譯與執(zhí)行方法,其特征在于,其步驟(c)依序讀取代表相對應副程序的指標資料與機器格式的運算元予以執(zhí)行中,是于讀取運算元時,先將該指令指標向后移動一個存儲單位,再以該指令指標取出運算元。
11.根據(jù)權利要求9所述的具跨平臺功能的電腦程序語言的預先解譯與執(zhí)行方法,其特征在于,其步驟(c)依序讀取代表相對應副程序的指標資料與機器格式的運算元予以執(zhí)行中,是于執(zhí)行下一個指令時,是先將變數(shù)向后移動一個存儲單位,再進行根據(jù)所讀取到的指標資料而直接跳入該指令指標所代表指向的副程序進入點。
全文摘要
一種Java電腦程序語言的預先解譯與執(zhí)行方法,包含下列步驟:(a)于嵌入式設備中建立一個由比特碼執(zhí)行碼對照至其相對應副程序進入點的指標對照表;(b)于嵌入式設備自網(wǎng)路下載的一Java程序時,依序將所接收到的每一比特碼執(zhí)行碼根據(jù)指標對照表轉成其所相對應的副程序進入點的指標資料;以及(c)依序讀取代表相對應副程序的指標資料與機器格式的運算元予以執(zhí)行,用以完成Java程序于嵌入式設備作業(yè)系統(tǒng)中的執(zhí)行。
文檔編號G10L19/00GK1365099SQ0110041
公開日2002年8月21日 申請日期2001年1月10日 優(yōu)先權日2001年1月10日
發(fā)明者周旺暾 申請人:財團法人資訊工業(yè)策進會