首页 理论教育 语言的平台无关性

语言的平台无关性

时间:2022-02-28 理论教育 版权反馈
【摘要】:Java程序的跨平台主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上正确运行。字节代码是与平台无关的。Java虚拟机将字节码文件与操作系统及硬件分开,保证了字节码文件在不同平台上运行的正确性。下面通过一个类比的例子说明C语言和Java语言跨平台的区别。而中国人都具有将普通话翻译成家乡话的能力,相当于Java虚拟机,如图1-4所示。而C语言是实现了源程序代码级的跨平台。

1.2.3 Java语言的平台无关性

Java程序的跨平台主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上正确运行。其原因主要是:

(1)Java语言是与平台无关的。它没有“依据机器的不同而不同”或“由编译器决定”等字眼。因此,Java语言编写的程序在不同平台上都是完全一样的。

(2)字节代码是与平台无关的。由Java编译器产生的字节代码是二进制码,它与具体的计算机处理器代码无关。

(3)Java虚拟机隐藏了不同平台的差异。字节码文件并不是直接运行在计算机平台上,而是运行在Java虚拟机上。Java虚拟机将字节码文件与操作系统及硬件分开,保证了字节码文件在不同平台上运行的正确性。

下面通过一个类比的例子说明C语言和Java语言跨平台的区别。假如一个外国人想和一个广东人、上海人和陕西人聊天。但这个外国人只懂英语,广东人只懂粤语,上海人只懂上海话,陕西人只懂陕西话。这样,这位老外必须将他的话分别翻译成粤语、上海话和陕西话,这三位中国人才能听懂。在这里做如下类比,英语相当于C语言,地方话相当于不同计算机平台的机器指令。在不同计算机平台上,C语言源程序必须经编译链接,形成该平台所识别的机器码文件后才能运行,如图1-3所示。

img4

图1-3 C语言的机器代码在不同计算机平台上的相关性

如果这位老外将英语翻译成普通话,就不需要分别翻译成地方话。而中国人都具有将普通话翻译成家乡话的能力,相当于Java虚拟机,如图1-4所示。

img5

图1-4 Java的平台无关性

由此可见,Java语言实现了二进制代码级的平台无关,在网络上实现了跨平台的特性。而C语言是实现了源程序代码级的跨平台。

Java语言这种“一次编写,到处运行(write once,run anywhere)”的方式,有效地解决了目前大多数高级程序设计语言需要针对不同系统来编译产生不同机器代码的问题,即硬件环境和操作平台的异构问题,大大降低了程序开发、维护和管理的开销。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈