By: 海市蜃樓
上周末去光谷書(shū)城,不經(jīng)意間看到了程序員雜志2008年合訂本,無(wú)意中看到這篇經(jīng)典的文章:Andy Rubin 獨(dú)家專(zhuān)訪,感受頗深,將這篇文章稍微整理了下,在這里與大家一起分享。聲明:原文章來(lái)源于程序員雜志2008年第一期,本人看到這篇文章后收獲很多,將原文稍微修改(原文比較長(zhǎng),去掉無(wú)關(guān)緊要的內(nèi)容,保留經(jīng)典部分)。
整理后的文章如下:
2007 年11 月Google 宣布Android 平臺(tái),被眾多評(píng)論者認(rèn)為是今年移動(dòng)領(lǐng)域最具影響力的事件之一。恰在12 月,Android 平臺(tái)創(chuàng)始人Andy Rubin 訪問(wèn)中國(guó),《程序員》雜志有幸成為采訪他的第一家中國(guó)媒體,本文就是Andy 與雜志總編孟巖的對(duì)話。
............
孟巖:這么說(shuō)您也很喜歡iPhone?那么為什么還勞神費(fèi)力開(kāi)發(fā)Android 這樣一個(gè)新的手機(jī)操作系統(tǒng)?
Andy :沒(méi)錯(cuò),iPhone 非常棒,但是它是一家公司的產(chǎn)品,它從里到外的設(shè)計(jì)都是特定的,只有一個(gè)按鈕,那么大的屏幕,特有的軟件系統(tǒng)。盡管它很棒,但是它就是蘋(píng)果的,別的制造商用不了。Android 不同,Android對(duì)所有人開(kāi)放,而不只是一家廠商。你可以在摩托、三星、LG等幾十個(gè)廠商的手機(jī)上運(yùn)行Android。對(duì)于開(kāi)發(fā)者來(lái)說(shuō),這一點(diǎn)意義重大,它意味著你寫(xiě)的手機(jī)應(yīng)用可以無(wú)需修改地運(yùn)行在幾十個(gè)不同廠商出產(chǎn)的手機(jī)上。
孟巖:Android 手機(jī)會(huì)很貴嗎?
Andy :不會(huì)。手機(jī)硬件越來(lái)越便宜。相對(duì)來(lái)說(shuō),軟件成本才是居高不下。在整個(gè)手機(jī)的成本中,軟件所占比例越來(lái)越大。這根20多年前發(fā)生在PC領(lǐng)域中的情況一模一樣。Android是開(kāi)源軟件,能夠有效降低軟件的成本,從而降低手機(jī)的整體價(jià)格。
孟巖:如何保證那些手機(jī)都能夠順利地運(yùn)行Android 的呢?各種手機(jī)的配置千差萬(wàn)別,難道是像微軟那樣指定一個(gè)硬件規(guī)范,要求廠商去遵守嗎?
Andy :當(dāng)然不是。這里面可是有門(mén)道的, 我們?cè)谠O(shè)計(jì)時(shí)就努力地讓Android 變得很容易移植到不同手機(jī)設(shè)備上。Android 也許是目前最具可移植性的手機(jī)操作系統(tǒng)。給你講個(gè)實(shí)際例子吧。今年感恩節(jié)前后,我們的一個(gè)工程師打算利用假期嘗試把Android 移植到一款諾基亞手機(jī)上。這是一款與我們的參考設(shè)備完全不同的手機(jī),屏幕尺寸、按鈕、無(wú)線設(shè)備統(tǒng)統(tǒng)不同。你猜猜他用了多長(zhǎng)時(shí)間完成這一工作?
孟巖:少說(shuō)也得一個(gè)星期吧?
Andy :只用了三個(gè)多小時(shí),通共改動(dòng)了4行C語(yǔ)言源代碼。
孟巖:太令人震驚了!
Andy:可不是嗎,連我也感到震驚。我想這就是開(kāi)放平臺(tái)的威力。
孟巖:您提到開(kāi)放,一個(gè)開(kāi)放的手機(jī)軟件平臺(tái)對(duì)于手機(jī)制造商來(lái)說(shuō)有什么意義呢?
Andy :目前手機(jī)操作系統(tǒng)大約占手機(jī)成本的20%,而在此之上,手機(jī)制造商還必須自己集成若干重要應(yīng)用軟件,如瀏覽器、短信、圖片顯示軟件等等,這給他們帶來(lái)了不小的負(fù)擔(dān)。Android 提供了一個(gè)從操作系統(tǒng)到應(yīng)用程序的完整軟件棧,同時(shí)又允許人們定制差異化,以形成自己競(jìng)爭(zhēng)優(yōu)勢(shì),對(duì)于手機(jī)制造商來(lái)說(shuō),其意義不言而喻。開(kāi)放帶來(lái)的另一個(gè)好處是允許廠商自主解決問(wèn)題,當(dāng)你發(fā)現(xiàn)Android系統(tǒng)中有bug或者不符合你要求的地方,不必等上18個(gè)月,而是可以直接解決。
................
孟巖:如果Android 取得成功的話,Google 和你本人肯定無(wú)意成為手機(jī)軟件領(lǐng)域的統(tǒng)治者嗎?
Andy :當(dāng)然不會(huì)。開(kāi)放本身就意味著沒(méi)有人統(tǒng)治一切。況且如今已經(jīng)有三十多家公司加入Android聯(lián)盟,實(shí)際上Android 不是Google 一家的,任何人都可以擁有Android。相信我,沒(méi)有人能成為Android世界的壟斷者。
孟巖:如果是這樣的話? Google又能得到什么好處?
Andy :你還記得我剛才說(shuō)過(guò)的,今天的手機(jī)軟件產(chǎn)業(yè)與20 多年前的PC軟件產(chǎn)業(yè)如出一轍。因此我們要注意,如果只有一家公司來(lái)提供手機(jī)基礎(chǔ)軟件的話,那么毫無(wú)疑問(wèn)就會(huì)再次產(chǎn)生一個(gè)巨無(wú)霸的壟斷者。今天世界上大約 12 億PC用戶,可是手機(jī)用戶有30 億之多!這意味著,手機(jī)一定會(huì)成為人們獲取信息的主要設(shè)備。如果有一家公司壟斷了手機(jī)軟件市場(chǎng),它就可以決定人們可以看或不可以看什么樣的信息,這是很?chē)?yán)重的問(wèn)題, 也是Google 不愿意看到的。我們開(kāi)發(fā)Android 并且將其開(kāi)放, 就是要防止這種情況發(fā)生,讓每個(gè)人都可以平等自由地訪問(wèn)信息。只要用戶能夠自由獲取信息,Google 就可以找到自己的業(yè)務(wù)模式。
孟巖: 好吧,那么告訴我, 你為什么要把這個(gè)系統(tǒng)命名為Android ?
Andy :Android 其實(shí)是我于2005年1 月創(chuàng)辦的手機(jī)操作系統(tǒng)軟件公司的名字,半年后這家公司被Google收購(gòu)了,不過(guò)我們的產(chǎn)品名字繼續(xù)稱為Android。至于其來(lái)歷嘛,我創(chuàng)辦的上一家公司叫做Danger(危險(xiǎn)),你說(shuō)如果上一家公司叫“危險(xiǎn)”的話,下一家公司該叫什么名字?總不能叫“完蛋”吧?我是說(shuō),高科技公司取名字盡可以有趣一些,既然Linus Torvalds把自己寫(xiě)的操作系統(tǒng)稱為L(zhǎng)inux,那么我的名字是Andrew,把這家公司叫做Android有何不可呢?再加上我本身是個(gè)機(jī)器人迷,所以Android 這個(gè)名字還是不錯(cuò)的。事實(shí)上, 在Android 之前,我們能已經(jīng)做出來(lái)一款手機(jī),叫做T-Mobile Sidekick。這款產(chǎn)品很成功,好萊塢的很多明星都用它。但是我覺(jué)得畢竟它能夠觸及到的人群還是有限,所以決定做一個(gè)手機(jī)操作系統(tǒng),能夠運(yùn)行在各種手機(jī)設(shè)備上。
孟巖:Android 由Linux+Java 構(gòu)成。手機(jī)操作系統(tǒng)用Linux 我能理解, 用Java 也是情理之中。可是Android 不是把現(xiàn)有的成熟的Java 拿來(lái)直接用,而是從頭開(kāi)始重新實(shí)現(xiàn)了一個(gè)Java,從虛擬機(jī)到相當(dāng)多的Java 類(lèi)庫(kù)。這不是重新發(fā)明輪子嗎?有這個(gè)必要嗎?
Andy :對(duì)我來(lái)說(shuō),“Java”這個(gè)詞意味著四種東西:一種編程語(yǔ)言,一種虛擬機(jī),一個(gè)類(lèi)庫(kù),和一個(gè)應(yīng)用程序框架。我們的確重新開(kāi)發(fā)了虛擬機(jī),這是因?yàn)橐朔F(xiàn)有手機(jī)JVM的一些固有缺陷,比如啟動(dòng)時(shí)間過(guò)長(zhǎng),功能受限。你知道,Java ME為了保證“一次開(kāi)發(fā),到處運(yùn)行”,就不得不遷就那些配置非常低端的手機(jī)設(shè)備,結(jié)果導(dǎo)致其功能十分有限。而你看看iPhone之所以這么酷,就是因?yàn)樗耆豢紤]要去兼容什么過(guò)時(shí)的設(shè)備,iPhone的配置完全不亞于一臺(tái)五年前的PC。我們?cè)谠O(shè)計(jì)之初就決定,甩掉不必要的歷史包袱,對(duì)Android的硬件配置作出一定的要求,從而使得我們可以在比較高的水平上重新設(shè)計(jì)和優(yōu)化JVM。此外,我們的確完全重新開(kāi)發(fā)了一個(gè)應(yīng)用程序框架,稱之為Android應(yīng)用框架。這是因?yàn)槲覀儗?duì)于如何組織手機(jī)應(yīng)用程序有全新的、特別的想法,現(xiàn)有的Java ME完全不能滿足我們的需要,所以重新開(kāi)發(fā)一個(gè),這并沒(méi)有什么大不了的。
孟巖:什么全新的、特別孟巖:什么全新的、特別的想法,能透露一下嗎?
Andy :我們希望支持手機(jī)應(yīng)用程序的mash-up。“Mash-up”這個(gè)詞是從Web 2.0 里偷過(guò)來(lái)的,你應(yīng)該知道什么是Web 2.0 mash-up 吧?
孟巖:這我當(dāng)然知道。比如我從一個(gè)網(wǎng)頁(yè)上抓下一塊XHTML 數(shù)據(jù),再?gòu)牧硪粋€(gè)Web Services 那里獲得一些XML 數(shù)據(jù),我就可以把這兩塊數(shù)據(jù)mash-up 起來(lái),形成新的XML 數(shù)據(jù),并且這一數(shù)據(jù)可以在此被別人mash-up。不過(guò)Web 2.0 中的mash-up 是基于XML數(shù)據(jù)的,難道Android 中的mash-up 也需要借助XML 來(lái)完成嗎?
Andy :好問(wèn)題。在傳統(tǒng)的手機(jī)開(kāi)發(fā)中,應(yīng)用程序要么調(diào)用操作系統(tǒng)服務(wù),要么通過(guò)程序庫(kù)獲得較高級(jí)的服務(wù)。如果操作系統(tǒng)和程序庫(kù)都沒(méi)有提供某項(xiàng)功能,應(yīng)用程序開(kāi)發(fā)者只好自己實(shí)現(xiàn)。在Web上,一個(gè)Web應(yīng)用不僅可以使用本機(jī)上由操作系統(tǒng)提供的服務(wù),還可以以你剛才所說(shuō)的方式使用其他Web 應(yīng)用所提供的服務(wù)。這樣一來(lái),Web 應(yīng)用程序不僅可以依賴操作系統(tǒng)服務(wù),而且可以彼此相互提供服務(wù)。這就是我們想在Android中達(dá)成的目標(biāo),也是為什么我們要重新開(kāi)發(fā)一個(gè)應(yīng)用框架的根本原因。
孟巖:這個(gè)想法是怎么來(lái)的?
Andy :你知道Google是一家互聯(lián)網(wǎng)公司,并且擁有很多世界上最聰明的軟件工程師,像mash-up 這樣的想法就長(zhǎng)在Google的DNA里,所以把這種思想帶入手機(jī)平臺(tái)很自然。
孟巖:能詳細(xì)的講講Android 如何實(shí)現(xiàn)mash-up 嗎?
Andy :Android 的mash-up 中有兩個(gè)關(guān)鍵概念,一個(gè)稱為Activity,一個(gè)稱為Intent。Activity 可以完成某些工作,而Intent 可以表達(dá)“要做某事”,一個(gè)Activity可以滿足若干Intents。我舉一個(gè)例子好了,比如我在寫(xiě)一個(gè)email,打算附加一個(gè)圖片附件,需要選擇圖片。我會(huì)廣播一個(gè)Intent,說(shuō):“我要選擇圖片,你們誰(shuí)能選擇圖片?”。那么設(shè)備中的Android 應(yīng)用和外部的服務(wù),如Flickr 和Picasa 都可以舉手響應(yīng)說(shuō):“我行!”然后用戶就可以選擇其中最合適的那個(gè)來(lái)選擇圖片。
孟巖:聽(tīng)起來(lái)很像GUI 框架中的Signal/Slot ?
Andy :我覺(jué)得更好的類(lèi)比是微軟的COM體系。Android 可以把設(shè)備內(nèi)和互聯(lián)網(wǎng)上的服務(wù)都以上述的方式mash-up 起來(lái)。這一能力實(shí)在非凡。它使得開(kāi)發(fā)者能夠在一個(gè)非常高的層次上快速開(kāi)發(fā)高質(zhì)量的應(yīng)用。
孟巖:這對(duì)于開(kāi)發(fā)者確實(shí)有很大的吸引力。
Andy :當(dāng)然。對(duì)于開(kāi)發(fā)者而言,Android 是一個(gè)非常有特色的先進(jìn)的平臺(tái),能夠放大開(kāi)發(fā)者的能力和效率。同時(shí),Android 的開(kāi)發(fā)語(yǔ)言和環(huán)境都是開(kāi)發(fā)者所熟悉的。Java 語(yǔ)言是世界上最流行的語(yǔ)言,而在開(kāi)發(fā)環(huán)境方面,我們選擇了大家熟悉的Eclipse和IntelliJ。所有的軟件、工具和模擬器都是免費(fèi)的,整個(gè)系統(tǒng)稍后還會(huì)完全開(kāi)源,開(kāi)發(fā)者無(wú)需做任何痛苦的轉(zhuǎn)型,就可以為Android 開(kāi)發(fā)應(yīng)用。
............
讀后感
看了以上Android之父對(duì)每個(gè)問(wèn)題的解析,我們這些Android應(yīng)用程序開(kāi)發(fā)人員大腦中的很多疑惑,是不是都消失了?每個(gè)Android開(kāi)發(fā)人員都能從這篇文章中受到很大的啟發(fā),如果想看原文請(qǐng)到程序員雜志的官網(wǎng)站去下載。在后面的篇幅中我們會(huì)抽空,繼續(xù)與大家分享 Android方面的一些經(jīng)典的文章。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
