原地址:http://www.cnblogs.com/028fly/archive/2010/04/04/1704248.html
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 好象就是微软的公共语言什么的