高级语言经过编译器之后的处理

各位大虾,既然计算机不能直接识别高级语言,所以通过编译器编译之后生成中间代码,最终生成目标代码即机器语言,直接交给计算机CPU处理,那么为什么还有C#和Java、C++等... 各位大虾,既然计算机不能直接识别高级语言,所以通过编译器编译之后生成中间代码,最终生成目标代码即机器语言,直接交给计算机CPU处理,那么为什么还有C#和Java、C++等高级语言的跨平台之说呢?他们的运行跟操作系统还有那么大的关系吗?小弟不解,忘各位大虾帮忙解答,不胜感激~~~~~~~~

Java的库是如何做到跨平台?
展开
 我来答
enochwills
2010-08-31 · TA获得超过4793个赞
知道大有可为答主
回答量:2031
采纳率:96%
帮助的人:1642万
展开全部
假设你的程序有两种源代码,一种是C语言写的,一种是java写的,现在要发布到这几个平台上:
1、Windows 7/xp/vista...
2、Linux RedHat/Fedora/Unbutu...
3、Symbian S60/S50(手机)

那么源程序如果是C语言的,需要找下面的工具:
1、VC60/VS2008,负责编译生成VISTA/XP/WIN7用的.exe文件
2、G++,负责编译生成Linux用的可执行程序
3、Symbian用的C++编译器,不说也罢

如果源程序是JAVA语言的,那么需要做的仅仅是用javac编译、jar打包,然后:
1、确保目标WIN7/XP/VISTA安装了java虚拟机
2、确保目标LINUX安装了java虚拟机
3、确保目标手机Symbian系统已安装了支持同版本的java虚拟机

看明白没有?C语言编译器是直接把源程序一步翻译为目标计算机(16位,32位,64位)的指定芯片(X86或ALPHA PPC,RISC)、指定操作系统(WINDOWS,DOS,LINUX,SYMBIAN)用的特定可执行程序目标码,

而JAVA编译器是把程序翻译为中间码,由虚拟机将中间码解释为最终的指定芯片、指定操作系统的可执行程序目标码

严格来说,C和C++、JAVA都是跨平台的,但C#肯定不是,至少目前还没有人在LINUX上做C#的实现。

不同的是,C和C++是通过不同平台上的不同编译器实现跨平台
JAVA是通过不同平台的不同虚拟机实现跨平台

这样说你看懂了没有?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式