都说java是跨平台的,但为什么是跨平台呢,.我稍微解释一下。
java语言编写的程序要先经过编译的,但这个编译不是生成特定平台的机器码,而是生成一种与平台无关的字节码。
java语言里负责解释执行字节码文件的是Java虚拟机(Java Virtual Machine)。JVM是运行字节码文件的虚拟计算机。所有平台上的JVM向编译器提供相同的编程接口,而编译器只需面向虚拟机,生成虚拟机能理解的字节码,然后由虚拟机解释执行。之所以说Java跨平台是因为字节码与平台无关,但不同平台的JVM是不同的,但它们向编译器生成的Java字节码程序都提供了相同的接口,但它们适应不同的平台的接口不同。JVM是Java跨平台的关键,只要为不同平台实现了相应的虚拟机,那编译生成的相同的字节码文件就可以被解释后执行了。相同的字节码在不同的平台上是不能直接运行的,要通过JVM这个转换器来解释执行。
总结:Java跨平台,原因是相同的字节码文件在不同的平台上的不同的Java虚拟机解释执行的,没有虚拟机,就只好“呵呵”了。