天天看點

(轉)Android之父深入解析Android Android之父深入解析Android

Android之父深入解析Android

By: 海市蜃樓 | In: Android開發|Android新聞

上周末去光谷書城,不經意間看到了程式員雜志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方面的一些經典的文章。

随機日志

  • 編寫你的第一個Android應用程式
  • Cocos2d Android移植手記(二)——cocos2d Android包架構設計
  • 如何讓iPad使用HTML5播放器而不是Quicktime來播放視訊?
  • Java I/O總結——Writer
  • JetBoy遊戲深入解析(上)——架構分析

轉自:http://www.moandroid.com/?p=1065