什么是JVM

认识JVM之前就先了解下面三个相近的概念。

  • JDK
    英文名称为Java Development Kit。Java开发工具包,开发Java程序经常会使用它。

  • JRE

    英文名称为Java Runtime Environment。Java运行环境,主要包括JVM和一些类库,保证Java程序运行的最小环境。

  • JVM

    英文名称为Java Virtual Machine。Java虚拟机,具体是干什么的,之后在说。

通过概念就能看出来它们之间的关系,如下图。

更加详细的信息可以参考这个图。

JVM的位置

JVM在我们的计算机当中是位于什么位置的呢?可以参考一下下图。

一次编译,到处运行

Java之所以那么火,这么多人使用,其中一个重要的原因就是Java有一个特性,一次编译,到处运行。Java可以实现跨平台运行,这使得开发者在不同平台上都可以运行自己的Java程序,方便了开发者的部署。那么Java是怎么实现跨平台的特性的呢?

这就关系到Java虚拟机了。我们在IDE编写好自己的Java程序之后,就会有一个扩展名为.java的源代码文件。

然后我们可以通过一个简单的命令来编译Java这个源代码文件。

1
javac hello.java

Java程序的编译不是直接编译为计算机可以看懂的序列,而是编译成为了一个扩展名为.class的字节码文件。这个字节码文件通过Java虚拟机的翻译,才能变成计算机看得懂的序列,计算机才能成功运行这个Java程序。

1
java hello.class

到这应该就知道为什么Java可以实现跨平台了。Java的字节码文件不管放在哪个系统,只要系统安装有JVM,就能将字节码文件翻译成机器看得懂的语言,机器就能执行出程序。系统不同的只是会导致虚拟机不同,但不会影响字节码文件。

JVM的结构体系