Linux讓設備受益
嵌入式系統(tǒng)開發(fā)商從開源操作系統(tǒng)中受益。
Linux的傳統(tǒng)根據(jù)地在于服務器和工作站,而它正在這之外的非常小的設備上取得成功。對于嵌入式系統(tǒng)開發(fā)人員來說,Linux優(yōu)于專有操作系統(tǒng)的優(yōu)勢除了低成本外,還在于其靈活性和開放性。
消費電子產品市場對新技術有著永不滿足的需求,但是使用來自Microsoft和Symbian等公司的專有嵌入式平臺的開發(fā)人員,必須受限于某一廠商提供的設備驅動程序和對新硬件的支持。然而,他們的開源社區(qū)同行常常在技術剛一推出時開始修補它們。他們開發(fā)的代碼也許很糙,但開發(fā)過程很快,這反過來可以使他們更快地制造出原型產品,更早地上市以取得市場先機。
Linux還使開發(fā)復雜的嵌入式應用變得更容易。用于嵌入式設備的傳統(tǒng)RTOS(實時操作系統(tǒng))是在單處理器線程中運行單個任務的單用途平臺。嵌入式Linux類似于它的重量級表兄,是設計用于運行多個應用的通用操作系統(tǒng)。這種通用性幫助開發(fā)人員滿足客戶日益復雜的基礎需求。此外,沒有復雜的專有許可條款為開發(fā)人員提供了定制各個層次應用的自由,他們可以選擇他們需要的部件而忽視另一些。
廠商之間的競爭對于顧客肯定是件好事。在嵌入式Linux市場上,MontaVista和Wind River等廠商不僅與專有操作系統(tǒng)廠商競爭,而且還相互競爭。此外,一些設備制造商還選擇“單干”,獨立于操作系統(tǒng)廠商生產自己風格的嵌入式Linux。然而Linux是開源操作系統(tǒng),每一種變種都成為由開發(fā)人員、客戶和合作伙伴構成的大生態(tài)系統(tǒng)的一部分,都在為這個更大的整體做貢獻。
這種“競爭式協(xié)作”仍給其他公司留出了利用額外的工具擴大Linux基礎的空間。例如,Trolltech提供的Qtopia:一種迅速開發(fā)嵌入式Linux應用和用戶界面的全面的環(huán)境。核心Qtopia技術可依據(jù)Gnu GPL(通用公共許可證)使用,從而為開發(fā)人員在Qtopia代碼上帶來了在Linux內核上所享受到的同樣的可見性。同樣,Nokia發(fā)布了自己的開源應用平臺Maemo。該平臺可以在Nokia 770 Internet Tablet等嵌入式設備上找到。
這些工具為開發(fā)人員帶來了額外的優(yōu)勢:熟悉性。Qtopia是基于Trolltech歷史悠久的桌面Linux系統(tǒng)Qt工具包的;Maemo基于來自Gnome項目的類似技術。其結果不同于專有操作系統(tǒng),應用開發(fā)人員可以利用自己已有的技能為嵌入式操作系統(tǒng)開發(fā)軟件。
這些優(yōu)勢意味著陣營越來越龐大的Linux驅動的設備。從Sharp PDA到TiVo機頂盒,從Linksys無線路由器到Motorola手機,越來越多的公司將寶押在Linux上,把它作為在快速發(fā)展的、高度競爭的設備市場中取得成功的跳板。
開源社區(qū)推動腳本采用
現(xiàn)代腳本語言在開放上取得成功。
腳本語言,有時叫做“動態(tài)”語言,變得非常流行,其中一個原因是它們能讓開發(fā)人員利用比較小的代碼完成很多工作。這種“高相對價值”源于將更多的工作交給編譯器和運行時間環(huán)境(如按變量值得到變量類型)去做的新方法——除了完成經(jīng)常執(zhí)行活動的特殊捷徑外。
包括Perl、PHP和Python在內的腳本語言還有另一個共同點:它們幾乎統(tǒng)統(tǒng)都是開源語言。在很多地方,開源與非開源之間的不同之處可能并不重要,但開源似乎在腳本語言中至關重要。奇怪的是,這點并不是由于開源在修補漏洞中的靈活性的原因,而是由于其創(chuàng)建社區(qū)的能力。
比較兩種幾乎同時問世的腳本語言Ruby和NetRexx的命運,是看到開源重要性的生動例子。NetRexx是由IBM設計、部分基于其成功的大型機腳本工具Rexx的。它以解釋方式運行,也可以編譯為Java字節(jié)代碼。作為一種語言,NetRexx具有很高的生產力并易于學習掌握,提供大量的優(yōu)雅的結構。由于它可編譯為Java字節(jié)代碼,從NetRexx中可以訪問所有的Java庫,此外,它享受著Java虛擬機的性能。
另一方面,Ruby是純解釋語言,它沒有虛擬機,因此運行速度慢。這種語言有它自己的優(yōu)點,但主要優(yōu)勢來自采用部分起源于Perl縮略語法不直觀的句法成分。NetRexx與Ruby還有另一個重要的共同之處:它們都是免費提供的。
那么,這兩種語言中哪一個更成功呢?是快速、典雅的NetRexx,還是不直觀、速度慢的Ruby呢?事實可能與你所料的正相反,的Ruby躊躇滿志而NetRexx卻瀕臨死亡。
關鍵原因在于Ruby是開源而NetRexx不是。結果是Ruby能夠建立一個活躍的開發(fā)員社區(qū)——特別在它的誕生地日本,它已經(jīng)流行了10年。Ruby在David Heinemeier Hansson編寫Web應用框架Ruby on Rails之前一直在積累發(fā)展動力。Rails是Ruby的殺手應用,它是設計典雅的典范,保證了Ruby發(fā)揮持久的作用。同時,盡管NetRexx有著巨大的價值,卻蹣跚而行,無人理睬。如果IBM開放了NetRexx源代碼,腳本技術可能是一番完全不同的景象。
僅憑開源本身肯定不能保證一種語言取得成功。實際上,現(xiàn)在有很多沒有成功希望的開源語言。盡管開源并不是成功的充分條件,但卻是必要條件。缺少它是缺少Microsoft創(chuàng)建社區(qū)的資源。