1、Java編譯過程與c/c++編譯過程不同
c/c++編譯過程:
當C編譯器編譯生成一個對象的代碼時,該代碼是爲在某一特定硬件平臺運行而生成的。因此在編譯過程中,編譯程序通過查表將所有對符號的引用轉換爲特定的內存偏移量,以保證程序運行。
Java編譯過程:
Java編譯器卻不將對變量和方法的引用編譯爲數值引用,也不確定程序執行過程中的內存佈局,而是將些符號引用信息保留在字節碼中,由解釋器在運行過程中創立內存佈局,然後再通過查表來確定一個方法所在的地址,這樣就有效地保證了java的可移植性和安全性。
2、區別總結:
1. Java的編譯只會生成字節碼文件,而不會生成彙編(更不會到機器語言)。Java程序運行時,字節碼文件會裝載入java虛擬機,虛擬機實時將字節碼“翻譯”成機器指令來運行。java在不同平臺上實現虛擬機,針對虛擬機編譯就可以實現代碼可移植性。
2. C語言代碼編譯成的是機器碼,通常不能在不同指令系統的機器上運行。c代碼的編譯一般是直接針對硬件的