跨平臺
跨軟體平臺
指支援多種作業系統的軟體。
- 資料庫管理系統(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是一份跨平臺开发的文档指导。
註釋
- . java.sun.com. [2011-10-19]. (原始内容存档于2011-10-06).