跳转到内容

跨平臺

本页使用了标题或全文手工转换
维基百科,自由的百科全书
(重定向自跨平台

跨平台(英語: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).