JVM(Java Virtual Machine)是Java运行的基石。它向下通过映射规则关联并操作所有操作系统,向上提供一系列的JavaAPI。是Java与硬件无关,与操作系统无关,跨平台运行的关键存在。
JVM不关心Java源文件,只关心源文件生成的class file,并映射到OS的系统调用,帮助开发者屏蔽了不同操作系统的区别,比如在windows下,一行Java代码最终被解释为一个windows下的本地指令,而在linux,一行Java代码又会被最终解释为linux下的本地指令,使程序员不必针对不同操作系统的本地指令进行编程。
谈起JVM,不得不提的便是JDK与JRE。JDK物理存在,是Java语言的SDK,是JRE,JVM以及一系列编译,调试工具的集合。JRE物理存在,由JavaAPI和JVM组成,提供了Java应用程序运行的环境。三者的关系图如下。
总的来说,我们利用JDK开发Java应用程序,通过JDK中携带的编译工具将Java源文件翻译成Java字节码文件,并在JRE上运行,再由JVM解析字节码,映射到CPU指令集或不同OS的系统调用。