java先編譯成字節(jié)碼(中間碼),為什么需要這個(gè)中間碼呢?
創(chuàng)新互聯(lián)建站專注于白銀網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供白銀營(yíng)銷型網(wǎng)站建設(shè),白銀網(wǎng)站制作、白銀網(wǎng)頁設(shè)計(jì)、白銀網(wǎng)站官網(wǎng)定制、小程序制作服務(wù),打造白銀網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供白銀網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
如果java直接編譯成系統(tǒng)能識(shí)的二進(jìn)制碼,可能一個(gè)標(biāo)識(shí)在windows下是1100,而linux下是1001,這樣java在windows下編譯后無法在linux運(yùn)行。
所以java先編譯成字節(jié)碼(中間碼),由JVM(java虛擬機(jī)來解釋執(zhí)行),而這個(gè)JVM對(duì)于主流的操作系統(tǒng)都有相應(yīng)的版本,目的就是將 統(tǒng)一的中間碼 編譯成對(duì)應(yīng)操作系統(tǒng)識(shí)的二進(jìn)制碼,然后執(zhí)行。
所以不論你在什么系統(tǒng)中編譯的java,得到的都是統(tǒng)一的字節(jié)碼(中間碼)
在windows中需要有windows版本的JVM來執(zhí)行,要是到了linux下,只要下載linux版本的JVM來執(zhí)行就可以了
這就是java的跨平臺(tái),可移植性
因?yàn)閖ava有一個(gè)JVM(Java Virtual Machine)java虛擬機(jī),源程序*.java被編譯成字節(jié)碼文件,字節(jié)碼是與平臺(tái)無關(guān)的,是面向jvm編寫的,而jvm又有自己的一套指令系統(tǒng),在不同的平臺(tái)上jvm的指令也是不一樣的,也就是說不同操作平臺(tái)有自己的jvm但是jvm向上的字節(jié)碼接口是與平臺(tái)無關(guān)的,jvm接口向下是與硬件有關(guān)的,jvm是個(gè)中間件,這樣只要有字節(jié)碼和jvm,不管在任何平臺(tái)都可以運(yùn)行java程序。全靠的是jvm虛擬機(jī)
希望對(duì)你能有所幫助。
java用編譯器編譯成字節(jié)碼,字節(jié)碼用解釋器運(yùn)行,同一字節(jié)碼可以在不同的操作系統(tǒng)下被不同的解釋器運(yùn)行,從而實(shí)現(xiàn)Java的跨平臺(tái)性也就可移植性.因?yàn)樽止?jié)碼,即class文件是按規(guī)定標(biāo)準(zhǔn)排列的二進(jìn)制文件,所以不同操作系統(tǒng)的java編譯器都會(huì)編譯出一致的字節(jié)碼文件