目的
開發“自主”操作系統的主要目的有兩種:一種是想再造一個類似Android、iOS的操作系統,并作為其競爭者;一種僅僅是為了在商務談判和合作中獲得一個比較好的籌碼。當然,還有一種目的就是騙取政府的財政支持,對這類不良目的,不屬本文討論范圍。
我們先猜度一下國內外這幾年出現的一些“自主”操作系統,其目的是什么:
Firefox OS:這是Mozilla公司推出的純粹基于HTML5/CSS3/JavaScript等網頁前端開發技術推出的操作系統,和HP收購自Palm的 webOS有類似的軟件架構。HP收購了webOS之后的半年,即宣告放棄webOS,而Mozilla卻希望通過類似技術的Firefox OS成為Android的競爭者。一會兒我們分析下為什么Firefox OS要比webOS有更強一些的生命力。
華為提出要開發的“自 主”操作系統:作為一個智者,任正非不可能不知道一個真正“自主”的操作系統應該是什么樣子的。華為就算再有錢,再有人才,短時間內也是搞不定一個“自 主”操作系統的(如前所述,主要是建立對應的生態系統太難了)。這么說來,華為開發“自主”操作系統,其目的其實就是做一個“備胎”,以便在和 Android、Windows Phone等合作時能夠有一個可以討價還價的砝碼。也就是說,華為并不是真的要做“自主”的操作系統;或者這么說,支持團隊去做,做成Android那樣 最好,做不成Android那樣,如果真有一天打起架來可以湊合用也行。
阿里云OS:馬云同志的野心很大,他做阿里OS,就是要復制谷歌在 移動互聯網的商業模式,進而在移動互聯網領域推廣阿里體系的服務和內容。可惜的是,馬云貌似不太懂技術,也沒個明白人給他做參謀,結果花了錢還被人捏住了 七寸。最新的消息,阿里云OS獨立運行,再投個2億美金繼續搞。馬云同志啊,光有錢是不行的,你身邊還得有個把技術大牛幫你把關、出謀劃策才行啊。
策略
好,面對這兩種開發“自主”操作系統的目的,應該有什么樣的策略呢?其實策略很簡單,不管你是真心還是假意,都應該按照本文第三章給出的“自主”操作系統之特征進行開發,除此之外,別無他法。任何期望找捷徑的方法,都不可能獲得成功。這里所說的找捷徑的方法具體有:
·給Android整容。如OMS、阿里OS。
· 忽略操作系統中生態系統的重要性,在Linux或其他開源操作系統內核、系統庫等基礎上包裹一個簡單的框架而形成的操作系統。這種操作系統,其復雜度和 Linux發行版相當,離本人定義的真正“自主”操作系統還差十萬八千里。讀者可能會問,這樣的系統做備胎不是還行嗎?為什么也得按照真做那樣開發呢?你 要知道的是,對手也不是傻子,人家看你的架勢,就知道你不是真做——你起碼得拉出真做的架勢來,人家才能怕你啊!
順便談談我對基于瀏覽器技術的web操作系統的看法。
理論上講,瀏覽器可以做很多事情,甚至可以替代PC機上的通用操作系統。但是,最新的瀏覽器技術(HTML5/CSS3等),還存在一些技術上的問題。主要的問題有如下兩個:
· 瀏覽器主要采用的JavaScript編程語言,本質上是一種難于管理(源代碼保護、無法進行有效的軟件架構設計、難于調試等等)的編程語言,同時內存消 耗巨大,性能不佳。最新的說法是,Facebook創始人直言全面采用HTML5的策略是個失誤,正在向操作系統的原生應用轉移。也就是 說,JavaScript語言難以承載一個良性發展的生態系統。
·因為許多原因(主要是利益和政治因素),HTML5相關的標準有分裂的跡象,同時進展緩慢。
HTML5技術作為原生應用的一種補充,可以起到很好的作用,但是,如果要想在瀏覽器技術上建立一個真正可以和Android等競爭的操作系統,恐怕還需要很長的時間(技術上必須有突破)。要不然,谷歌現在主推的應該是ChromeOS,而不是Android。
現 在回答剛才提到的問題:為什么Firefox OS可以比webOS的生命力更長久些?主要的原因是,Firefox OS是開源的,有比較強大的企業在主導其發展,作為一個脫胎于開源基金會的企業(Mozilla公司),也能獲得合作伙伴的一些好感;相反,因為 webOS是封閉,HP又沒有能力像蘋果那樣打造一個完全封閉的平臺和生態系統,所以最終的命運是被人拋棄了。雖然后來webOS也走上了開源的道路,但 大勢已去,HP不親自帶頭搞,光靠開源社區是搞不成的。
方法
假定你是一名“自主”操作系統項目的技術管理者,你第一步要考慮的問題是什么?許多人的回答可能是:先選操作系統內核、基礎庫什么的。其實錯了,第一步要考慮的應該是你打算選擇什么編程語言作為原生應用的編程語言。
世 界上的編程語言有很多種,有些語言貼近機器,比如匯編語言、C語言,有些語言貼近人,比如Basic、Java,還有些語言用于特定領域,比如網頁服務器 端使用的PHP,有些適合做不同軟件之間的粘合劑,比如Perl、Python。本文第三章已經解釋了編程語言以及圍繞編程語言形成的運行環境、框架是將 操作系統區隔于其他操作系統的主要技術特征。因此,我們必須慎重選擇一種編程語言。而且一旦選定了一種編程語言,“自主”操作系統在開發者看來長什么樣, 其實就基本上定了。
選擇編程語言要考慮如下因素:這種編程語言是否易于學習和掌握?是否有龐大的開發者在使用它?這種編程語言是否具有高級 語言的基本特征,比如,支持面向對象編程?這種編程語言是否是編譯執行的?這種編程語言是否利于保護開發者的知識產權?這種編程語言是否有完整的工具鏈支 持?這種編程語言是否有集成開發環境的支持?這種編程語言是否易于保護整個操作系統不會被惡意代碼輕易破壞?如此等等。
其實很多讀者看到這里,都會想到Java語言。是的,Java語言或其派生語言如C#是構架“自主”操作系統的最佳編程語言。可惜,已經被Android和Windows Phone給捷足先登了。
如 此一來,你可以考慮重新設計一門類似Java的語言,也可以通過其他手段,讓你使用Java語言構建的操作系統有別于其他操作系統。比如,構建自己的虛擬 機,如Android使用的Dalvik那樣(Dalvik和Oracle的JDK標準虛擬機有很大不同,從而讓Oracle還挺難告贏谷歌的);你也可 以用Dalvik,但讓類庫、運行環境和Android不同(這樣做的法律風險要大一些)。總之,你需要有自己的創新,全部抄襲是不行的。
確定了編程語言,接下來的工作其實就比較直接了,從上而下設計就是了。主要有:
1、定義和實現提供給原生應用程序的基礎API和/或虛擬機。
2、在應用程序基礎API、標準C/C++函數庫和相關組件(通常都是開源軟件)的基礎上構建操作系統的運行環境和框架。主要涉及系統服務、模塊之間的通訊機制,包括圖形界面、瀏覽器引擎、OpenGL ES支持接口等等。
3、同時選擇操作系統內核,通常也就是Linux,要與眾不同,用BSD也行。
4、搞定集成開發環境和模擬器,讓開發者可以在PC機上為你的操作系統開發應用程序。
5、讓你的操作系統運行在真實硬件上,為開發者提供應用樣例和文檔。
6、持續迭代,讓你的“自主”操作系統不停往前發展。
上面的第一點和第二點,是“自主”操作系統有別于其他操作系統,且支撐你可以和其他人競爭的關鍵點。往下的東西都不是構成“自主”操作系統真正競爭力的東西。
這么看來,其實也挺簡單的。不是嗎?貌似有錢、有個把技術上的明白人就能做到。技術上沒問題了,市場、法律等方面的事情,請專業人員幫忙,中國這類人才還是蠻多的,缺的,其實還是技術人員以及懂系統工程和軟件開發的管理人員。
案例
這里給大家介紹筆者早先和美國一家公司合作,嘗試搭建的一個操作系統,其實在當年這些東西的基礎上,搭建出來一個有別于Android的開源“自主”操作系統還是非常快的。
這 個系統使用了Linux內核和標準的C/C++函數庫,以及一些和Android體系結構類似的C/C++運行庫,使用了筆者公司的開源軟件 MiniGUI、WebKit瀏覽器核心引擎等等。基礎的東西就這些。之上是開源的KaffeJVM(后來改成了CacaoJVM),和符合J2SE規范 的類庫實現,再往上就是運行環境和框架了。見下圖:
可惜的是,真正具有核心價值的運行環境和框架,是美國合作方自己開發的,我手里沒有源代碼。相信讀者也能明白,美國合作方掌握的才是精華。
如果要在這套系統基礎之上快速開發一個“自主”的操作系統,我們需要:
·重新定義類庫,也就是基礎API,讓我們的系統從靈魂上有別于其他系統。必要的話,優化或替代開源的虛擬機(淘寶最近開源了一個JDK虛擬機,不過是針對J2EE的)。
·全新設計和實現適合于智能手機的運行環境、框架。
·全新設計基本的智能手機應用軟件。
·開發模擬器,并集成到Eclipse集成開發環境中。
·還有,這個系統是2006年開發的,我們還需要將底層的內核、基礎函數庫等更新到比較新的版本。
要做的工作還是蠻多的,但這個系統在2007年的時候,就已經可以運行在主頻在200MHz左右的手機上了。
當 然,這個系統離本人定義的真正“自主”的操作系統還有很大的距離。但是,起碼技術上的方向是基本正確的,要知道,這個系統幾乎是和Android同時發起 的。后來在2007年,谷歌宣布開源Android后,美國合作方敏銳感覺到了Android將是未來的趨勢,就直接轉向了Android平臺,項目也就 終止了。
評論
查看更多