JVM体系结构由五部分组成,分别是寄存器、栈、废区收集堆、存储区和指令集,这五部分是Java虚拟机的逻辑成份,不依赖任何实现技术或组织方式,但它们的功能必须在真实机器上以某种方式实现。
JVM体系结构目的和原理
Java的设计目的是应用于当前使用日益广泛、影响日益扩大的互连网络。这是一个异构平台环境,可能存在多种不机型,如Intel公司的x86系列,Apple/IBM/Motorola公司的PowerPC机等等。每一种机型都有其特定的中央处理机(CPU)芯片,各芯片的处理过程是不同的。因而通用软件通常需要为每一种类型的机器特别编写版本,以保证正确运行。为了克服这一困难,实现语言的通用性和易移植性,Java的设计者采取的方法是选择一种机器作为编译的目标机,再将编译结果在其它机型上解释执行。但选中的目标机并非上述任何一种实用机型,而是一个假设的处理机平台,称为Java虚拟机JVM(JavaVirtualMachine)。
那么,什么是Java虚拟机呢?
我们可以把它定义为:运行编译生成的Java目标代码(即.class类文件)的计算机的实现。JVM体系结构实际上是建立在实际处理机基础上的假想计算机。这一假想机可以通过软件仿真实现,也可以通过硬件实现。鉴于目前大多数Java虚拟机还是用软件方法实现的,我们这里介绍的内容也多基于软件实现。
Java编译器产生的字节码由JVM指令构成,而JVM是虚设的,不接近于任何一种实用机型,这样,一方面编译结果具有平台中立性,不同机型的解释器都可以将字节码文件转换为本机型CPU芯片的适宜机器码来执行。对JVM这一层次而言,操作系统和硬件层都是透明的,用户编写的Java程序,可以在任何平台上运行而无需修改。另一方面,编译生成的字节码接近源生码(nativecode),可以在任何硬件平台上以较高速度解释运行,实现较高的效率。这样,Java通过虚拟机JVM来试图达到分布式系统的两个相抵触的重要特性:易移植性和高效性之间的平衡和协调。
接着,我们进一步了解一下JVM体系结构,包括JVM的指令集、操作码和操作数语法以及取值范围等。
【编辑推荐】