您的位置:首页 > 移动开发 > Android开发

[转]Android之父深入解析Android

2012-07-13 14:06 274 查看
原文地址:http://www.moandroid.com/?p=1065

上周末去光谷书城,不经意间看到了程序员杂志2008年合订本,无意中看到这篇经典的文章:Andy Rubin 独家专访,感受颇深,将这篇文章稍微整理了下,在这里与大家一起分享。声明:原文章来源于程序员杂志2008年第一期,本人看到这篇文章后收获很多,将原文稍微修改(原文比较长,去掉无关紧要的内容,保留经典部分)。

整理后的文章如下:
2007 年11 月Google 宣布Android 平台,被众多评论者认为是今年移动领域最具影响力的事件之一。恰在12 月,Android 平台创始人Andy Rubin 访问中国,《程序员》杂志有幸成为采访他的第一家中国媒体,本文就是Andy 与杂志总编孟岩的对话。

…………

孟岩:这么说您也很喜欢iPhone?那么为什么还劳神费力开发Android 这样一个新的手机操作系统?

Andy :没错,iPhone 非常棒,但是它是一家公司的产品, 它从里到外的设计都是特定的,只有一个按钮,那么大的屏幕,特有的软件系统。尽管它很棒,但是它就是苹果的,别的制造商用不了。Android 不同,Android对所有人开放,而不只是一家厂商。你可以在摩托、三星、LG等几十个厂商的手机上运行Android。对于开发者来说,这一点意义重大,它意味着你写的手机应用可以无需修改地运行在几十个不同厂商出产的手机上。

孟岩:Android 手机会很贵吗?

Andy :不会。手机硬件越来越便宜。相对来说,软件成本才是居高不下。在整个手机的成本中,软件所占比例越来越大。这根20多年前发生在PC领域中的情况一模一样。Android是开源软件,能够有效降低软件的成本,从而降低手机的整体价格。

孟岩:如何保证那些手机都能够顺利地运行Android 的呢?各种手机的配置千差万别,难道是像微软那样指定一个硬件规范,要求厂商去遵守吗?

Andy :当然不是。这里面可是有门道的, 我们在设计时就努力地让Android 变得很容易移植到不同手机设备上。Android 也许是目前最具可移植性的手机操作系统。给你讲个实际例子吧。今年感恩节前后,我们的一个工程师打算利用假期尝试把Android 移植到一款诺基亚手机上。这是一款与我们的参考设备完全不同的手机,屏幕尺寸、按钮、无线设备统统不同。你猜猜他用了多长时间完成这一工作?

孟岩:少说也得一个星期吧?

Andy :只用了三个多小时,通共改动了4行C语言源代码。

孟岩:太令人震惊了!

Andy:可不是吗,连我也感到震惊。我想这就是开放平台的威力。

孟岩:您提到开放,一个开放的手机软件平台对于手机制造商来说有什么意义呢?

Andy :目前手机操作系统大约占手机成本的20%,而在此之上,手机制造商还必须自己集成若干重要应用软件,如浏览器、短信、图片显示软件等等,这给他们带来了不小的负担。Android 提供了一个从操作系统到应用程序的完整软件栈,同时又允许人们定制差异化,以形成自己竞争优势,对于手机制造商来说,其意义不言而喻。开放带来的另一个好处是允许厂商自主解决问题,当你发现Android系统中有bug或者不符合你要求的地方,不必等上18个月,而是可以直接解决。

…………….

孟岩:如果Android 取得成功的话,Google 和你本人肯定无意成为手机软件领域的统治者吗?

Andy :当然不会。开放本身就意味着没有人统治一切。况且如今已经有三十多家公司加入Android联盟,实际上Android 不是Google 一家的,任何人都可以拥有Android。相信我,没有人能成为Android世界的垄断者。

孟岩:如果是这样的话? Google又能得到什么好处?

Andy :你还记得我刚才说过的,今天的手机软件产业与20 多年前的PC软件产业如出一辙。因此我们要注意,如果只有一家公司来提供手机基础软件的话,那么毫无疑问就会再次产生一个巨无霸的垄断者。今天世界上大约12 亿PC用户,可是手机用户有30 亿之多!这意味着,手机一定会成为人们获取信息的主要设备。如果有一家公司垄断了手机软件市场,它就可以决定人们可以看或不可以看什么样的信息, 这是很严重的问题, 也是Google 不愿意看到的。我们开发Android 并且将其开放, 就是要防止这种情况发生, 让每个人都可以平等自由地访问信息。只要用户能够自由获取信息,Google 就可以找到自己的业务模式。

孟岩: 好吧,那么告诉我, 你为什么要把这个系统命名为Android ?

Andy :Android 其实是我于2005年1 月创办的手机操作系统软件公司的名字,半年后这家公司被Google收购了,不过我们的产品名字继续称为Android。至于其来历嘛,我创办的上一家公司叫做Danger(危险),你说如果上一家公司叫“危险”的话,下一家公司该叫什么名字?总不能叫“完蛋”吧?我是说,高科技公司取名字尽可以有趣一些,既然Linus Torvalds把自己写的操作系统称为Linux,那么我的名字是Andrew,把这家公司叫做Android有何不可呢?再加上我本身是个机器人迷,所以Android 这个名字还是不错的。事实上, 在Android 之前,我们能已经做出来一款手机,叫做T-Mobile Sidekick。这款产品很成功,好莱坞的很多明星都用它。但是我觉得毕竟它能够触及到的人群还是有限,所以决定做一个手机操作系统,能够运行在各种手机设备上。

孟岩:Android 由Linux+Java 构成。手机操作系统用Linux 我能理解, 用Java 也是情理之中。可是Android 不是把现有的成熟的Java 拿来直接用,而是从头开始重新实现了一个Java,从虚拟机到相当多的Java 类库。这不是重新发明轮子吗?有这个必要吗?

Andy :对我来说,“Java”这个词意味着四种东西:一种编程语言,一种虚拟机,一个类库,和一个应用程序框架。我们的确重新开发了虚拟机,这是因为要克服现有手机JVM的一些固有缺陷,比如启动时间过长,功能受限。你知道,Java ME为了保证“一次开发,到处运行”,就不得不迁就那些配置非常低端的手机设备,结果导致其功能十分有限。而你看看iPhone之所以这么酷,就是因为它完全不考虑要去兼容什么过时的设备,iPhone的配置完全不亚于一台五年前的PC。我们在设计之初就决定,甩掉不必要的历史包袱,对Android的硬件配置作出一定的要求,从而使得我们可以在比较高的水平上重新设计和优化JVM。此外,我们的确完全重新开发了一个应用程序框架,称之为Android应用框架。这是因为我们对于如何组织手机应用程序有全新的、特别的想法,现有的Java ME完全不能满足我们的需要,所以重新开发一个,这并没有什么大不了的。

孟岩:什么全新的、特别孟岩:什么全新的、特别的想法,能透露一下吗?

Andy :我们希望支持手机应用程序的mash-up。“Mash-up”这个词是从Web 2.0 里偷过来的,你应该知道什么是Web 2.0 mash-up 吧?

孟岩:这我当然知道。比如我从一个网页上抓下一块XHTML 数据,再从另一个Web Services 那里获得一些XML 数据,我就可以把这两块数据mash-up 起来,形成新的XML 数据,并且这一数据可以在此被别人mash-up。不过Web 2.0 中的mash-up 是基于XML数据的,难道Android 中的mash-up 也需要借助XML 来完成吗?

Andy :好问题。在传统的手机开发中,应用程序要么调用操作系统服务,要么通过程序库获得较高级的服务。如果操作系统和程序库都没有提供某项功能,应用程序开发者只好自己实现。在Web上,一个Web应用不仅可以使用本机上由操作系统提供的服务,还可以以你刚才所说的方式使用其他Web 应用所提供的服务。这样一来,Web 应用程序不仅可以依赖操作系统服务,而且可以彼此相互提供服务。这就是我们想在Android中达成的目标,也是为什么我们要重新开发一个应用框架的根本原因。

孟岩:这个想法是怎么来的?

Andy :你知道Google是一家互联网公司,并且拥有很多世界上最聪明的软件工程师,像mash-up 这样的想法就长在Google的DNA里,所以把这种思想带入手机平台很自然。

孟岩:能详细的讲讲Android 如何实现mash-up 吗?

Andy :Android 的mash-up 中有两个关键概念,一个称为Activity,一个称为Intent。Activity 可以完成某些工作,而Intent 可以表达“要做某事”,一个Activity可以满足若干Intents。我举一个例子好了,比如我在写一个email,打算附加一个图片附件,需要选择图片。我会广播一个Intent,说:“我要选择图片,你们谁能选择图片?”。那么设备中的Android 应用和外部的服务,如Flickr 和Picasa 都可以举手响应说:“我行!”然后用户就可以选择其中最合适的那个来选择图片。

孟岩:听起来很像GUI 框架中的Signal/Slot ?

Andy :我觉得更好的类比是微软的COM体系。Android 可以把设备内和互联网上的服务都以上述的方式mash-up 起来。这一能力实在非凡。它使得开发者能够在一个非常高的层次上快速开发高质量的应用。

孟岩:这对于开发者确实有很大的吸引力。

Andy :当然。对于开发者而言,Android 是一个非常有特色的先进的平台, 能够放大开发者的能力和效率。同时,Android 的开发语言和环境都是开发者所熟悉的。Java 语言是世界上最流行的语言,而在开发环境方面,我们选择了大家熟悉的Eclipse和IntelliJ。所有的软件、工具和模拟器都是免费的,整个系统稍后还会完全开源,开发者无需做任何痛苦的转型,就可以为Android 开发应用。

…………

读后感
看了以上Android之父对每个问题的解析,我们这些Android应用程序开发人员大脑中的很多疑惑,是不是都消失了?每个Android开发人员都能从这篇文章中受到很大的启发,如果想看原文请到程序员杂志的官网站去下载。在后面的篇幅中我们会抽空,继续与大家分享Android方面的一些经典的文章。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: