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