语言跨平台的理解

烈酒焚心 提交于 2020-02-03 17:55:44

什么是平台

我们把CPU处理器与操作系统的整体叫平台。

CPU大家都知道,8086,Intel与AMD....,每个CPU使用或相同或不同的指令集。指令集就是cpu中用来计算和控制计算机系统的一套指令的集合。指令集又分为精简指令集(RISC)与复杂指令集(CISC),每种cpu都有其特定的指令集。

操作系统是充当用户和计算机之间交互的界面软件,不同的操作系统支持不同的CPU,严格意义上说是不同的操作系统支持不同CPU的指令集。

语言跨平台

我们说的语言跨平台是编译后的文件跨平台,而不是源程序跨平台,如果是源程序,任何一门语言都是跨平台的语言了。所谓“不跨平台”,只是编译出来的目标代码是机器相关的而已。
 

C语言为什么不能实现跨平台

 我们知道,只要是用标准C开发的程序,使用不同的编译器编译后的可执行文件是可以在对应平台运行的,比如windows可以使用VC编译,那编译后的.exe文件就可以在windows下运行;liunx下可以使用GCC编译,生成的可执行文件就可以在Liunx上运行。
到这里请大家思考一个问题:“VC编译的.exe能在Liunx上运行吗?”,显然是不能的,C语言最后编译出来的二进制文件,不同的CPU识别含义不同,所以为什么说C语言不能实现跨平台运行,就是因为它编译出来的输出文件的格式,只适用于某种CPU,其他CPU不能识别。


java为什么能实现跨平台

 


①首先java编译后产生.class文件,在经过JVM(虚拟机)产生可执行文件。对于编译产生的.class文件(字节码文件)与平台无关。也就是说,不管你是windows系统的计算机还是linux系统的计算机。产生的.class文件都一样
②而在linux平台上装linux的JVM,在windows平台下装windows的JVM,windows平台下的JVM把.class文件解释成windows平台下的指令集,linux平台下的JVM把.class文件按照linux平台下的指令集解释。所以windows平台下的.class按照linux平台下的指令集解释,这样就实现了跨平台

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!