JDK, JRE 与 JVM的区别

JDK, JRE 与 JVM的区别

解释三者区别之前我们先了解一下作为一名程序员从编写到运行一个程序的过程:

  1. 编写相应的代码(这个过程中我们可能会用到一些库,例如IO)
  2. 代码编译成为类文件
  3. 解释并执行类文件

接下来我们就根据这个过程来了解JDK,JRE与JVM。

先看一张图

这是一张表示JDK,JRE,与JVM之间关系的图

从图中我们可以清晰的看到JDK包含JRE,JRE包含JVM

什么是JVM

Java Virtual Machine

不论你有没有熟练的掌握Java,你都应该了解一些Java的基本特性,例如Java是面向对象的,Java的平台无关性。其中实现Java平台无关性的关键就是JVM。JVM其实是起到了一个映射的作用,例如,不同的平台(如Mac,Windows)系统底层的执行代码可能不同,JVM的作用就是将文件解释对应的Mac,Windows能够理解的执行代码

不同系统对应的JVM是不同的,同一份类文件想要在不同的平台上运行,需要经过不同的JVM的解释(或映射)。

什么是JRE

Java Runtime Environment

JRE是Java程序的运行环境,具体的说就是类文件的运行环境。其作用就是解释并执行类文件。哎呦,听着好像和JVM没有什么区别。这里我根据自己的理解解释一下。

我们来看看JRE的文件

这是一张JRE文件夹的图片

其中包含bin文件夹和lib文件夹,我们可以把bin文件夹看作JRE,用来解释并执行类文件,但是解释类文件的过程中可能会用到一些库,这些库JRE是没有的,而是被保存在lib文件夹中。JRE和lib文件夹共同构成了JRE。

什么是JDK

Java Development Kit

如果说执行一个程序只需要JRE的话,那么作为一个程序员,开发一个程序,我们需要JDK。

这是JDK文件

这是一张JDK文件夹的图片

我们可以看到JDK文件夹中是包含JRE的,因为开发过程也是需要运行程序的。此外JDK中还有一些工具和编码是可能会用到的库。比如说将程序打包成可执行文件就需要使用相应的工具,读取本地文件需要使用IO库等等。

相关文章

jinfo 命令可以用来查看 Java 进程运行的 JVM 参数,命令如下...
原文链接:https://www.cnblogs.com/niejunlei/p/5987611.ht...
java 语言, 开发者不能直接控制程序运行内存, 对象的创建都是...
jvm
1.jvm的简单抽象模型:  2.类加载机制     双亲委派模...
堆外内存JVM启动时分配的内存,称为堆内存,与之相对的,在代...
1.springboot和tomcat2.springcloud的请求如何通过网关鉴权?...