Android教父高煥堂:開源隻是手段,開放才是目的
2007年11月Android誕生,自誕生之日起Android就引發了手機操作係統的“開源”與“封閉”之爭。Android作為後起之秀以其獨特的魅力在2年多時間裏表現出非凡的成長力和活躍度。然而最近有些言論表示出對Android開源的懷疑及對其平台不兼容性的自我毀滅之說,究竟我們是不是應該繼續看好Android?Android的未來發展又將如何兼容用戶、開發商和更多方的需求?開發者社區特邀請Android教父高煥堂老師來與大家共同探討。
高煥堂老師近照
高煥堂老師為我們圍繞四個方麵進行話題闡述:Android的發展史、客觀看待Android發展中問題、中移動如何推動Android良性發展、借Android終端積極發展雲計算,現將觀點呈現,供廣大開發者借鑒。
一、Android的發展史標誌全球手機操作係統“開源史”
Android誕生2年多時間,以其迅勐的發展速度,不禁令行業老大Symbian和Windows Mobile瞠目,而從它誕生之日起就引發了手機操作係統的“開源”與“封閉”之爭,甚至刮起了全球的“開源風”。
開發者社區:您認為穀歌推出基於Linux平台的Android手機操作係統,其主要原因是什麼?
高煥堂:因為Linux容許多樣化發展,Google有機會在Linux基礎樹幹上,開花結果。
開發者社區:Android操作係統的最大優勢有哪些?
高煥堂:Android的架構非常漂亮,結合Java層、C++服務層與HAL驅動層,形成三層框架的美好架構。基於穩定的框架接口,包容了底層Linux的彈性多變和百花齊放。非常符合軟件架構設計的最根本原則:開放/封閉原則(OCP,Open Closed Principle),基於這個原則,才能替底層Linux驅動軟件和硬件族群帶來“沒錢就改版,改版就有錢”的IT產業賺錢原則。
開發者社區:iPhone和Symbian在Android誕生初期是否看好這個操作係統,他們又是如何表現的?
高煥堂:從歐美企業的角度比較難以看出Android的潛在生命力,所以在Android誕生初期,他們並不太在意。iPhone繼續發展其嶄新獨特的商業模式;Symbian也隻是開始考慮開放其平台而已。然而,從亞太地區產業就能看出Android誕生帶來的特殊意義。這層意義,我在2008年元月份的<<程序員>>雜誌(在Android上市剛滿月),曾經指出Android將在海峽兩岸下起巨大的“幸運草種子”雨,帶來全新的產業。
開發者社區:Nokia苦於Symbian的封閉,一直向開源而努力,曾推出Maemo,雖以失敗告終,但最近又與Intel共同推出了Meego,這是否表明開源已是大勢所趨?
高煥堂:開源隻是手段,開放才是目的。要開放給所有人來參與,尤其是提供免費框架(Framework),開放框架的API給應用開發者,才是關鍵。開源隻是必備條件,但並非充分條件。
開發者社區:據今年3月的報導,穀歌和RIM移動互聯網流量份額增長iPhone份額下滑,但差距仍很大,分別為蘋果64%、Android15%、RIM份額約9%,對此數據您如何來分析?
高煥堂:手機隻是Android的應用環境之一,非手機的應用更是Android在亞太地區蓬勃發展的巨大潛在空間。盡管如是,我預估Android的市場占有率將以每個月增加0.5% ~ 1.5%繼續成長。成長速度超過iPhone和RIM。
開發者社區:嵌入式操作係統,應該開源還是封閉?這個話題廣為熱議卻始終未有定論,您站在開源立場,能否為我們舉出原因?
高煥堂:我常拿桌子來比喻軟件架構。桌子包含桌上(的東西)、桌麵和桌腳三部分。桌上和桌腳要開放但不一定開源。桌麵盡量不開放但要開源。例如,Android/OPhone的應用程序是桌上的東西,開放給所有人去開發。Android/OPhone的應用框架層式桌麵宜開源,有限度開放,由Google或中移動主導其穩定性。框架之下的內庫(Library)是桌腳,開放但不一定開源。以上是從Android 角度看的。如果從嵌入式操作係統(如Linux)看,Android框架和應用都是桌上的東西,而Linux本身則是桌麵,至於驅動軟件則是桌腳。所以 Linux本身宜開源而有限度開放;驅動軟件則開放而不一定開源。
二、客觀看待Android發展中問題龍的傳人應識活求變
“善變本是常態,是生命活力,不變是死亡,龍就是變的代表;我是龍的傳人,我愛生命活力。”——高煥堂
開發者社區:開源,不一定會成功,封閉,也不一定會失敗,近期有人懷疑Android開源的正確性,對此您的看法呢?是開源必勝還是二者並存?
高煥堂:開源而不開放,並無法帶來商業利益。開放不一定要開源,也能帶來商業利益。所以焦點不在於開源,而在於開放。例如,Android/OPhone雖然開源,但其AP市集的開放程度就有些不同,在手機設備上加載應用軟件或底層程序庫的開放程度也大不相同。此外,我也鼓勵AP開發者大力開發軟件框架和底層軟件模塊,然後打包成共享庫(Shared Library),然後封閉起來銷售而不開源。這也符合Android的一貫路線。同樣地,我也一直建議OPhone要開放給所有人來貢獻和充實其應用框架和底層內庫,但這些內庫可以不開源。
開發者社區:Android發展過快,也引發了版本不兼容導致用戶升級受阻和軟件開發商要開發多個版本軟件的繁冗工作,甚至有分析稱Android已成大量不兼容設備的起點,這是杞人憂天還是庸人自擾?對於擁護Android的開發者來說應該如何進行抉擇?
高煥堂:開發一個軟件係統就如同製造一部汽車。如果我們期待一部完整的汽車(如同一個完整可執行的 Android應用軟件)能在沙灘上麵跑,也能在街道上麵跑,也能在高山雪地裏跑,這是非常不務實的願望。所以,期待一支Android應用軟件能跨平台,在所有的Android軟硬件平台上跑,也非求實求是的態度。看來,這個問題似乎無解,其實非常容易。將汽車輪胎摘掉,隻留下輪盤接口就行了。在計算機硬件上,將許多外圍設備(如鼠標、USB碟等)拔掉,留下USB、RS232等接口),就得到主機板(Motherboard)。在計算機軟件上,許多應用子類(Subclass)拔掉,留下基類(Base Class或Super Class),就得到軟件框架(Framework)。基於這個理由,自從2008年4月份我出版第一本Android書籍,其書名就是應用框架原理,唯有兼顧應用程序(Application開發和應用框架(Framework)開發的同步進展,才能化解上述的困擾。
開發者社區:對於新投入到Android開發隊伍中的新人來說,應該怎樣著手開展學習?期待您能夠為他們指點迷津!
高煥堂:在亞太地區,目前投入到Android軟件開發最多的有三個族群:1)熟悉Linux(驅動)族群、 2)熟悉J2ME族群、3)熟悉iPhone族群。他們已經不是開發和技術的新人,隻是Android的新人而已。所以適合從Android的整體架構展開學習,包括:Android的UI架構、進程和IPC通訊機製、線程模式、JNI接口、HAL(驅動)接口等。如此達到知己(已經熟悉的部份)又知彼(Android架構),兩者結合後,再仔細瀏覽Android框架裏的各項服務(如藍牙、電話、SMS、MMS、WebView等)。至於,都沒有編程經驗的純粹新人,我建議心理上先有所準備:Java和C/C++都將是必需學習的。既然Android是開放開源平台,Android的上、中和底層一起學習,讓自己的未來出路能往上發展做應用(雲端)服務,也能往下發展做軟硬整合,豈不美哉!
最後更新:2017-04-02 15:15:00