這篇寫得比較好僵控,而且條例很清晰
點(diǎn)擊這里可以查看
摘要整理:
1.C/C++ 等都是編譯型語言,而Java鱼冀,C#等都是解釋型語言
报破。
2.編譯型語言在程序執(zhí)行之前,有一個單獨(dú)的編譯過程千绪,將程序翻譯成機(jī)器語言充易,以后執(zhí)行這個程序的時候,就不用再進(jìn)行翻譯了荸型。
所以編譯型語言快盹靴,但是缺點(diǎn)是跟平臺關(guān)聯(lián)性強(qiáng)。
3.雖然Java程序在運(yùn)行之前也有一個編譯過程帆疟,但是并不是將程序編譯成機(jī)器語言鹉究,而是將它編譯成字節(jié)碼(可以理解為一個中間語言)。
在運(yùn)行的時候踪宠,由JVM將字節(jié)碼再翻譯成機(jī)器語言
解釋性語言相比之下多了一個“字節(jié)碼”的間接環(huán)節(jié),所以慢點(diǎn)妈嘹,但好處是跨平臺性強(qiáng)柳琢。
4.腳本語言是一種解釋性的語言,例如vbscript,javascript,installshield script,ActionScript等等,它不象c\c++等可以編譯成二進(jìn)制代碼,以可執(zhí)行文件(文本形式存在,類似于一種命令)的形式存在.
腳本語言不需要編譯,可以直接用润脸,由解釋器來負(fù)責(zé)解釋柬脸。
疑問:腳本如果也是一種解釋性的語言,又不需要編譯毙驯,那么倒堕,是否可以猜測,其就是一個“字節(jié)碼”的可執(zhí)行文件爆价,只需要解釋器將其轉(zhuǎn)化為機(jī)器語言即可垦巴?哎媳搪,這么說來,腳本語言不僅快骤宣,而且跨平臺能力又強(qiáng)咯秦爆?
ps:
名詞解釋:
1.JVM
JVM是Java Virtual Machine(Java虛擬機(jī))的縮寫,JVM是一種用于計算設(shè)備的規(guī)范憔披,它是一個虛構(gòu)出來的計算機(jī)等限,是通過在實(shí)際的計算機(jī)上仿真模擬各種計算機(jī)功能來實(shí)現(xiàn)的。
Java語言的一個非常重要的特點(diǎn)就是與平臺的無關(guān)性芬膝。而使用Java虛擬機(jī)是實(shí)現(xiàn)這一特點(diǎn)的關(guān)鍵望门。一般的高級語言如果要在不同的平臺上運(yùn)行,至少需要編譯成不同的目標(biāo)代碼锰霜。而引入Java語言虛擬機(jī)后筹误,Java語言在不同平臺上運(yùn)行時不需要重新編譯。Java語言使用Java虛擬機(jī)屏蔽了與具體平臺相關(guān)的信息锈遥,使得Java語言編譯程序只需生成在Java虛擬機(jī)上運(yùn)行的目標(biāo)代碼(字節(jié)碼)纫事,就可以在多種平臺上不加修改地運(yùn)行。Java虛擬機(jī)在執(zhí)行字節(jié)碼時所灸,把字節(jié)碼解釋成具體平臺上的機(jī)器指令執(zhí)行丽惶。這就是Java的能夠“一次編譯,到處運(yùn)行”的原因爬立。