服务热线:400-889-1636
业务联系:021-5230 0317
客户服务:021-5230 0319
在线咨询: 
网站建设,网站制作,企业网站建设,网上商城,网站推广,域名注册,求创科技
网站建设,网站制作,企业网站建设,网上商城,网站推广,域名注册,求创科技
首页 求创资讯 软件开发软件开发中的跨平台这件事儿
求创动态行业资讯网站建设网页设计微网站手机网站H5动画系统开发APP开发交互设计微信小程序网站维护

    软件开发中的跨平台这件事儿

  • 来源:百家号-联智博库
    作者:
    转载时间:2019-7-24 10:00:07
跨平台很神秘吗


刚刚开始做开发的时候,感觉跨平台是那么高大上,就像夕阳下,湖面上的一朵白莲花,只可远观,不可亵玩焉。那么,跨平台到底是怎么一回事儿。难道真的有什么东西可以跨平台吗,这就像一台多功能交通设备,投到水里能游,放到陆地上能跑,扔到天上能飞,加速到第二宇宙速度都能脱离地球了进行星际航行了。



揭开跨平台神秘面纱


让我们一起来揭开跨平台神秘的面纱,比起一种语言是不是跨平台的,我们更关心的是功能可不可以跨平台,毕竟我们使用各种开发语言是为了实现某些功能。举个例子,假设我们打算用 Java 开发了一款游戏,这个游戏要跨 Mac、Windows、桌面版Linux 三个平台,怎么完成这个功能呢。


假设要完成游戏中人物的显示,这样一个看似很简单的功能,程序从上层向下层要做下面这些:


1、最上层 Java 要调用一个图像相关的类库;


2、这个类库要调用系统层提供的接口,比如显卡驱动相关接口;


3、这个显卡驱动相关的接口又调用了显卡的硬件接口;


我们再从下向上分析一下,如果要做到跨平台要做到什么?


1、最后调用到了硬件接口,那么首先要保证硬件是相同的,比如显卡是相同的,这就要保证世界上各大显卡厂商使用相同的标准;


2、再往上保证显卡配套的显卡驱动接口是相同的;


3、再往上还要保证系统暴露给上层的驱动接口调用 API 是相同的,这就要求三个平台具有相同的驱动 API 标准;


通过以上我们发现一个语言可不可以跨平台要看它的下一层是不是跨平台,依次类推,最后总会到达硬件层次。最后得出的结论就是只有硬件是同一种标准,那才能实现真正意义上的跨平台。但是由于历史、商业等等各种原因,导致完全统一标准几乎是不可能的。


所以目前所说的语言跨平台、框架跨平台都是用其他方式实现的,并且我们可以把这里的平台理解为语言、框架的下一层级的载体。


几种语言的跨平台方式


比如说 HTML是跨平台的,他跨的平台指的是浏览器,浏览器几乎都遵循 w3c 标准,所以 HTML 是这样实现跨平台的。


比如说 C语言是不是跨平台的,C 语言常常被用在偏底层的开发。那么 C 语言是如果在多个平台运行的呢?首先要编写代码,编写的代码要兼容要跨的平台,要支持 windows 平台,那么就要为 windows 实现一套代码,要支持 Linux 就要为 Linux 实现一套,然后当要执行的时候,简单粗暴的说就是加上 if else做个判断,是哪个平台就用其对应的代码,著名的 GUI 开发框架 Qt j就是这个原理嘛,框架本身帮你做好了平台判断,在哪个平台就用哪个平台下的 GUI 接口,所以开发者只需要调用它包装包的接口即可。写完代码之后,拿这套代码到各个平台去编译成当前平台需要的格式,这里又涉及到了编译器,不同平台下的编译器也是不同, windows 下的编译器需要把 C 代码编译成 windows 下可执行的文件格式,Linux 下的编译器需要把 C 代码编译成 Linux 下的可执行文件格式。


再比如说 Java, Java 的口号是 Write once, run anywhere,也就是一次编写,到处运行(跨平台运行)。听上去比 C 语言还要厉害,写一次就好,不用再到各个平台上去编译,厉害了。这都要归功到 JVM(Java 虚拟机)上,JVM 有他自己的字节码格式和具体的执行机制,只要把 Java 代码编译成 JVM 需要的字节码即可。以开发者的视角,确实是跨平台了。但是具体是怎么实现的呢?首先我们安装 JDK 的时候会根据平台不同选择不同的版本,当然 JVM 也就选择了不同的版本,而代码要执行的时候,不同平台版本的 JVM 会根据自身所在的平台,把字节码转换成平台所需的机器码。看着是不是很眼熟,这不就是 C 语言里不同平台的编译器吗。


回到最开始提到的那个交通设备,真的要把把它做出来,那要具备涡轮一类的推水装置、 路面行走的轮子、喷气式装置,甚至核能推进器。总结起来就是说,要跨平台就要有对应平台的功能实现。作为开发者来说,我们使用的一些语言或框架可以方便的跨平台,不需要我们关系细节,是因为语言或框架本身帮我们做了繁杂的适配工作。


揭开跨平台的面纱,是不是感觉这概念没那么神秘了。
本文内容为转载,如原作者有异议,请联系本站撤除。
  • TOP

  • 关于我们

    上海求创科技有限公司成立于2001年,是一家专注于为客户提供高端网站策划、网站建设、网页设计、品牌网络营销以及相关的基于互联网应用服务的专业公司。

    更多

    全国客户服务热线

    400-889-1636

    网站建设,网站制作,企业网站建设,网上商城,网站推广,域名注册,求创科技-微官网 网站建设,网站制作,企业网站建设,网上商城,网站推广,域名注册,求创科技-手机网
    友情链接: 域名超市 | 苏州网站优化 | 手机网站建设 | 营销型网站建设 | 企业网站建设 | 网页设计 | 网站建设 | 网站优化 | 网站设计 | IPv6 升级 | 微信开发 | H5开发 | 系统开发 | 网站维护 | 海外社会化媒体推广 | 上海网站设计 |
    业务热线:021-52300315 021-52300317 业务部:sales@dn.cn 售后服务:service@dn.cn 投诉邮箱:info@dn.cn 域名和主机服务:021-52300319
    地址:上海市静安区镇宁路168号16楼A室 邮政编码:200040
    版权所有©上海求创科技有限公司 沪ICP备13005298号-24  网站地图 沪公网安备 31010602003962号