導航:首頁 > 源碼編譯 > jvm編譯器和解釋器

jvm編譯器和解釋器

發布時間:2022-11-02 22:24:57

1. 什麼是JVMjava跨平台的原理是什麼

首先我們要理解什麼是跨平台,所謂的跨平台就是JAVA寫的一份代碼可以在任意的操作系統平台上運行。

為什麼跨平台會成為一個問題呢?因為每一個操作系統平台支持不同的指令集我們所寫的代碼經過編譯之後只能適用於一個平台,換一個平台就不支持了。而JAVA完美的解決了這個問題。

Java的一大特色就是「write once, run anywhere」即「一次編譯,到處運行」。就是說你不用專門為每個平台寫一份代碼,你寫的Java程序在任何平台都能跑起來。

它的實現原理是在系統層面上又增加了一層虛擬機(Java Virtual Machine,簡稱JVM),且為每個平台都定製了對應的虛擬機。然後Java程序是在虛擬機上跑的,因此平台無關。

Java的運行流程是:程序員寫了源代碼(Source Code,.java後綴,跨平台),然後經過編譯器編譯成位元組碼(Byte Code,.class後綴,二進制文件),位元組碼是所有虛擬機都能理解的中間文件。然後交給虛擬機(每個平台都有對應的虛擬機)去運行。

所以對「write once, run anywhere」更准確的理解是,「一次編譯,到處裝虛擬機,所以到處運行」。

整個流程如下圖所示。

2. 簡述jvm工作原理

Java是一種技術,它由四方面組成:Java編程語言、Java類文件格式、Java虛擬機和Java應用程序介面(Java API)。

運行期環境代表著Java平台,開發人員編寫Java代碼(.java文件),然後將之編譯成位元組碼(.class文件),再然後位元組碼被裝入內存,一旦位元組碼進入虛擬機,它就會被解釋器解釋執行,或者是被即時代碼發生器有選擇的轉換成機器碼執行。

Java平台由Java虛擬機和Java應用程序介面搭建,Java語言則是進入這個平台的通道,用Java語言編寫並編譯的程序可以運行在這個平台上。

在Java平台的結構中, 可以看出,Java虛擬機(JVM) 處在核心的位置,是程序與底層操作系統和硬體無關的關鍵。它的下方是移植介面,移植介面由兩部分組成:適配器和Java操作系統, 其中依賴於平台的部分稱為適配器;JVM 通過移植介面在具體的平台和操作系統上實現;在JVM 的上方是Java的基本類庫和擴展類庫以及它們的API, 利用Java API編寫的應用程序(application) 和小程序(Java applet) 可以在任何Java平台上運行而無需考慮底層平台, 就是因為有Java虛擬機(JVM)實現了程序與操作系統的分離,從而實現了Java 的平台無關性。

JVM在它的生存周期中有一個明確的任務,那就是運行Java程序,因此當Java程序啟動的時候,就產生JVM的一個實例;當程序運行結束的時候,該實例也跟著消失了。下面我們從JVM的體系結構和它的運行過程這兩個方面來對它進行比較深入的研究。

1、Java虛擬機的體系結構

·每個JVM都有兩種機制:

①類裝載子系統:裝載具有適合名稱的類或介面

②執行引擎:負責執行包含在已裝載的類或介面中的指令

·每個JVM都包含:

方法區、Java堆、Java棧、本地方法棧、指令計數器及其他隱含寄存器

2、Java代碼編譯和執行的整個過程

也正如前面所說,Java代碼的編譯和執行的整個過程大概是:開發人員編寫Java代碼(.java文件),然後將之編譯成位元組碼(.class文件),再然後位元組碼被裝入內存,一旦位元組碼進入虛擬機,它就會被解釋器解釋執行,或者是被即時代碼發生器有選擇的轉換成機器碼執行。

(1)Java代碼編譯是由Java源碼編譯器來完成,也就是Java代碼到JVM位元組碼(.class文件)的過程。

2)Java位元組碼的執行是由JVM執行引擎來完成

Java代碼編譯和執行的整個過程包含了以下三個重要的機制:

·Java源碼編譯機制

·類載入機制

·類執行機制

 

(1)Java源碼編譯機制

Java 源碼編譯由以下三個過程組成:

①分析和輸入到符號表

②註解處理

③語義分析和生成class文件

最後生成的class文件由以下部分組成:

①結構信息:包括class文件格式版本號及各部分的數量與大小的信息

②元數據:對應於Java源碼中聲明與常量的信息。包含類/繼承的超類/實現的介面的聲明信息、域與方法聲明信息和常量池

③方法信息:對應Java源碼中語句和表達式對應的信息。包含位元組碼、異常處理器表、求值棧與局部變數區大小、求值棧的類型記錄、調試符號信息

(2)類載入機制 JVM的類載入是通過ClassLoader及其子類來完成的

3. Java編譯器,解釋器,JVM的關系和定義

java編譯器
java語言寫的源程序通過java編譯器,編譯成與平台無關的『位元組碼程序』(.class文件,也就是0,1二進製程序),然後在os之上的java解釋器中解釋執行。
也相當與
註:jvm(java虛擬機)包括解釋器,不同的jdk虛擬機是相同的,解釋器不同。
jvm-java虛擬機
.jvm:是java的核心和基礎,在java編譯器和os平台之間的虛擬處理器。它是一種利用軟體方法實現的抽象的計算機基於下層的操作系統和硬體平台,可以在上面執行java的位元組碼程序。
java編譯器只要面向jvm,生成jvm能理解的代碼或位元組碼文件。java源文件經編譯成位元組碼程序,通過jvm將每一條指令翻譯成不同平台機器碼,通過特定平台運行。
jvm執行程序的過程:
i.載入。class文件
ii.管理並分配內存
iii.執行垃圾收集
jre(java運行時環境)由jvm構造的java程序的運行環境
編譯時
運行時

4. jdk,jre,jvm三者間有何關系

JVM:Java虛擬機,它是整個java實現跨平台的最核心的部分,所有的java程序會首先被編譯為.class的類文件,這種類文件可以在虛擬機上執行。

JRE:Java運行環境,光有JVM還不能讓class文件執行,因為在解釋class的時候JVM需要調用解釋所需要的類庫lib。

JDK:Java開發工具包

JDK,JRE,JVM三者關系概括如下:

JDK是JAVA程序開發時用的開發工具包,其內部也有Java運行環境JRE。JRE是Java程序運行時需要的運行環境,就是說如果你光是運行Java程序而不是去搞開發的話,只安裝JRE就能運行已經存在的Java程序了。JDk、JRE內部都包含JAVA虛擬機JVM,JAVA虛擬機內部包含許多應用程序的類的解釋器和類載入器等等。

5. 即時編譯器和JAVA解釋器的區別

即時編譯器預先把程序編譯完成,當執行時就直接調用。
而JAVA解釋器則是當需要調用該代碼時才臨時編譯解釋,而且沒執行一次就要編譯一次,而即時編譯器則是一次編譯多次執行。

6. jdk中有編譯器,解釋器,jvm,那麼它們是如何配合工作的呢

Java源代碼---->編譯器---->Java位元組碼(即虛擬指令)---->jvm---->解釋器----->二進制機器碼

7. Java編譯器,解釋器,JVM的關系和定義

編譯器負責把Java程序轉成Class文件,方便Jvm來讀取它.Jvm是java虛擬機,其實它就是解釋器,把Class文件中的命令轉成某種平台的命令,比如把Java命令轉成Windows下的命令,然後Java程序就執行了.

8. java解釋器和編譯器分別是什麼

Java的編譯方式有兩種,一種是和C++等語言一樣的,把源代碼編譯成和本地機器平台相關的機器語言,叫即時編譯。另一種是編譯成一種中間的位元組碼,與機器平台無關的,這種也是常用的,叫解釋型的。

即時編譯器因為產生的是本地機器的機器碼,能直接執行;不像位元組碼還要在JVM(Java虛擬機)上解釋運行,所以執行得更快些。

請採納!

9. java工作原理

Java工作原理
由四方面組成:

(1)Java編程語言
(2)Java類文件格式
(3)Java虛擬機
(4)Java應用程序介面
當編輯並運行一個Java程序時,需要同時涉及到這四種方面。使用文字編輯軟體(例如記事本、寫字板、UltraEdit等)或集成開發環境(Eclipse、MyEclipse等)在Java源文件中定義不同的類 ,通過調用類(這些類實現了Java API)中的方法來訪問資源系統,把源文件編譯生成一種二進制中間碼,存儲在class文件中,然後再通過運行與操作系統平台環境相對應的Java虛擬機來運行class文件,執行編譯產生的位元組碼,調用class文件中實現的方法來滿足程序的Java API調用 。

10. jdk中的編譯器是什麼,解釋器是什麼

編譯器是指java程序運行時對java代碼進行語法檢查和代碼規范的一種機制,若不符合代碼規范和語法有錯誤編譯器將會報錯,代碼將無法運行。解釋器我很少聽說,是不是編譯器報錯的時候出現的錯誤提示?

閱讀全文

與jvm編譯器和解釋器相關的資料

熱點內容
erp是什麼伺服器 瀏覽:184
python中tmp 瀏覽:21
說明wpf加密過程 瀏覽:142
java讀取list 瀏覽:702
iis7gzip壓縮 瀏覽:39
有什麼安卓機打吃雞好 瀏覽:597
三星u盤加密狗 瀏覽:473
php函數的返回值嗎 瀏覽:586
國企穩定程序員 瀏覽:328
編程貓如何使用教程視頻 瀏覽:218
安卓遠端網頁如何打日誌 瀏覽:218
壓縮flash大小 瀏覽:993
解壓的玩具教程可愛版 瀏覽:366
哪個求職app比較靠譜 瀏覽:888
java的讀法 瀏覽:61
nod32區域網伺服器地址 瀏覽:1003
數碼科技解壓 瀏覽:236
新網的雲伺服器管理界面復雜嗎 瀏覽:367
無人聲解壓強迫症視頻 瀏覽:573
計算機編譯運行 瀏覽:640