JDK,JRE,JVM 的区别与联系
尽管学习了这么多年的
java
,但一直觉得自己学习得比较粗糙,对一些基本概念掌握得也不是很清楚,例如:JDK、JRE、JVM。所以在这里首先记录一下 JDK、JRE、JVM 的区别,来帮助自己巩固基础。
JDK、JRE、JVM 是 Java 语言中较为核心的概念了,它们看上去极为相似,大多数开发人员也很少去计较它们之间的区别。但实际上,它们之间还是有着一定的区别,并且所针对的目标也不一样。
JDK、JVM、JRE 关系图:
1 JDK
JDK,全称是 Java Develoment Kit,用中文来讲就是 Java 开发工具包,是整个 Java 的核心,提供了编译、调试和执行 Java 程序所需的所有工具、可执行文件和二进制文件。JDK 拥有 JRE 所拥有的一切,还有编译器(javac)和工具(如 javadoc)。
此外,JDK 是特定于平台的软件,因此 Windows,Mac 和 Unix 系统有着不同的安装程序。
2 JVM
JVM,全称是 Java Virtual Machine,也就是 Java 虚拟机,它是 Java 编程语言的核心。
当我们运行 Java 程序时,JVM 负责将字节码转换为机器特定的代码。JVM 提供诸如内存管理、垃圾回收、安全性等核心 Java 功能,而且是可自定义的,我们可以使用 java 选项对其进行自定义,例如为 JVM 分配最小和最大内存。
JVM之所以称为虚拟机,是因为它提供的接口不依赖于底层操作系统和机器硬件,这种与硬件和操作系统的独立性使得 Java 程序可以在任何地方编写一次写入。
3 JRE
JRE,全称是 Java Runtime Environment,是 JVM 的实现,它提供了执行 Java程序的平台。JRE 由 JVM 和 Java 二进制文件以及其他类组成,可以成功执行任何 Java 程序。
JRE不包含Java编译器,调试器等任何开发工具。如果要执行任何Java程序,则只需要安装 JRE,也就是说不需要 JDK 即可运行任何 Java 程序。
总结来看:
我们开发的实际情况是:我们利用 JDK(调用 JAVA API)开发了属于我们自己的 Java 程序后,通过 JDK 中的编译程序(javac)将我们的文本Java 文件编译成 Java 字节码,在 JRE 上运行这些 Java 字节码,JVM 解析这些字节码,映射到CPU 指令集或 OS 的系统调用。
参考文献: