運行編譯器和解釋器
Java中引入了虛擬機的概念,即在機器和編譯程序之間加入了一層抽象的虛擬的機器。這台虛擬的機器在任何平台上都提供給編譯程序一個的共同的介面。編譯程序只需要面向虛擬機,生成虛擬機能夠理解的代碼,然後由解釋器來將虛擬機代碼轉換為特定系統的機器碼執行。在Java中,這種供虛擬機理解的代碼叫做位元組碼(ByteCode),它不面向任何特定的處理器,只面向虛擬機。每一種平台的解釋器是不同的,但是實現的虛擬機是相同的。Java源程序經過編譯器編譯後變成位元組碼,位元組碼由虛擬機解釋執行,虛擬機將每一條要執行的位元組碼送給解釋器,解釋器將其翻譯成特定機器上的機器碼,然後在特定的機器上運行。
『貳』 編譯執行和解釋執行有什麼區別
編譯執行就像你買的《C Primer》中文版,譯者全部翻譯完(編寫代碼),拿到出版社去(編譯器),編輯們校對沒有發現錯別字(編譯),然後出版給你看,只要出版社(編譯器)工作正常,那麼就可以認為書的內容肯定沒有錯(可以正確執行);
解釋執行就像你去聽報告,老外一邊講(代碼),同聲傳譯(解釋器)一邊翻給你聽(解釋執行),如果哪一句老外講錯了(代碼出錯),同聲傳譯才卡殼,但是前面已經翻譯出去的,肯定是沒啥問題(部分正常執行了);
這么說你理解了沒有?編譯執行效率高,但靈活性差(任何修改都要重編譯),代碼保密性好;解釋執行效率低一點(這是以前的說法,現代解釋器的效率也可以非常高),靈活性好,代碼保密性差;
還有一種介於兩者之間的執行方式,半編譯執行,像大名鼎鼎的Java和C#等等,就是這種方式,是實現跨平台的優良解決方案。
『叄』 編譯器和解釋器的主要區別是什麼他們相對於對方各自的優點
解釋器
是
解釋執行
的源代碼,
編譯器
是將源代碼編譯成
目標代碼
他們最大的區別是程序運行時需要解釋器邊解釋邊執行,而編譯器則在運行時是完全不需要的
解釋器的優點是比較容易讓用戶實現自己跨平台的代碼,比如java,php等,同一套代碼可以在
幾乎所有的
操作系統上執行,而無需根據操作系統做修改;
編譯器的目的就是生成目標代碼再由連接器生成可執行的
機器碼
,這樣的話需要根據不同的操作系統編制代碼,雖然有像Qt這樣的源代碼級跨平台的編程工具庫,但在不同的平台上仍然需要重新編譯連接成可執行文件,但其執行效率要遠遠高於解釋運行的程序。
編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機可以直接以機器語言來運行此程序,速度很快;
而解釋器則是只在執行程序時,才一條一條的解釋成機器語言給計算機來執行,所以運行速度是不如編譯後的程序運行的快的.
這是因為計算機不能直接認識並執行我們寫的語句,它只能認識機器語言(是二進制的形式)
『肆』 璁$畻鏈虹▼搴忕殑瑙i噴鍜岀紪璇戞柟寮
璁$畻鏈虹▼搴忔槸濡備綍榪愪綔鐨勫憿錛熻В閲婃柟寮忓拰緙栬瘧鏂瑰紡澶т笉鍚岋紒鏈鏂囧皢娣卞叆鎺㈣ㄨ$畻鏈虹▼搴忕殑瑙i噴鍜岀紪璇戞柟寮忥紝甯鍔╄昏呮洿濂藉湴浜嗚В榪欎袱縐嶆柟寮忕殑鏍規湰鍖哄埆銆
🔍瑙i噴鏂瑰紡
瑙i噴鏂瑰紡鏄閫愬彞鎵鎻忋侀愬彞緲昏瘧錛岀劧鍚庨愬彞鎵ц屻傝繖鎰忓懗鐫錛屽綋婧愮▼搴忓嚭鐜板驚鐜鏃訛紝瑙i噴紼嬪簭浼氶噸澶嶇炕璇戝拰鎵ц岃繖涓緇勮鍙ワ紝鏁堢巼澶уぇ闄嶄綆銆
🚀緙栬瘧鏂瑰紡
緙栬瘧鏂瑰紡鍒欐槸鍏堝皢婧愮▼搴忕炕璇戞垚鐩鏍囪璦紼嬪簭錛岀劧鍚庡啀榪愯屻傝繖涓嶄粎澶уぇ鎻愰珮浜嗘墽琛岄熷害錛岃繕閬垮厤浜嗛噸澶嶇炕璇戝拰鎵ц岀殑嫻璐廣
🎯鏍規湰鍖哄埆
鍒ゆ柇鏄瑙i噴鍣ㄨ繕鏄緙栬瘧鍣錛屽叧閿鐪嬫槸鍚︽湁鐙絝嬬殑鐩鏍囩▼搴忕敓鎴愩傜紪璇戝櫒浼氱敓鎴愮嫭絝嬬殑鐩鏍囩▼搴忥紝鑰岃В閲婂櫒鍒欎笉浼氥傝繖灝辨槸瑙i噴鍜岀紪璇戞柟寮忕殑鏍規湰鍖哄埆錛