JAVA语言为什么能跨平台?

因为Java程序编译之后的代码不是能被硬件系统直接运行的代码,而是一种“中间码”——字节码。然后不同的硬件平台上安装有不同的Java虚拟机(JVM),由JVM来把字节码再“翻译”成所对应的硬件平台能够执行的代码。因此对于Java编程者来说,不需要考虑硬件平台是什么。所以Java可以跨平台。
因为它有虚拟机(JVM),JAVA程序不是直接在电脑上运行的,是在虚拟机上进行的,每个系统平台都是有自己的虚拟机(JVM),所以JAVA语言能跨平台。
java代码不是直接运行在CPU上,而是运行在java虚机(简称JVM)上的。   

  java是先把java文件编译成二进制字节码的class文件,jvm就解释执行class文件。   

  就是因为java是运行在jvm上的,所以它的代码就能不经修改,就能在不同平台的jvm上运行(在UNIX用UNIX的jvm,在linux上用linux的jvm,在windows上用windows的jvm)   

  假如用windows移植到UNIX,只需把java文件是UNIX的jvm上编译成class文件,然后用jvm运行就可以了.

 

Java虚拟机Java Virtual Machine) 简称JVM

 

Java为什么能跨平台,.NET为什么能跨语言?

Java之所以能跨平台,是因为java虚拟机能跨平台。
.NET之所以能跨语言,就简单的说吧 任何代码在最终要变成机器语言,所以 对于机器来说无论你用才C# 还是VB.NET 最后的意思表达都是一样的, 只不过机器在中做了翻译的过程; 中间有N 多专有名词 反正都是通过.net Framework 所谓的虚拟机。JAVA 也是这套机制 只不过。NET 有MSIL 好象就是微软的公共语言什么的