java语言编写的程序需要经过编译步骤,但是这个编译步骤并不是经过编译生成特定平台的机器码(通常有3中平台,windows,linux和MacOS),而是生成一种于平台无关的字节码文件,也就是*.class类型的文件。这种文件必须使用java虚拟机解释执行。即是jvm(Java Virtual Machine)。JVM是可运行java字节码文件的虚拟计算机。所有平台上的JVM向编译器提供相同的编程接口,而编译器只需面向虚拟机,生成虚拟机可以理解的代码。然后有虚拟机负责执行。
生成的字节码文件不面向具体的平台,只面向jvm,但是不同平台上的虚拟机是不同的。虚拟机是java能一次编译,处处运行的关键部分,只要为不同的平台提供与其相应的虚拟机即可。编译后的java字节码就可以在该平台上运行了。
java源文件(.java的文件)------------通过javac的编译------字节码文件(.class文件)---------通过各个平台的虚拟机--------特定平台的机器码。