開啟主選單

求真百科

跨平台

跨平台概念是軟件開發中一個重要的概念,即不依賴於操作系統,也不依賴硬件環境。一個操作系統下開發的應用,放到另一個操作系統下依然可以運行。相對而言如果某種計算機語言不用修改代碼即可做到高度跨平台,那麼此語言就越抽象,硬件控制力就越低,只適合開發高度抽象的模型系統。諸如PHP和易語言,都已做到了跨平台。它們將可以在多種系統下開發,運行和維護。

目錄

簡介

跨平台泛指程序語言、軟件或硬件設備可以在多種作業系統或不同硬件架構的電腦上運作。廣義而言,一般的計算語言都可做到跨平台,開發商只需要提供各種平台下的Runtime/中間件環境即可。嚴格而言是指用某種計算機語言編制的程序只需要做小量的修改,編譯之後即可在另外一種平台下運行,此時並不提供Runtime/中間件環境。例如Java是一種提供Runtime環境的跨平台解決方案,而C是一種標準且嚴格的跨平台語言。大部分電腦語言從絕對意義而言,都是跨平台的:因為都是以高級的、人類可讀的方式來對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程式。[1]

參考文獻

  1. 跨平台搜狗