Android贏家密碼(二):觀點與實踐之軟硬整合開發(fā)
本文將介紹《Android贏家密碼》的第二部分:觀點與實踐之軟硬整合開發(fā)。以軟硬整合開發(fā)為例,介紹《Android贏家密碼》的觀點與實踐。
觀點與機會
大家都知道觀點(又稱視角)本身是沒有對錯的,但是觀點會影響人們的決策,而決策又會影響行為,然后產(chǎn)生不同的結(jié)果。因之,基于“贏家密碼”觀點而實踐策略,會帶來贏的機會;反之,則可能會錯失大好機會。
Android的三層API
在軟硬整合開發(fā)里,最主要的議題就是,如何讓底層硬件的創(chuàng)新性能或功能與上層應(yīng)用程序(簡稱AP)的多樣化相匯合,關(guān)于這項議題,我在《Android贏家密碼》一書里,已經(jīng)詳細(xì)敘述了,就不再重述了。
在Android平臺上,規(guī)劃上述軟硬整合實踐策略時,會涉及三層軟件接口(泛稱API),包括:
- 上層的Framework API:這是位于Java層的AP與框架(Framework)之間。
- 中層的JNI API:這是位于Java框架與C++層Android核心程序庫(Library)之間。
- 底層的HAL API:這是位于Android核心程序庫與硬件驅(qū)動程序(Driver)之間。
俗語說:橫看成嶺側(cè)成峰。意味著,事物本體只有一個,因為人人觀點不同而有不同面貌的呈現(xiàn)。蘇東坡《前赤壁賦》也寫道:“蓋將自其變者而觀之,則天地曾不能一瞬;自其不變者而觀之,則物與我皆無盡也,而又何羨乎?”即使同一個人,基于不同角度,觀察到的現(xiàn)象也不同,因為會影響到人生或其它事物的態(tài)度、策略、行為和結(jié)果。
古典IT的觀點
這個觀點是基于“平臺(Platform)”的概念,平臺概念讓人們聯(lián)想到房屋的地基,AP就是房屋,而平臺就是地基。其地位尊卑順序是:主人->AP->平臺,如下圖1所示:
圖1 古典IT觀點下的Android三層API
在這觀點下,其焦點在于:
- 底層都是提供服務(wù)給上層調(diào)用,一切以User好用為目標(biāo),也就是追求優(yōu)質(zhì)的用戶體驗(User or Client Experience)。
- API成為Façade的角色(可參考Façade Pattern),提供單一接口是實現(xiàn)優(yōu)質(zhì)用戶體驗的重要手段。
- User希望AP穩(wěn)定不變,AP希望Java框架不變,Java框架期待C/C++模塊不變,C/C++模塊期待底層的硬件驅(qū)動穩(wěn)定不變。人人都期待腳底下的“平臺”是不變的。
中國傳統(tǒng)的觀點
如果將Android里的三層API對應(yīng)到中國清朝時期的三層城墻:萬里長城、北京城和紫禁城。將可以讓我們擺脫古老的IT觀點,而得到新潮的觀點:中國永恒的智慧 + Android平臺->贏家的軟硬整合策略。這非常接近清代大臣張之洞所提倡的“中學(xué)為體,西學(xué)為用”觀點。于是,得到下圖:
圖2 Android平臺里的三層API
茲比較圖1與圖2:
- 地位尊卑順序相反。在圖1里,愈上層的地位愈高。反之,在圖2里,愈底層的地位愈高(例如皇帝居住于紫禁城內(nèi))。
- 行為決策相反。采取圖1觀點的國度,人人爭先恐后去做 AP,因為(誤認(rèn)為)AP的地位最高。反之,采取圖2觀點的國度,人人爭先恐后去做框架和API,因為(真正)地位最高,必須建造API(城墻)避免敵人來爭奪。
- 建API成為最大贏家。Google、微軟等公司采取圖2觀點,微軟于2001年推出.NET框架;Google于2007年推出Android框架;兩者都成為IT業(yè)武林盟主。
- API讓底層先獲利。基于圖2的觀點,愈底層的地位愈高,萬里長城讓觀內(nèi)居民先獲利(不是塞外先獲利)。所以臺灣宏達(dá)電(HTC)公司專注于開發(fā)Android底層硬件和驅(qū)動軟件(關(guān)內(nèi)部分),成為全球獲利最大的Android手機廠商。
以POS系統(tǒng)開發(fā)為例——現(xiàn)實的POS情境和需求
POS軟硬整合產(chǎn)品必須賣給業(yè)主(如大賣場的商家)。由于商家是做生意的人,不會設(shè)計賣場專用的POS應(yīng)用程序(例如,將POS結(jié)帳款項送往ERP系統(tǒng))。所以,POS產(chǎn)品廠商就委托各地區(qū)或城市的當(dāng)?shù)貞?yīng)用軟件開發(fā)商去幫助業(yè)主開發(fā)其專用的應(yīng)用軟件(簡稱AP)。于是,POS產(chǎn)品廠商就成為強龍,而全球各地區(qū)的AP開發(fā)者成為地頭蛇,這<強龍/地頭蛇> 合作模式能提供給業(yè)主最佳的服務(wù)。例如,筆者就曾經(jīng)擔(dān)任NCR公司在臺灣的地頭蛇,服務(wù)臺灣當(dāng)?shù)氐你y行POS應(yīng)用軟件系統(tǒng)。
過去,都是洋人企業(yè)扮演強龍角色,國內(nèi)本地企業(yè)扮演地頭蛇角色。如今,隨著本地內(nèi)需市場的急速成長,提供給本地企業(yè)躍居強龍地位的大好機會。所以,本文不是敘述如何解決業(yè)主的需求,而是說明除了解決業(yè)主需求之外,又如何替POS產(chǎn)品(或手機)廠商設(shè)計出強龍系統(tǒng)架構(gòu),以即規(guī)劃出其實現(xiàn)步驟。
第一步:從古典IT觀點出發(fā)
在上一篇文章里,已經(jīng)說明了古典IT觀點的基本架構(gòu)。現(xiàn)在,就來厘清它的兩項基本流程:請求流程(Request Flow)和服務(wù)流程(Service Flow)。如下圖1 所示:
圖3 古典IT觀點下的兩項基本流程
在這觀點下,并不太重視另一項流程,就是命令流程(Command Flow)。甚至很多人認(rèn)為圖里的請求流程就是命令流程。由于命令的來源是業(yè)主或AP(如古代的員外),讓底層POS產(chǎn)品廠商成為長工,就無法實現(xiàn)其強龍的夢想了。
第二步:加上命令流程(Command Flow)
這是基于上一篇文章里的新潮觀點,基于這個觀點,就能凸顯出命令流程的重要性,以及其流動方向。如下圖2所示:
圖4 新潮觀點所凸顯的命令流程
大家都知道命令的來源是紫禁城內(nèi),流向北京城外,再流到長城之外。于是,將上圖1和圖2整合起來就是新潮觀點下的三項主要流程。
第三步:設(shè)立關(guān)口傳達(dá)命令
為了確保紫禁城內(nèi)清朝皇帝的強龍主導(dǎo)地位,必然會最第一道防線(即萬里長城)設(shè)立關(guān)口,并重兵駐守,成為具有高度主導(dǎo)性的接口,例如山海關(guān)、居庸關(guān)等。這種主導(dǎo)性關(guān)口,就是筆者在《Android贏家密碼》一書所說的“主動型API”。唯有主動型的API(或稱接口,或稱關(guān)口)才能確保命令的傳遞和執(zhí)行。如下圖3所示:
圖5 山海關(guān)、居庸關(guān)就是主動型API
在這觀點下,業(yè)主(或用戶)和AP是在塞外,是要服從命令的,在直覺上對用戶體驗并不會有所貢獻。然而,因為硬件(如宏達(dá)電HTC手機或聯(lián)迪POS)產(chǎn)品廠商位居紫禁城內(nèi),擁有強龍地位,其“強龍體驗”的滋味是美好的。過去,軟件開發(fā)人員一味地追求提升用戶(地頭蛇)體驗,未能提升軟件人員本身的地位。如今,軟件開發(fā)人員除了提升用戶體驗之外,也關(guān)注于提升底層硬件廠商的強龍體驗。基于這種新觀點,讓臺灣的宏達(dá)電公司成為最賺錢的公司,其HTC手機也創(chuàng)造極佳的用戶體驗,至今(2011年)銷售量全球第一,同樣地臺灣Android相關(guān)軟件人員也因而獲利。這說明了這個新潮觀點,的確能創(chuàng)造“硬件廠商、手機用戶、軟件人員”三贏的局勢。其將業(yè)主和 AP視為塞外,并將用戶體驗降到第二順位;反而大幅提升了用戶體驗。這就是筆者在《Android贏家密碼》一書所說的“神秘力量之一”。
第四步:實現(xiàn)軟件關(guān)口(即框架API)
具有主導(dǎo)性(或防御性)的關(guān)口,就是主動型(即主導(dǎo)性)的API。在軟件上,其實現(xiàn)機制是極為簡單的概念:基類(Base Class),又稱為父類(Super Class)。如下圖3所示:
圖6 軟硬整合系統(tǒng)的山海關(guān)等關(guān)口
軟件關(guān)口就是Java或C++語言的基類,是每一位軟件開發(fā)人員都具備的基本技能。
結(jié)語
俗語說:不為也;非不能也。如今,為何洋人喜歡撰寫框架基類、掌握框架API,位居強龍;而我們身邊的大多數(shù)軟件開發(fā)人員,還是擁抱著古典IT觀點、孜孜不倦撰寫AP子類,一未追求用戶體驗?zāi)? 換個觀點而已,做法非常簡單;只是不去做,并非不會做。由于底層硬件功能是整體系統(tǒng)服務(wù)的源頭,也是提升用戶體驗的源頭;唯有采取中國固有的新潮觀點,讓底層硬件服務(wù)視為九五至尊的強龍地位,才能真正實現(xiàn)好的用戶體驗,并帶給軟件開發(fā)人員極佳的獲利機會。
關(guān)于作者
高煥堂,臺灣軟件架構(gòu)設(shè)計大師,從事IT行業(yè)近30年,被稱為“臺灣OO技術(shù)教父級代表人物”?,F(xiàn)任MISOO軟件開發(fā)與管理顧問公司首席架構(gòu)師,編著過十余本軟件技術(shù)相關(guān)書籍。
【編輯推薦】