博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
跨平台语言
阅读量:5326 次
发布时间:2019-06-14

本文共 1299 字,大约阅读时间需要 4 分钟。

现在主流的手机平台很多,比如: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虚拟机来解释执行的。

 

转载于:https://www.cnblogs.com/-yan/p/6882441.html

你可能感兴趣的文章
js格式化时间
查看>>
IdentityServer4同时使用多个GrantType进行授权和IdentityModel.Client部分源码解析
查看>>
web.xml加载顺序详解
查看>>
什么是框架?使用框架有什么好处?
查看>>
CSU-2031 Barareh on Fire
查看>>
Nodejs异步异常处理domain
查看>>
【linux高级程序设计】(第八章)进程管理与程序开发 4
查看>>
一、JavaSE语言概述
查看>>
在.NET中操作数字证书(新手教程)
查看>>
收集国内速度快的Debian或者Ubuntu源
查看>>
Sky数
查看>>
Slick教程
查看>>
Java经典23种设计模式之行为型模式(二)
查看>>
PyCharm的使用教程
查看>>
(十八)策略模式-代码实现
查看>>
前端第一步完成-第二步开始迈进
查看>>
Windows Phone开发(3):棋子未动,先观全局 转:http://blog.csdn.net/tcjiaan/article/details/7253259...
查看>>
激动人心的时刻已经过了 WP8 SDK现身 转:http://www.cnblogs.com/woteboniu/archive/2012/07/26/wp8-sdk.html...
查看>>
Tesseract 3 语言数据的训练方法【转】http://blog.csdn.net/dragoo1/article/details/8439373
查看>>
Android 基于Socket的聊天应用【转】http://www.cnblogs.com/-run/archive/2012/04/07/2434837.html...
查看>>