1、跨平台开发——分类

来源:互联网 发布:算法导论 第四版 微盘 编辑:程序博客网 时间:2024/05/22 17:47

​ 一般来说,提到跨平台开发的时候指的都是写一个可以在多个不同系列的操作系统中运行程序。但是,我们这儿值得跨平台相对比较广义一些。我们认为“平台”这个词本身是比较模糊的,它至少包含硬件平台和软件平台两种,所以,所谓的跨平台也就分跨硬件平台和跨软件平台之分。跨硬件平台最典型的例子就是Linux内核了。它既可以在x86架构的CPU上运行也可以在ARM平台(手机使用的Android系统就使用了Linux内核)上运行,不仅如此,Linux还可以在那些我们闻所未闻的CPU上运行。跨软件平台,一般都是指跨操作系统,例如既可以在Windows下运行,也可以在Linux下运行,这方面的例子比较多,比如Firefox浏览器。还有些程序硬件平台、软件平台都跨,比如Java,它不仅可以在x86架构的PC上运行还可以在arm架构的手机上运行,甚至在一些不出名的嵌入式设备上也能运行;不仅在Windows运行的不错,在Linux下的运行也像是在自己家里一般。

​ 但是,在不同的层面上还会有不同的分法。所以,跨平台还可以分为源码级跨平台和二进制级跨平台两类。比如Linux内核就是源码级跨平台的,在不同的平台上运行的Linux其实是无法通用的,它们都是通过同一套源代码编译出来的不同的二进制文件(严格来说,源代码也不完全相同)。在有种MAC上就有个“神奇”的程序——Rosetta——可以让为PowerPC编写的程序在X86上运行,从而实现了二进制级别的跨平台。当然,还有大名鼎鼎的Java程序。不过严格意义上老说Java程序不属于二进制级别,而是处于源代码和二进制之间的一个级别——字节码,然在使用Java虚拟机去运行Java程序。所以,严格意义上,Java并没有实现跨平台。Java的左右是让所有程序的运行平台变成了Java虚拟机而不是真正的硬件CPU。

阅读全文
0 0
原创粉丝点击