編譯器和解釋器
先盜一張圖:
一般來說,編譯器是運行前將代碼編譯成二進制文件,其包含的是可直接執行的機器指令;解釋器則是運行時,一條一條將代碼解釋成平臺可執行的機器指令。看上去是編譯器比解釋器快,是因為執行的是已經編譯好的機器指令,而解釋器每次運行的都會解釋執行。實質上,編譯器編譯代碼時間加上執行時間要比解釋器多。
JAVA嚴格來說是半編譯半解釋的語言。
如上圖所示,java是先編譯成字節碼(非純二進制代碼),即由.java文件編譯成.class文件,再由JVM解釋器解釋執行。
現在解釋兩個問題:
1、為什麽JAVA執行相對比較快?
那是JVM解釋的是編譯後的字節碼,這比直接解釋源碼要快。
2、為什麽JAVA可以跨平臺?
首先,編譯器執行後的程序所有情況下都可以直接運行的,還要看平臺的系統,不同系統執行不同的編譯版本。
而JVM可以跨平臺安裝,其解釋執行的階段把.class文件中的字節碼解釋成對應平臺可執行的機器指令,所以java代碼可以做到跨平臺執行。
編譯器和解釋器
相關推薦
編譯器和解釋器
兩個 情況 嚴格 解釋器 ava 機器 解釋執行 可執行 做到 先盜一張圖: 一般來說,編譯器是運行前將代碼編譯成二進制文件,其包含的是可直接執行的機器指令;解釋器則是運行時,一條一條將代
編譯器與解釋器的區別和工作原理
架構 平臺 感覺 -i 調用 詞法 繼續 python 自動 這篇教程,我們一起來了解編譯器和解釋器的工作原理,這對我們提升能力很重要。 我一直認為概念或理論知識是非常重要的,讓我們能夠將很多模糊的認知關聯起來,變得更加清楚,從而打開視野,上升到新的層次。 但是,一般來
Question20180104 對比編譯器、解釋器與Javac編譯原理
即時編譯 inf ali pro 友好 pre 目標 缺點 java、 編譯器與Javac編譯原理 在前文我們知道了Java是一種編譯語言和解釋語言,它的源代碼經過編譯器Javac編譯為能夠被JVM識別的二進制語言,然後JVM將其解釋為能夠被平臺識別的機器語言。那麽什
shell編程:編譯器、解釋器 變量
port 解釋器 代碼段 pri 初始 所有 包含 數據 當前 強類型(變量) 靜態語言 編譯型語言 無解釋器 有編譯器 使用變量時需要事先聲明,甚至還需初始化 NULL弱類型(變bash變量類型:環境變量,本地變量,(局部變量),位置變量,特殊變量本地變量:bash進程
visual studio編譯器和連結器使用的環境變數
cl.exe和link.exe分別是visual studio IDE中的編譯器和連結器,就像linux中的gcc編譯器會用到環境變數去完成工作(include路徑與lib路徑等)一樣,它們在工作時 也會用到一些環境變數。下面簡單的介紹一下: cl.exe
解釋器和編譯器的區別
c語言代碼 支持 exe程序 png 選擇 編譯器 語法 es2017 進制 解釋器是一條一條的解釋執行源語言。比如php,postscritp,javascript就是典型的解釋性語言。 編譯器是把源代碼整個編譯成目標代碼,執行時不在需要編譯器,直接在支持目標代碼
JVM解釋器和編譯器
-s nvi style 執行 命令 一個 名詞 mixed 運行速度 首先看一個命令 [root@insure ~]# java -version java version "1.8.0_191" Java(TM) SE Runtime Environment (bui
CPython解釋器的進程和線程概述
工作 擁有 多個進程 result nbsp 交女朋友 蛋糕 處理器 並且 必備的理論基礎: #一 操作系統的作用: 1:隱藏醜陋復雜的硬件接口,提供良好的抽象接口 2:管理、調度進程,並且將多個進程對硬件的競爭變得有序 #二 多道技術: 1.產
Python的解釋器和中文編碼
com ges 尋找 notepad 文件的 目錄 運行 寫法 -1 第一行 #!/usr/bin/env python 目的是指出用什麽可執行程序去運行代碼。 有兩種寫法 1、#!/usr/bin/python 調用/usr/bin下的python解釋器,去運行代碼。 這
查看python iterpreter的路徑和當前選擇的解釋器
pre div 路徑 body code spa down where logs whereis python which python 查看python iterpreter的路徑和當前選擇的解釋器
Python解釋器種類以及特點 (經典概括, 便於理解和記憶)
span 開發 python解釋器 技術 c語言開發 目標 提高 python代碼 child CPython c語言開發的 使用最廣的解釋器 IPython 基於cpython之上的一個交互式計時器 交互方式增強 功能和cpython一樣 PyPy 目標是
Java進階篇設計模式之九----- 解釋器模式和叠代器模式
簡單 目的 java進階 使用 記錄 ace 客戶端 -- pro 前言 在上一篇中我們學習了行為型模式的責任鏈模式(Chain of Responsibility Pattern)和命令模式(Command Pattern)。本篇則來學習下行為型模式的兩個模式, 解釋器模
[From 2.4]C#編譯器和程序集鏈接器(以及一些它們的命令開關)
數據表 記錄 store gui 執行 類型 全局函數 全局 以及 C#編譯器:(用csc命令來使用C#編譯器) 程序集鏈接器(Assembly Linker):(用al命令來使用C#編譯器) 除了使用C#編譯器,還可以使用”程序集鏈接器“使用程序AL.exe來創建程序。
/bin/bash^M: 壞的解釋器: 沒有那個文件或目錄
解決方法 shell 腳本 shell sed project 腳本 bin 兩個 make 在windows 下編輯的shell 腳本在linux下運行時,報“沒有這個文件或目錄”,原因在於 兩個系統的換行符不一致導致。 解決方法: 使用在終端輸入sed -i ‘
Java雙棧算式解釋器
java 解釋器 import java.util.Stack; // import java.util.regex.*; import java.util.Stack; /** * This class use for get calculate result from the Strin
從數據庫、代碼和服務器對PHP網站Mysql做性能優化
now() image 最好 提高 mysql 避免 允許 大數 rdate 數據庫優化是PHP面試幾乎都會被問到的事情,也是我們工作中應該註意的事情,當然,如果是小網站無所謂優化不優化,網站訪問量大了自然會暴漏數據庫的瓶頸,這個瓶頸是各方面問題綜合導致的,下面我們來做下數
CloudStack+XenServer詳細部署方案 交換機配置和服務器連線
cloudstack+xenserver詳細部署方案CloudStack+XenServer詳細部署方案(2):交換機配置和服務器連線 本文將根據設計文檔, 對交換機進行配置和服務器網絡連線方式進行說明.Step1.交換機規劃, 根據功能將交換機端口分為三個部分:管理區域(交換機1 – 16 口): 用於
《Linux深度攻略》一書,講述Linux日常系統管理和服務器配置內容
linuxLinux深度攻略 首先從介紹Linux系統的安裝入手,講述了Linux系統管理和服務器配置兩部分的知識。系統管理方面內容有Linux系統簡介和安裝,Linux字符界面,目錄和文件管理,Linux常用命令,Shell編程,用戶和組群賬戶管理,權限、所有者和ACL,歸檔、壓縮和備份,軟件包管理,磁盤和
上傳文件到數據庫和服務器
上傳文件上傳文件我們需要做三步。①在頁面中能選擇文件上傳;②能夠將二進制數據轉為byte數組,然後存入數據庫中,註意數據庫字段的類型;③將文件保存到服務器。 @RequestMapping(value = "/upload") public void upload(UpLoadFile uploadFile
外部中斷和計時器要點
引腳 發送 標誌位 控制 優先 -h 如果 外部中斷 電平 一、51單片機的引腳與功能 P3.2: 外部中斷0的輸入引腳 P3.3:外部中斷1的輸入引腳 P3.4:定時器0的輸入引腳 P3.5:定時器1的輸入引腳 二、單片機的中斷源 外部中斷0; 外部中斷1; 定時/計數