java的程序有一处编译,到处运行的特点,这和它独特的编译原理有关。 请看下图: 首先,Java的程序文件(即源代码*.java文件)经过编译会生成*.class文件(又称为字节码文件),此文件是Java特殊的关键所在,它在系统中的jvm(Java虚拟机)中被执行,在不同的操作系统中被解释为不同的机器指令从而被执行。
在Java虚拟机中,程序首先被类装载器处理加载类文件,然后进入字节码校验器检查代码的语法规范性以及安全性,接着进入解释器把抽象的字节码指令映射到本地系统平台下的库引用或指令,最后到操作系统平台运行。
不同类型的平台上安装了不同的Java虚拟机,这些不同的Java虚拟机屏蔽了各个不同平台的差异,正是因为jvm,Java程序才具有跨平台性(*.c或者*.cpp文件所生成的.exe文件只能在此电脑中运行)。