設(shè)置
  • 日夜間
    隨系統(tǒng)
    淺色
    深色
  • 主題色

“自主”手機操作系統(tǒng):如何來判定,又該怎么做

2012/9/22 10:24:04 來源:新浪科技 作者:魏永明 責編:木木

編者注:這是一篇難得的科普及技術(shù)分析,從五方面詳細地闡述了近日甚囂塵上的“自主”手機操作系統(tǒng):為何政府企業(yè)都說要“自主”操作系統(tǒng)、考核政策的不足、如何判定一個操作系統(tǒng)是否“自主”(阿里云算不算)、如何開發(fā)及相關(guān)建議等,長達萬字堪稱論文,可用如上索引像查工具書一樣查看所需。

——政府需要在更長的周期內(nèi),考核受資助企業(yè)的市場份額是否有擴大,是否建立了良好的生態(tài)系統(tǒng),讓使用者、開發(fā)者欲罷不能,而不是簡單的著作權(quán)證書和專利數(shù)量,或者是否達到了一個給定的出貨量(因為出貨量是可以作假的)。

——馬云同志啊,光有錢是不行的,你身邊還得有個把技術(shù)大牛幫你把關(guān)、出謀劃策才行啊。

——這事兒如果恰好讓你負責,那簡直是,怎么說呢,是個“揚名立萬”的機會啊!可你要知道的是,這事兒和制造“兩彈一星”差不多。

魏永明(飛漫軟件CEO)

近一個月可謂多事之秋,IT和互聯(lián)網(wǎng)領(lǐng)域也不平靜:阿里云操作系統(tǒng)受到谷歌打壓,華為任正非提出要開發(fā)自己的操作系統(tǒng),中興也宣布今年第四季度將發(fā)布操作系統(tǒng)。一時間,微博上有關(guān)自主知識產(chǎn)權(quán)操作系統(tǒng)的討論甚囂塵上。這樣的討論就像水木清華某些版面上的“月經(jīng)貼”一樣,隔段時間就要火一次。但大部分討論如同盲人摸象,大家基本上只是站在自己的立場,基于個人經(jīng)驗判斷孰是孰非。

這篇科普性的文章,將從政治、技術(shù)、工程、法律等幾個方面說明“自主”操作系統(tǒng),并嘗試給出一些技術(shù)、工程等方面的建議。

本文所指“操作系統(tǒng)”,以及大家近期討論的操作系統(tǒng),其實基本上僅限于移動終端領(lǐng)域,就是指能和Android、iOS、Windows Phone等相提并論的操作系統(tǒng),主要用于智能手機、平板電腦,而不是實時操作系統(tǒng)、操作系統(tǒng)內(nèi)核或者服務(wù)器操作系統(tǒng)——準確講,應該是指一個針對智能手機和/或平板電腦的軟件平臺以及對應的生態(tài)系統(tǒng)。不過,我們當前還是把它稱為“操作系統(tǒng)(OS)”吧。

一、為什么政府和企業(yè)都說要“自主”操作系統(tǒng)?

對到底要不要“自主”操作系統(tǒng)的問題,不同的人有不同看法。碼農(nóng),尤其是喜歡Google的碼農(nóng),通常會說,Android是完全開源的,沒有必要重復發(fā)明輪子;企業(yè)決策者或者政策制定者,則往往認為必須有自主的操作系統(tǒng)。

在談“自主”操作系統(tǒng)的必要性之前,筆者先談?wù)劇白灾鳌辈僮飨到y(tǒng)的不必要性:

在開源軟件大行其道的今天,操作系統(tǒng)不再那么神秘,任何有足夠財力的企業(yè),依賴現(xiàn)有的開源軟件,都可以比較容易地推出一個能夠運行的操作系統(tǒng)。出于此觀點,很多人認為有Android這樣的開源操作系統(tǒng),就沒有必要再開發(fā)一個自己的操作系統(tǒng)了,到底誰擁有開源操作系統(tǒng)的知識產(chǎn)權(quán),是無所謂的事情。

這個說法是有一定道理的。

從法律(指開源軟件許可證)和技術(shù)上講,就算谷歌不打算開源新的Android版本,不允許某些廠商使用Android,我們一樣可以在已經(jīng)開源的Android之上繼續(xù)發(fā)展自己的Android系統(tǒng)——只要遵循已經(jīng)開源的Android的許可證約束即可,而Android系統(tǒng)主要使用的開源軟件許可證有GPL(Linux內(nèi)核)、LGPL(各種運行時函數(shù)庫)、Apache(Dalvik虛擬機及Java類庫),其實是非常寬松的。

這個說法的不足之處在于,未考慮到可能的專利(軟件相關(guān)的專利通常和實現(xiàn)無關(guān),就是說,你重寫一段代碼,并不表示你可以規(guī)避對應的專利),以及是否有能力自行發(fā)展Android的問題。

前者非常要害。谷歌在開發(fā)Android,尤其是Dalvik虛擬機以及Java類庫的過程中,肯定積累了大量專利,而這些專利是凌駕于軟件的著作權(quán)和許可證之上的。也就是說,如果你基于現(xiàn)有的Android派生了一個分支,想要將這個Android派生版本運行在自己的手機里并銷售,谷歌馬上可以拿出專利大棒來限制你。當前,谷歌尚未拿出專利大棒來限制各種派生系統(tǒng)。在阿里云OS和谷歌最近的爭論中,谷歌也只是說阿里云OS導致Android 不兼容。但一旦有廠商真的使用了阿里云OS,谷歌馬上就會拿出專利大棒,這將毫無疑問。

至于有沒有能力來自行發(fā)展Android的問題,在中國有大量碼農(nóng)基數(shù)的基礎(chǔ)上,只要有源代碼,就可以在短時間內(nèi)組織團隊自行發(fā)展Android。

然后,是“自主”操作系統(tǒng)的必要性:

強調(diào)需要“自主”操作系統(tǒng)的主要有兩類人:政府中的政策制定者以及大型企業(yè)的決策者。

對政策制定者來講,面對未來由中美兩國主導的國際環(huán)境,作為兩極世界中的中國,有沒有自主的芯片、操作系統(tǒng),關(guān)系到兩個層面:一個是國家安全,一個是面子。在這樣的認識下,“核高基”的出現(xiàn)自然而然,其目的是支持國內(nèi)企業(yè)發(fā)展核心電子器件、高端通用芯片及基礎(chǔ)軟件產(chǎn)品。我們暫且不談核高基項目在實施過程中存在的制度性問題,它表明的國家是在戰(zhàn)略上的一種布局,是一種國家意志,涉及到政治領(lǐng)域。

作為企業(yè)決策者,沒有自主的操作系統(tǒng),他將在很多方面受制于人。就拿阿里云和谷歌的爭議事件來看,宏碁受到了來自谷歌的壓力,然后就乖乖投降了。這里邊有兩個值得思考的地方:(1)既然Android這么好,為什么宏碁還要和阿里OS合作?后者肯定沒有Android成熟啊。(2)為什么谷歌一施壓,宏碁就放棄了和阿里OS的合作呢?顯然,宏碁有動機選擇另一個OS給自己的智能手機,可能的原因無外乎兩種:阿里給錢了或者宏碁不希望被谷歌控制;另外,宏碁又那么容易地被谷歌搞定,說明谷歌能帶給宏碁的利益遠遠大于阿里。

另外聯(lián)想到微軟向Android廠商收取專利許可費的事情,像宏碁這樣的廠商,肯定也會被微軟勒索,也包括中興、華為等國際化的Android 手機廠商,無一例外。對企業(yè)決策者來講,這很難受——給別人做嫁衣啊,有時候還兩頭受氣!所以,小的廠商需要投靠大樹來庇護自己(大多數(shù)乖乖就范于谷歌或微軟),大的廠商就要考慮是不是開發(fā)一個“自主”的操作系統(tǒng)來抗衡了。

這樣的思路下,華為、中興等大的智能手機廠商,開發(fā)“自主”操作系統(tǒng)的動機非常強。

像阿里這樣的公司,開發(fā)OS的目的是要復制谷歌的商業(yè)模式,加上阿里OS又沒有撇清和Android的關(guān)系,受谷歌的打壓就在情理之中了。

二、“自主”考核政策之殤:生態(tài)系統(tǒng)才是活下去的關(guān)鍵

根據(jù)上面的分析,看來我們還真的需要有“自主”的操作系統(tǒng)。但是,“自主”到底是自主什么呢?

在功能手機和實時嵌入式系統(tǒng)領(lǐng)域,我們不是沒有“自主”的操作系統(tǒng),比如MTK或者展訊的操作系統(tǒng),以及諸如早期的Hopen、道系統(tǒng)等。在通用操作系統(tǒng)領(lǐng)域,國家也長期支持了諸如麒麟操作系統(tǒng)、紅旗Linux、中標Linux、新華Linux等多家本土操作系統(tǒng)廠商。但市場表明,國家支持的這些操作系統(tǒng)都將消亡或者正在消亡。

本人認為,國家支持下進行“自主”操作系統(tǒng)開發(fā)的確有合理之處,畢竟開發(fā)操作系統(tǒng)是一件比較困難的事情。但是,這里邊有一個重要的誤區(qū)和制度設(shè)計上的錯誤,就是只強調(diào)了“自有知識產(chǎn)權(quán)”,而沒有強調(diào)“自己主導”。

在強調(diào)“自由知識產(chǎn)權(quán)”的情況下,政府對受資助企業(yè)的“自主”操作系統(tǒng)進行考核時,大部分情況下考核的是企業(yè)有沒有獲得對應的知識產(chǎn)權(quán),就是軟件的著作權(quán)和/或?qū)膶@?,而并沒有考核能否主導一個產(chǎn)業(yè)鏈。受資助的企業(yè),能否類似谷歌控制產(chǎn)業(yè)鏈一樣,做到讓別人用了你的操作系統(tǒng),就沒法不繼續(xù)用下去?在這樣的思路下,政府需要在更長的周期內(nèi),考核受資助企業(yè)的市場份額是否有擴大,是否建立了良好的生態(tài)系統(tǒng),讓使用者、開發(fā)者欲罷不能,而不是簡單的著作權(quán)證書和專利數(shù)量,或者是否達到了一個給定的出貨量(因為出貨量是可以作假的)。

也就是說,我們應該重新定義“自主”這兩個字,從“自有知識產(chǎn)權(quán)”向“有效知識產(chǎn)權(quán)保護下的自己主導”轉(zhuǎn)移。

為什么這里強調(diào)“有效知識產(chǎn)權(quán)”呢?這是因為,在開源軟件成為趨勢的情況下,構(gòu)建一個自己的操作系統(tǒng),可以使用很多已有的開源軟件,我們沒有必要所有代碼都自己編寫,而且越底層的代碼就越?jīng)]有必要自己重寫一遍。這如同一只桃子,好吃的是果肉,而不是果核。像內(nèi)核、基礎(chǔ)庫、常用運行時函數(shù)庫等等,都不必自己重新開發(fā)。而且這么做幾乎沒有任何潛在的法律問題,當然,前提是你要告訴大家你用了哪些開源軟件,而且你也尊重了這些開源軟件的許可證。這樣下來,一個操作系統(tǒng)的軟件著作權(quán)已經(jīng)不再重要,重要的是相關(guān)的專利、自己獨有的創(chuàng)新以及圍繞操作系統(tǒng)建立起來的生態(tài)系統(tǒng)。

三、如何判定一個操作系統(tǒng)是否“自主”:阿里云算不算?

那么,“自主”操作系統(tǒng)應該長什么樣?要回答這個問題,我們先看看假的“自主”操作系統(tǒng)長什么樣。所謂假的“自主”操作系統(tǒng),就是那些號稱“自主”操作系統(tǒng),但其實:

·只是在已有的開源操作系統(tǒng)之上加了一層皮。比如各種基于Android的第三方ROM,比如MIUI、Flyme等。這種操作系統(tǒng)僅僅在UI/UE上做了一些工作,就如同一個人換了一身衣服那樣,實質(zhì)上這個人不會因為換了一身衣服而從張三改叫成李四。

·修改了已有開源操作系統(tǒng)的內(nèi)部代碼,做了一些優(yōu)化或者去掉了別人的一些東西,添加了一些自己的內(nèi)容。比如阿里OS就屬于這種,或者哪些號稱深度定制的Android系統(tǒng)也屬此類。這種做法如同整容,的確動了些刀子,甚至改變了性別,但人還是那人,改了名字或性別也還是那人。

這么類比下來,讀者應該就知道了,真的“自主”操作系統(tǒng),必須要有自己的靈魂,通俗一點講,不是換衣服或者整容,只有換了腦袋的才能是一個全新的個體。

那么在操作系統(tǒng)當中,什么東西是靈魂?這個問題回答起來蠻難的。我們先看看哪些東西肯定不屬于靈魂:

無法形成有效知識產(chǎn)權(quán)的軟件組件,或者說,滿世界有很多(開源的)實現(xiàn)的軟件組件。比如內(nèi)核、基礎(chǔ)函數(shù)庫、網(wǎng)絡(luò)協(xié)議、圖形庫、瀏覽器引擎等等。這些東西可以看成是形成一個智能動物(比如“人”)的骨架或者軀體、甚至心臟,但遠遠算不上腦袋或者靈魂。這也是為什么筆者主張在“自主”操作系統(tǒng)中要盡量使用現(xiàn)有的成熟開源軟件、而且不建議再行發(fā)明此類輪子的原因。

要知道哪些東西是靈魂,我們分析下谷歌在和阿里OS爭論的過程中主要維護的是什么東西:

谷歌的說法:阿里云OS采用了Android的虛擬機和Framework,但又不兼容Android,破壞了Android的生態(tài)系統(tǒng)。這個說法可能還不是谷歌打壓阿里OS的最關(guān)鍵原因,但起碼說出了他們的擔憂:阿里OS是想借Android打造自己的一個生態(tài)系統(tǒng)!但除此之外,谷歌對那些只換衣服的Android系統(tǒng)則采取聽之任之的態(tài)度,和他們一貫以來標榜的“只要兼容,我們歡迎”的態(tài)度一致——也就是說,這些系統(tǒng)沒有從根本上動搖谷歌的生態(tài)系統(tǒng)。

所以,真正的“自主”操作系統(tǒng)的靈魂,就是那個背后的、無形的生態(tài)系統(tǒng),一個看似開放但其實封閉的生態(tài)系統(tǒng)。一旦加入這個生態(tài)系統(tǒng),你就很難下來——正所謂“上了賊船下不來”。

這就是我的回答:一個真正“自主”的操作系統(tǒng),必須建立自己的生態(tài)系統(tǒng),一個開放的,但在某種程度上又封閉的生態(tài)系統(tǒng)。

操作系統(tǒng)生態(tài)系統(tǒng)?這名詞大家說了很多年了,一個生態(tài)系統(tǒng)具體應該是什么樣子?筆者從如下幾個方面解釋一下:

技術(shù)層面。操作系統(tǒng)必須通過某種技術(shù)將自己和其他的操作系統(tǒng)區(qū)隔開來。比如Android采用Java語言,但使用了不同于Sun(現(xiàn)在是Oracle)JDK的API;iOS采用了ObjectC語言,為應用程序提供的接口和框架甚至有別于蘋果自己的 Mac OS X;Windows Phone采用了C#語言,在.Net框架下進行開發(fā)。為什么這些操作系統(tǒng)不使用C/C++這類語言呢,C/C++尤其是C可是這些操作系統(tǒng)內(nèi)核的編程語言?。??這里有如下幾個原因:

操作系統(tǒng)開發(fā)者不希望普通的應用程序通過使用比較低級的編程語言來控制系統(tǒng)或設(shè)備,畢竟操作系統(tǒng)是給智能手機、平板電腦這種消費類的電子設(shè)備使用的;通過采用更加高級的語言來簡化編程和開發(fā)人員的學習難度;通過對看起來非常復雜的框架的持續(xù)演進,達到牽著開發(fā)者和廠商鼻子走的效果;便于形成依附于某個操作系統(tǒng)的獨有的開發(fā)者社區(qū)和文化。

法律層面。操作系統(tǒng)必須通過創(chuàng)建自己的有效知識產(chǎn)權(quán)體系來保護自己。前面已經(jīng)說過,越底層的軟件組件越?jīng)]有市場價值(碼農(nóng)們可能不喜歡聽這話,但現(xiàn)實就是這樣的)。通過建立全新的、包裹在底層操作系統(tǒng)之上的框架、編程接口、編程語言等基礎(chǔ)設(shè)施,操作系統(tǒng)開發(fā)商才有可能建立起有別于他人的有效的知識產(chǎn)權(quán)保護體系。也就是說,如果連框架、編程語言、編程接口等都抄襲他人(就算是開源的、許可證允許的),那永遠也無法形成一個可以有效保護自己的知識產(chǎn)權(quán)體系。

市場層面。通過和上下游企業(yè)的合作,建立某種聯(lián)盟或者許可、授權(quán)機制,讓操作系統(tǒng)的用戶(芯片廠商、手機廠商、平板廠商)能夠從中獲益。比如Android開放聯(lián)盟,做的就是這個事情。

開發(fā)者社區(qū)。一個好的操作系統(tǒng)之生態(tài)系統(tǒng),要充分照顧開發(fā)者的利益,具體有如下幾點:要有好的開發(fā)工具,便于開發(fā)者學習、開發(fā)和調(diào)試軟件;要有好的文檔或者教程,幫助開發(fā)者迅速掌握相關(guān)開發(fā)技巧;最重要的,要能夠讓開發(fā)者賺到錢。

看到這里,相信大家都會意識到:這也太難了吧!的確,這非常難,這也是為什么Moblin、MeeGo、Bada、webOS等操作系統(tǒng)相繼失敗,而到目前,只有iOS、Android、Windows Phone這三種操作系統(tǒng)的原因。

但是,世上無難事只怕有心人。接下來我告訴你如何搭建一個真正的“自主”操作系統(tǒng)。

四、如何開發(fā)“自主”操作系統(tǒng):目的、策略和方法

目的

開發(fā)“自主”操作系統(tǒng)的主要目的有兩種:一種是想再造一個類似Android、iOS的操作系統(tǒng),并作為其競爭者;一種僅僅是為了在商務(wù)談判和合作中獲得一個比較好的籌碼。當然,還有一種目的就是騙取政府的財政支持,對這類不良目的,不屬本文討論范圍。

我們先猜度一下國內(nèi)外這幾年出現(xiàn)的一些“自主”操作系統(tǒng),其目的是什么:

Firefox OS:這是Mozilla公司推出的純粹基于HTML5/CSS3/JavaScript 等網(wǎng)頁前端開發(fā)技術(shù)推出的操作系統(tǒng),和HP收購自Palm的webOS有類似的軟件架構(gòu)。HP收購了webOS之后的半年,即宣告放棄webOS,而 Mozilla卻希望通過類似技術(shù)的FirefoxOS成為Android的競爭者。一會兒我們分析下為什么FirefoxOS要比webOS有更強一些的生命力。

華為提出要開發(fā)的“自主”操作系統(tǒng):作為一個智者,任正非不可能不知道一個真正“自主”的操作系統(tǒng)應該是什么樣子的。華為就算再有錢,再有人才,短時間內(nèi)也是搞不定一個“自主”操作系統(tǒng)的(如前所述,主要是建立對應的生態(tài)系統(tǒng)太難了)。這么說來,華為開發(fā)“自主”操作系統(tǒng),其目的其實就是做一個“備胎”,以便在和Android、Windows Phone等合作時能夠有一個可以討價還價的砝碼。也就是說,華為并不是真的要做“自主”的操作系統(tǒng);或者這么說,支持團隊去做,做成Android那樣最好,做不成Android那樣,如果真有一天打起架來可以湊合用也行。

阿里云OS:馬云同志的野心很大,他做阿里OS,就是要復制谷歌在移動互聯(lián)網(wǎng)的商業(yè)模式,進而在移動互聯(lián)網(wǎng)領(lǐng)域推廣阿里體系的服務(wù)和內(nèi)容??上У氖牵R云貌似不太懂技術(shù),也沒個明白人給他做參謀,結(jié)果花了錢還被人捏住了七寸。最新的消息,阿里云OS獨立運行,再投個2億美金繼續(xù)搞。馬云同志啊,光有錢是不行的,你身邊還得有個把技術(shù)大牛幫你把關(guān)、出謀劃策才行啊。

策略

好,面對這兩種開發(fā)“自主”操作系統(tǒng)的目的,應該有什么樣的策略呢?其實策略很簡單,不管你是真心還是假意,都應該按照本文第三章給出的“自主”操作系統(tǒng)之特征進行開發(fā),除此之外,別無他法。任何期望找捷徑的方法,都不可能獲得成功。這里所說的找捷徑的方法具體有:

·給Android整容。如OMS、阿里OS。

·忽略操作系統(tǒng)中生態(tài)系統(tǒng)的重要性,在Linux或其他開源操作系統(tǒng)內(nèi)核、系統(tǒng)庫等基礎(chǔ)上包裹一個簡單的框架而形成的操作系統(tǒng)。這種操作系統(tǒng),其復雜度和Linux發(fā)行版相當,離本人定義的真正“自主”操作系統(tǒng)還差十萬八千里。讀者可能會問,這樣的系統(tǒng)做備胎不是還行嗎?為什么也得按照真做那樣開發(fā)呢?你要知道的是,對手也不是傻子,人家看你的架勢,就知道你不是真做——你起碼得拉出真做的架勢來,人家才能怕你啊!

順便談?wù)勎覍跒g覽器技術(shù)的web操作系統(tǒng)的看法。

理論上講,瀏覽器可以做很多事情,甚至可以替代PC機上的通用操作系統(tǒng)。但是,最新的瀏覽器技術(shù)(HTML5/CSS3等),還存在一些技術(shù)上的問題。主要的問題有如下兩個:

·瀏覽器主要采用的JavaScript編程語言,本質(zhì)上是一種難于管理(源代碼保護、無法進行有效的軟件架構(gòu)設(shè)計、難于調(diào)試等等)的編程語言,同時內(nèi)存消耗巨大,性能不佳。最新的說法是,F(xiàn)acebook創(chuàng)始人直言全面采用HTML5的策略是個失誤,正在向操作系統(tǒng)的原生應用轉(zhuǎn)移。也就是說,JavaScript語言難以承載一個良性發(fā)展的生態(tài)系統(tǒng)。

·因為許多原因(主要是利益和政治因素),HTML5相關(guān)的標準有分裂的跡象,同時進展緩慢。

HTML5技術(shù)作為原生應用的一種補充,可以起到很好的作用,但是,如果要想在瀏覽器技術(shù)上建立一個真正可以和Android等競爭的操作系統(tǒng),恐怕還需要很長的時間(技術(shù)上必須有突破)。要不然,谷歌現(xiàn)在主推的應該是ChromeOS,而不是Android。

現(xiàn)在回答剛才提到的問題:為什么Firefox OS可以比webOS的生命力更長久些?主要的原因是,F(xiàn)irefox OS是開源的,有比較強大的企業(yè)在主導其發(fā)展,作為一個脫胎于開源基金會的企業(yè)(Mozilla公司),也能獲得合作伙伴的一些好感;相反,因為 webOS是封閉,HP又沒有能力像蘋果那樣打造一個完全封閉的平臺和生態(tài)系統(tǒng),所以最終的命運是被人拋棄了。雖然后來webOS也走上了開源的道路,但大勢已去,HP不親自帶頭搞,光靠開源社區(qū)是搞不成的。

方法

假定你是一名“自主”操作系統(tǒng)項目的技術(shù)管理者,你第一步要考慮的問題是什么?許多人的回答可能是:先選操作系統(tǒng)內(nèi)核、基礎(chǔ)庫什么的。其實錯了,第一步要考慮的應該是你打算選擇什么編程語言作為原生應用的編程語言。

世界上的編程語言有很多種,有些語言貼近機器,比如匯編語言、C語言,有些語言貼近人,比如Basic、Java,還有些語言用于特定領(lǐng)域,比如網(wǎng)頁服務(wù)器端使用的PHP,有些適合做不同軟件之間的粘合劑,比如Perl、Python。本文第三章已經(jīng)解釋了編程語言以及圍繞編程語言形成的運行環(huán)境、框架是將操作系統(tǒng)區(qū)隔于其他操作系統(tǒng)的主要技術(shù)特征。因此,我們必須慎重選擇一種編程語言。而且一旦選定了一種編程語言,“自主”操作系統(tǒng)在開發(fā)者看來長什么樣,其實就基本上定了。

選擇編程語言要考慮如下因素:這種編程語言是否易于學習和掌握?是否有龐大的開發(fā)者在使用它?這種編程語言是否具有高級語言的基本特征,比如,支持面向?qū)ο缶幊??這種編程語言是否是編譯執(zhí)行的?這種編程語言是否利于保護開發(fā)者的知識產(chǎn)權(quán)?這種編程語言是否有完整的工具鏈支持?這種編程語言是否有集成開發(fā)環(huán)境的支持?這種編程語言是否易于保護整個操作系統(tǒng)不會被惡意代碼輕易破壞?如此等等。

其實很多讀者看到這里,都會想到Java語言。是的,Java語言或其派生語言如C#是構(gòu)架“自主”操作系統(tǒng)的最佳編程語言??上?,已經(jīng)被Android和Windows Phone給捷足先登了。

如此一來,你可以考慮重新設(shè)計一門類似Java的語言,也可以通過其他手段,讓你使用Java語言構(gòu)建的操作系統(tǒng)有別于其他操作系統(tǒng)。比如,構(gòu)建自己的虛擬機,如Android使用的Dalvik那樣(Dalvik和Oracle的JDK標準虛擬機有很大不同,從而讓Oracle還挺難告贏谷歌的);你也可以用Dalvik,但讓類庫、運行環(huán)境和Android不同(這樣做的法律風險要大一些)。總之,你需要有自己的創(chuàng)新,全部抄襲是不行的。

確定了編程語言,接下來的工作其實就比較直接了,從上而下設(shè)計就是了。主要有:

1、定義和實現(xiàn)提供給原生應用程序的基礎(chǔ)API和/或虛擬機。

2、在應用程序基礎(chǔ)API、標準C/C++函數(shù)庫和相關(guān)組件(通常都是開源軟件)的基礎(chǔ)上構(gòu)建操作系統(tǒng)的運行環(huán)境和框架。主要涉及系統(tǒng)服務(wù)、模塊之間的通訊機制,包括圖形界面、瀏覽器引擎、OpenGL ES支持接口等等。

3、同時選擇操作系統(tǒng)內(nèi)核,通常也就是Linux,要與眾不同,用BSD也行。

4、搞定集成開發(fā)環(huán)境和模擬器,讓開發(fā)者可以在PC機上為你的操作系統(tǒng)開發(fā)應用程序。

5、讓你的操作系統(tǒng)運行在真實硬件上,為開發(fā)者提供應用樣例和文檔。

6、持續(xù)迭代,讓你的“自主”操作系統(tǒng)不停往前發(fā)展。

上面的第一點和第二點,是“自主”操作系統(tǒng)有別于其他操作系統(tǒng),且支撐你可以和其他人競爭的關(guān)鍵點。往下的東西都不是構(gòu)成“自主”操作系統(tǒng)真正競爭力的東西。

這么看來,其實也挺簡單的。不是嗎?貌似有錢、有個把技術(shù)上的明白人就能做到。技術(shù)上沒問題了,市場、法律等方面的事情,請專業(yè)人員幫忙,中國這類人才還是蠻多的,缺的,其實還是技術(shù)人員以及懂系統(tǒng)工程和軟件開發(fā)的管理人員。

案例

這里給大家介紹筆者早先和美國一家公司合作,嘗試搭建的一個操作系統(tǒng),其實在當年這些東西的基礎(chǔ)上,搭建出來一個有別于Android的開源“自主”操作系統(tǒng)還是非常快的。

這個系統(tǒng)使用了Linux內(nèi)核和標準的C/C++函數(shù)庫,以及一些和Android體系結(jié)構(gòu)類似的C/C++運行庫,使用了筆者公司的開源軟件 MiniGUI、WebKit瀏覽器核心引擎等等。基礎(chǔ)的東西就這些。之上是開源的KaffeJVM(后來改成了CacaoJVM),和符合J2SE規(guī)范的類庫實現(xiàn),再往上就是運行環(huán)境和框架了。見下圖:

可惜的是,真正具有核心價值的運行環(huán)境和框架,是美國合作方自己開發(fā)的,我手里沒有源代碼。相信讀者也能明白,美國合作方掌握的才是精華。

如果要在這套系統(tǒng)基礎(chǔ)之上快速開發(fā)一個“自主”的操作系統(tǒng),我們需要:

·重新定義類庫,也就是基礎(chǔ)API,讓我們的系統(tǒng)從靈魂上有別于其他系統(tǒng)。必要的話,優(yōu)化或替代開源的虛擬機(淘寶最近開源了一個JDK虛擬機,不過是針對J2EE的)。

·全新設(shè)計和實現(xiàn)適合于智能手機的運行環(huán)境、框架。

·全新設(shè)計基本的智能手機應用軟件。

·開發(fā)模擬器,并集成到Eclipse集成開發(fā)環(huán)境中。

·還有,這個系統(tǒng)是2006年開發(fā)的,我們還需要將底層的內(nèi)核、基礎(chǔ)函數(shù)庫等更新到比較新的版本。

要做的工作還是蠻多的,但這個系統(tǒng)在2007年的時候,就已經(jīng)可以運行在主頻在200MHz左右的手機上了。

當然,這個系統(tǒng)離本人定義的真正“自主”的操作系統(tǒng)還有很大的距離。但是,起碼技術(shù)上的方向是基本正確的,要知道,這個系統(tǒng)幾乎是和 Android同時發(fā)起的。后來在2007年,谷歌宣布開源Android后,美國合作方敏銳感覺到了Android將是未來的趨勢,就直接轉(zhuǎn)向了 Android平臺,項目也就終止了。

五、給相關(guān)人員的建議

1、給政策制定者:“自主”切忌急功近利

這里所說“政策制定者”主要指的是“核高基”等政府資助項目的決策人。其實前面已經(jīng)說過了,這里重申一下:

政府需要在更長的周期內(nèi)(至少五年),考核受資助企業(yè)的市場份額是否有擴大,是否建立了良好的生態(tài)系統(tǒng),讓使用者、開發(fā)者欲罷不能,而不是簡單的著作權(quán)證書和專利數(shù)量,或者是否達到了一個給定的出貨量(因為出貨量是可以作假的)。也就是說,我們應該重新定義“自主”這兩個字,從“自有知識產(chǎn)權(quán)” 向“有效知識產(chǎn)權(quán)保護下的自己主導”轉(zhuǎn)移;在知識產(chǎn)權(quán)方面,要強調(diào)有效專利數(shù)量,而不是著作權(quán);甚至應該要求受資助企業(yè)按某種許可證條款開放源代碼。

政策制定者甚至可以參照本文第三章給出的“自主”操作系統(tǒng)之定義,將整個“自主”操作系統(tǒng)的研發(fā)和推廣分為三個部分:

·科研類,兩到三年為周期,以研究新的編程語言及其相關(guān)設(shè)施(如虛擬機及其優(yōu)化技術(shù))為主。

·工程類,兩到三年為周期,圍繞指定的編程語言發(fā)展外圍工具鏈(編譯器、調(diào)試器)、開發(fā)工具、運行環(huán)境、框架等。

·法律類,半年到一年為周期,研究和分析采納已有編程語言面臨的知識產(chǎn)權(quán)風險,如何規(guī)避等等。

政策制定者切忌急功近利,要按照客觀規(guī)律辦事,將科研類的課題交給研究機構(gòu),將工程類以及市場推廣等方面的課題交給企業(yè),將法律類的課題交給大專院校。只有這樣,才能首先讓方法正確,方法上正確,加上合理的考核制度,才能讓錢產(chǎn)生真正的效益。

在花錢方面,在一盤大棋下的統(tǒng)一部署下,初期讓多一些的企業(yè)或機構(gòu)參與,一年一驗收,逐步淘汰那些不合格的,最后剩下來一、兩個企業(yè)就好。十億美金,外加企業(yè)自籌部分,我看基本夠了。

2、給大型企業(yè)決策者:“自主”大不易

有意開發(fā)“自主”操作系統(tǒng)的大型企業(yè)決策者首先要明白,開發(fā)“自主”操作系統(tǒng)是一個長期、艱巨的系統(tǒng)工程。甚至,你需要準備一大筆錢來和已有的巨頭打官司(微軟賠付給Sun幾十億美金之后,才讓自己的C#和.Net平臺成為“干凈”的語言和平臺)。

另外,如前所述,不管是真心還是假意,都要拿出十足的架勢來真做,而且,對內(nèi)、對外都要強調(diào)這點。要知道,你期望得100分,下屬大多數(shù)情況下只能給你80分;你期望得1000分,下屬也許就可以給你500分。這樣才能超出決策者自己的預期,才能收到更好的效果。

3、給技術(shù)負責人:難度不亞于“兩彈一星”

這事兒如果恰好讓你負責,那簡直是,怎么說呢,是個“揚名立萬”的機會?。∧阋赖氖?,這事兒和制造“兩彈一星”差不多。

首先你要掂量掂量,你有沒有這個本事。所謂“沒有金剛鉆,不攬瓷器活”,說的就是這個道理。有興趣的也別來找我,我做點小項目可以,真要我負責,我沒這個本事。

另外一方面,你要是違背知識分子的良知,幫助一些不良人員騙取國家的資助款項,就更不應該了。這可是要被人戳脊梁骨的;有沒有錢拿永遠是小事,昧了自己的良心可是大事。

4、工程上的建議

在具體的研發(fā)實施過程當中,開發(fā)負責人必須特別注意工程方面的問題:

先做什么、后做什么,或者那些可以并行做。

不同的軟件模塊,應采取不同的軟件開發(fā)管理模型。API設(shè)計、框架等的開發(fā),適合采用瀑布法模型;應用軟件或者小型模塊的開發(fā),適合采用敏捷開發(fā)模型。但整個系統(tǒng),應要不停迭代,所以版本控制非常重要。

特別要注意代碼的質(zhì)量控制以及文檔的全面、完備、簡潔和邏輯性。

廣告聲明:文內(nèi)含有的對外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。

軟媒旗下網(wǎng)站: IT之家 最會買 - 返利返現(xiàn)優(yōu)惠券 iPhone之家 Win7之家 Win10之家 Win11之家

軟媒旗下軟件: 軟媒手機APP應用 魔方 最會買 要知