JAVA的核心機制有兩個:跨平臺機制(JAVA虛擬機),垃圾回收機制 跨平臺機制實現(xiàn)了:一次編譯,,到處運行 ?。ㄅcC語言的跨平臺區(qū)別在于:C語言是多次編譯多次運行, 而這里所指的跨平臺是指編譯后的文件跨平臺) 垃圾回收機制實現(xiàn)了:自動回收內(nèi)存,,即無需程序員手動內(nèi)存回收,,避免忘記回收,造成內(nèi)存泄漏 JAVA跨平臺原理 在JAVA中,,執(zhí)行一段寫好的代碼會經(jīng)過編譯和解釋兩個過程:
①編譯:通過編譯器將.java文件(源文件)編譯成.class字節(jié)碼文件(二進制文件), 編譯器即javac.exe,,實際上也是運行其背后的代碼 ②解釋(執(zhí)行):通過解釋器將.class文件轉(zhuǎn)換為對應操作系統(tǒng)可以識別的執(zhí)行文件格式,, 即當前平臺認識的機器碼然后執(zhí)行,,解釋器即java.exe。 注:表面上調(diào)用的是java.exe命令,,實際上起作用的是虛擬機,。 底層動態(tài)調(diào)用虛擬機(JVM程序), JVM再將.class字節(jié)碼文件解釋為當前平臺認識的機器碼并執(zhí)行,。 虛擬機和解釋器的關系:解釋器是虛擬機的一個重要的組成部分,。 通過不同的JVM,JAVA代碼實現(xiàn)了在不同操作系統(tǒng)上的運行,,即跨平臺機制,。 JAVA的跨平臺是:一次編譯,到處運行,。 C語言的跨平臺原理則是,,直接編譯執(zhí)行為當前操作系統(tǒng)的機器碼,這樣也實現(xiàn)了不同操作系統(tǒng)上運行的效果,。 即C語言源文件是跨平臺的,,但其編譯后的文件無法跨平臺使用,顯而易見,,因為C語言是多次編譯多次運行,。 因此,如果跨平臺單指編譯后的文件跨平臺,,那么JAVA是跨平臺語言,,而C語言不算。 如下圖所示: 來源:https://www./content-1-634251.html |
|