2020年Java入门第二篇-JVM,JRE,JDK的区别

在本文中,将着重讨论Java编程中JVM,JRE和JDK之间的区别和联系。

​ 一般地,Java既是一门编程语言,又是一种编程平台。Java是一门面向对象编程的高级语言,与此同时,Java平台又为Java语言编写的应用程序提供特定的环境。接下来,将介绍Java编程中常涉及到的三个概念:JVM,JRE和JDK。

1. 什么是JVM

​ JVM是Java Virtual Machine的缩写,即常说的Java虚拟机。Java虚拟机为Java应用程序的运行提供了特定的环境,这使得Java具备平台无关性成为可能。简而言之,Java虚拟机是运行Java字节码的虚拟机(相对于硬件而言,Java虚拟机是基于软件架构的)。

​ 当需要运行Java程序时,Java编译器首先将Java源文件(.java文件)编译为字节码(.class)文件,然后,JVM将字节码转换为本地机器代码(本地计算机CPU能够直接执行的指令集)。虽然说Java具备跨平台的特性(平台无关性),但是JVM是平台相关的,这是因为不同的操作系统其指令集也各不相同,所以不同的平台将对应不同的JVM。下面我们通过一张图了解Java程序的执行过程:

java应用程序执行过程

2. 什么是JRE

​ JRE是Java Runtime Environment的缩写,JRE为Java应用程序在运行时提供JVM,组件和类库。我们可以通过以下的一个等式来理解JRE的组成结构:

JRE = JVM + Java components + Class Libraries

你也可以通过下面的一张图来辅助理解JVM与JRE两者之间的区别和联系:

jre的组成结构

3. 什么是JDK

​ JDK是Java Development Kit的缩写,即Java开发工具包,简单来说,JDK是JRE的超集,除了包含JRE之外,JDK还包括了开发Java应用程序的其他工具包,如编译器,调试器等。通常情况下,JDK是在开发Java应用程序阶段使用,但JDK也能运行Java应用程序,JDK是JRE的一个增强实现。我们可以通过下面的图片辅助理解JDK和JRE之间的区别和联系:

jdk的组成结构

4. JVM、JRE和JDK之间的区别和联系

下面简短的列举了JVM,JRE和JDK三者之间的一些区别:

  • JVM是Java编程语言的核心,使得Java具备平台无关性;
  • JRE和JDK都包含JVM,都可以运行Java应用程序;
  • JDK通常用于Java应用程序的开发阶段,JRE用于运行Java应用程序。

最后,我们可以通过下面的图加深对这三者之间关系的理解: