Andy Rubin是Google移动平台资深总监,Android公司的创始人之一。这家公司于2005年7月被Google收购,如今是Google新近发布Android平台的创造者。怀着对机器人的热爱,Andy开发创造了Android平台,并将可能成为未来智能手机设备的通用平台。
[/caption] 编者按:本文是《程序员》前技术主编孟岩对Android 创始人 Andy Rubin 的专访,尽管已经时隔两年,但其探讨的话题,对于今天的业界仍有很大的借鉴意义。在Android 手机气势如虹的今天,追溯一下创建者原初的构思,相信一定会给你带来新的启发。 2007年11月Google宣布Android平台,被众多评论者认为是今年移动领域最具影响力的事件之一。恰在12月,Android平台创始人Andy Rubin访问中国,《程序员》杂志有幸成为采访他的第一家中国媒体,本文就是Andy与杂志总编孟岩的对话。

孟岩:您有手机吗?

Andy:当然。

孟岩:您现在用什么手机?

Andy:你猜猜看。

孟岩:要我猜的话,那我估计是iPhone。

Andy:啊哈,没错,就是iPhone。它真的很棒!你想,苹果公司从来没有做过手机,第一代产品就做得这么好,真的很了不起。

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

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

孟岩:我们大概在什么时候能见到第一个gPhone?

Andy:大约会在2008年的下半年,但它不会叫gPhone。请注意,Android是软件。

孟岩:Android手机会很贵吗?

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

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

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

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

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

孟岩:太令人震惊了!

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

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

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

孟岩:Android采用APL协议,这意味着什么?是否从协议层面上保证了开发者的自由?

Andy:目前至少有几十种开源协议。其中最有名的是GPL。但如果你在自己的软件中使用了GPL代码,那么你的代码也必须GPL,这就像病毒传染似的。但是这种规则在手机软件工业中不适用。不同的制造商希望自己的手机能够与竞争对手差异化,如果统统开源的话,这种差异化就很那实现。APL于此不同,它允许你使用APL开源代码,但是并不要求你把自己的代码也开放出来。这比较符合手机软件产业的实际情况,所以我们采用了APL。另一方面,APL在专利权方面还有一些特殊考虑也是很有意思的。比如,如果我用了APL代码,你也用了APL代码,而我却以侵犯专利为由对你提起诉讼,则我将失去使用APL代码的权利。因此,APL确保了彼此之间不会因为软件专利权而互相起诉。在Android中包含大量Google的技术专利,等到我们开放Android源码的时候,这些专利都将对世界公布。

孟岩:如果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开发之旅?

Andy:我的建议很简单,赶快去Android SDK下载网站。那里有开发Android所需要的一切:SDK、文档、范例、开发工具,下载之后马上就可以开始尝试Android开发。当然,如果你愿意参加Google正在举办的Android编程大赛,那么就更好了。Google为这个大赛准备了丰厚的奖金,我认为这是一个很好的实践机会。软件的世界里,一切美好事物都是干出来的,你用心开发出一个高水平的应用,你自己的水平也就大大提高了。此外,应该积极参与社群的讨论和交流,与具有相同目标和兴趣的人沟通,互相学习,这很有好处。在硅谷,我们有一个地方叫做Tech Farm(科技农庄),你付几块钱,就可以到里面去建造新型的计算机,开发新的软件。更重要的是,你能在其中结识各种各样的技术天才,与各种各样的人交流,接触各种各样的想法。这对于提高自己的水平非常有益。

孟岩:我觉得您是一个与众不同的人,精通技术,勇于创新,而又具有企业家的精神。您怎么能够达到这样一种程度的?

Andy:我喜欢创造新的事物,也喜欢带领团队去冒险和迎接挑战,这也许就是你说的企业家精神。至于技术能力,我兼通软硬件,不过这在Google里并不新鲜。至于我为什么能够具备这些能力,我觉得很大程度上是缘于我的好奇心。我是个好奇心很重的人,什么事情都愿意去刨根问底,彻底搞清楚。我小时候拆卸电话和电视,想弄清楚为什么会响铃,为什么电视里会有小人。等我上了高中和大学,我发现了了解事物原理的另一种方法,软件的方法。我可以通过控制0和1来改变事物的行为,而不用拆装硬件。对于一个人来说,最美妙的事情莫过于能够把嗜好变成工作,我恰好是如此,所以当然能够全心投入。我并不是无所不能,很多事情都有人比我干得更好,那我就会去找他们,跟他们合作。我不会一个人单打独斗。

Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!

更多推荐