自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Windows Mobile與Android應(yīng)用開(kāi)發(fā)對(duì)比

移動(dòng)開(kāi)發(fā)
本文介紹Windows Mobile與Android應(yīng)用開(kāi)發(fā)對(duì)比,Windows Mobile在經(jīng)歷過(guò)最初的Wince系列,OPhone作為基于Android開(kāi)源平臺(tái)的移動(dòng)操作系統(tǒng)。

Windows Mobile與Android應(yīng)用開(kāi)發(fā)對(duì)比

Windows Mobile在經(jīng)歷過(guò)最初的Wince系列,pockect pc和smartphone兩種版本,到微軟最新的Windows Mobile 6.5,Windows Mobile憑借與桌面平臺(tái)良好的兼容性已經(jīng)微軟在移動(dòng)領(lǐng)域的不斷努力,在智能手機(jī)操作系統(tǒng)中已經(jīng)占據(jù)了接近15%的市場(chǎng)份額。微軟所推崇的Windows Mobile下的基于.net compact framework也越來(lái)越成為開(kāi)發(fā)微軟平臺(tái)的首選。微軟的曾經(jīng)的.net戰(zhàn)略從一定意義上來(lái)說(shuō),在移動(dòng)開(kāi)發(fā)上得到了實(shí)現(xiàn)。

OPhone作為基于Android開(kāi)源平臺(tái)的移動(dòng)操作系統(tǒng),在開(kāi)發(fā)上沿用了Android的開(kāi)發(fā)特性和環(huán)境,而Java是首選的開(kāi)發(fā)語(yǔ)言。比較有意思的是,微軟的.net戰(zhàn)略在企業(yè)級(jí)開(kāi)發(fā)上最大的對(duì)手是J2EE,而在移動(dòng)操作系統(tǒng)中,除了諾基亞的Symbian由于手機(jī)的高占有率而在移動(dòng)操作系統(tǒng)的高份額外,Windows Moible與Android是未來(lái)兩個(gè)有希望與Symbian三分天下的操作系統(tǒng),這樣似乎java與.net(C#)的戰(zhàn)爭(zhēng)要持續(xù)燒到了移動(dòng)平臺(tái)上了。

Windows Mobile與Android

這里將就兩個(gè)平臺(tái)在開(kāi)發(fā)方面所關(guān)注的問(wèn)題進(jìn)行比較,并不是要得出誰(shuí)優(yōu)誰(shuí)劣的結(jié)論,而是能讓會(huì)其中一個(gè)平臺(tái)的開(kāi)發(fā)人員也能熟悉另一個(gè)平臺(tái)的相關(guān)問(wèn)題。

開(kāi)發(fā)工具   Visual Studio 和 Eclipse

Windows Mobile的主流開(kāi)發(fā)工具肯定是Visual Studio了,Android是Eclipse。兩個(gè)都是大名鼎鼎的集成開(kāi)發(fā)環(huán)境,并代表了兩個(gè)不同的陣營(yíng):.net 和JAVA,根據(jù)筆者在移動(dòng)開(kāi)發(fā)上 的使用經(jīng)驗(yàn),從以下幾個(gè)方面來(lái)比較。

開(kāi)發(fā)環(huán)境的成本和搭建,Windows Mobile當(dāng)然只能在windows平臺(tái)下開(kāi)發(fā),不管你用盜版還是正版,xp是必須的,然后再安裝VSTS(visul studio team suite),這一套動(dòng)輒就好幾萬(wàn),當(dāng)然你也可以使用180天試用版本,過(guò)半年再重裝次系統(tǒng),這也比較劃算,裝完之后再?gòu)奈④浌倬W(wǎng)上下載最新的 windows mobile SDK,最好再裝一個(gè)中文版的Emulator image,這樣windows mobile的環(huán)境就基本搭建起來(lái)了。相比之下,OPhone完全是免費(fèi)的,操作系統(tǒng)可以選擇windows和Linux,這里推薦用ubuntu。安裝JDK,然后下載相關(guān)平臺(tái)的 Eclipse,安裝adt,從SDN下載OPhone的SDK,這個(gè)過(guò)程可以參照OPhone提供startup文檔。

對(duì)移動(dòng)代碼的調(diào)試跟蹤,無(wú)論是模擬器還是真實(shí)設(shè)備,Visual Studio 2008+ ActiveSync比 Eclipse+ADB要好用很多,微軟在調(diào)試器的可視化 易用性上都有很優(yōu)秀,相比來(lái)說(shuō),google為Eclipse開(kāi)發(fā)的ADT plugin,一方面可能是Eclipse自身的局限,另一方面Android開(kāi)發(fā)剛剛起步,在對(duì)集成開(kāi)發(fā)調(diào)試上應(yīng)該還有很多的空間來(lái)提升。另外,同步工具ActiveSync其本身并不單是一個(gè)開(kāi)發(fā)的輔助軟件,而是一個(gè)真正意義的同步工具,它會(huì)自動(dòng)偵測(cè)端口,設(shè)置虛擬IP,同步電腦數(shù)據(jù),這樣只要把手機(jī)連到電腦上,ActiveSync圈圈變綠,就可以直接把軟件 部署到手機(jī)上進(jìn)行調(diào)試,而Android還要手動(dòng)做上面的事情,不太方便。

仿真設(shè)備(模擬器)比較,從啟動(dòng)速度,性能上,兩個(gè)都差不多,windows mobile區(qū)分了smartphone和pocketpc,而android可以通過(guò)設(shè)置emulator 的skin參數(shù),可以獲得不同皮膚,不同機(jī)型的模擬器,比起苦苦等微軟發(fā)布新一個(gè)版本的模擬器,在Android的開(kāi)源聯(lián)盟努力下在模擬器的多樣性肯定會(huì)更豐富。

GUI開(kāi)發(fā)   從一個(gè)HelloWorld開(kāi)始

GUI開(kāi)發(fā)

1.先說(shuō)Android,當(dāng)我們使用向?qū)?chuàng)建了一個(gè)新的Android工程之后,在包瀏覽中可以看到以下的文件。

創(chuàng)建了一個(gè)新的Android工程

我們要編輯的文件分布在 src和res下,包括HelloWorld.java和   main.xml , strings.xml.

這個(gè)HelloWorld就繼承自Activity(Android Framework里面最重要的一個(gè)類,  我們簡(jiǎn)單地理解為它是一個(gè)UI的容器,直接跟用戶打交道最前端的類。對(duì)于Windows mobile了的程序員來(lái)講,簡(jiǎn)單的理解就是  Activity+View=Form.

還有一個(gè)R.java,這個(gè)類是系統(tǒng)根據(jù)res文件夾中的內(nèi)容自動(dòng)為你生成的,大家不要修改它.我們先講一下res文件夾,在這一點(diǎn)上,wm和Anroid很相似,res是resources的縮寫,顧名思義,你程序中所需要的文字,圖片,布局文件等等資源都是放在這個(gè)文件夾下面的,你現(xiàn)在看到這個(gè)文件夾下面有

drawable   - 這個(gè)是放圖片的

layout   - 這個(gè)是放布局文件的

values  - 下面放字符串(strings.xml ),顏色(colors.xml ),數(shù)組(arrays.xml )

Android 幫我們把這些資源都管理起來(lái),內(nèi)容資源化的作用是很明顯的,做國(guó)際化方便了,使用同一個(gè)資源的時(shí)候也方便也更節(jié)省空間(全局的引用),res文件夾中內(nèi)容變化,R.java都會(huì)重新編譯同步更新,所以這個(gè)類不需要你去手動(dòng)更新了。#p#

最后是AndroidManifest.xml. 你每次添加一個(gè)Acivity都需要在這個(gè)文件中描述一下Windows Mobile與Android應(yīng)用開(kāi)發(fā)對(duì)比。

看一下代碼:

  1. publicclassHelloWolrdextendsActivity{  
  2. /**Calledwhentheactivityisfirstcreated.*/  
  3. @Override  
  4. publicvoidonCreate(BundlesavedInstanceState){  
  5. super.onCreate(savedInstanceState);  
  6.  
  7. //指定這個(gè)Activity的界面布局,如果不指定,運(yùn)行起來(lái)是默認(rèn)空白的,如何布局后面講述  
  8. setContentView(R.layout.main);  
  9. //這句話就是用來(lái)獲取layout中設(shè)置的界面控件對(duì)象的,這個(gè)id是在button中指定的  
  10. android:id="@+id/button_normal" 
  11. Buttonbtn=(Button)this.findViewById(R.id.button_normal);  
  12.  
  13. //為btn添加響應(yīng)函數(shù)  
  14. btn.setOnClickListener(newOnClickListener(){  
  15.  
  16. publicvoidonClick(Viewarg0){  
  17. TextViewtv=(TextView)this.findeViewbyId(R.id.text);  
  18. tv.setText(R.id.hello);  
  19. }  
  20. }  
  21. )  
  22. }  
  23. }  
  24.  
  25.  
  26. xmlversionxmlversion="1.0"encoding="utf-8"?> 
  27. <LinearLayoutxmlns:androidLinearLayoutxmlns:android=
    "http://schemas.android.com/apk/res/android" 
  28. android:orientation="vertical" 
  29. android:layout_width="fill_parent" 
  30. android:layout_height="fill_parent" 
  31. > 
  32. <TextViewandroid:idTextViewandroid:id="@+id/text" 
  33. android:layout_width="fill_parent" 
  34. android:layout_height="wrap_content" 
  35. android:text="@string/hello" 
  36. /> 
  37. <Buttonandroid:idButtonandroid:id="@+id/button_normal" 
  38. android:text="@string/clickme" 
  39. android:layout_width="wrap_content" 
  40. android:layout_height="wrap_content"/> 
  41. LinearLayout> 

2.再來(lái)看一下Windows Mobile

新建一個(gè)設(shè)備應(yīng)用程序項(xiàng)目“Hello World”,如下圖:

新建一個(gè)設(shè)備應(yīng)用程序項(xiàng)目

屏幕左側(cè)出現(xiàn)了一個(gè)可編輯的設(shè)計(jì)界面,我們要設(shè)計(jì)HelloWorld的界面,只需要從工具箱里拖拽一個(gè)button和一個(gè)lable。比起Android來(lái),微軟因?yàn)槠鋸?qiáng)大的集成工具,讓可視化的界面變成變得非常簡(jiǎn)單,所見(jiàn)即所得。

為button添加響應(yīng)函數(shù),雙擊button,在Click事件中些如下代碼:

  1. this.label1.Text = "Hello World";   

點(diǎn)擊F5,直接 運(yùn)行就可以了。

總結(jié):做一個(gè)相同功能的HelloWolrd例子,Android需要修改修改三個(gè)文件,寫18行代碼,而WindowsMobile只需要拖拽兩下,寫一行代碼。 無(wú)疑,WindowsMobile在GUI開(kāi)發(fā)上快速的多。

界面風(fēng)格比較

windows mobile 到了最新的6.5,界面上終于有了不小的改觀,記得從6.1開(kāi)始,對(duì)基礎(chǔ)控件的繪制和渲染都有增強(qiáng),但是要開(kāi)發(fā)一個(gè)足夠絢麗的界面,就像Pointui這種應(yīng)用,難度還是很大的,因?yàn)榇蟛糠纸缑娑家肎DI來(lái)自己繪制,因?yàn)槲④浱峁┑幕A(chǔ)控件數(shù)量很有限,包括著名的 opennetcf庫(kù),在樣式的支持上基本沒(méi)有,所以自定義控件成為擺脫平庸UI的唯一方法。

這里還想要告訴大家的是微軟一個(gè)齷齪的行為:如果我們想要對(duì)Button這個(gè)控件稍微的擴(kuò)展一下,加上一點(diǎn)點(diǎn)我們自已的東東。結(jié)果是很麻煩,很麻煩。究其原因是:微軟不是用GDI中的 Graphics的函數(shù)進(jìn)行繪制這些基本控件,實(shí)際上MS還是用的老辦法,就象古老的C++程序一樣,這樣基于.net來(lái)做這件事情,唯一的方法就是捕獲 winproc消息,很不爽,而微軟為什么要這么做呢,是為了避免咱們侵犯人家的外觀專利。。。。

反觀Android,在View的支持上不但提供了樣式功能豐富的經(jīng)典控件,而且允許靈活的擴(kuò)展基礎(chǔ)控件,不談別的,就一個(gè)簡(jiǎn)單的例子,就說(shuō)一下彈出對(duì)話框吧,如果我想在這個(gè)對(duì)話框中加入進(jìn)度條,如圖:

對(duì)話框中加入進(jìn)度條

這是OPhone的一個(gè)基本控件,而如果在Windows mobile來(lái)實(shí)現(xiàn)的話,MessageBox肯定是不能擴(kuò)展的,那么只能從頭寫一個(gè),單是做一個(gè)背景透明的半窗體就很麻煩。所以在WindowsMobile的應(yīng)用程序里,第三方的應(yīng)用UI體驗(yàn)常常是良莠不齊,而且MFC的,ATL的,.netComactFramework的,技術(shù)混雜。歸其原因是一方面微軟用PC 綁架了手機(jī),.net平臺(tái)做了一下裁剪就直接用了,可是,移動(dòng)平臺(tái)的UI與PC還是有很大區(qū)別的,另一方面就是不夠開(kāi)放。

系統(tǒng)核心對(duì)象比較

1.Form與Activity,View

做過(guò)Windows桌面編程的都會(huì)對(duì)Form有了解,F(xiàn)orm 是應(yīng)用程序中所顯示的任何窗口的表示形式,即使一個(gè)Dialog也是對(duì)Form的一種派生。Form同時(shí)是一個(gè)容器,可包容其他繼承自Control類的其他控件.

Windows Mobile下的Form的概念與桌面端是一致的。任何我們看到的界面都是一個(gè)包含在 Form中的布局。

而android中Activity,他相當(dāng)于MVC模式中的Controler,它會(huì)與用戶去交互,并對(duì)這些交互進(jìn)行處理,我們可以通過(guò)調(diào)用 setContentView()來(lái)給Activity設(shè)置界面布局,Android的這種設(shè)計(jì)實(shí)現(xiàn)了界面設(shè)計(jì)和邏輯功能設(shè)計(jì)的真正分離,對(duì)View的高度抽象,也讓界面具有高度擴(kuò)展性,可以設(shè)計(jì)出更加豐富的界面體驗(yàn)。

2.Android中特有的Intent

Intent 提供了一個(gè)在不同應(yīng)用的代碼之間進(jìn)行晚綁定 的機(jī)制。它主要被用來(lái)啟動(dòng) Activity,還有服務(wù)等,它提供了應(yīng)用中不同Activity之間,不同應(yīng)用之間的通信方式,這既能對(duì)應(yīng)用間的模塊相互解耦,也讓應(yīng)用程序互相之間發(fā)揮共同的效力,這一點(diǎn)在windows mobile下是很難做到的,F(xiàn)orm之間通常是依賴關(guān)系,耦合性很大,而一個(gè)應(yīng)用要調(diào)用其他應(yīng)用的某個(gè)功能,除非引用后者開(kāi)放的類庫(kù),幾乎沒(méi)有什么好的辦法可以做到。

3.ContentProvider和ADO.net

兩者的設(shè)計(jì)目的有些相似,都是為了抽象數(shù)據(jù)訪問(wèn)層,ADO.net中有個(gè)很重要的概念:DataSet,我們可以通過(guò)各種數(shù)據(jù)源來(lái)填充DataSet,其實(shí)DataSet本質(zhì)上就是一個(gè)內(nèi)存中的數(shù)據(jù)庫(kù),有數(shù)據(jù)表,支持Sql查詢,它支持多種數(shù)據(jù)源,如:sql數(shù)據(jù)庫(kù),xml,文本文件等。

相比起來(lái),ContentProvider為我們提供了更大的靈活性,Content Provider用于將各個(gè)應(yīng)用程序的數(shù)據(jù)進(jìn)行共享,Content Provider是一個(gè)類,執(zhí)行一套標(biāo)準(zhǔn)的方法,讓其他的應(yīng)用程序存儲(chǔ)和獲取Content Provider所處理的數(shù)據(jù). 如果比較ADO.net和ContentProvider的話,ADO.net的數(shù)據(jù)訪問(wèn)模塊是程序級(jí)別的,其他應(yīng)用很難共享到既有應(yīng)用對(duì)數(shù)據(jù)的加工處理,二ContentProvier通過(guò)一個(gè)唯一的ContentURI定位Provider,所有應(yīng)用就可以通過(guò)構(gòu)造ContentValues來(lái)對(duì)數(shù)據(jù)源進(jìn)行操作。

總結(jié):

對(duì)開(kāi)發(fā)者來(lái)說(shuō),windows mobile與Android在體系架構(gòu)上有很大不同,但在開(kāi)發(fā)語(yǔ)言上,面向?qū)ο蟮确矫?,只要熟悉一下,兩者之間的相互遷移并不難。

對(duì)于Mobile OS來(lái)說(shuō),不同于桌面操作系統(tǒng),這必將有一場(chǎng)慘烈的淘汰賽,究竟是一家獨(dú)大,還是三國(guó)分離,還是不同程度的整合,都是一個(gè)問(wèn)號(hào)。未來(lái)的移動(dòng)世界,網(wǎng)絡(luò)肯定是永恒的主題,不同的操作系統(tǒng)也在這個(gè)方面做整合,互聯(lián)網(wǎng)在不斷嵌入到手機(jī)平臺(tái)中,移動(dòng)搜索,Widget技術(shù),各種各樣的網(wǎng)絡(luò)服務(wù),相信移動(dòng)的世界會(huì)越來(lái)越精彩,而對(duì)于開(kāi)發(fā)者的我們,多掌握一種技術(shù),可能就是多一個(gè)機(jī)會(huì)。以上介紹Windows Mobile與Android應(yīng)用開(kāi)發(fā)對(duì)比。

【編輯推薦】

  1. 中移動(dòng)發(fā)布OPhone SDK 基于Android技術(shù)
  2. Windows Mobile 6.5中Widgets開(kāi)發(fā)初體驗(yàn)
  3. 淺談如何讓W(xué)indows Mobile只運(yùn)行一個(gè)實(shí)例
  4. 在OPhone模擬器中加載和使用SDCard卡的方法
  5. 微軟發(fā)布Windows Mobile 6.5開(kāi)發(fā)工具包
責(zé)任編輯:佚名 來(lái)源: IT168
相關(guān)推薦

2009-12-15 15:31:47

2011-09-01 10:09:04

2009-04-16 08:05:27

Windows Mob微軟移動(dòng)OS

2009-04-15 09:07:45

微軟Windows Mob在線程序商店

2011-09-08 10:29:27

Windows MobWidget

2012-02-28 14:48:41

2011-12-14 11:38:42

PhoneGapJavaAndroid

2009-08-14 15:02:09

Visual Stud

2009-03-05 18:08:01

Windows Mob升級(jí)

2010-05-23 10:29:29

Widget開(kāi)發(fā)

2011-09-08 10:18:09

Windows MobWidgets

2012-08-16 13:24:58

Windows 8Windows 7對(duì)比

2011-04-25 16:40:21

開(kāi)發(fā)環(huán)境搭建Windows Mob

2011-09-08 10:04:07

Windows MobWidget

2009-06-23 10:06:03

2009-02-11 09:02:30

Windows MobApp Store手機(jī)軟件

2009-05-18 09:06:37

微軟WMWindows Mob

2009-09-18 10:02:23

Windows Mob

2009-12-07 17:42:07

Windows Mob

2009-05-17 10:48:19

微軟Windows Mob移動(dòng)OS
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)