【编者按】移动开发已经毫无争议地成为软件领域的发展趋势,崭新的领域和模式不仅仅为各个厂商,也会普通的开发者打开了一扇阿里巴巴之门。InfoQ 非常荣幸地邀请到台湾知名技术专家,台湾公认的“OO 教父”和“Android 教父”高焕堂,为 InfoQ 中文站开辟 Android 专栏。这个专栏是摘取自高老师尚未出版的第五本 Android 书籍《Android 赢家密码》。
强龙不压地头蛇
自古有言:“强龙不压地头蛇”。这是来自 << 西游记 >> 第 45 回里所写的:
“你也忒自重了,更不让我远乡之僧; 也罢,这正是强龙不压地头蛇。”
强龙不压地头蛇,其意味着:
- 强龙不会档住地头蛇的财路,
- 反而会协助地头蛇不断成长。
相对上,木瓜树就是“强龙”角色;而小鸟则是“地头蛇”角色。木瓜免费提供又红又甜的木瓜肉给小鸟吃,让小鸟长得强壮,能飞得更远。此外,还把木瓜种子做很精致的方式包装,让种子既不会伤害小鸟,而且种子也不会被小鸟所伤害(例如被消化掉)。如此,木瓜帮助小鸟长大,愈强壮小鸟就能够将木瓜种子携带到愈遥远的新土地上,大图拓展了木瓜的地盘。强龙与地头蛇形成一个极佳的双赢合作模式:
- 强龙帮助地头蛇成长壮大。
- 地头蛇帮助强龙拓展版图。
以 Android 手机平台为例,Google 扮演“强龙”角色;而 AP 开发者则扮演“地头蛇”角色。Google 也尽到强龙的任务:
- 提供 Android 框架 API 和 Android SDK(含 Android NDK)两道奶水,协助 AP 开发者(即地头蛇)。
AP 开发者也尽到责任:
- 到了 2011 年初,全球的 Android AP 开发者已经替 Google 强龙开发出超过 10 万支的 AP(即以奶水去养了 10 万个活泼可爱的小孩),让 Android 手机版图持续扩大,跃升为全世界最畅销的智能型手机了。这也等于帮助 Google 拓展了版图。
以 Android 商业模式为例
Google 强龙希望 Android 平台能支撑它在手机、家电产业上的强龙的地位。除了上述的 AP 开发者之外,Google 还有另一种地头蛇:硬件厂。因此,Google 身旁有两种主要的地头蛇:AP 开发者和硬件厂;其中 AP 开发者撰写手机应用软体,而硬件厂则开发手机硬件组件。如下图所示:
图 1-25 Google 的愿望:拥有强龙商业地位
Google 为了站稳商业强龙地位,它必须协助两种地头蛇去完成他们各自的任务。于是 Google 开发手机平台软件(即 Android 平台),内含两种框架(含 API):
- Java 层应用框架(Application Framework),它用来衔接应用子类。
- HAL(Hardware Abstraction Layer)驱动框架,它用来衔接硬件组件的驱动程序(Driver)。
然后将上述框架当做礼物,分别赠送给 AP 开发者和硬件厂。如下图所示:
Android 框架就是一个完美的范例,主要元素包括:
- 框架内含基类及主动型 API。
- 基类里的程序码是鱼饵。
- 主动型 API 则是鱼钩。
- 框架是一种极为特殊的礼物。
这种“强龙 / 地头蛇”商业模式,很类似于大家熟悉的“加盟”体系。Google 开发 Android 框架来送人,强力支撑其全球分工和营销的加盟体系,如下图:
图 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 年来的软件发展经验了。其中有两项重要的事迹:
- 1980 年代后期,CORBA 是一项物件导向的服务标准 API,实现此项标准的系统中,最著名的商业中间键软件就是 Orbix 系统。然而,在系统架构上,API 是一种制约力量,不是一种礼物,不能用来嘉惠予 AP 开发者。导致 CORBA 和 Orbix 系统架构无法支撑理想的商业模式,而终告消失匿迹。
- 1990 年代中后期,继 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 而受惠。
到了 2007 年,Google 也依样画葫芦,买来 Android 框架,当成礼物赠送给全球的手机硬件厂商,也赠送给全球广大的 AP 开发者。由于 Android 框架“礼物”嘉惠予硬件厂商,所以全球的硬件厂商也是受惠者,因而大力支持 Android,也让 Android 声势扶摇直上。Android 框架是面包与利剑的融合体,不仅嘉惠予硬件厂商,也嘉惠予全球数以万计的广大 AP 开发者,同时也主导了这些开发者。
由于 Google 热情投入开发框架 API,并当成礼物来送人,除了嘉惠众多硬体厂商,也嘉惠了全球的 AP 开发者,让人人能拥有“没钱就改版,改版就有钱”的利益。古贤者老子说:“圣人无积,既以为人己愈有,既以予人己愈多。”从历史可知,秦始皇、汉武帝热情投入万里长城的兴建,而成为最大获利者。如今,Google 和微软都热情投入软件框架的开发,而成为幸运的最大赢家。
关于作者
高焕堂,台湾软件架构设计大师,从事 IT 行业近 30 年,被称为“台湾 OO 技术教父级代表人物”。现任 MISOO 软件开发与管理顾问公司首席架构师,编著过十余本软件技术相关书籍。
评论