关于java的跨平台特性

我不知道我这样理解对不对,比如我有两个电脑,一个是win7-32一个是win7-64.我分别为两个电脑安装了对应版本的JDK。然后把编一个程序,分别在两台电脑上解释执行,都可以,这就叫跨平台?
可是C程序也可以分别在不同系统的电脑上运行啊~

谁能给我个解释?

  java的确是一个跨平台语言,而且它跨平台不只是限于Windows系统,可能你不太了解其他的系统,java不仅可以运行在Windows上,还可以运行在Linux,Mac Os等类UNIX系统,或者是一些嵌入式系统,他的平台无关性表现在用它写的程序不需要任何本地化代码(native code),本地化代码,在该平台的jre或者jdk已经封装完毕了。他实现这样的跨平台特性依靠于他特殊的机制,就是利用编译器编译为中间代码(也就是以Java Bytecode,即字节码形式保存的class文件),并且在各个平台上的JVM(Java虚拟机)的解释器(可以理解为“翻译官”的角色)进行进一步的解释。因此其实java是走两个工序的,“源代码”->"字节码"是一个工序,即编译,他是具有跨平台性的;然后是"字节码"->“机器语言”这一道工序,是把字节码这种形式向机器解释为机器能够读懂的机器码形式,这道工序也是具有跨平台性的。
当然,可能java本身功能有限,所以它还提供了一个叫做JNI的东西,可以加载本地化代码,支持动态链接数据库(即dll)或者是类UNIX系统上的Service Object(即so),为了保证这时仍有一定的通用性,一般会根据运行时系统选择不同的本地库。
C语言本身是有多种版本,或者说是多种编译器的,在许多平台上都可以获得支持,但是这种支持的通用性有限,比如写一个Windows上的程序,在Linux上不能正确编译和运行。因为C语言等,会被各个平台适应的编译器编译为适应这个平台的版本,例如Windows下的二进制可执行文件(.exe格式),他在其他平台是无法执行的,因为他是针对Windows系统的,别的系统的解释器不懂怎么解释这种“奇怪的语言”,因为这个解释器只会“他自己”的“语言”和机器语言。而Java则是有自己的解释器,因此可以代替该系统的解释器。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-31
额,怎么说呢,Java之所以跨平台性,是因为有java虚拟机JVM的存在,咱们日常用的代码不直接与平台进行交互,也不考虑平台版本什么的属性,只需要与JVM交互,JVM负责承上启下的中转。再详细我也不知道咋说了。。希望能帮到你
第2个回答  2013-07-31
JAVA的,只要编译器版本相同(大版本),得到的.class,就可以跨平台运行。

C的要在不同的平台中分别编译的。
第3个回答  2013-07-31
不同系统上的C程序差很多的,得在不同的平台上编译,好多代码都得根据平台做改动. Java就不用这么麻烦了,一次编码在所有平台上都能跑 只要你装的虚拟机
第4个回答  2013-07-31
你的意思是对的 java只需要安装虚拟机 就可以在一个平台上编译 然后在另外一个平台上运行
你举得例子不太好 因为两个版本的win 并不能算是两个完全不同的平台
如果是windows和苹果的mac 结果就完全不一样了
你在windows里用c语言写了一个程序 然后直接传到mac里 你在看看 肯定运行不了java的就可以只要mac里也装了对应mac版本的java虚拟机 这就叫跨平台本回答被网友采纳
相似回答