計(jì)算機(jī)高級(jí)語言按程序的執(zhí)行方式可分為:編譯型語言和解釋型語言。
編譯型語言是指使用專門的編譯器、針對(duì)特定的平臺(tái),將源程序編譯成該平臺(tái)可以執(zhí)行的機(jī)器碼(包括機(jī)器指令和操作數(shù)),即目標(biāo)程序,編譯結(jié)束后,可能還需要鏈接其他目標(biāo)程序,最終生成可執(zhí)行性程序,實(shí)現(xiàn)底層次的復(fù)用。編譯生成的可執(zhí)行性程序可以脫離開發(fā)環(huán)境,在特定的平臺(tái)上獨(dú)立運(yùn)行。但是編譯型語言的程序平臺(tái)依賴性強(qiáng),當(dāng)移植到其他平臺(tái)上時(shí)需要重新編譯。這類語言現(xiàn)有C ,C++,FORTRAN,Pascal等。
解釋型語言是指使用專門解釋器對(duì)源程序逐行解釋成特定平臺(tái)上的機(jī)器碼,它將編譯和解釋混合在一起同時(shí)來完成,每次執(zhí)行解釋性語言的程序都要進(jìn)行一次編譯,因此效率比較低,但有個(gè)優(yōu)點(diǎn)就是跨平臺(tái)性好,只有要提供特定平臺(tái)的解釋器,就可解釋成該平臺(tái)上的機(jī)器指令?,F(xiàn)有的Ruby,Python等語言都是解釋性語言。
java是一種特殊的高級(jí)語言, 它既是編譯型語言又是解釋型語言,需要先編譯后解釋。首先由編譯器編譯成與平臺(tái)無關(guān)的字節(jié)碼(也就是.class文件),當(dāng)然,這個(gè)字節(jié)碼時(shí)不可執(zhí)行的,必須用java解釋器來解釋執(zhí)行。java語言里誰來負(fù)責(zé)解釋執(zhí)行字節(jié)碼文件呢——java虛擬機(jī)(JVM),所有平臺(tái)上JVM向編譯器提供接口,編譯成虛擬機(jī)能夠理解字節(jié)碼,然后由虛擬機(jī)來解釋執(zhí)行。
當(dāng)使用Java編譯器編譯java程序時(shí),生成與平臺(tái)無關(guān)的字節(jié)碼,它不需要面向特定平臺(tái),而只面向JVM。不同平臺(tái)的JVM不同,但他們提供了相同的接口。JVM是java跨平臺(tái)的關(guān)鍵部分。
更多信息請(qǐng)查看IT技術(shù)專欄