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