差異JDK、JRE和JVM是一個常見的面試問題之一。你可能也會被問及解釋JDK與JRE與JVM之間的區別。
JDK、JRE和JVM之間的區別
JDK、JRE和JVM是Java編程語言的核心概念。我們在編程中不使用這些概念。但是,作為Java開發人員,我們應該了解它們。
1. JDK
Java開發工具包,又稱JDK,是Java環境的核心組件,提供編譯、調試和執行Java程序所需的所有工具、可執行文件和二進制文件。JDK是特定平台的軟件,這就是為什麼我們為Windows、Mac和Unix系統提供單獨的安裝程序的原因。我們可以說JDK是JRE的超集,因為它包含了帶有Java編譯器、調試器和核心類的JRE。
2. JVM
JVM是Java编程语言的核心。当我们执行Java程序时,JVM负责将字节码转换为特定于机器的代码。JVM也与平台相关,提供核心Java功能,如内存管理、垃圾回收、安全性等。JVM是可定制的,我们可以使用Java选项对其进行定制,例如分配最小和最大内存给JVM。JVM被称为虚拟,因为它提供了一个不依赖于底层操作系统和机器硬件的接口。这种对硬件和操作系统的独立性使Java程序实现了一次编写,到处运行。
3. JRE
JRE是JVM的实现。它提供了执行Java程序的平台。JRE由JVM、Java二进制文件和其他类组成,以成功执行任何程序。JRE不包含任何开发工具,如Java编译器、调试器、JShell等。如果只想执行Java程序,只需安装JRE,无需JDK,因为不需要开发或编译Java源代码。现在我们对JDK、JVM和JRE有了基本的了解,让我们深入了解它们之间的区别。
JDK vs JRE vs JVM
让我们看看JDK、JRE和JVM之间的一些重要区别。
- JDK 用於開發目的,而 JRE 用於運行 Java 程式。
- JDK 和 JRE 都包含 JVM,這樣我們就可以運行我們的 Java 程式。
- JVM 是 Java 程式語言的核心,並提供平台獨立性。
即時編譯器 (JIT)
有時您會在教科書中找到 JIT 與 JVM、JDK 和 JRE 並列。JIT 是 JVM 的一部分,它優化將位元碼轉換為機器特定語言的過程。它同時編譯類似的位元碼,減少將位元碼編譯為機器特定語言的整體時間。
Source:
https://www.digitalocean.com/community/tutorials/difference-jdk-vs-jre-vs-jvm