瞭解JDK、JRE、JVM及Java程式的編譯與執行
前言
對於Java初學者而言,需要對JDK、JRE、JVM要有一定的瞭解。在我們編寫第一個Java程式之前,還需要對Java的載入與執行有一個簡單的瞭解。
一、JDK、JRE、JVM三者關係
-
JDK(Java Development Kit) Java開發工具包
它是每一個Java軟體開發人員必須安裝的,JDK安裝之後,會自帶一個JRE。 -
JRE(Java Runtime Environment) Java執行環境
執行java程式所必須的環境集合,包含了JVM標準實現及Java核心類庫。如果只需要執行java程式,則不需要安裝JDK,只需要安裝JRE即可。 -
JVM(Java Virtual Machine) Java虛擬機器
JVM是一個虛擬計算機,是實現java程式跨平臺性的法寶。
二、Java程式的兩個階段-編譯及執行
一個Java程式從開發到最終執行是這樣進行的。
-
寫程式碼
建立.java檔案,在檔案中編寫符合java語法的原始碼,該檔案稱為原始檔。 -
編譯
使用javac命令對原始檔進行編譯,生成.class檔案,該檔案我們稱之為位元組碼檔案,該檔案的內容並不是二進位制檔案,如果是二進位制檔案,作業系統是可以直接執行的。 -
執行
使用java命令執行已經編譯成功的java程式。JVM啟動,通過“類裝載器ClassLoader”從硬碟中找到.class位元組碼檔案並裝載,JVM直譯器對位元組碼進行解釋,最終解釋為二進位制碼,然後作業系統通過執行二進位制指令來和硬體平臺完成互動。以上則是java程式載入與執行的全部過程。其中需要重點強調的是:
-
Java程式從開發到執行包括編譯和執行兩個階段,這兩個階段可以在不同的作業系統中完成,例如在windows環境下進行編譯,在liunx系統下執行,這是因為有JVM機制的存在,做到了一次編譯到處執行,也就是我們所說的跨平臺性和移植性。
-
編譯階段需要使用javac.exe命令,該命令是在安裝JDK之後就存在的命令,執行階段需要使用java.exe,該命令是在安裝JRE之後存在的命令。
-
.class位元組碼檔案才是最終要執行的程式,.java原始檔的刪除不影響java程式的執行。
-
執行java程式的前提是當前作業系統中安裝了對應版本的JVM,JVM不是單獨安裝的,安裝JRE即可。不同的作業系統需要安裝不同的JRE,不同版本的JRE對應不同版本的JVM。
總結
瞭解JDK、JRE、JVM三者之間的關係,掌握java程式從編譯到執行的全部過程,理解JVM機制。
相關文章
- JDK JRE JVMJDKJVM
- JDK,JRE,JVMJDKJVM
- JDK,JRE和JVMJDKJVM
- JDK、JRE和JVMJDKJVM
- 深入淺出JVM(七)之執行引擎的解釋執行與編譯執行JVM編譯
- JDK.JRE和JVMJDKJVM
- JDK、JRE和JVM簡述JDKJVM
- 深入瞭解JVM虛擬機器8:Java的編譯期最佳化與執行期最佳化JVM虛擬機Java編譯
- 圖解JVM記憶體模型及JAVA程式執行原理圖解JVM記憶體模型Java
- [java基礎]之JVM/JRE/JDK三者的關係JavaJVMJDK
- JVM、JDK、JRE三者的關係JVMJDK
- jdk、jre、jvm三者關係JDKJVM
- JDK、JRE、JVM,是什麼關係?JDKJVM
- 你瞭解JVM中的 JIT 即時編譯及優化技術嗎?JVM編譯優化
- 學習scala,java安裝jdk及jre的問題JavaJDK
- Java編譯和執行的命令Java編譯
- JRE與JDK的區別與聯絡JDK
- 深入理解JVM(③)執行緒與Java的執行緒JVM執行緒Java
- JRE 和 JDK 的區別詳解JDK
- JDK20安裝+環境配置+編譯執行JDK編譯
- Java程式碼的編譯與反編譯那些事兒Java編譯
- 深入瞭解Java JIT編譯器:原理與效能最佳化Java編譯
- 編譯執行、解釋執行的一些思考編譯
- C程式從編譯到執行C程式編譯
- JDK和JREJDK
- 瞭解 Android 的程式和執行緒Android執行緒
- Golang 包瞭解以及程式的執行Golang
- Java編譯與反編譯Java編譯
- 通過 HelloWorld 瞭解 Java 程式執行過程以及執行時記憶體Java記憶體
- java多執行緒程式設計:你真的瞭解執行緒中斷嗎?Java執行緒程式設計
- 【JDK命令列 一】手動編譯Java原始碼與執行位元組碼命令合集(含外部依賴引用)JDK命令列編譯Java原始碼
- jre 和 jdk的關係JDK
- (嵌入式)Windows與Ubantu下的C語言程式的編譯執行WindowsC語言編譯
- [譯] Python 的多執行緒與多程式Python執行緒
- 【JVM原始碼解析】模板直譯器解釋執行Java位元組碼指令(上)JVM原始碼Java
- Java執行緒池瞭解一下Java執行緒
- java基礎-多執行緒初步瞭解Java執行緒
- Java執行緒池的瞭解使用—築基篇Java執行緒