Java引进Java虚拟机技术,针对不同的平台,完全由软件模拟或由软件和硬件共同模拟,实现一台虚拟的计算机。在Java中引入了虚拟机的概念,即在机器和编译器之间加入了一层抽象的虚拟的机器。

 

这台虚拟的机器在任何平台上都提供给编译器一个共同的接口。编译器只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来执行。在一些JVM实现中,还可能会将虚拟机代码转换为特定系统的机器码执行,以提高执行的效率。在Java中,这种供虚拟机理解的代码叫做字节码(ByteCode),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器, 解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。

 

可以说,Java虚拟机是Java语言的基础。它是Java技术的重要组成部分。Java虚拟机是一个抽象的计算机,和实际的计算机一样,它具有一个指令集并使用不同的存储区域。它负责执行指令,还要管理数据、内存和寄存器。Java解释器负责将字节代码翻译成特定机器的机器代码。

 

Sun公司制定的Java虚拟机规范在技术上规定了JVM的统一标准,具体定义了JVM的下述细节:

 

指令集(中央处理器[CPU])

寄存器

类文件格式

 栈

垃圾收集堆

存储区

 

制定这些的目的是为了提供一种统一的编译Java源代码的规范,最终实现Java软件的平台无关性。因为编译生成的字节码文件是针对JVM的,是平台无关的。接下来,任何不同的时间或场合下,都可以在JVM上采用Java运行时解释器解释执行该字节码文件,也就是由JVM将字节码指令解释为特定平台的机器码指令并执行。在这一过程中,JVM起到翻译的作用,针对不同平台,开发不同的JVM就好比多个翻译将一份某种语言的作品分别翻译成不同的语言版本,达到信息交流的目的。

 

文章链接:http://liuweimaldini.0fees.net/?p=59