JVM、JRE、JDK之間的區別和聯繫,你居然還不知道? 什麼是JVM 什麼是JRE 什麼是JDK 總結 windows 安裝jdk 兩個目錄jre的區別 開發到運行

JDK包含了JRE,JRE包含了JVM

  • JDK:java開發工具包,針對java開發人員,可以編譯運行java程序
  • JRE:java運行時環境,針對使用java程序的客戶,可以運行字節碼(.class),但是不能編譯Java源碼
  • JVM:用來解釋執行字節碼文件(.class),但不能正確的執行

什麼是JVM

JVM是JRE的一部分,是虛擬出來的一臺計算機.通過實體計算機仿真各種計算功能來實現,JVM有自己完善的硬件架構,如處理器,堆棧,寄存器等,還有相應的指令集.JVM是Java跨平臺的核心,Java程序通過JVM的跨平臺,從而使Java程序跨平臺.Java程序首選會被編譯成字節碼文件(.class),JVM的核心任務就是解釋字節碼文件(.class)並映射到真實CPU指令集或者系統調用.JVM不關係上層Java程序,只關係字節碼(.class).

什麼是JRE

JRE是Java運行環境,所有Java程序必須依賴JRE才能運行.只有JVM是不能運行字節碼文件的(.class),因爲解釋的字節碼的時候需要lib庫. JRE裏面有兩個文件夾 bin/ , lib/ 。 bin/ 就是JVM, lib 就是JVM所需要庫。JVM+ lib =JRE

什麼是JDK

JDK是Java的核心,包含運行Java運行環境(JRE)和一些Java工具及Java基礎類庫 。

JDK提供的工具

appletviewer.exe*    java-rmi.exe*  jrunscript.exe*    policytool.exe*
extcheck.exe*        javaw.exe*     jsadebugd.exe*     rmic.exe*
idlj.exe*            javaws.exe*    jstack.exe*        rmid.exe*
jabswitch.exe*       jcmd.exe*      jstat.exe*         rmiregistry.exe*
jar.exe*             jconsole.exe*  jstatd.exe*        schemagen.exe*
jarsigner.exe*       jdb.exe*       jvisualvm.exe*     serialver.exe*
java.exe*            jdeps.exe*     keytool.exe*       servertool.exe*
javac.exe*           jhat.exe*      kinit.exe*         tnameserv.exe*
javadoc.exe*         jinfo.exe*     klist.exe*         unpack200.exe*
javafxpackager.exe*  jjs.exe*       ktab.exe*          vcruntime140.dll*
javah.exe*           jli.dll*       native2ascii.exe*  wsgen.exe*
javap.exe*           jmap.exe*      orbd.exe*          wsimport.exe*
javapackager.exe*    jps.exe*       pack200.exe*       xjc.exe*

Java Api是Java的應用程序接口,裏面有很多寫好的Java Class,包含一些重要的語法結構以及基本圖形,網絡和文件IO,我們可以直接調用。

總結

  • 有JVM和lib庫(JRE)就可以執行字節碼(.class)文件(Java程序)
  • 有JRE可以運行(Java程序)但是還不能開發Java程序,需要JDK(JRE+開發工具)纔可以

windows 安裝jdk

會發現有兩個目錄,其實只需要 jdk1.8.0_91 就可以,裏面包好了jre, jre1.8.0_91 是JDK單獨提供一個一個運行環境

兩個目錄jre的區別

  • 相同點:這兩個JRE都可以作爲Java程序的運行環境
  • 不同點:JDK只能使用自己目錄自帶的JRE,不能使用外面單獨安裝的JRE

開發到運行

安裝JDK環境,調用本地的Java api完成業務代碼,通過JDK的編譯器(javac)編譯成字節碼(.class),然後在JRE上運行這些JAVA字節碼,JVM解釋這些字節碼,映射到CPU指令集或者系統調用。

來源:https://www.tuicool.com/articles/bU7faqV

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章