跨平臺





跨平台泛指编程语言、软件或硬件设备可以在多种作業系統或不同硬體架構的電腦上運作。



跨軟體平臺


指支援多種作業系統的軟體。



  • 資料庫管理系統(DBMS):


    • MySQL:Solaris、Linux、Windows、FreeBSD


    • Oracle:Solaris、Linux、Windows



  • 網站伺服器、應用程式伺服器:


    • Apache:Solaris、Linux、Windows、FreeBSD


    • Tomcat:Linux、Windows、FreeBSD



  • 網際網路瀏覽器:


    • Mozilla Firefox:Linux、FreeBSD、Solaris、AIX、Windows


    • Opera:Windows、Linux、Mac、FreeBSD、Solaris、BeOS、OS/2、QNX、Symbian


    • Chrome:Windows、Linux、Mac、FreeBSD


    • QupZilla:Windows、Linux、OS/2、Haiku



  • 可在不同作業系統上進行軟體開發的程式語言。


    • C语言、C++、Java


    • Perl、Tcl、Erlang、PHP、Ruby、Lisp


    • Python、Delphi+Kylix、REALbasic




大部分计算机语言从绝对意义而言,都是跨平臺的:因为都是以高级的、人类可读的方式来对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与用户端进行通讯。


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


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


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



跨平臺编程指导


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







Popular posts from this blog

Lambaréné

維納斯堡 (華盛頓州)

Mononymous person