Java是可以跨平台的编程语言,那我们首先得知道什么是平台,我们把CPU处理器与操作系统的整体叫平台。
Java的跨平台是指它们在“编译系统”生成的中间文件的字节码(byte code)文件不需要重新编译,就可以直接被“运行系统”使用;C/C++的跨平台是指不要重新写代码,需要重新编译成“运行系统”对应的机器码(binary code)后,才能够被“运行系统”使用;
Java, C#的跨平台是建立在“虚拟机”的基础上的,通过虚拟机在程序运行时将“编译系统”生成的字节码(byte code) 转换成“运行系统”的机器码(binary code),属于解释性语言;
C / C++是在“编译系统”上直接将代码生成“运行系统”上的机器码(binary code),属于编译性语言;
java, C#的跨平台受“虚拟机”的限制,如:
1、.net环境只在windows上有,linux(Android)和unix(ios)都不支持;
2、Java手机平台主要是Android支持,windows(WP8)和mac(ios系统)都不支持;
3、.net ,和Java虚拟机在xp系统上默认是没安装的;
4、xp系统不支持.net的高版本,如.net 4.5
c/c++不受虚拟机的限制,只要能够编译成“运行系统”的“机器码”即可,这也是为什么现在大量的跨平台应用开发采用c/c++的原因;