【編者按】移動開發已經毫無爭議地成為軟體領域的發展趨勢,嶄新的領域和模式不僅僅為各個廠商,也會普通的開發者開啟了一扇阿里巴巴之門。infoq非常榮幸地邀請到台灣知名技術專家,台灣公認的「oo教父」和「android教父」高煥堂,為infoq中文站開闢android專欄。這個專欄是摘取自高老師尚未出版的第五本android書籍《android贏家密碼》。
\\ 自古有言:「強龍不壓地頭蛇」。這是來自\u0026lt;\u0026lt;西遊記\u0026gt;\u0026gt;第 45 回里所寫的:
\
「你也忒自重了,更不讓我遠鄉之僧;\\也罷,這正是強龍不壓地頭蛇。」
\
強龍不壓地頭蛇,其意味著:\
相對上,木瓜樹就是「強龍」角色;而小鳥則是「地頭蛇」角色。木瓜免費提供又紅又甜的木瓜肉給小鳥吃,讓小鳥長得強壯,能飛得更遠。此外,還把木瓜種子做很精緻的方式包裝,讓種子既不會傷害小鳥,而且種子也不會被小鳥所傷害(例如被消化掉)。如此,木瓜幫助小鳥長大,愈強壯小鳥就能夠將木瓜種子攜帶到愈遙遠的新土地上,大圖拓展了木瓜的地盤。強龍與地頭蛇形成乙個極佳的雙贏合作模式:\
以 android 手機平台為例,google 扮演「強龍」角色;而 ap 開發者則扮演「地頭蛇」角色。google 也盡到強龍的任務:\
ap 開發者也盡到責任:
\\ google強龍希望 android 平台能支撐它在手機、家電產業上的強龍的地位。除了上述的 ap 開發者之外,google 還有另一種地頭蛇:硬體廠。因此,google身旁有兩種主要的地頭蛇:ap開發者和硬體廠;其中 ap開發者撰寫手機應用軟體,而硬體廠則開發手機硬體元件。如下圖所示:
\ \ 圖 1-25 google 的願望:擁有強龍商業地位
\ google為了站穩商業強龍地位,它必須協助兩種地頭蛇去完成他們各自的任務。於是 google 開發手機平台軟體(即 android 平台),內含兩種框架(含 api):
\hal(hardware abstraction layer)驅動框架,它用來銜接硬體元件的驅動程式(driver)。\
然後將上述框架當做禮物,分別贈送給 ap 開發者和硬體廠。如下圖所示:
\ \ android 框架就是乙個完美的範例,主要元素包括:\
\ 圖 1-27 android 框架支撐 google 的全球加盟體系
\ 強龍必須培養、組織和照顧眾多的地頭蛇(即加盟者),才能讓自己成為盟主(即強龍)。由於大強龍個數不多,條件也高,不是人人都有機會。因此,從「強龍/地頭蛇」商業模式再衍生出新型的「強龍/小強龍/地頭蛇」商業模式。於各領域中,具有特定領域(例如智慧型電視、車載地圖、網路遊戲等)的公司,皆能開發出特殊的領域框架(domain-specific framework,簡稱為 dsf),就能扮演「領域強龍」角色,而擁有自己的地頭蛇了。相對於 android 大框架,這種 dsf 則稱為小框架。做大框架者是大強龍;做小框架者是小強龍(即領域強龍)。小框架可以融合到大框架裡,它充實大框架的內涵,讓大強龍、小強龍、和地頭蛇共三方皆獲利,形成「三合」的美好商業模式。於是,三合(即大強龍、小強龍和地頭蛇的合作)的巨大效益為:
\\ 前面已經敘述了,熱情地關注 api,即能發現藏在隙縫裡的成功密碼,成為幸運的贏家。前面也已經說明了,框架就像萬里長城,其 api 就像長城的關口(如居庸關等),而且也拿一棵樹來做比喻,說明 api 的角色:\
然而,很多人提出疑問:提供api的途徑何其多? 為何特別強調「框架」的api呢? 例如,一般程式庫(library)也提供api給開發者使用、網路服務(web service)也是一種api,為何只談框架api呢? 為了回答這問題,必須回顧過去20年來的軟體發展經驗了。其中有兩項重要的事蹟:\
後來,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贏家密碼(一) 什麼是贏家密碼
url 編者按 移動開發已經毫無爭議地成為軟體領域的發展趨勢,嶄新的領域和模式不僅僅為各個廠商,也會普通的開發者開啟了一扇阿里巴巴之門。infoq非常榮幸地邀請到台灣知名技術專家,台灣公認的 oo教父 和 android教父 高煥堂,為infoq中文站開闢android專欄。這個專欄是摘取自高老師尚...
Android贏家密碼(一) 什麼是贏家密碼
編者按 移動開發已經毫無爭議地成為軟體領域的發展趨勢,嶄新的領域和模式不僅僅為各個廠商,也會普通的開發者開啟了一扇阿里巴巴之門。infoq非常榮幸地邀請到台灣知名技術專家,台灣公認的 oo教父 和 android教父 高煥堂,為infoq中文站開闢android專欄。這個專欄是摘取自高老師尚未出版的...
什麼是加鹽密碼?
生活中,我們為了保證密碼的安全性,一般都不會使用明文儲存,而是要將明文進行加密,然後再進行儲存。假如我們的資料被拖庫,被洩露,請求被劫持的情況下,也能保證使用者的密碼不被洩露,確保賬號的安全性。md5資訊摘要演算法 英語 md5 message digest algorithm 一種被廣泛使用的密碼...