您好,登錄后才能下訂單哦!
這篇文章主要講解了“JDK、JRE、JVM之間的關系是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“JDK、JRE、JVM之間的關系是什么”吧!
?Oracle has two products that implement Java Platform Standard Edition (Java SE) 8: Java SE Development Kit (JDK) 8 and Java SE Runtime Environment (JRE) 8.
?
?JDK 8 is a superset of JRE 8, and contains everything that is in JRE 8, plus tools such as the compilers and debuggers necessary for developing applets and applications. JRE 8 provides the libraries, the Java Virtual Machine (JVM), and other components to run applets and applications written in the Java programming language. Note that the JRE includes components not required by the Java SE specification, including both standard and non-standard Java components.
?
?The following conceptual diagram illustrates the components of Oracle's Java SE products:
?
「Description of Java Conceptual Diagram」
關于 JDK、JRE、JVM 之間是什么關系,在 Java 平臺標準中已經明確定義了。也就是上面的英文介紹部分。
「綜上」,從這段官網的平臺標準介紹和概念圖可以看出,我們運行程序的 JVM 是已經安裝到 JDK 中,只不過可能你開發了很久的代碼,也沒有注意過。沒有注意過的最大原因是,沒有開發過一些和 JVM 相關的組件代碼
「關于」,各 JDK 版本的平臺標準,可以自行比對學習,如下:
我們默認安裝完 JDK 會有 jdk1.8.0_45
、jre1.8.0_45
,兩個文件夾。其實在 JDK 的文件中還會有 JRE 的文件夾,他們兩個 JRE 文件夾的結構是一樣的。
jvmti.h
。例如:基于jvmti設計非入侵監控.so
.dll
.dylib
「那么 jvm 在哪個文件夾呢?」
可能你之前并沒有注意過 jvm 原來在這里:C:\Program Files\Java\jdk1.8.0_45\jre\bin\server
綜上通過 Java 平臺標準
和 JDK 的目錄結構
,JDK 是 JRE 的超集,JDK 包含了 JRE 所有的開發、調試以及監視應用程序的工具。以及如下重要的組件:
JRE 本身也是一個運行在 CPU 上的程序,用于解釋執行 Java 代碼。
一般像是實施的工作,會在客戶現場安裝 JRE,因為這是運行 Java 程序的最低要求。
其實簡單說 JVM 就是運行 Java 字節碼的虛擬機,JVM 是一種規范,各個供應商都可以實現自己 JVM虛擬機。就像小傅哥自己也按照虛擬機規范和手寫JVM的相關書籍實現了,基于Java實現的JVM虛擬機。
「源碼地址」:https://github.com/fuzhengwei/itstack-demo-jvm
「內容簡介」:本代碼主要介紹如何通過 java 代碼來實現 JVM 的基礎功能(搜索解析class文件、字節碼命令、運行時數據區等),從而讓java程序員通過最熟知的java程序,學習JVM是如何將java程序一步步跑起來的。
「當然」,我們下載 Oracle 公司的 JVM 與自己實現的相比,要高級的多。他們的設計有不斷優化的內存模型、GC回收策略、自適應優化器等。
另外,JVM 之所以稱為虛擬機,主要就是因為它為了實現 “write-once-run-anywhere”。提供了一個不依賴于底層操作系統和機器硬件結構的運行環境。
在 JVM 中有兩種不同風格的啟動模式, Client模式、Server模式。
修改配置模式文件:C:\Program Files\Java\jre1.8.0_45\lib\amd64\jvm.cfg
# List of JVMs that can be used as an option to java, javac, etc.
# Order is important -- first in this list is the default JVM.
# NOTE that this both this file and its format are UNSUPPORTED and
# WILL GO AWAY in a future release.
#
# You may also select a JVM in an arbitrary location with the
# "-XXaltjvm=<jvm_dir>" option, but that too is unsupported
# and may not be available in a future release.
#
-server KNOWN
-client IGNORE
這部分屬于 JVM 的核心知識,但不是本篇重點,會在后續的章節中陸續講到。本章只做一些介紹。
感謝各位的閱讀,以上就是“JDK、JRE、JVM之間的關系是什么”的內容了,經過本文的學習后,相信大家對JDK、JRE、JVM之間的關系是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。