By: 海市蜃樓
上周末去光谷書城,不經意間看到了程序員雜志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方面的一些經典的文章。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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