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

全國咨詢/投訴熱線:400-618-4000

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

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

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

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

字節(jié)碼


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

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

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

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


猜你喜歡:

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

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

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

0 分享到:
和我們在線交談!