移動操作系統(tǒng)帶來差異化設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
移動設(shè)備市場一直以來都非?;鸨貏e是具有蘋果的iPhone和Verizon Wireless公司的Droid的智能手機(jī)市場。這些平臺上的硬件技術(shù)令人印象深刻,但事實(shí)上,圍繞系統(tǒng)的軟件和服務(wù)基礎(chǔ)架構(gòu)使得這些產(chǎn)品實(shí)現(xiàn)了差異化。
大量iPhone應(yīng)用程序顯然說明了一個好的開發(fā)平臺能使應(yīng)用程序的普及非常容易。iPhone也許很流行,但它的軟件平臺是為有限數(shù)量的硬件平臺設(shè)計(jì)的,并且全部是蘋果公司的平臺。Symbian操作系統(tǒng)和框架用于與iPhone相同的領(lǐng)域,但Symbian可以用于更廣泛的平臺,包括基于ARM的智能手機(jī)。Symbian操作系統(tǒng)現(xiàn)在是由Symbian FoundaTIon負(fù)責(zé)的一個開源項(xiàng)目。
Android與這些操作系統(tǒng)框架非常類似,它的最初應(yīng)用目標(biāo)也是智能手機(jī)。這也就不奇怪它的贊助商是Open Handset了。Android與眾不同的一點(diǎn)是,很多人將它用于智能手機(jī)以外的平臺。如果開發(fā)人員想充分發(fā)揮Android的優(yōu)勢,那么他們就需要了解它的工作原理。為了與Android進(jìn)行比較,先看看能夠滿足這一領(lǐng)域中硬件要求的另外兩種平臺。
最流行的平臺之一是微軟的Windows CE,在智能手機(jī)市場被稱為Windows Mobile。但它的基本框架架構(gòu)與微軟的臺式機(jī)和服務(wù)器平臺上的是一樣的,包括最新的臺式機(jī)版本W(wǎng)indows 7。
另外一個平臺是就像Android一樣基于Linux的Moblin,它適用于使用Intel Atom處理器的上網(wǎng)本和移動互聯(lián)網(wǎng)設(shè)備(MID)。從這個角度講,Moblin與蘋果和Symbian解決方案非常相似。
所有這些平臺都很獨(dú)特,但它們共享許多類型的公共組件。例如,Android和微軟的.NET框架都是基于虛擬機(jī)(VM)技術(shù)創(chuàng)建的。
Android的優(yōu)勢
“Android在Linux基礎(chǔ)上削繁就簡,向開發(fā)人員提供源自谷歌的易用和著名環(huán)境用于圖形化用戶界面(GUI)創(chuàng)建,使它們專注于針對遠(yuǎn)不止手機(jī)的嵌入式系統(tǒng)開發(fā)有競爭力的解決方案。”德州儀器(TI)公司開放平臺技術(shù)專家Jason Kridner表示,“這使得Android成為一種強(qiáng)大的操作系統(tǒng),能用于基于OMAP3處理器的設(shè)計(jì),例如TI的OMAP35x*估模塊或非常流行并且擁有眾多支持者的BeagleBoard,可以幫助開源創(chuàng)新公司建立具有高性能和低功耗且基于ARM Cortex-A8的小型低成本系統(tǒng)。”
圖1:Android應(yīng)用程序是用Java編寫的,運(yùn)行在Dalvik虛擬機(jī)(DVM)上。
基于Linux的Android使用固有設(shè)備驅(qū)動程序向Android基本框架提供整套服務(wù)。固有應(yīng)用程序可以運(yùn)行在這個系統(tǒng)上,并且可以訪問這些服務(wù),但大多數(shù)應(yīng)用程序?qū)⒂肑ava編寫,目標(biāo)是Dalvik VM(圖1)。這些應(yīng)用程序還能充分發(fā)揮應(yīng)用程序框架的優(yōu)勢,提供Verizon Wireless Droid用戶熟悉的用戶界面。Droid就是一款A(yù)ndroid智能手機(jī) (圖2)。
圖2:Verizon Wireless的Droid手機(jī)采用Android 2.0,有許多亮點(diǎn)。
Dalvik VM(DVM)運(yùn)行Dalvik可執(zhí)行(.dex)文件。這些編譯過的Java應(yīng)用程序類似Sun Java虛擬機(jī)(JVM)使用的類文件。從概念上講,DVM和JVM的應(yīng)用層幾乎沒有區(qū)別。但從架構(gòu)上講,基于寄存器的DVM和基于堆棧的JVM有很大的差異。
DVM和JVM都使用VM代碼模型。然而,DVM使用基于寄存器的操作碼,相當(dāng)于大多數(shù)目標(biāo)平臺已經(jīng)執(zhí)行的基于寄存器的字節(jié)碼指令。DVM包括了許多架構(gòu),如ARM和MIPS架構(gòu)以及英特爾(Intel)、AMD和威盛的x86兼容架構(gòu)。
谷歌開發(fā)Android和選用DVM的原因有幾個,首先大多數(shù)JVM具有許可問題;其次DVM在內(nèi)存使用和執(zhí)行基于寄存器的機(jī)器方面更加高效,而且在執(zhí)行多個DVM實(shí)例時(shí)也被認(rèn)為更加高效。應(yīng)用程序有自己的實(shí)例,因此多個有效應(yīng)用程序要求多個DVM實(shí)例。與大多數(shù)Java實(shí)現(xiàn)一樣,DVM有一個自動垃圾收集器。
有趣的是要看到這些優(yōu)勢在長期運(yùn)行時(shí)是否能保持,特別是隨著目標(biāo)上的內(nèi)存容量和處理器性能的不斷提高。在這個方面,DVM不支持及時(shí)(just-in-time)編譯。另一方面,dex文件在加載進(jìn)系統(tǒng)時(shí)可以針對硬件進(jìn)行優(yōu)化。
如上所述,Android針對自己提供的服務(wù)有自己的Java類,這些類與Sun公司的Java SE或Java ME提供的類服務(wù)類型相當(dāng),但不完全一致。Android不支持Sun風(fēng)格平臺常用的圖形化AWT和Swing庫。相反,Android有它自己的用戶界面類,包括對OpenGL的支持。類的基集可以在包括像藍(lán)牙和電話這種接口的智能手機(jī)平臺上找到,但在其它嵌入式Android平臺上可能不作要求。
Android軟件開發(fā)套件(SDK)可以從Android網(wǎng)站上免費(fèi)下載,并且可以和許多開發(fā)工具一起使用。Android開發(fā)工具(ADT)Eclipse插件允許開發(fā)人員使用開源Eclipse平臺開發(fā)Android應(yīng)用程序,包括基于Eclipse的大量第三方工具集,如Mentor Graphics的ESD。
Mentor Graphics還提供Android支持服務(wù)。這也帶來了許多Android開發(fā)人員忽視的另外一個問題:Android平臺支持。應(yīng)用軟件開發(fā)人員需要Android SDK。將Android用于新的平臺是另外一個問題。Android確實(shí)運(yùn)行在Linux上,但這將帶來同樣的支持問題。這正是像MontaVista、Lynuxworks和Mentor Graphics等操作系統(tǒng)供應(yīng)商做大部分Linux移植的原因。
管理和支持更改是一項(xiàng)艱巨的工作,對運(yùn)行在Linux上的Android來說也是如此。目前Android的更改和增強(qiáng)源自谷歌公司,今后也許會有改變,但仍意味著任*版本都需要對定制、缺陷修復(fù)和其它修改進(jìn)行集成和測試。
適合Atom使用的Moblin
圖3:基于Linux的Moblin主要用于上網(wǎng)本和移動互聯(lián)網(wǎng)設(shè)備(MID)。
Moblin和Intel的Atom幾乎形影不離。Moblin建立在x86 Linux堆棧基礎(chǔ)之上,增加了一個用戶界面和設(shè)計(jì)用于簡化與系統(tǒng)交互的應(yīng)用程序(圖3)。它的顯示功能有益于觸摸屏,并以中等尺寸的屏幕為主要應(yīng)用對象,比如在上網(wǎng)本、MID和汽車儀表臺等目標(biāo)平臺上使用的屏幕(圖4)。
圖4:Moblin界面設(shè)計(jì)用于簡化用戶交互和解決觸摸界面。
與臺式機(jī)和全尺寸筆記本相比,Moblin的中等大小應(yīng)用對象通常使用較小的屏幕和較低功耗并且處理能力較有限的處理器,因此電源管理是關(guān)鍵。應(yīng)用程序需要有良好的響應(yīng)能力,而且要能充分利用較有限的資源。
應(yīng)用程序和應(yīng)用服務(wù)是固有的Linux應(yīng)用,允許使用已有的Linux開發(fā)成果。QT和GTK GUI庫已被用來搭建主要的Linux GUI、Gnome和KDE。這意味著大多數(shù)現(xiàn)有應(yīng)用程序無需重大修改就能移植到Moblin上。當(dāng)然,從Gnome或KDE這樣的通用視窗環(huán)境轉(zhuǎn)移到像Moblin這樣有更多限制的框架極具挑戰(zhàn)性,具體還要取決于應(yīng)用程序及其架構(gòu)。Moblin支持Linux上使用的眾多圖形界面,包括X Windows和OpenGL。
Moblin帶來的不止是一個用戶界面和渲染庫。它的通信子系統(tǒng)提供電話、蜂窩和VoIP之類的IP(互聯(lián)網(wǎng)協(xié)議)服務(wù)?;谖恢玫姆?wù)、設(shè)備同步和內(nèi)容管理只是可供Moblin應(yīng)用程序使用的眾多庫中的一些。例如,mojito提供社區(qū)網(wǎng)頁服務(wù)支持。多媒體支持包括用于管理多媒體元數(shù)據(jù)的bickley和用于管理多媒體播放列表的bognor-regis。
基于庫服務(wù)方法考慮,C是選用的編程語言。C++同樣可以使用,但Linux支持每種主流的編程語言,Moblin也如此。針對核心Moblin應(yīng)用編程接口(API)的綁定產(chǎn)品適合像Ruby和Python這樣的語言。
Intel收購風(fēng)河對Moblin來說不應(yīng)感到太驚訝。風(fēng)河Linux和相關(guān)開發(fā)工具與Moblin有極好的匹配。在這個收購事件發(fā)生前,風(fēng)河公司已經(jīng)在與Intel和Moblin一起開展工作。
Moblin不是只能用于Atom或風(fēng)河產(chǎn)品,它還能用于其它Linux平臺,如Ubuntu和Xandros。Ubuntu Moblin Remix加入了Canonical公司的Ubuntu Netbook Remix。戴爾公司將提供Ubuntu Moblin Remix,用于采用Atom處理器的戴爾Inspiron Mini 10v上網(wǎng)本。
Moblin吸收了Linux最新的增強(qiáng)性能,它的快速啟動時(shí)間是一大特色,此外還支持觸摸屏和手勢等特性。隨著新的x86處理器繼續(xù)降低功耗要求,手機(jī)將成為Moblin的應(yīng)用目標(biāo)。Moblin還得到了Intel以外的一些大公司的支持,使之成為這一領(lǐng)域中所用平臺的重要組成部分。
其它Linux系統(tǒng)
x86統(tǒng)治著上網(wǎng)本市場,但MID和智能本可以使用更多的平臺,包括基于ARM和MIPS架構(gòu)的平臺。Windows CE是用于這些架構(gòu)的一種可行平臺,雖然Debian Linux和諸如Ubuntu等變種可能主導(dǎo)這一領(lǐng)域。
像Ubuntu、Xandros和ThunderSoft等基于Debian的Linux版本的許多開發(fā)人員已經(jīng)在展開合作。這樣,很可能相似的平臺出現(xiàn)在使用相同Linux內(nèi)核的各種產(chǎn)品上,并具有相似的運(yùn)行時(shí)庫補(bǔ)充。
目前這一領(lǐng)域缺少的是各個系統(tǒng)提供商之間一致的開發(fā)和描述框架。大多數(shù)供應(yīng)商已經(jīng)在與谷歌合作開發(fā)Android,但在非電話平臺上的Android是否能及時(shí)推出仍有待觀察。更可能的情景是傳統(tǒng)的Debian實(shí)現(xiàn),再以硬件供應(yīng)商提供的應(yīng)用程序作為補(bǔ)充。
谷歌發(fā)布了谷歌Chrome操作系統(tǒng)。這種操作系統(tǒng)以目前運(yùn)行在所有主要平臺上的Chrome瀏覽器為核心,是另一種基于Linux的平臺,但也是一個最小系統(tǒng),其中瀏覽器將提供應(yīng)用程序框架。這種方法在得到部署前仍有大量的不確定性。系統(tǒng)設(shè)計(jì)的關(guān)鍵因素包括速度、簡單性和安全性。啟動網(wǎng)頁瀏覽應(yīng)該在幾秒種內(nèi)完成。
采用這種方法仍需要解決許多重要問題,特別是在自由操作方面。當(dāng)3G或Wi-Fi連接可用時(shí),基于網(wǎng)頁的應(yīng)用程序沒什么問題,但在這里討論的所有其它平臺上最常見的獨(dú)立應(yīng)用程序可能有問題。一些最初的方法采用雙啟動技術(shù),將全套應(yīng)用程序放在更傳統(tǒng)的Linux或Windows實(shí)現(xiàn)上。
微軟的移動解決方案
圖5:.NET框架運(yùn)行在所有Windows平臺上,為.NET編程人員提供一致的環(huán)境。
Windows Embedded CE是微軟移動解決方案的核心。就像微軟的其它Windows解決方案一樣,Windows CE采用了.NET架構(gòu)(圖5)。編寫出能夠在不同Windows平臺的任意一種上運(yùn)行的程序應(yīng)該沒什么問題,但.NET框架允許應(yīng)用程序運(yùn)行在幾乎任何Windows操作系統(tǒng)上,其中包括了像Windows Mobile這樣的平臺,這是運(yùn)行在諸如HTC Touch 2等多種智能手機(jī)上的一種Windows CE版本(圖6)。
圖6:HTC Touch2只是基于Windows Mobile的眾多成功手機(jī)中的一種。
.NET框架基于類似Dalvik和JVM這樣的VM架構(gòu)。微軟的公共語言運(yùn)行時(shí)(CLR)能夠在類似JVM的虛擬棧機(jī)器中執(zhí)行公共中間語言(CIL)字節(jié)代碼。
公共語言基礎(chǔ)架構(gòu)(CLI)是一種開放的ECMA-335和ISO/IEC 23271規(guī)范,它描述了CIL、CLR運(yùn)行時(shí)環(huán)境以及公共類系統(tǒng)(CTS)和運(yùn)行時(shí)匯編。Mono和DotGNU Portable.NET是CLI的兩種開源實(shí)現(xiàn),運(yùn)行在許多非Windows平臺上,如Linux。
JVM目前還支持Java以外的其它編程語言,但Java是主要目標(biāo)。然而,.NET總是有意作為多語言主機(jī)。.NET框架支持多種來源的許多編程語言。從Cobol到F#(一種功能性編程語言)的每種語言都將運(yùn)行在.NET框架上。
CLI可以被實(shí)現(xiàn)為一種運(yùn)行CIL代碼的解釋器。但像Java一樣,通過將應(yīng)用程序轉(zhuǎn)換成固有代碼,CIL JIT編譯器可以帶來更高的性能。這種方法具有將優(yōu)化功能移動到JIT的優(yōu)勢。提前(AOT)編譯到固有代碼也是可以的。這種方法將可執(zhí)行代碼鎖定到當(dāng)前平臺,但消除了JIT要求的啟動延時(shí)。
編譯器仍需要產(chǎn)生高效的CIL代碼,但它們不必關(guān)注針對執(zhí)行優(yōu)化目標(biāo)硬件。垃圾收集是問題的一部分。C#有指針類型,但這些變量只能指向數(shù)值類型和數(shù)組。參考變量是用C#等語言跟蹤數(shù)據(jù)的正確方法。CIL代碼也被認(rèn)為是在CLR內(nèi)運(yùn)行的“管理型代碼”,提供諸如線程和內(nèi)存管理等服務(wù)。應(yīng)用程序必須在CLR的安全范疇內(nèi)運(yùn)行。可以擁有受管理的固有代碼。Visual C++.NET是一種可以產(chǎn)生CIL管理型和固有無管理代碼的語言環(huán)境。
管理型代碼的優(yōu)勢是可以給編程人員提供便利的更高層提取。這種方法極大地增強(qiáng)了安全性。用不同編程語言編寫的應(yīng)用程序間的交互也更加容易。CTS使這一切成為可能。
VM和低端運(yùn)行時(shí)間是性能和效率的關(guān)鍵,但.NET框架的類庫尤其重要。在每個.NET框架平臺中可以找到大多數(shù)基礎(chǔ)類庫。
.NET Mirco框架是例外,它直接運(yùn)行在物理芯片(裸金屬)上,沒有Windows操作系統(tǒng)。這種框架也是模塊化的,允許最小的外形尺寸。.NET Micro框架的應(yīng)用目標(biāo)是Android和Moblin等平臺之下的低端產(chǎn)品,常見于過程控制等設(shè)備中的微控制器上。
最新版的.NET Micro框架是使用Apache許可的一種開源產(chǎn)品。CLI只實(shí)現(xiàn)為解釋器,但支持.NET框架固有代碼接口。.NET Micro框架可能會應(yīng)用到受更高端.NET框架設(shè)備(如蜂窩電話)控制的設(shè)備中。擁有一個公共編程平臺遲早派得上用場。典型的.NET框架環(huán)境包括比.NET Micro框架多得多的類庫。圖形、窗體和先進(jìn)的數(shù)據(jù)庫庫很常見。在Windows Mobile平臺中還能見到用于電話和通信的類。
Mono提供包括基礎(chǔ)類在內(nèi)的許多.NET框架類庫,這樣就允許編寫出在Mono或.NET框架上運(yùn)行的應(yīng)用程序。對于開發(fā)人員來說問題在于,充分利用.NET框架的真正優(yōu)勢意味著使用像Windows Communication Foundation (WCF) 和Windows Workflow Foundation (WF)這樣的基集之上的類。應(yīng)用程序類庫和諸如智能手機(jī)需要的服務(wù)將被發(fā)現(xiàn)運(yùn)行Windows Mobile。
.NET框架和Windows在這方面是如此形影不離以致于它們無法分開。使用Windows界面(如COM)的固有代碼應(yīng)用程序可以與基于.NET框架的應(yīng)用程序共存,但后者有很大的開發(fā)工作量,也是為基于Windows的移動設(shè)備開發(fā)應(yīng)用程序的地方。
微軟的Visual Studio一直是充分利用.NET框架的應(yīng)用程序的主要開發(fā)平臺。大多數(shù).NET編程語言使用Visual Studio集成開發(fā)環(huán)境。目前有多種調(diào)試器,如CLR調(diào)試器。Visual Studio支持其它調(diào)試工具,包括支持甚至是混合應(yīng)用環(huán)境中的無管理應(yīng)用程序。
總之,.NET框架是一種可擴(kuò)展和令人印象深刻的平臺,達(dá)到甚至超過大多數(shù)競爭產(chǎn)品的性能。它能處理先進(jìn)的用戶界面,支持多點(diǎn)觸摸界面。Windows 7也采用.NET框架,因此諸如Intel的Atom這樣的平臺自然適合。
iPhone應(yīng)用程序店、Android市場和針對移動應(yīng)用的Windows市場將是相應(yīng)移動設(shè)備取得成功的主要因素。這些設(shè)備上的基礎(chǔ)框架需要成為一個好的開發(fā)目標(biāo)才能取得成功。帶.NET框架的Windows和包括Android和Moblin在內(nèi)的各種Linux版本將在新的硬件平臺上繼續(xù)收獲成功。在擁有iPhone和Symbian的智能手機(jī)市場上它們?nèi)杂泻艽蟮母偁幜?,但這只是嵌入式領(lǐng)域的一部分。