面试基础-- JDK、JRE、JVM
面試基礎(chǔ)-- JDK、JRE、JVM
(1)JDK、JRE、JVM之間的關(guān)系
(2)JRE和JDK
JDK(Java Development Kit)Java開發(fā)工具包,JRE(Java Runtime Enviroment)是Java的運行環(huán)境,JVM( java virtual machine)Java虛擬機。JDK是面向開發(fā)者的,JRE是面向使用JAVA程序的用戶,這只是簡單區(qū)別
通過上圖,有兩個JRE文件夾,如果細(xì)看里面的內(nèi)容基本上是一樣的,如果是只是Java程序使用者,那么只會有最外層的那個JRE目錄,JDK中是JRE自帶的,如果安裝了JDK,必然里面會有一個JRE.那么問題來了,為什么會有兩套JRE呢?
- dt.jar和tools.jar是兩個java最基本的包,里面包含了從java最重要的lang包到各種高級功能如可視化的swing包,是java必不可少的。而path下面的bin里面都是java的可執(zhí)行的編譯器及其工具,如java,javadoc等
- javac的命令不是去JDK中bin目錄去找的javac.exe,而是去JDK中l(wèi)ib目錄中的tools.jar中com.sun.tools.javac.Main中執(zhí)行,因此javac.exe只是一個包裝器(Wrapper),存在的目的是為了讓開發(fā)者免于輸入過長的指命
- JDK里的工具幾乎是用Java所編寫,同屬于Java應(yīng)用程序,因此要使用JDK所附的工具來開發(fā)Java程序,所以自身需要附一套JRE才能運行
- 上圖中與jdk同級目錄下的JRE就是用來運行一般Java程序用的
兩套JRE運行的時候究竟運行哪一個呢,這個時候JDK中java.exe先從自身目錄中找,然后父級目錄中找,如果都沒有就去注冊表中找
注冊表:win + R —》輸入regedit
(3)JRE和JVM
JVM – java virtual machineJVM就是我們常說的java虛擬機,它是整個java實現(xiàn)跨平臺的最核心的部分,所有的java程序會首先被編譯為.class的類文件,這種類文件可以在虛擬機上執(zhí)行,class文件并不直接與機器的操作系統(tǒng)相對應(yīng),而是經(jīng)過虛擬機間接與操作系統(tǒng)交互,由虛擬機將程序解釋給本地系統(tǒng)執(zhí)行,類似于C#中的CLR。
JVM不能單獨搞定class的執(zhí)行,解釋class的時候JVM需要調(diào)用解釋所需要的類庫lib。在JDK下面的的jre目錄里面有兩個文件夾bin和lib,在這里可以認(rèn)為bin里的就是jvm,lib中則是jvm工作所需要的類庫,而jvm和 lib和起來就稱為jre。
JVM+Lib=JRE,如果講的具體點就是bin目錄下的jvm.dll文件, jvm.dll無法單獨工作,當(dāng)jvm.dll啟動后,會使用explicit的方法(就是使用Win32 API之中的LoadLibrary()與GetProcAddress()來載入輔助用的動態(tài)鏈接庫),而這些輔助用的動態(tài)鏈接庫(.dll)都必須位于jvm.dll所在目錄的父目錄之中。因此想使用哪個JVM,只需要設(shè)置PATH,指向JRE所在目錄下的jvm.dll
總結(jié)
以上是生活随笔為你收集整理的面试基础-- JDK、JRE、JVM的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STL之函数对象和谓词
- 下一篇: static 二次理解