Java基礎—Java運行原理


Java程序運行原理

在Java中引入了虛擬機(JVM,Java Virtual Machine)的概念,即在機器和編譯程序之間加入了一層抽象的虛擬的機器。虛擬機在任何平台上都提供給編譯程序一個的共同的接口。

編譯程序只需要面向虛擬機,生成虛擬機能夠理解的字節碼(ByteCode)(class文件的內容),然后由解釋器來將虛擬機代碼轉換為特定系統的機器碼執行,每一種平台的解釋器是不同的,但是實現的虛擬機是相同的

Java源程序經過編譯器編譯后變成字節碼,字節碼由虛擬機解釋執行,虛擬機將每一條要執行的字節碼送給解釋器,解釋器將其翻譯成特定機器上的機器碼,然后在特定的機器上運行。

java編譯器 (編譯) → 虛擬機(解釋執行) →  解釋器(翻譯) → 機器碼

 

Java程序運行過程

從這個框圖很容易大體上了解java程序工作原理。首先,你寫好java代碼,保存到硬盤當中。然后你在命令行中輸入

javac YourClassName.java

此時,你的java代碼就被編譯成字節碼(.class)。如果你是在Eclipse IDE或者其他開發工具中,你保存代碼的時候,開發工具已經幫你完成了上述的編譯工作,因此你可以在對應的目錄下看到class文件。此時的class文件依然是保存在硬盤中。

當你在命令行中運行

java YourClassName 

此時,JRE的類加載器從硬盤中讀取class文件,載入到系統分配給JVM的內存區域--運行數據區(Runtime Data Areas)。然后執行引擎解釋或者編譯類文件,轉化成特定CPU的機器碼,CPU執行機器碼,至此完成整個過程。

 

Java環境變量

【Path】

        在JDK的安裝路徑下,我們很容易發現bin文件下的javac、java命令——分別用於執行【編譯】和【解釋】的操作。配置path環境變量便可實現直接找到這兩個命令並運行。

【ClassPath】

        而classpath變量,通過后來的學習得知,在jdk1.5以上版本便可以不用配置。首先要知道java源程序通過編譯生成的class文件,默認會存儲到JRE文件下,也就是java運行環境路徑下,在1.5之前的jdk還沒智能到可以自動找到編譯好的類,進行下一步解釋操作,故需要手動配置classpath,指明class文件路徑,在執行java命令形成可執行文件。

【JavaHome】 

        另一個javahome再單獨運行java程序時是不需要進行配置的,因為編譯、解釋均已通過javac 和java命令完成。但在tomcat、jboss部署時需要配置該環境變量。

 

JDK、JRE、JVM三者間的關系

JDK(Java Development Kit)是針對Java開發員的產品,是整個Java的核心,包括了Java運行環境JRE、Java工具和Java基礎類庫。Java Runtime Environment(JRE)是運行JAVA程序所必須的環境的集合,包含JVM標准實現及Java核心類庫。JVM是Java Virtual Machine(Java虛擬機)的縮寫,是整個java實現跨平台的最核心的部分,能夠運行以Java語言寫作的軟件程序。

JDK是Java開發工具包,是Sun Microsystems針對Java開發員的產品。
JDK中包含JRE,在JDK的安裝目錄下有一個名為jre的目錄,里面有兩個文件夾bin和lib,在這里可以認為bin里的就是jvm,lib中則是jvm工作所需要的類庫,而jvm和 lib和起來就稱為jre。  
  • SE(J2SE),standard edition,標准版,是我們通常用的一個版本,從JDK 5.0開始,改名為Java SE。
  • EE(J2EE),enterprise edition,企業版,使用這種JDK開發J2EE應用程序,從JDK 5.0開始,改名為Java EE。
  • ME(J2ME),micro edition,主要用於移動設備、嵌入式設備上的java應用程序,從JDK 5.0開始,改名為Java ME。

 

 

 

參考:

JAVA程序運行原理——知其然,而知其所以然

Java虛擬機工作原理詳解

Java的運行原理

JDK、JRE、JVM三者間的關系

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM