教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

什么是字節(jié)碼?字節(jié)碼擴(kuò)展名是什么?

更新時(shí)間:2020年11月04日15時(shí)01分 來(lái)源:傳智播客 瀏覽次數(shù):

字節(jié)碼產(chǎn)生的背景

Java最初誕生的目的就是為了在不依賴于特定的物理硬件和操作系統(tǒng)環(huán)境下運(yùn)行,那么也就是說(shuō)Java程序?qū)崿F(xiàn)跨平臺(tái)特性的基石其實(shí)就是字節(jié)碼。Java之所以能夠解決程序的安全性問(wèn)題、跨平臺(tái)移植性等問(wèn)題,最主要的原因就是Java源代碼的編譯結(jié)果并非是本地機(jī)器指令,而是字節(jié)碼。當(dāng)Java源代碼成功編譯成字節(jié)碼后,如果想在不同的平臺(tái)上面運(yùn)行,則無(wú)須再次編譯,也就是說(shuō)Java源碼只需一次編譯就可處處運(yùn)行,這就是“Write Once,Run Anywhere”的思想。所以注定了Java程序在任何物理硬件和操作系統(tǒng)環(huán)境下都能夠順利運(yùn)行,只要對(duì)應(yīng)的平臺(tái)裝有特定的Java運(yùn)行環(huán)境,Java程序都可以運(yùn)行,雖然各個(gè)平臺(tái)的Java虛擬機(jī)內(nèi)部實(shí)現(xiàn)細(xì)節(jié)不盡相同,但是它們共同執(zhí)行的字節(jié)碼內(nèi)容卻是一樣的。

字節(jié)碼


什么是字節(jié)碼?字節(jié)碼擴(kuò)展名是什么?

那么什么是字節(jié)碼(ByteCode)呢?參考《Java虛擬機(jī)規(guī)范Java SE7版》的描述來(lái)看,任何編程語(yǔ)言的編譯結(jié)果滿足并包含Java虛擬機(jī)的內(nèi)部指令集、符號(hào)表以及一些其他輔助信息,它就是一個(gè)有效的字節(jié)碼文件,就能夠被虛擬機(jī)所識(shí)別并裝載運(yùn)行。在大部分情況下,字節(jié)碼更多是存儲(chǔ)在本地磁盤文件中,比如后綴名為“.class”的文件。每一個(gè)字節(jié)碼文件都對(duì)應(yīng)著全局唯一的一個(gè)類或者接口的定義信息,但這也并非絕對(duì),類和接口并不一定都只能存儲(chǔ)在文件里,它還可以通過(guò)類裝載器直接在運(yùn)行時(shí)生成。

字節(jié)碼的結(jié)構(gòu)

字節(jié)碼結(jié)構(gòu)組成比較特殊,其內(nèi)部并不包含任何的分隔符區(qū)分段落,所以無(wú)論是字節(jié)順序、數(shù)量都是有嚴(yán)格規(guī)定的,所有16位、32位、64位長(zhǎng)度的數(shù)據(jù)都將構(gòu)造成2個(gè)、4個(gè)和8個(gè)8位字節(jié)單位來(lái)表示,多字節(jié)數(shù)據(jù)項(xiàng)總是按照big-endian順序(高位字節(jié)在地址最低位,低位字節(jié)在地址最高位)來(lái)進(jìn)行存儲(chǔ)。也就是說(shuō),一組8位字節(jié)單位的字節(jié)流組成了一個(gè)完整的字節(jié)碼文件。


猜你喜歡:

字節(jié)碼基礎(chǔ)指令操作教程 

零基礎(chǔ)Java基礎(chǔ)教程

Java安裝教程與Java環(huán)境變量設(shè)置 

0 分享到:
和我們?cè)诰€交談!