qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

          Java程序運(yùn)行機(jī)制

          計(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)鍵部分。

          posted on 2014-09-01 10:40 順其自然EVO 閱讀(163) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2014年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 营山县| 婺源县| 厦门市| 青海省| 信丰县| 六安市| 四子王旗| 贵德县| 上思县| 扎赉特旗| 奉新县| 临夏市| 宣武区| 山东省| 蓝山县| 永川市| 北辰区| 泰来县| 特克斯县| 湟源县| 金乡县| 桐城市| 麻阳| 昭苏县| 紫金县| 蒙城县| 普洱| 长汀县| 家居| 乌海市| 曲阳县| 巴青县| 漳州市| 兰考县| 喀喇| 万全县| 明水县| 女性| 电白县| 保靖县| 太白县|