最开始学习Java时,老师就说Java是跨平台的,而c++不是,这里要纠正一下观点,c++也是跨平台的,只不过是实现跨平台的方式不同而已。
1、平台
一般我们把CPU处理器与操作系统的整体叫平台。不同的平台识别的指令架构是不同的。无论哪种语言编写的程序都需要依托平台来运行。
2.c++跨平台的方式
首先看一张与C语言有关的图:
C语言是跨平台的,不过是“源码级”跨平台。不同的操作系统提供了不同的编译器,通过编译器实现了跨平台。所以有C语言“一次编写,到处编译”。
值得注意的一点:我们都知道c++的库函数一般是二进制文件,显然二进制文件是不能能跨平台。那么这些函数库是如何实现跨平台的呢?
库是在编译的时候都已经区分好了,二进制的版本只有当前平台的,用预定义来分别平台和选择要编译的代码。
3.Java的跨平台方式
Java程序能够跨平台是因为Jvm(Java虚拟机),不同的平台可以安装不同的Jvm。也就是我们常说的一次编写,到处运行。
总结一下:
1、C++跨平台是一份源代码,在不同的平台上编译。
2、java跨平台是一份源代码,编译后生成中间字节码,然后通过 不同平台的java虚拟机来解释执行的。