如今主流的手机平台不少,好比:Windows开发的Windows Phone(WP-"X"),java
Apple(苹果公司)开发的ios,Google(谷歌)开发的android,等等!android
而这些操做系统平台的语言支持大同小异;ios
一、Windows Phone上支持VB,C#,C,C++;windows
二、iOS上支持Object-c,C,C++;架构
三、android上支持java,C,C++;操作系统
既然如此,咱们要想开发一款应用,并且兼容主流平台都能应用,并且不想写太多的代码,咱们如何选择开发语言呢?答案是:咱们能够选择C++语言。.net
C++语言是如何跨平台的?开发
一、首先说一下,C#,java也跨平台,它们是怎样跨平台的?编译器
C#,java跨平台,指的是,通过“编译系统” 编译,生成中间文件“字节码”,这样的字节码通过不一样平台“解释器”再解释一次,就变成了适应各个平台的“机器码”。虚拟机
二、而C++语言,源代码是直接通过编译器编译成“操做系统”能够执行的“机器码”,
那么它是怎么跨平台的呢?由于支持C++语言的各个平台的架构不一样(好比CPU可以处理的指令集不同),因此一份C++源代码要想在另外一个操做系统平台上执行,就必须用该平台相对应的C++代码编译器对C++源代码从新进行编译,生成该平台能够直接执行的机器代码。
它的执行过程是:预处理->编译->汇编->连接->机器码
三、我一直觉得:汇编指令是字节码,而不是二进制文件,实际上错了,字节码也是二进制文件,只不过它与具体的机器码不一样,具体的机器码是与具体的运行设备有关的,而汇编指令是与具体的硬件环境无关的。
因此说java,C#跨平台是创建在“虚拟机”的基础上的,经过虚拟机,将字节码 经过“解释器”,解释成 机器码。(java的虚拟机,C#的.net运行时环境)。因此也有的人说java,C#是解释性语言,而C、C++是编译性语言。
java,C#的跨平台受到"虚拟机"的限制,如:
一、.net环境只能在windows下有,Linux(Android),和Unix(ios)都不支持;
二、java虚拟机平台主要是Android支持,Windows(WP)和Mac(ios)都不支持;
三、.net环境、java虚拟机 在windows上默认是没有安装的。
四、java虚拟机能够配置在mac,windows(PC操做系统)上,可是不能配置在WP,IOS(移动操做系统)上,只能配置在android(移动操做系统)。
因为C/C++不受虚拟机限制,一份一样的源程序,只须要在每一个不一样的平台从新编译一次,就能够在各类平台上运行应用程序。而java则是编译一次,而后放到不一样平台的java虚拟机上运行!
由于java最后是解释执行的,C,C++不须要解释执行,因此C++的执行速度更快一些!
总结一下:
一、C++跨平台是一份源代码,在不一样的平台上编译;
二、java跨平台是一份源代码,编译后生成中间字节码,而后经过 不一样平台的java虚拟机来解释执行的。