首先,我们来看一下Java程序运行过程
由图一所示,很明显他与C/C++不同,C/C++语言都是直接编译成针对特定平台的机器码。如果要跨平台,需要使用相应的编译器重新编译。而Java源程序(.java)要先编译成与平台无关的字节码文件(.class),然后字节码文件再解释成机器码运行(解释是通过Java虚拟机来执行的)。字节码文件不再面向任何具体平台,只面Java向虚拟机。Java虚拟机是可运行Java字节码文件的虚拟计算机。不同平台的虚拟机是不同的,但它们都提供了相同的接口。
因此,Java语言具有一次编译,到处运行的特点。就是说编译后的.class可以跨平台运行,前提是该平台具有相应的Java虚拟机。由于Java的跨平台原理决定了其性能没有C/C++高,所以Java性能比C/C++要低。