一个不算话题的话题,你如果去问大牛,或许根本不懈于回答,但是对于我这种菜鸟而言,还是有必要理解记住。
大多的理解应该是这样的 java的平台无关=一次编译,到处运行,其实这个等号应该是针对象C,C++这种语言而言的,当编译C或者C++,所获取的二进制文件只能适合指定的硬件平台和操作平台的(这个二进制文件包含了一些机器码,而且字节顺序还依赖特定平台,比如高位在前,低位在前等),而编译java形成的是java class文件,而class文件适合任何支持Java虚拟机的硬件平台和操作系统上的二进制的文件。
上述的解释是从java程序的执行过程而言的。
另外的一个角度可以从java程序的编写来说,java的编写依赖java api,java api的class文件是与主机平台密切相关的,由于在程序执行的时候java api调用了本地方法,java程序就不用调用他们了,通过这种方法,Java API class文件为底层提供了具有平台无关性,标准接口的Java程序。这样对于java程序而言,无论平台内部如何,Java API都会有同样的表现和预测行为。
正是由于在每个特定的平台都明确实现了Java虚拟机和Java API,才或有java的无关性。