Java虚拟机的本质是实现Java代码在不同操作系统下无差别执行,可以实现“一次编写,到处执行”的效果。虚拟机就是一个虚拟的计算机,可以编译字节码实现不同平台的跨越。
Java虚拟机类似于一个万能翻译人员(JVM),他会将你说的汉语(字节码)翻译成不同的语言(不同的操作系统的不同指令),比如英语(Windows),法语(Linux),德语(Unix),日语(Mac),而这些语言可以帮助他们理解你说的话,可以让他们听了你的话后去干一些事情(执行机器命令)。至于这个万能翻译人员是怎么翻译的,你可以不用管。
这个万能翻译是怎么翻译的?其实很简单,首先他要听懂你说的汉语(类装载器接收),然后他要组织好完整的翻译语言,不能出错(字节码校验器校验),最后他要把你说的汉语翻译成别人能听懂的外语(解释器解释,或者JIT编译器编译)。
通过这个形象的比喻,我们可以更好的理解Java虚拟机的工作原理。