
1.2 Java的工作机制
Java编译器先将源程序翻译为与平台无关的字节代码(byte code),然后由在特定平台下运行的Java解释器来解释执行字节代码文件,其工作原理如图1-1所示。解释器对Java程序屏蔽了底层的操作系统和硬件平台的差异,因此同一个Java程序代码可以不加修改地运行在不同的硬件平台和操作系统上。可以说,Java程序代码是在一个Java虚拟机上运行的。
JVM是运行Java程序必不可少的机制。编译后的Java程序指令并不直接在硬件系统的CPU上执行,而是由JVM执行。JVM是编译后的Java程序和硬件系统之间的接口,程序员可以把JVM看作一个虚拟的处理器。它不仅解释执行编译后的Java指令,还进行安全检查。JVM是Java程序能在多平台间进行无缝移植的可靠保证,同时也是Java程序的安全检验引擎。

图1-1 Java程序处理过程
JVM的定义:JVM是在一台真正的机器上用软件方式实现的假想机器。JVM使用的代码存储在扩展名为.class的文件中。JVM的某些指令很像真正的CPU指令,包括算术运算、流控制和数组元素访问等。
Java虚拟机规范提供了编译所有Java代码的平台。因为编译是针对假想机的,所以该规范能让Java程序独立于平台。它适用于每个具体的硬件平台,以保证为JVM编译的代码的运行。JVM不但可以用软件实现,而且可以用硬件实现。
Java虚拟机规范对运行时数据区域的划分及字节码的优化并不做严格的限制,它们的实现依平台的不同而有所不同。JVM的实现称做Java运行时系统,简称Java运行时(Java Runtime Environment,JRE),其作用是把编译过的字节代码“翻译”成所在硬件平台可以辨别的机器码并执行。
Java运行时必须遵从Java虚拟机规范,这样,Java编译器生成的类文件才可被所有Java运行时系统下载。嵌入了Java运行时系统的应用程序,就可以执行Java程序。目前,有许多操作系统和浏览器都嵌入了Java运行时环境。
Sun Microsystems于1995年发布Java 1.0版本,1997年发布Java 1.1版本,1998年发布Java1.2,Java 1.2及其后的版本有一个统一的名称:Java 2 Platform。
Sun将最近所开发的Java运行环境区分成四大版本,分别是:
·应用于服务器(Server)上的Java EE(Java Platform,Enterprise Edition);
·应用于一般个人计算机(Personal Computer)上的Java SE(Java Platform,Standard Edition);
·应用于小型设备(Mobile Device)上的Java ME(Java Platform,Micro Edition);
·应用在Smart Card上的Java Card。
本书介绍的运行环境为Java SE(Java Platform,Standard Edition)。