写点什么

Android 赢家密码(一)——什么是赢家密码

2011 年 2 月 08 日

【编者按】移动开发已经毫无争议地成为软件领域的发展趋势,崭新的领域和模式不仅仅为各个厂商,也会普通的开发者打开了一扇阿里巴巴之门。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 软件开发与管理顾问公司首席架构师,编著过十余本软件技术相关书籍。

2011 年 2 月 08 日 22:523139

评论

发布
暂无评论
发现更多内容

服务器选择要注意什么?

德胜网络-阳

使用sonar扫描svn中的代码后,没有作者或责任人信息

lee

svn 代码质量 sonar

Linux笔记(一):基本命令

Leo

Linux 前端进阶训练营 笔记

K8S CSI容器存储接口(一):介绍以及原理

silenceper

Kubernetes CSI

浅谈原子操作

阿里云基础软件团队

内核

K8S CSI 容器存储接口 (二):如何编写一个CSI插件

silenceper

Kubernetes Kubernetes源码 CSI

当艺术品遇上区块链:金丝楠木艺术品溯源

CECBC区块链专委会

区块链 溯源 艺术品

【2020GET】即构科技蒋宁波:教育行业客户需求的核心是什么?

ZEGO即构

架构师训练营第十周作业

我是谁

极客大学架构师训练营

淘宝APP高并发架构设计pdf已开源:从架构分层到实战维护,挑战全网

马士兵老师

Java 编程语言 高并发 淘宝 高并发系统设计

BitArray虽好,但请不要滥用,一次线上内存暴增排查

AI乔治

Java 架构 JVM 内存泄露

全球至少有36家央行发布了央行数字货币计划

CECBC区块链专委会

数字货币

性能优化:线程资源回收

AI乔治

Java 架构 JVM 性能调优

原理实践,全面讲解Logstash+Kibana+kafka

996小迁

Java 程序员 架构 面试

LeetCode题解:17. 电话号码的字母组合,回溯,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

实体经济的数智化要塞,为什么是供应链?

脑极体

架构师训练营 -week10-作业

大刘

极客大学架构师训练营

阿里P8大牛熬了半个月肝出来的《Java核心技术总结》+《面试题总结》,PDF离线版免费开放下载!

Java成神之路

Java 程序员 架构 面试 编程语言

五年Java开发经验,4面阿里成功拿下offer,分享一下个人面经!

Java成神之路

Java 程序员 架构 面试 编程语言

连企业业务模式都搞不清楚,何谈研发体系建设?

菜根老谭

研发体系

谁说产品经理和程序员之间不能和平共处?

华为云开发者社区

DevOps 产品经理 用户地图

区块链赋能保险理赔,宁波开启“零感知理赔”试点

CECBC区块链专委会

区块链 保险理赔

用FL Studio基础版制作一首完整的电音

奈奈的杂社

音乐制作 编曲 电音 电音制作 中国电音

区块链版权应用开发,区块链助力版权保护

13530558032

一口气看完45个寄存器,CPU核心技术大揭秘

程序员架构进阶

cpu 操作系统 寄存器 核心

淘宝直播技术干货:高清、低延时的实时视频直播技术解密

JackJiang

即时通讯 视频编码 实时音视频 直播技术

Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合

比伯

Java 架构 面试 编程语言 计算机

区块链溯源有哪些优势?区块链产品溯源系统搭建

13530558032

很简单却能让你面试头疼得Java容器,这里从源码给你解释清楚

小Q

Java 学习 源码 容器 面试

智慧警务大数据平台搭建_公安大数据应用平台

13530558032

一文搞懂所有HashMap面试题

云流

编程 面试 计算机

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

Android赢家密码(一)——什么是赢家密码-InfoQ