Java虚拟机有两个无关性,即平台无关性和语言无关性。再此我们要明白一点:Java虚拟机不和包括Java内的任何语言绑定,它只是与“Class文件”这中特定的二进制文件格式有所关联,Class文件包含了Java虚拟机指令集和符号表以及若干其他辅助信息。
Java在刚刚诞生之初曾经提到过一个非常著名的宣传口号:“一次编写,到处运行”。Java的平台无关性即体现在此处,可以在多个平台上运行。各种不同平台的虚拟机与所有平台都统一使用的程序存储格式---字节码(byteCode)是构成平台无关性的基石,字节码(一组以8为字节为基础单位的二进制流)是与平台无关的,而任何虚拟机都可以载入和执行字节码来实现“一次编写,到处运行”。
而语言无关性是指Java虚拟机并不止执行java程序,也考虑让其支持其他语言的运行。实现这点的基础任然是java虚拟机采用统一的存储格式-字节码,虚拟机只和字节码有关,而与其他无关。