編輯:開發入門
在一個充斥著蹩腳比喻的行業,突然有人跳出來並抓住富有創造力的業務和 IT 人員的想象力,這一點也不奇怪。雲計算 就是這樣一種比喻,而且它已經(請允許我這樣說)席卷了全球。但雲計算到底是指什麼呢?
當然,雲是由許多水分子組成的,幾乎有幾億個。雲沒有中央控制,基本上可以隨風吹向各處。從這個角度來說,Internet 中無數個具有各種用途的客戶機和服務器以及驅動其發展的控制實體就像是雲。將這一概念與手機公司帶給我們的無線數據革命結合後,我們似乎就處在一種無形的 “雲” 計算力量中了。
自電子計算機誕生以來,就一直有人對計算機的 4 個主要功能部分進行明確的劃分:
前三個部分將 “計算” 功能植於計算機中。第 4 部分通常存儲有價值的數據資產,這一部分將隨著雲計算的到來而發生翻天覆地的變化。有價值的數據駐留在非易失性存儲器中,以免因為斷電而丟失 — 不管這種斷電是有意還是無意。非易失性存儲設備一般為硬盤,但也可以是安全數字(SD)卡之類的固態設備,甚至可以是磁帶設備(不過現在已經過時了)。但是這些設備都有它們的局限性。
隨著時間的流逝,技術也在不斷進步,出現了計算機網絡,在計算機網絡上,企業中有價值的數據資產都集中在一台由多個終端共享的計算機中,而且定期對這些數據進行備份是一項基本的 IT 職能。這種模型(稱為大型機模型)提供了許多優點 — 其中之一就是它減輕了每個終端位置的工作負載。僅具有一個微型終端(鍵盤、鼠標、顯示器和 PC)的小型辦公室可以訪問 GB 級的企業數據,而無需提供大型機的處理能力 — 只要它們通過電纜連接在一起。
下一個巨大的范式轉變來自於我們所熟知的 Internet,在其中,龐大的計算機系統(本地網絡)可以為位於全世界任何可以使用衛星天線的位置的大量微型終端提供服務。這種配置的無線遠程特點即被稱為雲。
隨後出現了個人數字助理(PDA)、移動電話和智能手機,計算機的微型化已經發展到我們熟知的並非常喜愛的手持形式。一夜之間,智能終端已經成為無數高生產力人員的工具,它們以驚人的速度生成和消費著信息。
在 20 世紀 90 年代中期和末期,電子郵件和萬維網(World Wide Web)是主導雲的最流行應用程序。大多數人都使用 Web 浏覽器與雲進行交互並認識到 Internet 是一種比較簡單的應用。隨著 Yahoo! 和 Google 在商業方面的成功,TB 級服務器和網絡連接取代本地硬盤成為首選的非易失性存儲設備。就像許多具有超前思維的預見者所預言的那樣,雲已經成為了一種像水、電話和電那樣不可缺少的現代實用工具。通過將移動電話數字網絡作為主要的 Internet 服務提供商(Internet Service Provider,ISP),雲已經發展為使用幾百萬個微型手持設備作為顯示服務器數據的主要工具。
就像雲到處移動和隨風變化那樣,這些微型手持設備的操作模式也是如此 — 終端變得越來越小,功能越來越強,可移植性增強了許多,服務器的功能也越加強大,通過軟件虛擬化並根據使用收費,能更好地滿足用戶的數據需求。
公司不再需要維護大型而昂貴的服務器 “集群”,現在有另一種成本更低的方法:通過 Google、Amazon 和 IBM® 之類的供應商實現服務外包。通過虛擬化,以前在定制環境中運行的應用程序現在可以被復制或 “映像化”,從而在供應商服務器的雲中運行。通過恰當地對這些服務計費,公司就不需要在服務空閒期間支付高額費用。
在硬件技術不斷進步的同時,軟件技術也在不斷發展,並且我們看到出現了很多新的應用程序。例如,基於位置的服務可確定接近手機訊號接收塔的企業、內置全球定位系統(GPS)可以確定您的位置。出現了下載和測試有用程序和數據文件的新市場,比如用於購買和下載音樂的 Android Market 和 Amazon MP3 Market。毫無疑問,這些獨特的新的雲計算應用程序將進一步發展 — 例如,公司可以分類和選擇區域聯系人信息,然後在區域銷售人員休息時自動將當天的促銷電話列表發送到他們的基於 android 的手機中。
雲計算將可移植設備與強大的服務器互為補充,它需要一個能夠讓服務器架構師和程序員最大程度利用小型客戶機機器的操作系統。android 就是這樣一種操作系統。
android 架構
首先,Android 是一個用於移動設備的軟件堆棧。這意味著優先級最高的事是保持電池電量和有效地管理有限的內存資源。android 系統堆棧有 5 個不同的層:
每個 android 應用程序可以被進一步劃分為不同的功能單元:
活動
活動 是 android 應用程序的一個組件,它擴展 Activity
基類並定義一個由響應事件 的 視圖(VIEw)組成的接口。如果一個應用程序由 3 個窗口(例如,一個登錄窗口、一個文本查看窗口和一個文件查看窗口)組成,那麼每一個窗口通常用一個不同的 Activity
類來表示。
android 維護每個從主頁中運行的應用程序的歷史堆棧,您可以單擊Back 按鈕回滾這些活動的歷史。
目的
目的 與活動一樣,是應用程序代碼中的一個特殊類,定義應用程序要做的事情。目的添加了一個間接層來支持復雜組件的重用和替換。例如,某個應用程序可能提供了一個標簽為 ClIEnts 的按鈕,單擊該按鈕時,會顯示一個聯系人列表,上面都是您的客戶。然後就要使用間接層了:您不需要對這些聯系人使用默認查看器;相反,可以使用一種不同的查看器。
對某些應用程序而言,這可能是一個非常強大的應用程序集成功能。對於特殊的顯示,使用地形圖或許要比使用默認地圖的效果更好。
諸如 BroadcastReceiver
這樣的類定義的代碼將在外部事件觸發它們時執行。定時器鳴叫或手機來電等事件可以以這種方式進行監視。通常,這類代碼不顯示窗口,但可以使用 NotificationManager
類來提醒用戶需要注意某事。
服務
服務 是在較低級別運行的一個應用程序,沒有顯示,也沒有 UI。它通常是一個會在幕後運行很長時間的應用程序。一個很好的例子就是播放歌曲列表的媒體播放器程序。盡管媒體播放應用程序會顯示一個 UI 來允許用戶定義他們的播放列表,但是程序實際上是讓服務來控制給定播放列表中的歌曲播放。
安全模型
android 的安全模型只允許程序有自己的數據。如果程序員想在幾個不同程序之間共享數據,他們可以為此定義內容提供者。
android.provider
包定義一些允許應用程序讀取大量內置 android 數據庫的類和接口。聯系人、照片和歌曲等信息可以通過這些接口在不同應用程序之間輕松共享。
永遠不要低估開放源代碼的強大威力,就像不能低估自由的、有創造性的人們的能力一樣。Android 平台不受專用 API 和經常影響軟件工程進度的公司利益的束縛,它擁有一個非常活躍的大型開發人員社區,將許多人的才能結合起來確實實現了一加一大於二的效果。想拓展您的編程職業生涯嗎?那就學習 android 平台編程吧,而且某一天,您將擁有包含幾百萬名移動電話用戶的潛在市場 — 其中一些人可能需要使用您的程序。
android 的核心是 ARM Linux。單憑這一點就可以對此平台的迅速發展抱有極大信心。Linux 是一?快速且安全的操作系統,有成千上萬名的程序員對它都很熟悉。許多基於 Linux 的系統被連接到雲中並服務請求,它們可以正常運行好多年 — 這充分證明了 Linux 的可靠性。
開發環境:Eclipse、Windows、Linux
考慮 android 開發環境時,程序員們有多種選擇。他們可以使用 Microsoft® Windows® XP 或 Windows Vista®、Macintosh OS X(V10.4.8 或更高版本,僅 x86)、Desktop Linux(首選 Ubuntu)。這些常用的操作系統都有可下載的軟件開發工具包(SDK)。
您可以使用 Eclipse 或 Sun Microsystems 的 NetBeans 之類的 GUI IDE,也可以使用命令行方法和標准編輯器,您可以任意選擇。
Android 社區鼓勵相互交流,創建 android 的公司也是如此,這些公司有 Google、HTC、T-Mobile 和開放手機聯盟項目(Open Handset Alliance Project)的其他成員。開放 的真正含義就是開放人們(程序員、用戶、銷售人員等)之間的交流、開放協議和開放編程 API。
借助各種軟件許可,組織也可以在 android 上放置專用程序和數據。這不僅可以讓組織不會脫離平台,而且也不會限制消費者的選擇。這是一種雙贏的組合。
開始使用 android SDK
任何對開發 Android 感興趣的人所要做的第一件事就是下載並安裝 android SDK(請參閱 參考資料)。然後開始准備編程。每個人的編程方式都不盡相同。一些人(包括我在內)喜歡在學習完所有內容後再開始編碼。其他一些人則喜歡立即開始並練習完整 Android 文檔給出的教程示例。但不管您喜歡什麼樣的方式,最終必須編寫一些代碼。在開始之前,請看一下 android 針對經典的 Hello World 程序給出的編碼(請參閱 參考資料,查看 “Hello android” 示例應用程序)。
開發人員資源
雲中有大量的資源可用於 Android 開發,包括幾個 wiki 和 Android 社區論壇,以及多個 Android 編程 blog。推出 android 的主要公司 Google 實際上是一個通信公司,因此提供了幾個有用的論壇(稱為 Google Groups),供擁有不同技能集和才能的開發人員進行交流。
參考資料 部分中的 Android 鏈接並沒有展示出 Android 領域的博大。雲計算(特別是 android)目前是非常熱門的現象。
關於雲計算的思考:展望未來
IBM 正致力於在 Research Triangle Park, N.C. 和東京創建兩個大型雲計算中心。要了解為您的定制雲計算應用程序提供動力的服務,只需要訪問中央 Web 站點並探究 IBM 所做的相應工作(請參閱 參考資料)。
您可以編寫應用程序來利用雲,雲中的備份和恢復設施都是自動化的,經驗豐富的工程師可以使您的構想變為現實。將 android 手機想像成 IBM 集體式計算功能的一項擴展。當坐在咖啡店裡細細酌飲時,您希望在手機上看到什麼呢?現金流量圖?還是呈上漲趨勢的證券數據和圖形?可能是來自 NASA 的最新圖片,您昨天晚上曾在一個速度非常快的並行處理服務器上使用定制過濾程序進行過處理?可能是直接來自國家地震信息中心(National Earthquake Information Center)的最新地震數據,或者僅僅是昨晚誰贏了 NBA 冠軍杯。數據 “是現成的”,處理能力也是:您只需要實現它。
時間會告訴我們未來將會創造出怎樣的創新性雲計算應用程序,那時每個人都將站在巨人們的肩膀上。
編者按:本文為一位第一線的android開發者在經過三周學習Android收集整理的一份android 2.2開發初學者的入門培訓教程。文章深淺得當,對於剛剛學習and
所以Google Voice Recognition在android 的實現就變得極其輕松。語音識別,借助於雲端技術可以識別用戶的語音輸入,包括語音控制等技術,下面我們
可以看到Button 與Gallery的對齊方式是居中對齊,也即Button 與Parent居中對齊。另外,:Place object in the vertical
創建內容提供器和 Google Maps 應用程序您已經看到了一個完整的應用程序示例,現在簡要討論一下更加復雜的應用程序。內容提供器和 Google Maps本教程中討