JVM

JVM(Java Virtual Machine)是Java运行字节码的虚拟机。JVM具有平台无关性,根据不同的平台(Windows, Linux, macOS)有不同的实现方式。
为了理解这一概念,我们可以从Java程序的执行流程来看:
JVM&JDK&JRE
编译器实现的是从JDK中的javac编译。Java虚拟机会完成解释器的功能,解释执行编译过程中产生的字节码文件。字节码是JVM可以理解的代码,Java通过字节码的方式,不仅使得运行变得高效,同时又保留了解释型语言可移植的特点。而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。

JDK

JDK(Java Development Kit)是Java语言的软件开发工具包。它包括了JRE,编译器(javac)和工具(如javadoc,jdb)。它可以创建和编译程序。

它有两个主要组件:

  • javac:编译器,将源程序转为字节码
  • java:运行编译后的java程序

JRE

JRE(Java runtime environment)是Java运行时的环境,包括java虚拟机(JVM),java核心类库和支持文件。

JRE, JDK, JVM 关系

首先我们先说JRE和JDK之间的关系:

JDK是面向开发人员的,JDK中附带JRE;而JRE是面向使用者的。

它们三者之间的关系如下图:
JVM&JDK&JRE

JRE = JVM + JavaSE标准类库
JDK = JRE + 开发工具集

推荐阅读

https://snailclimb.gitee.io/javaguide/#/docs/java/Java%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86

相关文章: