跨平台语言

Posted love _荣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跨平台语言相关的知识,希望对你有一定的参考价值。

现在主流的手机平台很多,比如:Windows开发的Windows Phone(WP-"X"),

Apple(苹果公司)开发的ios,Google(谷歌)开发的android,等等!

而这些操作系统平台的语言支持大同小异;

1、Windows Phone上支持VB,C#,C,C++;

2、iOS上支持Object-c,C,C++;

3、android上支持java,C,C++;

既然如此,我们要想开发一款应用,而且兼容主流平台都能应用,而且不想写太多的代码,我们如何选择开发语言呢?答案是:我们可以选择C++语言。

 

C++语言是如何跨平台的?

     1、首先说一下,C#,java也跨平台,它们是怎样跨平台的?

C#,java跨平台,指的是,经过“编译系统” 编译,生成中间文件“字节码”,这样的字节码经过不同平台“解释器”再解释一次,就变成了适应各个平台的“机器码”。


     2、而C++语言,源代码是直接经过编译器编译成“操作系统”可以执行的“机器码”,

      那么它是怎么跨平台的呢?因为支持C++语言的各个平台的架构不同(比如CPU能够处理的指令集不一样),所以一份C++源代码要想在另一个操作系统平台上执行,就必须用该平台相对应的C++代码编译器对C++源代码重新进行编译,生成该平台可以直接执行的机器代码。

  它的执行过程是:预处理->编译->汇编->链接->机器码

 

       3、我一直以为:汇编指令是字节码,而不是二进制文件,实际上错了,字节码也是二进制文件,只不过它与具体的机器码不同,具体的机器码是与具体的运行设备有关的,而汇编指令是与具体的硬件环境无关的。

 

      所以说java,C#跨平台是建立在“虚拟机”的基础上的,通过虚拟机,将字节码 通过“解释器”,解释成 机器码。(java的虚拟机,C#的.net运行时环境)。所以也有的人说java,C#是解释性语言,而C、C++是编译性语言。

 

java,C#的跨平台受到"虚拟机"的限制,如:

1、.net环境只能在windows下有,Linux(Android),和Unix(ios)都不支持;

2、java虚拟机平台主要是Android支持,Windows(WP)和Mac(ios)都不支持;

3、.net环境、java虚拟机 在windows上默认是没有安装的。

4、java虚拟机可以配置在mac,windows(PC操作系统)上,但是不能配置在WP,IOS(移动操作系统)上,只能配置在android(移动操作系统)。

 

由于C/C++不受虚拟机限制,一份同样的源程序,只需要在每个不同的平台重新编译一次,就可以在各种平台上运行应用程序。而java则是编译一次,然后放到不同平台的java虚拟机上运行!

 

因为java最后是解释执行的,C,C++不需要解释执行,所以C++的执行速度更快一些!

 

总结一下:

    1、C++跨平台是一份源代码,在不同的平台上编译;

    2、java跨平台是一份源代码,编译后生成中间字节码,然后通过 不同平台的java虚拟机来解释执行的。

 

以上是关于跨平台语言的主要内容,如果未能解决你的问题,请参考以下文章

跨平台移动开发语言

为啥 Java 被称作是“平台无关的编程语言”?

编译性语言不如解释性语言跨平台性好

节:跨平台的语言Java和跨语言的平台JVM

节:跨平台的语言Java和跨语言的平台JVM

为什么Java可以跨平台,而其他语言不行