学好JAVA基础(二): JVM、JRE、JDK之间的关系

  • JDK(java development kit)

    JDK是Java开发工具包,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。

  • JRE( java runtime environment)

    JRE是java的运行环境,包含JVM标准实现及Java核心类库。

  • JVM(java virtual machine)

JVM是java虚拟机,是整个java实现跨平台最核心的部分,能够运行以Java语言写作的软件程序。

以上是三者的基本定义,那么它们三个有什么关系呢?下面我们通过一幅图来简单描述一下。

学好JAVA基础(二): JVM、JRE、JDK之间的关系

简述就是:

JDK = JRE + 其它

JRE =  JVM +其它

由此可得出,JRE和JVM是JDK的一部分,所以接下来,我们详解一下JDK,也顺带解析一下其中JRE,JVM部分。

首先,我们先看一下JDK安装之后的目录,都指代什么意思

学好JAVA基础(二): JVM、JRE、JDK之间的关系

我们看到了什么?

是的,跟上面我们画的图一样,在JDK安装包里,jre包标明的是java运行环境 - java虚拟机,没错,它指的就是JVM,而lib是类库,lib+jre = JRE。而JRE就是java所运行的环境。这里的JRE并不是单纯指的是开发环境,而是针对开发者所用的一系列相关东西。

由此,我们针对这一系列描述,可以得出java运行的基本步骤。

  1. 首先 JDK 中的编译器(javac)对代码进行编译——存储在.java文件中的源代码被编译成字节码存储在.class文件中

  2. 运行过程发生在 JRE 中:

    - Class Loader 加载执行程序所需的全部类

    - Byte Code Verifier验证代码的格式和合法性

    - Interpreter 加载并执行字节码,换句话说就是JVM 将字节码解析为机器码并映射到 CPU 指令集或 OS 的系统调用。

    Java 程序运行时 JVM 是 JRE 的一个实例,也就是 runtime interpreter。它执行的是.class文件,它会将字节码翻译为平台可以执行的机器码。

    学好JAVA基础(二): JVM、JRE、JDK之间的关系

    学好JAVA基础(二): JVM、JRE、JDK之间的关系

    好了,基础层面,我们就先了解到这吧,有兴趣的同学可以自己多了解一下JVM、JRE、JDK更多知识。