JDK、JRE、JVM分别是什么及它们之间的有什么关联
JDK
JDK:Java Development Kit 是Java的標準開發工具包(普通用戶只需要安裝 JRE來運行 Java 程序。而程序開發者必須安裝JDK來編譯、調試程序)。它提供了編譯、運行Java程序所需的各種工具和資源,包括:Java編譯器.Java運行環境JRE.常用的Java基礎類庫.
安裝目錄的說明
bin文件里面存放了JDK的各種開發工具的可執行文件,主要的是編譯器(javac.exe)
db文件是一個先進的全事務處理的基于Java技術的數據庫(jdk自帶數據庫db的使用)
include文件里面是Java和jvm交互用的頭文件
jre為java運行環境
lib文件存放的是JDK工具命令的實際執行程序
JRE
JRE:Java runtime environment 是運行基于Java語言編寫的程序所不可缺少的運行環境,用于解釋執行Java的字節碼文件。
也是通過它,Java的開發者才得以將自己開發的程序發布到用戶手中,讓用戶使用。JRE中包含了Java virtual machine(JVM),runtime class libraries和Java application launcher,這些是運行Java程序的必要組件。與大家熟知的JDK不同,JRE是Java運行環境,并不是一個開發環境,所以沒有包含任何開發工具(如編譯器和調試器),只是針對于使用Java程序的用戶。
安裝目錄的說明
bin里的就是JVM,lib中則是JVM工作所需要的類庫,而JVM和 lib和起來就稱為JRE
JVM
Java Virtual Machine 是Java的虛擬機,是JRE的一部分。它是整個java實現跨平臺的最核心的部分,負責解釋執行字節碼文件,是可運行java字節碼文件的虛擬計算機。
所有平臺的上的JVM向編譯器提供相同的接口,而編譯器只需要面向虛擬機,生成虛擬機能識別的代碼,然后由虛擬機來解釋執行。
JAVA跨平臺的原因
使用Java編譯器編譯Java程序時,生成的是與平臺無關的字節碼,這些字節碼只面向JVM。不同平臺的JVM都是不同的,但它們都提供了相同的接口。
JVM是Java程序跨平臺的最核心的部分,只要為不同平臺實現了相應的虛擬機,編譯后的Java字節碼就可以在該平臺上運行。其屏蔽了與具體操作系統平臺相關的信息,使得Java程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就可以在多種平臺上不加修改地運行。
正是因為有了JVM的存在,Java才實現了強大的跨平臺特性。
JVM執行程序的過程
1、加載.class 文件
所有的java程序會首先被編譯為.class的類文件,這種類文件可以在虛擬機上執行。也就是說class并不直接與機器的操作系統相對應,而是經過虛擬機間接與操作系統交互,由虛擬機將程序解釋給本地系統執行。只有JVM還不能成功執行.class的類文件,因為在解釋class的時候JVM需要調用解釋所需要的類庫lib,而jre包含lib類庫。
2、運行class文件
可以在命令行中輸入 java 字節碼文件名 ,此時啟動了一個jvm,加載字節碼文件名.class字節碼文件到內存,然后jvm運行內存中的字節碼指令
在IDE上就類似于點擊運行按鈕。
3、管理并分配內存
4、執行垃圾收集,調用垃圾收集器進行垃圾回收
三者的區別與聯系
JDK用于開發,是給開發人員用的,JRE 用于運行java程序,和JVM是給普通用戶使用的。如果只是運行Java程序,可以只安裝JRE,無序安裝JDK。也就是說:使用JDK開發完成的java程序,交給JRE去運行。
JDK包含了JRE,JDK 和 JRE 中都包含 JVM。也可以說JDK是JRE+Java的開發工具。JRE包含了JVM+Java語言的核心類庫。
總結
以上是生活随笔為你收集整理的JDK、JRE、JVM分别是什么及它们之间的有什么关联的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php中输出%3cbr %3e,抄板软件
- 下一篇: Android版火狐无法同步,Firef