跨平台
![本页使用了标题或全文手工转换](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
![]() | 此条目可参照英语维基百科相应条目来扩充。 (2022年2月6日) |
跨平台(英语:cross-platform software、multi-platform software、platform-independent software)泛指编程语言、软件或硬件设备可以在多种作业系统或不同硬体架构的电脑上运作。[1]
跨软体平台
指支援多种作业系统的软体。
- 资料库管理系统(DBMS):
- 网站伺服器、应用程式伺服器:
- 网际网路浏览器:
- 可在不同作业系统上进行软体开发的程式语言。
大部分计算机语言从绝对意义而言,都是跨平台的:因为都是以高级的、人类可读的方式来对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系统上运行。
另外许多编程语言还有跨平台的扩展以及中间件,这样程序员对于同样的源代码,只要进行一点小修改,就可以在不同平台下编译/运行,例如Qt和wxWidgets。
跨平台与网络
网络应用虽然由不同的语言来编写,但在不同的平台下,通常由网页浏览器来访问。这是由于代码在服务器端运行,然后再通过HTTP和(X)HTML与用户端进行通讯。
网页如果可以通过任何浏览器,或者说任何较新的浏览器正常访问,有时就可以被认为是跨平台的,或者跨浏览器的。只要作者提供合适的代码,当然这需要一些专业知识,如不同浏览器在实现网络标准上的差异。
如果有的浏览器无法读取网页中所包含的一些内容,比如Flash动画,针对此类没有安装特定插件的情况,如果有另外的补救措施,比如提供内容丰富的图片展示,或者提供MPEG-2格式的动画材料下载,也可以看作是跨平台的。
当网页通过各种设备来访问,比如屏幕阅读器、盲文网页浏览器,以及小型设备,诸如手机、PDA等,跨平台的网页亲和力就需要了解不同的用户,以及各种技术标准,
跨平台编程指导
跨平台编程不是一件容易的事情,这是由于在不同平台之间,有许多小而复杂的差异,这都需要考虑周全。wyoGuide是一份跨平台开发的文档指导。
注释
- ^ Design Guidelines: Glossary. java.sun.com. [2011-10-19]. (原始内容存档于2011-10-06).