java Java源程序如何變成Java字節(jié)碼?
Java源程序如何變成Java字節(jié)碼?編譯器默認(rèn)都會將java文件變成字節(jié)碼,讓電腦看的懂手動的話就用cmd javac xxxx.java 編譯Java 為什么要編譯為字節(jié)碼?java是解釋性語言,
Java源程序如何變成Java字節(jié)碼?
編譯器默認(rèn)都會將java文件變成字節(jié)碼,讓電腦看的懂手動的話就用cmd javac xxxx.java 編譯
Java 為什么要編譯為字節(jié)碼?
java是解釋性語言,但是它又和js,python這類純解釋語言不一樣,它需要先編譯再直行。但是和c語言不一樣,java編譯成字節(jié)碼文件,而非本地碼,由于有了編譯這個過程,使得java可以
1 通過編譯直接給出語法級的錯誤,保證最終執(zhí)行的都是正確(語法級別)的代碼
2 通過編譯可以對代碼進(jìn)行一部分的優(yōu)化(比如字符串拼接改為StringBuilder)
3 對代碼進(jìn)行規(guī)整(字節(jié)碼文件內(nèi)部是一套非常規(guī)范的結(jié)構(gòu)化存儲,建議可以看下字節(jié)碼文件的內(nèi)部結(jié)構(gòu)),提升解釋執(zhí)行時的訪問性能
4 可以壓縮大小,字節(jié)碼文件內(nèi)部非常緊湊,沒有注釋空行等運(yùn)行時不需要的東西
5 跨平臺,通過編譯成字節(jié)碼這種中間格式而非機(jī)器碼,使得java可以輕而易舉地跨平臺(一次編譯,隨處執(zhí)行)
6 便于加密,通過使用一些編譯插件可以對其進(jìn)行混淆和加密,而不會像js那樣,直接可以看源碼(字節(jié)碼可以被反編譯,通過混淆以后,可以提升反編譯難度)
7 字節(jié)碼有版本信息,便于jvm運(yùn)行時的校驗(yàn)(比如你用了jdk7的新特性,那么jvm6在加載的時候就可以先做校驗(yàn),避免運(yùn)行中才提示錯誤)