`
zscomehuyue
  • 浏览: 411873 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多
http://www.infoq.com/cn/news/2011/02/android-winners-password-1
【编者按】移动开发已经毫无争议地成为软件领域的发展趋势,崭新的领域和模式不仅仅为各个厂商,也会普通的开发者打开了一扇阿里巴巴之门。 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软件开发与管理顾问公司首席架构师,编著过十余本软件技术相关书籍。
分享到:
评论

相关推荐

    混合场景下大规模 GPU 集群构建与实践.pdf

    混合场景下大规模 GPU 集群构建与实践.pdf

    29 螺栓组联接成本优化设计.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    走向现代化数据分析架构:趋势与挑战.pdf

    走向现代化数据分析架构:趋势与挑战.pdf

    基于Matlab极化天线和目标之间的信号传输建模 matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    08-1 圆锥齿轮行星机构运动分析.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    金融大数据存储实践.pdf

    金融大数据存储实践.pdf

    (源码)基于SpringCloudAlibaba的系统管理平台.zip

    # 基于Spring Cloud Alibaba的系统管理平台 ## 项目简介 本项目是一个基于Spring Cloud Alibaba框架的系统管理平台,采用前后端分离的模式,集成了微服务架构。前端基于RuoYiVue框架,后端采用Spring Boot、Spring Cloud Alibaba技术栈。注册中心和配置中心选型Nacos,权限认证使用Redis,流量控制框架选型Sentinel。 ## 项目的主要特性和功能 1. 用户管理完成系统用户配置,支持用户增删改查、权限分配等功能。 2. 部门管理配置系统组织机构(公司、部门、小组),支持树结构展现和数据权限。 3. 岗位管理配置系统用户所属担任职务。 4. 菜单管理配置系统菜单,操作权限,按钮权限标识等。 5. 角色管理角色菜单权限分配、设置角色按机构进行数据范围权限划分。 6. 字典管理对系统中经常使用的一些较为固定的数据进行维护。 7. 参数管理对系统动态配置常用参数。

    这是来自于的c++考试题目

    这是来自于的c++考试题目

    (源码)基于Python和KissFFT的音频处理系统.zip

    # 基于Python和KissFFT的音频处理系统 ## 项目简介 本项目是一个基于Python和KissFFT库的音乐音频处理系统。它利用Python的简洁语法和强大的数据处理能力,结合KissFFT库的高效傅里叶变换算法,实现对音频数据的分析、处理和转换。项目主要目标是处理音乐音频数据,进行特征提取、频谱分析、频率转换等操作,以便于后续的音乐生成、分析和识别等任务。 ## 项目的主要特性和功能 音频数据加载与预处理项目支持从MIDI文件加载音乐数据,并提供数据过滤、编码等预处理功能,以便于后续处理。 FFT算法实现利用KissFFT库实现快速傅里叶变换(FFT)算法,用于音频信号的频谱分析和频率转换。 音频数据可视化提供可视化工具,用于展示音频信号的频谱分布、音符稀疏性等信息。 模型训练与评估支持模型训练与评估,包括自编码器、LSTM等模型,用于音乐生成、预测等任务。

    PADSLayout 常用封装库 ORCAD 常用原理图元器件库

    PADSLayout 常用封装库 ORCAD 常用原理图元器件库 常用的都用,喜欢的朋友们抓紧拿下

    云原生数据库管控探索和实践.pdf

    云原生数据库管控探索和实践.pdf

    yolo算法-人脸情绪数据集-1020张图像带标签-积极的.zip

    yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值

    基于Matlab的变压器短路故障仿真模型

    在本文中,我们利用Matlab软件建立了一个简单的电力系统模型,该模型由电力系统模块及测量模块组成,能够模拟变压器故障,对不同故障进行仿真波形分析。

    毕业设计&课设_基于 RK3588 的边缘预警项目(C++)(含多种功能,有详细架构、编译及使用说明).zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    33 梯形截面管道结构尺寸的优化设计.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    Java期末大作业指南-涵盖矩阵乘法与GUI应用开发-综合评估

    内容概要:本文档为大学课程Java程序设计的期末大作业指导书,涵盖了多个不同难度的任务,旨在测试学生的Java编程能力以及对Java GUI的设计理解和运用水平。任务包括使用for循环计算指定数学表达式的值、实现两个已定义矩阵相乘的操作、利用Java GUI构建简易的功能型应用程序——一个可以执行基本算术操作的计算器、以及一个小而有趣的游戏——网球接球挑战游戏。通过解决这些问题,学生将加深对Java编程环境及其相关API的理解和掌握,提高自身的编码实践能力和创新思考空间。 适合人群:适用于正在进行Java学习阶段的学生、对提升个人编程技能感兴趣的初学者或希望巩固基础的专业开发者。 使用场景及目标:本项目作为一次全面考察学生技术实力的大作业形式存在,旨在促使同学们回顾所学知识并在实践中深化记忆。此外,还可以作为一种教学工具来帮助新手快速入门Java语言和图形界面设计的相关技巧。 其他说明:需要注意的是,在解答过程中遇到困难的同学可以通过QQ讨论组向教师求助;然而,为了确保作业的公平公正,教师不会直接给出解决方案的具体方法论。

    C#ASP.NET养老院老人信息管理系统源码数据库 SQL2008源码类型 WebForm

    ASP.NET养老院老人信息管理系统源码 这是一款非常优秀的养老院老人信息管理系统。程序功能齐全,可选择性强。 管理员后台: 1、人员信息管理:老人信息管理、管理员信息管理、员工信息管理 2、公寓信息管理:添加公寓楼信息、管理公寓楼信息、添加公寓信息、管理公寓信息 3、公寓安排管理:添加公寓安排、公寓安排管理、缴费管理 4、健康管理信息管理:添加健康管理信息、管理健康管理信息 5、紧急联络人管理 6、意见信息管理 7、公告信息管理:添加公告信息、管理公告信息 8、出入信息管理:请假信息管理、访客记录管理、退住情况 员工后台: 1、人员信息管理:老人信息管理 2、健康管理信息管理:管理健康管理信息 3、紧急联络人管理 4、意见信息管理 5、公告信息管理:管理公告信息 6、出入信息管理:请假信息管理、访客记录管理、退住情况 老人后台: 1、修改个人信息 2、修改登陆密码 3、意见信息管理:发布意见信息、意见信息管理 4、查看公告信息

    毕业设计&课设_基于用户协同过滤的商品推荐系统:含多种管理功能,用 Java 等技术实现.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    Kettle 是Kettle E.T.T.L. Envirnonment只取首字母的缩写,这意味着它被设计用来帮助你实现你的

    什么是 Pentaho Pentaho Data Integration (PDI) 提供抽取、转换和加载 (ETL) 功能,使用统一的方式实现了一系列复杂的ETL过程。 如果你第一次接触 Pentaho,你可能会看到或听到 Pentaho 数据集成称为“Kettle”。Pentaho Data Integration 最初是一个名为“Kettle”的开源项目。术语 KETTLE 是一个递归术语,代表 Kettle Extraction Transformation Transport Load Environment。Pentaho 收购 Kettle 后,更名为 Pentaho Data Integration。其他 PDI 组件(例如Spoon、Pan和Kitchen)的名称最初是为了支持 ETL 产品的“烹饪”隐喻。 PDI 常见用途 PDI 客户端(也称为 Spoon)是一个桌面应用程序,使你能够构建转换以及安排和运行作业。 PDI 客户端的常见用途包括: 不同数据库和应用之间的数据迁移。 充分利用云、集群和大规模并行处理环境将大量数据集加载到数据库中。 数据清洗,步

Global site tag (gtag.js) - Google Analytics