跳转到内容

跨平台

本页使用了标题或全文手工转换
维基百科,自由的百科全书

跨平台(英语:cross-platform softwaremulti-platform softwareplatform-independent software)泛指编程语言软件硬件装置可以在多种操作系统或不同硬件架构的电脑上运作。[1]

跨软件平台

指支持多种操作系统的软件。

大部分电脑语言从绝对意义而言,都是跨平台的:因为都是以高级的、人类可读的方式来对CPU发号指令,这样也就没必要依赖于任何操作系统。但如果要用系统的部件工具箱,来新建用户图形界面(GUI),就可能会用到开发员特定系统中的API函数或库类。虽然C++是跨平台的,但Windows下用到Win32 API的C++程序,一般就不能在Unix机器上编译。不同编译器对语言规范的解释也有所差异。这样的话,在针对不同系统进行构建之前,程序就得加以考虑。

一些如Java这样的语言,从一开始就意识到要在各个平台下运行,所以跨平台在其平台的本地语言环境中已经实现。例如,Java可以跨平台使用,正是由于Swing库在许多平台下的实现。类似的,能进行跨平台的文件存取,是因为有各自平台下文件存取的库。以此类推,各种跨平台问题,都需要各自的本地库来解决。wxWidgets框架就是这样的一个跨平台库,根据不同的跨平台问题,提供了许多不同的解决方案;类似的库有许多,可以根据不同语言的跨平台开发,而采用相应的库。

针对每种操作系统、CPU,而提供并测试各自的编译版本,这种做法的可行性很小;开源软件则允许用户自己来编译目的码(object code),这样在跨平台方面更好一些。类似的,那些解释型语言,或者需要虚拟机的语言,也更加符合跨平台的要求,因为用户也要自己进行编译。Sun公司的Java虚拟机HotSpot,只针对几种而不是全部平台,提供编译好的二进制文件。例如,Sun对于GNU/Linux,只支持i386平台,但如果谁在PowerPC或者SPARC电脑上运行Linux,就只好自己编译本地的机器码(machinecode),或者使用第三方软件,才能运行Java程序。

许多API(应用程序接口)依赖于平台。OpenGL可以看作是跨平台的,因为其不依赖于任何特定的操作系统、CPU构架或者某个牌子的图形装置。特定平台的API可以在其他系统上作为兼容层而新建,例如Wine的库,Windows程序就可以在UNIX系统上运行。

另外许多编程语言还有跨平台的扩展以及中间件,这样程序员对于同样的原始码,只要进行一点小修改,就可以在不同平台下编译/运行,例如QtwxWidgets

跨平台与网络

网络应用虽然由不同的语言来编写,但在不同的平台下,通常由网页浏览器来访问。这是由于代码在伺服器端运行,然后再通过HTTP和(XHTML与用户端进行通讯。

网页如果可以通过任何浏览器,或者说任何较新的浏览器正常访问,有时就可以被认为是跨平台的,或者跨浏览器的。只要作者提供合适的代码,当然这需要一些专业知识,如不同浏览器在实现网络标准上的差异。

如果有的浏览器无法读取网页中所包含的一些内容,比如Flash动画,针对此类没有安装特定插件的情况,如果有另外的补救措施,比如提供内容丰富的图片展示,或者提供MPEG-2格式的动画材料下载,也可以看作是跨平台的。

当网页通过各种装置来访问,比如屏幕阅读器盲文网页浏览器,以及小型装置,诸如手机PDA等,跨平台的网页亲和力就需要了解不同的用户,以及各种技术标准,

跨平台编程指导

跨平台编程不是一件容易的事情,这是由于在不同平台之间,有许多小而复杂的差异,这都需要考虑周全。wyoGuide是一份跨平台开发的文档指导。

注释

  1. ^ Design Guidelines: Glossary. java.sun.com. [2011-10-19]. (原始内容存档于2011-10-06).