java中引入了虚拟机的概念,即在编译程序和机器之间加入了一层抽象的虚拟的机器。这台虚拟机在任何平台都提供给编译程序共同的接口。
编译程序只需要面向虚拟机,生成虚拟机能理解的代码,再由解释器将其转换为特定系统的机器码。这种供虚拟机理解的代码就是字节码,即扩展名为class的文件。它不面向特定的处理器,只面向虚拟机。
java源代码经过编译器编译后变成字节码,字节码由虚拟机解释执行。虚拟机将每一条要执行的字节码发送给解释器,解释器再将其翻译成特定机器的机器码,然后再运行。
java源代码->编译器->字节码->jvm->jvm中的解释器->二进制机器码->程序运行
跨平台,可移植