字節(jié)碼:Java源代碼經(jīng)過虛擬機編譯器編譯后產(chǎn)生的文件(即擴展為.class的文件)扯旷,它不面向任何特定的處理器套么,只面向虛擬機培己。
采用字節(jié)碼的好處:Java語言通過字節(jié)碼的方式,在一定程度上解決了傳統(tǒng)解釋型語言執(zhí)行效率低的問題胚泌,同時又保留了解釋型語言可移植的特點漱凝。所以Java程序運行時比較高效,而且诸迟,由于字節(jié)碼并不專對一種特定的機器茸炒,因此,Java程序無須重新編譯便可在多種不同的計算機上運行阵苇。
先看下java中的編譯器和解釋器:Java中引入了虛擬機的概念壁公,即在機器和編譯程序之間加入了一層抽象的虛擬機器。這臺虛擬的機器在任何平臺上都提供給編譯程序一個的共同的接口绅项。編譯程序只需要面向虛擬機紊册,生成虛擬機能夠理解的代碼,然后由解釋器來將虛擬機代碼轉換為特定系統(tǒng)的機器碼執(zhí)行快耿。在Java中囊陡,這種供虛擬機理解的代碼叫做字節(jié)碼(即擴展為.class的文件),它不面向任何特定的處理器掀亥,只面向虛擬機撞反。每一種平臺的解釋器是不同的,但是實現(xiàn)的虛擬機是相同的搪花。Java源程序經(jīng)過編譯器編譯后變成字節(jié)碼遏片,字節(jié)碼由虛擬機解釋執(zhí)行嘹害,虛擬機將每一條要執(zhí)行的字節(jié)碼送給解釋器,解釋器將其翻譯成特定機器上的機器碼吮便,然后在特定的機器上運行笔呀,這就是上面提到的Java的特點的編譯與解釋并存的解釋。
Java源代碼---->編譯器---->jvm可執(zhí)行的Java字節(jié)碼(即虛擬指令)---->jvm---->jvm中解釋器----->機器可執(zhí)行的二進制機器碼---->程序運行髓需。