Windows Phone是微軟公司在2010年釋出的智能手機作業系統,目前最新版本是Windows Phone 8.0,在市面上能見到的是Windows
Phone 7.5(Mango和Tango),下面,從開發者角度,分幾個方面對比他們的不同。
一、硬體
iOS與Windows
Phone系統都為閉源作業系統,而且對于硬體解決方案,微軟和蘋果都有苛刻的要求,蘋果自己設計CPU,然後找代工廠商生産,而且通信晶片也是非高通不用,這也是中國移動一直無法引入蘋果定制機的一個重要原因。
在微軟方面,微軟的CPU解決方案也全部來自于高通,運作Windows Phone
7.5的裝置幾乎都采用了高通MSM8255T,而從目前釋出的運作Windows Phone 8的裝置看,基本也都采用了高通骁龍S4雙核處理器。
蘋果和微軟這樣做對于開發者和使用者都是有很大好處的,從開發者角度來講,保證了裝置的硬體統一,便于測試。從使用者的角度來講,使得裝置的品質得到保證,不會出現“我能用的軟體,他用不了”的現象。
而安卓由于開源,各大裝置生産廠商都一套自己的硬體解決方案,比如Samsung有Exynos,NVIDIA有Tegra……而且這些衆多的CPU解決方案中,還有許許多多的架構版本劃分,有的基于ARM9,有的基于ARM
A15……這樣就使得安卓平台硬體不能得到統一,雖然“百家争鳴”的場面不錯,但對于開發者來講,測試軟體非常不利。有的安卓軟體可能需要幾十種安卓裝置才能算是開發完成,有時有一部裝置出現運作問題,就需要修改很多代碼。對于使用者來講,首先選購裝置時就夠受的了,使用的時候,也經常出現“你的Galaxy
S3可以玩這個遊戲,我的One X怎麼不行呢”的現象。
二、作業系統核心
iOS基于Unix,類似于蘋果的Mac OS
X,但核心不完全一樣,Android基于Linux,兩個平台可以統稱為Unix-like(類Unix)系統。而Windows
Phone在7.0和7.5的時代延續了Windows Mobile所采用的微軟自家的嵌入式作業系統——Windows CE(Compact
Edition),雖然在Mango和Tango上Windows
Phone的滑動表現出色,但一些新的功能,如多核心處理器、HD級别螢幕等都無法支援,是以微軟對Windows Phone 8直接采用了和Windows
8一樣的核心——Windows NT 6.2,而Windows RT(Windows 8
ARM版,用于平闆電腦)也采用了這個核心。是以說微軟在一定程度上做到了3大平台上的核心統一,這對于開發者來講,移植軟體的過程就變得簡單,C#背景+XAML前台,類WPF的開發模式将會是微軟平台未來開發的最近選擇!
iOS和Windows
Phone的核心是不開放的,在安全性上也是勝過安卓一籌的,不過對于開發者來講,由于系統不開放,很多接口無法獲得,自然一些和系統關聯比較密切的功能也就無法實作。目前iOS好在用的人比較多,也有專門的黑客組織進行破解,是以普通使用者和開發者可以對系統進行比較深的定制,而Windows
Phone就沒有這麼幸運了,最多可以自由部署應用罷了,系統沒什麼可改的。而在這方面,Android的優勢就展現的比較明顯,開發安卓應用完全免費,部署在自己的手機上也不需要任何費用,網上釋出也比較自由,當然,也有很多在Android上能做到,在其他兩個平台上做不到的軟體被開發出來,甚至國内的移動應用開發大賽都隻要Android平台上的作品。
三、開發條件
為了開發三大主流平台的應用,應了解他們的前期準備,當然,Android是成本最低的,随便一台配置說的過去的計算機,Eclipse,Android
SDK,就能滿足基本開發需求了,如果需要釋出,沒有固定的市場,更不需要什麼開發者賬号,不過這樣對于開發者的收入是個不利因素,幾乎不能靠軟體來軟體,最多就是些廣告。
Windows Phone需要一台PC,Visual Studio(有針對于開發者的Express免費版),Windows Phone
SDK,如果需要釋出到微軟Marketplace,還需要開發者賬号,普通的開發者賬号$99/年,不過隻要能搞到以.edu.cn結尾的大學郵箱,可以免費申請學生賬号,不過Windows
Phone軟體的收入分成也是不錯的,開發者:微軟=2:8,而蘋果是3:7。
iOS開發就麻煩一點,必須可以運作Mac OS X,加上iPhone
SDK,Objective-C的相關IDE,可以滿足基本的開發需求,不過為了上傳到AppStore,每年99美金的開發者費用且沒有類似微軟的學生賬号,讓有的人望而卻步。
四、軟體運作方式
在iOS和Windows Phone平台上,每個程式都有一個SandBox(沙箱)和其他的程式分隔開,增強了安全性,而且Windows
Phone和iOS都是沒有真正意義上的背景存在的,是以系統的優化都能做得很好,能保證軟體的流暢。而Android是帶有真正背景的,是以有時候機子會比較慢,再加上安卓新系統的更新,雖然流暢度有所提升,但依舊吃資源夠狠,是以安卓手機的硬體性能不斷提高,就是希望通過改善硬體水準來提升使用者體驗,其他兩個平台就不需要這樣做。
Android和Windows
Phone一個采用Java,一個采用C#或VB.NET,他們的運作都是需要一個類似虛拟機的平台來支援,Java需要JVM,C#和VB.NET需要.NET
Framework和CLR,而iOS程式使用Objective-C,類似C/C++的運作機制,是以效率可能更高一點。
對于不同的系統運作機制,作為開發者,也應該對不同的機制做出不同的開發策劃,保證應用适合于相對于的系統,符合他們的特征。
五、開發語言及開發效率
(一)對于普通的應用程式
iOS平台使用Objective-C,是一種由C語言發展而來的面向對象的語言,由蘋果公司自行研發,除了可以用來開發iOS應用,也可以作為Mac OS
X桌面應用開發的語言,不過該語言風格較标準C有很大的差别,需要有一定的适應時間,加之國内專門的教育訓練班較少,對于開發者來講,開發效率可能會受到一些影響,除此之外,也有人利用Mono-Touch,在iOS平台上使用C#進行開發。
Android平台使用Java,Java跨平台性好,可以在Linux、Windows和Mac OS
X上幾乎不受阻礙的移植、運作,是一種完全面向對象的語言,但Java執行效率差,程式運作速度慢,是以在Android平台上的應用的體驗往往不及iOS。不過Java學的人很多,Android學習班也比較熱,學習、入門應該是很輕松的事,在開發效率上高于iOS。
Windows
Phone平台在7.0和7.5的時代隻能使用C#和VB.NET語言進行開發,且不支援Sqlite資料庫,8.0釋出之前的系統還不夠成熟,有很多功能不支援,而在8.0系統上,不但可以繼續使用C#和VB.NET進行開發,也可以使用C/C++進行本地化開發,可以自行編寫一些類庫來使用。雖然大家都認為.NET平台運作效率差,但在Windows
Phone這樣微軟自己平台上,微軟的優化還是做得很到位的,本人一直在用Windows
Phone手機,并沒有感到卡頓的現象,體驗良好。而且C#是這幾個語言中開發最簡單,最容易上手的語言,加上和Windows
8的優良結合,微軟平台的開發将更加便捷。
(二)對于遊戲
iOS和Android都使用了OpenGL來進行3D遊戲的設計,OpenGL開源,用的地方也比較多,而且iOS與Android目前的占有量大,是以OpenGL的學習也是比較輕松的。
而微軟采用了基于DirectX的XNA架構來供開發者使用,而我們平常所玩的桌面遊戲幾乎沒有一個不用到DirectX架構的,這樣,開發者的工作就更簡單。
六、開發前景
目前AppStore已經釋出了大概70萬的應用,Android應用也達到60萬款,對于新的開發者,壓力比較大,而Windows
Phone還隻有10萬多的應用數量在Marketplace上,還有很長的路要走,帶給新的移動開發者更多的機會。