虚拟机字节码执行引擎

“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的

执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎

则是由软件自行实现的,因此不受物理条件制约地定制指令集与执行引擎的结构体系,能够

执行那些不被硬件直接支持的指令集格式。

在《Java虚拟机规范》中制定了Java虚拟机字节码执行引擎的概念模型,这个概念模型成为

各大发行商的Java虚拟机执行引擎的统一外观(Facade)。在不同的虚拟机实现中,执行引擎

在执行字节码的时候,通常会有解释执行(通过解释器执行)和编译执行(通过即时编译器产生

本地代码执行)两种选择,也可能两者兼备,还可能会有同时包含几个不同级别的即时编译器

一起工作的执行引擎。

从外观看,所有的Java虚拟机的执行引擎输入、输出都是一致的:输入是字节码二进制流,

处理过程是字节码解释执行的等效过程,输出的是执行结果。