Android贏家密碼(一) 什麼是贏家密碼

2021-08-31 05:22:40 字數 3527 閱讀 5805

[url]

【編者按】移動開發已經毫無爭議地成為軟體領域的發展趨勢,嶄新的領域和模式不僅僅為各個廠商,也會普通的開發者開啟了一扇阿里巴巴之門。 infoq非常榮幸地邀請到台灣知名技術專家,台灣公認的「oo教父」和「android教父」高煥堂,為infoq中文站開闢android專欄。這個專欄是摘取自高老師尚未出版的第五本android書籍《android贏家密碼》。

強龍不壓地頭蛇

自古有言:「強龍不壓地頭蛇」。這是來自《西遊記》第 45 回里所寫的:

「你也忒自重了,更不讓我遠鄉之僧;

也罷,這正是強龍不壓地頭蛇。」

強龍不壓地頭蛇,其意味著:

* 強龍不會檔住地頭蛇的財路,

* 反而會協助地頭蛇不斷成長。

相對上,木瓜樹就是「強龍」角色;而小鳥則是「地頭蛇」角色。木瓜免費提供又紅又甜的木瓜肉給小鳥吃,讓小鳥長得強壯,能飛得更遠。此外,還把木瓜種子做很精緻的方式包裝,讓種子既不會傷害小鳥,而且種子也不會被小鳥所傷害(例如被消化掉)。如此,木瓜幫助小鳥長大,愈強壯小鳥就能夠將木瓜種子攜帶到愈遙遠的新土地上,大圖拓展了木瓜的地盤。強龍與地頭蛇形成乙個極佳的雙贏合作模式:

* 強龍幫助地頭蛇成長壯大。

* 地頭蛇幫助強龍拓展版圖。

以 android 手機平台為例,google 扮演「強龍」角色;而 ap 開發者則扮演「地頭蛇」角色。google 也盡到強龍的任務:

* 提供 android 框架 api 和 android sdk(含 android ndk)兩道奶水,協助 ap 開發者(即地頭蛇)。

ap 開發者也盡到責任:

* 到了2023年初,全球的android ap開發者已經替google強龍開發出超過 10 萬支的 ap(即以奶水去養了 10 萬個活潑可愛的小孩),讓android手機版圖持續擴大,躍公升為全世界最暢銷的智慧型手機了。這也等於幫助 google 拓展了版圖。

以 android 商業模式為例

google強龍希望 android 平台能支撐它在手機、家電產業上的強龍的地位。除了上述的 ap 開發者之外,google 還有另一種地頭蛇:硬體廠。因此,google身旁有兩種主要的地頭蛇:ap開發者和硬體廠;其中 ap開發者撰寫手機應用軟體,而硬體廠則開發手機硬體元件。如下圖所示:

圖 1-25 google 的願望:擁有強龍商業地位

google為了站穩商業強龍地位,它必須協助兩種地頭蛇去完成他們各自的任務。於是 google 開發手機平台軟體(即 android 平台),內含兩種框架(含 api):

* hal(hardware abstraction layer)驅動框架,它用來銜接硬體元件的驅動程式(driver)。

然後將上述框架當做禮物,分別贈送給 ap 開發者和硬體廠。如下圖所示:

android 框架就是乙個完美的範例,主要元素包括:

* 框架內含基類及主動型 api。

* 基類裡的程式碼是魚餌。

* 主動型 api 則是魚鉤。

* 框架是一種極為特殊的禮物。

圖 1-27 android 框架支撐 google 的全球加盟體系

強龍必須培養、組織和照顧眾多的地頭蛇(即加盟者),才能讓自己成為盟主(即強龍)。由於大強龍個數不多,條件也高,不是人人都有機會。因此,從 「強龍/地頭蛇」商業模式再衍生出新型的「強龍/小強龍/地頭蛇」商業模式。於各領域中,具有特定領域(例如智慧型電視、車載地圖、網路遊戲等)的公司,皆能開發出特殊的領域框架(domain-specific framework,簡稱為 dsf),就能扮演「領域強龍」角色,而擁有自己的地頭蛇了。相對於 android 大框架,這種 dsf 則稱為小框架。做大框架者是大強龍;做小框架者是小強龍(即領域強龍)。小框架可以融合到大框架裡,它充實大框架的內涵,讓大強龍、小強龍、和地頭蛇共三方皆獲利,形成「三合」的美好商業模式。於是,三合(即大強龍、小強龍和地頭蛇的合作)的巨大效益為:

* 以手機硬體為例,小框架能有效創造硬體的差異化、多樣化,大幅提公升附加價值。

* 就小框架而言,硬體的大量生產,創造小框架的大量複製機會。

why,框架 api?

前面已經敘述了,熱情地關注 api,即能發現藏在隙縫裡的成功密碼,成為幸運的贏家。前面也已經說明了,框架就像萬里長城,其 api 就像長城的關口(如居庸關等),而且也拿一棵樹來做比喻,說明 api 的角色:

* hal 框架的 api 就位於樹幹與樹根(即驅動程式)的銜接處。

* 應用(ap)框架的 api 就位於樹幹與枝葉(即 ap)的銜接處。

然而,很多人提出疑問:提供api的途徑何其多? 為何特別強調「框架」的api呢? 例如,一般程式庫(library)也提供api給開發者使用、網路服務(web service)也是一種api,為何只談框架api呢? 為了回答這問題,必須回顧過去20年來的軟體發展經驗了。其中有兩項重要的事蹟:

* 2023年代後期,corba是一項物件導向的服務標準api,實現此項標準的系統中,最著名的商業中間鍵軟體就是orbix系統。然而,在系統架構上,api是一種制約力量,不是一種禮物,不能用來嘉惠予ap開發者。導致corba和orbix系統架構無法支撐理想的商業模式,而終告消失匿跡。

* 2023年代中後期,繼corba之後的是microsoft公司推出com/dcom系統架構,雖然提供了當時先進的物件導向(object-oriented)的api,但還是api,仍然是一種制約力量,不是一種禮物,不能用來嘉惠予ap開發者。與corba和orbix一樣的系統架構,一樣無法支撐理想的商業模式,也終告消失匿跡。

後來,it業界逐漸發現:api可用來框住應用程式(ap),如同一把利劍;若要獲得開發者的青睞,利劍必須搭配麵包,就像釣魚鉤必須搭配魚餌,才能吸引魚群。於是,microsoft改變觀點,把焦點放在麵包上,發現物件導向技術裡的抽象類別(abstract class)及其提供的預設函式(default function)以及其他具體類別,所整合而成的框架(framework)正式一項極具**力的魚餌。此外,由框架所提供的主動型 api,也能發揮巨大的控制力。因之,microsoft於2001推出.net框架來取代com/dcom,由於.net框架融合了麵包與利劍,既能嘉惠廣大的開發者,又能有效框住眾多的應用程式。.net框架是microsoft贈送給廣大的開發者的最佳禮物,表達了microsoft對全球廣大第三方開發者關懷和愛心,讓他們因.net而受惠。

到了2023年,google也依樣畫葫蘆,買來android框架,當成禮物贈送給全球的手機硬體廠商,也贈送給全球廣大的 ap 開發者。由於 android 框架「禮物」嘉惠予硬體廠商,所以全球的硬體廠商也是受惠者,因而大力支援 android,也讓android聲勢扶搖直上。android框架是麵包與利劍的融合體,不僅嘉惠予硬體廠商,也嘉惠予全球數以萬計的廣大 ap 開發者,同時也主導了這些開發者。

由於 google 熱情投入開發框架 api,並當成禮物來送人,除了嘉惠眾多硬體廠商,也嘉惠了全球的 ap 開發者,讓人人能擁有「沒錢就改版,改版就有錢」的利益。古賢者老子說:「聖人無積,既以為人己愈有,既以予人己愈多。」從歷史可知,秦始皇、漢武帝熱情投入萬里長城的興建,而成為最大獲利者。如今,google 和微軟都熱情投入軟體框架的開發,而成為幸運的最大贏家。

關於作者

高煥堂,台灣軟體架構設計大師,從事it行業近30年,被稱為「台灣oo技術教父級代表人物」。現任misoo軟體開發與管理顧問公司首席架構師,編著過十餘本軟體技術相關書籍。

Android贏家密碼(一) 什麼是贏家密碼

編者按 移動開發已經毫無爭議地成為軟體領域的發展趨勢,嶄新的領域和模式不僅僅為各個廠商,也會普通的開發者開啟了一扇阿里巴巴之門。infoq非常榮幸地邀請到台灣知名技術專家,台灣公認的 oo教父 和 android教父 高煥堂,為infoq中文站開闢android專欄。這個專欄是摘取自高老師尚未出版的...

Android贏家密碼(一) 什麼是贏家密碼

編者按 移動開發已經毫無爭議地成為軟體領域的發展趨勢,嶄新的領域和模式不僅僅為各個廠商,也會普通的開發者開啟了一扇阿里巴巴之門。infoq非常榮幸地邀請到台灣知名技術專家,台灣公認的 oo教父 和 android教父 高煥堂,為infoq中文站開闢android專欄。這個專欄是摘取自高老師尚未出版的...

什麼是加鹽密碼?

生活中,我們為了保證密碼的安全性,一般都不會使用明文儲存,而是要將明文進行加密,然後再進行儲存。假如我們的資料被拖庫,被洩露,請求被劫持的情況下,也能保證使用者的密碼不被洩露,確保賬號的安全性。md5資訊摘要演算法 英語 md5 message digest algorithm 一種被廣泛使用的密碼...