JVM是Java Virtual Machine(Java虚拟机)的缩写,是在Java编译器和操作系统平台之间的虚拟处理器,JVM可以运行在各种操作系统平台上,如Windows、Linux、Mac OS等。

JVM是Java平台的核心和基础,它是一种基于底层的操作系统和硬件平台,并利用软件方法来实现的抽象的虚拟处理系统,JVM负责解析和执行Java字节码程序。

 

1)JVM的运行原理

Java编译器针对特定的JVM,生成JVM能理解的字节码文件。Java源文件经过编译器的编译,生成字节码文件(.class文件)。运行Java程序时,JVM将字节码文件中的每一条指令翻译成对应的机器码,最后在对应的平台上运行。

JVM原理分析_Java

图1 JVM的运行原理[1]


2
)操作系统载入JVM的步骤

JVM是Java程序运行的容器,同时也是操作系统的一个进程,因此JVM有自己的运行生命周期,也有自己的代码和数据空间。

JVM在整个JDK中处于最底层,负责与操作系统的交互,用来屏蔽操作系统环境,提供一个完整的Java运行环境。操作系统装入JVM是通过jdk中java.exe来完成,操作系统通过下面4步载入JVM:

  • 创建JVM装载环境和配置

  • 装载jvm.dll

  • 初始化jvm.dll并挂接到JNIENV(JNI调用接口)实例

  • 调用JNIEnv实例装载并处理Class:

  • 加载.class文件

  • 管理并分配内存

  • 执行垃圾收集

 

3) Java的平台无关性

Java语言的一个重要的特点就是平台无关性,而使用JVM是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入JVM后,Java语言在不同平台上运行时不需要重新编译。Java语言使用JVM屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在JVM运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,把字节码解释成具体平台上的机器指令执行,这也是Java程序能够“一次编译,处处运行”的原因。