91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JDK、JRE、JVM之間的關系是什么

發布時間:2021-10-21 11:14:37 來源:億速云 閱讀:180 作者:iii 欄目:編程語言

這篇文章主要講解了“JDK、JRE、JVM之間的關系是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“JDK、JRE、JVM之間的關系是什么”吧!

JDK、JRE、JVM

1. Java 平臺標準(JDK 8)

?  

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 Platform Standard Edition 8 Documentation

關于 JDK、JRE、JVM 之間是什么關系,在 Java 平臺標準中已經明確定義了。也就是上面的英文介紹部分。

  • Oracle 有兩個 Java 平臺標準的產品,Java SE 開發工具包(JDK) 和 Java SE 運行時環境(JRE)。
  • JDK(Java Development Kit Java開發工具包),JDK是提供給Java開發人員使用的,其中包含了java的開發工具,也包括了JRE。所以安裝了JDK,就不用在單獨安裝JRE了。其中的開發工具包括編譯工具(javac.exe) 打包工具(jar.exe)等。
  • JRE(Java Runtime Environment Java運行環境) 是 JDK 的子集,也就是包括 JRE 所有內容,以及開發應用程序所需的編譯器和調試器等工具。JRE 提供了庫、Java 虛擬機(JVM)和其他組件,用于運行 Java 編程語言、小程序、應用程序。
  • JVM(Java Virtual Machine Java虛擬機),JVM可以理解為是一個虛擬出來的計算機,具備著計算機的基本運算方式,它主要負責把 Java 程序生成的字節碼文件,解釋成具體系統平臺上的機器指令,讓其在各個平臺運行。

「綜上」,從這段官網的平臺標準介紹和概念圖可以看出,我們運行程序的 JVM 是已經安裝到 JDK 中,只不過可能你開發了很久的代碼,也沒有注意過。沒有注意過的最大原因是,沒有開發過一些和 JVM 相關的組件代碼

「關于」,各 JDK 版本的平臺標準,可以自行比對學習,如下:

  • Java SE 6 Documentation:https://docs.oracle.com/javase/6/docs/
  • Java Platform Standard Edition 7 Documentation:https://docs.oracle.com/javase/7/docs/
  • Java Platform Standard Edition 8 Documentation:https://docs.oracle.com/javase/8/docs/ 

2. JDK 目錄結構和作用

我們默認安裝完 JDK 會有 jdk1.8.0_45jre1.8.0_45,兩個文件夾。其實在 JDK 的文件中還會有 JRE 的文件夾,他們兩個 JRE 文件夾的結構是一樣的。

JDK、JRE、JVM之間的關系是什么  
JDK 目錄結構
  • bin:一堆 EXE 可執行文件,java.exe、javac.exe、javadoc.exe,已經密鑰管理工具等。
  • db:內置了 Derby 數據庫,體積小,免安裝。
  • include:Java 和 JVM 交互的頭文件,例如我們 JVMTI 寫的 C++ 工程時,就需要把這個 include 包引入進去     jvmti.h。例如:基于jvmti設計非入侵監控
  • jre:Java 運行環境,包含了運行時需要的可執行文件,以及運行時需要依賴的 Java 類庫和動態鏈接庫     .so     .dll     .dylib
  • lib:Java 類庫,例如 dt.jar、tools.jar

「那么 jvm 在哪個文件夾呢?」

JDK、JRE、JVM之間的關系是什么  
jvm.dll

可能你之前并沒有注意過 jvm 原來在這里:C:\Program Files\Java\jdk1.8.0_45\jre\bin\server

  • 這部分是整個 Java 實現跨平臺的最核心內容,由 Java 程序編譯成的 .class 文件會在虛擬機上執行。
  • 另外在 JVM 解釋 class 文件時需要調用類庫 lib。在 JRE 目錄下有兩個文件夾 lib、bin,而 lib 就是 JVM 執行所需要的類庫。
  • jvm.dll 并不能獨立工作,當 jvm.dll 啟動后,會使用 explicit 方法來載入輔助動態鏈接庫一起執行。 

3. JDK 是什么?

綜上通過 Java 平臺標準JDK 的目錄結構,JDK 是 JRE 的超集,JDK 包含了 JRE 所有的開發、調試以及監視應用程序的工具。以及如下重要的組件:

  • java – 運行工具,運行 .class 的字節碼
  • javac– 編譯器,將后綴名為.java的源代碼編譯成后綴名為.class的字節碼
  • javap – 反編譯程序
  • javadoc – 文檔生成器,從源碼注釋中提取文檔,注釋需符合規范
  • jar – 打包工具,將相關的類文件打包成一個文件
  • jdb – debugger,調試工具
  • jps – 顯示當前java程序運行的進程狀態
  • appletviewer – 運行和調試applet程序的工具,不需要使用瀏覽器
  • javah – 從Java類生成C頭文件和C源文件。這些文件提供了連接膠合,使 Java 和 C 代碼可進行交互。
  • javaws – 運行 JNLP 程序
  • extcheck – 一個檢測jar包沖突的工具
  • apt – 注釋處理工具
  • jhat – java堆分析工具
  • jstack – 棧跟蹤程序
  • jstat – JVM檢測統計工具
  • jstatd – jstat守護進程
  • jinfo – 獲取正在運行或崩潰的java程序配置信息
  • jmap – 獲取java進程內存映射信息
  • idlj – IDL-to-Java 編譯器. 將IDL語言轉化為java文件
  • policytool – 一個GUI的策略文件創建和管理工具
  • jrunscript – 命令行腳本運行
  • appletviewer:小程序瀏覽器,一種執行HTML文件上的Java小程序的Java瀏覽器 

4. JRE 是什么?

JRE 本身也是一個運行在 CPU 上的程序,用于解釋執行 Java 代碼。

一般像是實施的工作,會在客戶現場安裝 JRE,因為這是運行 Java 程序的最低要求。

JDK、JRE、JVM之間的關系是什么  
JRE 目錄結構 lib、bin
  • bin:有 java.exe 但沒有 javac.exe。也就是無法編譯 Java 程序,但可以運行 Java 程序,可以把這個bin目錄理解成JVM。
  • lib:Java 基礎&核心類庫,包含 JVM 運行時需要的類庫和 rt.jar。也包含用于安全管理的文件,這些文件包括安全策略(security policy)和安全屬性(security properties)等。 

5. JVM 是什么?

其實簡單說 JVM 就是運行 Java 字節碼的虛擬機,JVM 是一種規范,各個供應商都可以實現自己 JVM虛擬機。就像小傅哥自己也按照虛擬機規范和手寫JVM的相關書籍實現了,基于Java實現的JVM虛擬機。

JDK、JRE、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”。提供了一個不依賴于底層操作系統和機器硬件結構的運行環境。 

5.1 Client模式、Server模式

在 JVM 中有兩種不同風格的啟動模式, Client模式、Server模式。

  • Client模式:加載速度較快。可以用于運行GUI交互程序。
  • 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
 
  • 如果需要調整,可以把 client 設置為 KNOWN,并調整到 server 前面。
  • JVM 默認在 Server模式下,-Xms128M、-Xmx1024M
  • JVM 默認在 Client 模式下,-Xms1M、-Xmx64M 
5.2 JVM 結構和執行器

這部分屬于 JVM 的核心知識,但不是本篇重點,會在后續的章節中陸續講到。本章只做一些介紹。

  • Class Loader:類裝載器是用于加載類文件的一個子系統,其主要功能有三個:loading(加載),linking(鏈接),initialization(初始化)。
  • JVM Memory Areas:方法區、堆區、棧區、程序計數器。
  • Interpreter(解釋器):通過查找預定義的 JVM 指令到機器指令映射,JVM 解釋器可以將每個字節碼指令轉換為相應的本地指令。它直接執行字節碼,不執行任何優化。
  • JIT Compiler(即時編譯器):為了提高效率,JIT Compiler 在運行時與 JVM 交互,并適當將字節碼序列編譯為本地機器代碼。典型地,JIT Compiler執行一段代碼,不是每次一條語句。優化這塊代碼,并將其翻譯為優化的機器代碼。     JIT Compiler是默認開啟

感謝各位的閱讀,以上就是“JDK、JRE、JVM之間的關系是什么”的內容了,經過本文的學習后,相信大家對JDK、JRE、JVM之間的關系是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

达尔| 滦南县| 德令哈市| 鄂州市| 隆德县| 绩溪县| 江津市| 浮梁县| 高邮市| 灯塔市| 察隅县| 肥城市| 鹿泉市| 东阿县| 延庆县| 陆川县| 南和县| 滁州市| 安多县| 宁晋县| 宿松县| 博白县| 攀枝花市| 伊金霍洛旗| 五华县| 安宁市| 江安县| 民乐县| 广平县| 深泽县| 大港区| 沙雅县| 平凉市| 广东省| 长汀县| 张家口市| 孟连| 临颍县| 嵊泗县| 桑日县| 怀化市|