跨平臺
![本頁使用了標題或全文手工轉換](http://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).