`

Windows Mobile与Android应用开发对比

 
阅读更多
Windows Mobile在经历过最初的Wince系列,pockect pc和smartphone两种版本,到微软最新的Windows Mobile 6.5,Windows Mobile凭借与桌面平台良好的兼容性已经微软在移动领域的不断努力,在智能手机操作系统中已经占据了接近15%的市场份额。微软所推崇的 Windows Mobile下的基于.net compact framework也越来越成为开发微软平台的首选。微软的曾经的.net战略从一定意义上来说,在移动开发上得到了实现。

OPhone作为基于Android开源平台的移动操作系统,在开发上沿用了Android的开发特性和环境,而Java是首选的开发语言。比较有意思的是,微软的.net战略在企业级开发上最大的对手是J2EE,而在移动操作系统中,除了诺基亚的Symbian由于手机的高占有率而在移动操作系统的高份额外,Windows Moible与Android是未来两个有希望与Symbian三分天下的操作系统,这样似乎java与.net(C#)的战争要持续烧到了移动平台上了。



这里将就两个平台在开发方面所关注的问题进行比较,并不是要得出谁优谁劣的结论,而是能让会其中一个平台的开发人员也能熟悉另一个平台的相关问题。

开发工具 Visual Studio 和 Eclipse

Windows Mobile的主流开发工具肯定是Visual Studio了,Android是Eclipse。两个都是大名鼎鼎的集成开发环境,并代表了两个不同的阵营:.net 和JAVA,根据笔者在移动开发上 的使用经验,从以下几个方面来比较。

开发环境的成本和搭建,Windows Mobile当然只能在windows平台下开发,不管你用盗版还是正版,xp是必须的,然后再安装VSTS(visul studio team suite),这一套动辄就好几万,当然你也可以使用180天试用版本,过半年再重装次系统,这也比较划算,装完之后再从微软官网上下载最新的 windows mobile SDK,最好再装一个中文版的Emulator image,这样windows mobile的环境就基本搭建起来了。相比之下,OPhone完全是免费的,操作系统可以选择windows和Linux,这里推荐用ubuntu。安装 JDK,然后下载相关平台的 Eclipse,安装adt,从SDN下载OPhone的SDK,这个过程可以参照OPhone提供startup文档。

对移动代码的调试跟踪,无论是模拟器还是真实设备,Visual Studio 2008+ ActiveSync比 Eclipse+ADB要好用很多,微软在调试器的可视化 易用性上都有很优秀,相比来说,google为Eclipse开发的ADT plugin,一方面可能是Eclipse自身的局限,另一方面Android开发刚刚起步,在对集成开发调试上应该还有很多的空间来提升。另外,同步工具ActiveSync其本身并不单是一个开发的辅助软件,而是一个真正意义的同步工具,它会自动侦测端口,设置虚拟IP,同步电脑数据,这样只要把手机连到电脑上,ActiveSync圈圈变绿,就可以直接把软件 部署到手机上进行调试,而Android还要手动做上面的事情,不太方便。

仿真设备(模拟器)比较,从启动速度,性能上,两个都差不多,windows mobile区分了smartphone和pocketpc,而android可以通过设置emulator 的skin参数,可以获得不同皮肤,不同机型的模拟器,比起苦苦等微软发布新一个版本的模拟器,在Android的开源联盟努力下在模拟器的多样性肯定会更丰富。

GUI开发 从一个HelloWorld开始



1.先说Android,当我们使用向导创建了一个新的Android工程之后,在包浏览中可以看到以下的文件。



我们要编辑的文件分布在 src和res下,包括HelloWorld.java和 main.xml , strings.xml.

这个HelloWorld就继承自Activity(Android Framework里面最重要的一个类, 我们简单地理解为它是一个UI的容器,直接跟用户打交道最前端的类。对于Windows mobile了的程序员来讲,简单的理解就是 Activity+View=Form.

还有一个R.java,这个类是系统根据res文件夹中的内容自动为你生成的,大家不要修改它.我们先讲一下res文件夹,在这一点上,wm和 Anroid很相似,res是resources的缩写,顾名思义,你程序中所需要的文字,图片,布局文件等等资源都是放在这个文件夹下面的,你现在看到这个文件夹下面有

drawable - 这个是放图片的

layout - 这个是放布局文件的

values - 下面放字符串(strings.xml ),颜色(colors.xml ),数组(arrays.xml )

Android 帮我们把这些资源都管理起来,内容资源化的作用是很明显的,做国际化方便了,使用同一个资源的时候也方便也更节省空间(全局的引用),res文件夹中内容变化,R.java都会重新编译同步更新,所以这个类不需要你去手动更新了。

最后是AndroidManifest.xml. 你每次添加一个Acivity都需要在这个文件中描述一下Windows Mobile与Android应用开发对比。

看一下代码:

1. publicclassHelloWolrdextendsActivity{
2. /**Calledwhentheactivityisfirstcreated.*/
3. @Override
4. publicvoidonCreate(BundlesavedInstanceState){
5. super.onCreate(savedInstanceState);
6.
7. //指定这个Activity的界面布局,如果不指定,运行起来是默认空白的,如何布局后面讲述
8. setContentView(R.layout.main);
9. //这句话就是用来获取layout中设置的界面控件对象的,这个id是在button中指定的
10. android:id="@+id/button_normal"
11. Buttonbtn=(Button)this.findViewById(R.id.button_normal);
12.
13. //为btn添加响应函数
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.再来看一下Windows Mobile

新建一个设备应用程序项目“Hello World”,如下图:



屏幕左侧出现了一个可编辑的设计界面,我们要设计HelloWorld的界面,只需要从工具箱里拖拽一个button和一个lable。比起Android来,微软因为其强大的集成工具,让可视化的界面变成变得非常简单,所见即所得。

为button添加响应函数,双击button,在Click事件中些如下代码:

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

点击F5,直接 运行就可以了。

总结:做一个相同功能的HelloWolrd例子,Android需要修改修改三个文件,写18行代码,而WindowsMobile只需要拖拽两下,写一行代码。 无疑,WindowsMobile在GUI开发上快速的多。

界面风格比较

windows mobile 到了最新的6.5,界面上终于有了不小的改观,记得从6.1开始,对基础控件的绘制和渲染都有增强,但是要开发一个足够绚丽的界面,就像Pointui这种应用,难度还是很大的,因为大部分界面都要用GDI来自己绘制,因为微软提供的基础控件数量很有限,包括著名的 opennetcf库,在样式的支持上基本没有,所以自定义控件成为摆脱平庸UI的唯一方法。

这里还想要告诉大家的是微软一个龌龊的行为:如果我们想要对Button这个控件稍微的扩展一下,加上一点点我们自已的东东。结果是很麻烦,很麻烦。究其原因是:微软不是用GDI中的 Graphics的函数进行绘制这些基本控件,实际上MS还是用的老办法,就象古老的C++程序一样,这样基于.net来做这件事情,唯一的方法就是捕获 winproc消息,很不爽,而微软为什么要这么做呢,是为了避免咱们侵犯人家的外观专利。。。。

反观Android,在View的支持上不但提供了样式功能丰富的经典控件,而且允许灵活的扩展基础控件,不谈别的,就一个简单的例子,就说一下弹出对话框吧,如果我想在这个对话框中加入进度条,如图:



这是OPhone的一个基本控件,而如果在Windows mobile来实现的话,MessageBox肯定是不能扩展的,那么只能从头写一个,单是做一个背景透明的半窗体就很麻烦。所以在 WindowsMobile的应用程序里,第三方的应用UI体验常常是良莠不齐,而且MFC的,ATL的,.netComactFramework的,技术混杂。归其原因是一方面微软用PC 绑架了手机,.net平台做了一下裁剪就直接用了,可是,移动平台的UI与PC还是有很大区别的,另一方面就是不够开放。

系统核心对象比较

1.Form与Activity,View

做过Windows桌面编程的都会对Form有了解,Form 是应用程序中所显示的任何窗口的表示形式,即使一个Dialog也是对Form的一种派生。Form同时是一个容器,可包容其他继承自Control类的其他控件.

Windows Mobile下的Form的概念与桌面端是一致的。任何我们看到的界面都是一个包含在 Form中的布局。

而android中Activity,他相当于MVC模式中的Controler,它会与用户去交互,并对这些交互进行处理,我们可以通过调用 setContentView()来给Activity设置界面布局,Android的这种设计实现了界面设计和逻辑功能设计的真正分离,对View的高度抽象,也让界面具有高度扩展性,可以设计出更加丰富的界面体验。

2.Android中特有的Intent

Intent 提供了一个在不同应用的代码之间进行晚绑定 的机制。它主要被用来启动 Activity,还有服务等,它提供了应用中不同Activity之间,不同应用之间的通信方式,这既能对应用间的模块相互解耦,也让应用程序互相之间发挥共同的效力,这一点在windows mobile下是很难做到的,Form之间通常是依赖关系,耦合性很大,而一个应用要调用其他应用的某个功能,除非引用后者开放的类库,几乎没有什么好的办法可以做到。

3.ContentProvider和ADO.net

两者的设计目的有些相似,都是为了抽象数据访问层,ADO.net中有个很重要的概念:DataSet,我们可以通过各种数据源来填充 DataSet,其实DataSet本质上就是一个内存中的数据库,有数据表,支持Sql查询,它支持多种数据源,如:sql数据库,xml,文本文件等。

相比起来,ContentProvider为我们提供了更大的灵活性,Content Provider用于将各个应用程序的数据进行共享,Content Provider是一个类,执行一套标准的方法,让其他的应用程序存储和获取Content Provider所处理的数据. 如果比较ADO.net和ContentProvider的话,ADO.net的数据访问模块是程序级别的,其他应用很难共享到既有应用对数据的加工处理,二ContentProvier通过一个唯一的ContentURI定位Provider,所有应用就可以通过构造ContentValues来对数据源进行操作。

总结:

对开发者来说,windows mobile与Android在体系架构上有很大不同,但在开发语言上,面向对象等方面,只要熟悉一下,两者之间的相互迁移并不难。

对于Mobile OS来说,不同于桌面操作系统,这必将有一场惨烈的淘汰赛,究竟是一家独大,还是三国分离,还是不同程度的整合,都是一个问号。未来的移动世界,网络肯定是永恒的主题,不同的操作系统也在这个方面做整合,互联网在不断嵌入到手机平台中,移动搜索,Widget技术,各种各样的网络服务,相信移动的世界会越来越精彩,而对于开发者的我们,多掌握一种技术,可能就是多一个机会。以上介绍Windows Mobile与Android应用开发对比。
分享到:
评论

相关推荐

    Windows Mobile与Android简略比较

    总的来说,Windows Mobile和Android在开发环境、资源支持、开发流程以及用户界面等方面各有优缺点。Windows Mobile以其成熟的开发工具和丰富的资源吸引开发者,而Android则凭借其灵活的开发方式和开源特性赢得了市场...

    Windowsmobile技术和市场总结.pdf

    文档提供了Windows Mobile与其他平台如Android、Symbian、Blackberry和iPhone的竞争情况。虽然文档提到了部分市场数据和比较,但是由于文档片段的不连贯性,这部分信息较为零散。 由于文档内容是通过OCR技术提取的...

    C#开发Android应用实战

    4. Mono for Android:掌握使用Mono for Android开发Android应用的技术细节,包括硬件特性访问、代码共享、本地绑定和性能优化。 5. 跨平台开发方法:理解不同跨平台开发方法的优劣,特别是原生开发、移动Web、混合...

    windows+mobile+编程

    Windows Mobile曾经是企业级设备和智能手机的常见平台,虽然现在已被Windows Phone和更现代的Android、iOS系统取代,但它仍然是理解移动应用开发历史和跨平台开发的重要部分。 1. **Windows Mobile操作系统**:...

    windows mobile扫描驱动

    在Windows Mobile中,TWAIN驱动程序允许应用程序通过标准接口与扫描硬件交互。 3. **图像处理**:扫描驱动不仅负责获取图像数据,还要处理这些数据,包括调整色彩、亮度、对比度,以及进行必要的图像格式转换(如...

    新版Android开发教程.rar

    的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...

    LQOISKB2.rar_android开发_kidspds

    "android开发_kidspds"这部分揭示了压缩包内的主题,它涉及到Android应用程序的开发,特别是与"KidSPDS"相关的项目或教程。 在描述中提到的"windows mobile 5.0与数据同步"可能是指早期移动设备操作系统的历史,...

    windows mobile 九宫格应用

    标题中的"windows mobile 九宫格应用"指的是在Windows Mobile平台上设计的一种界面布局,这种布局通常用于展示多个功能模块或者应用图标,类似于Android或iOS系统中的主屏幕。九宫格设计通常包含9个小方格,每个方格...

    Android,谷歌手机平台开发

    1. **Java Development Kit (JDK)**:Android应用主要使用Java语言编写,因此需要先安装JDK,它是进行Android开发的基础。 2. **Android Studio**:Google提供的官方集成开发环境(IDE),集成了代码编辑、调试、...

    android GIS ---GEOtools Googlemap ucmap 开发总结

    - **环境配置**:支持Android、iOS、Windows Mobile等多个平台。 - **开发模式**: - **本地矢量地图**:支持Shapefile等格式的本地矢量地图。 - **在线地图服务**:支持WMTS、WMS等OGC标准服务。 - **互联网地图...

    android行业分析

    本篇简介: 3 1. 当前资讯 3 1.1. OHA成员列表: 3 1.2. 中国版的Android纠结上路 4 1.3. 移动OPhone或9月面市:与iPhone抢跑 9 ...5.3. android应用分类: 67 5.4. 编者注: 68 6. 常用网址整理: 69

    基于android手机平台的吃豆人游戏设计与开发.doc

    本项目的研究将详细探讨上述各个技术环节,通过实践与理论相结合的方式,展示Android游戏开发的全过程,期望能为Android游戏开发领域的研究提供有价值的参考,并展示作者在Android开发上的学习成果。在预期的结果中...

    移动GIS开发概览

    移动GIS解决方案的选择,不仅涉及到移动平台(如Windows Mobile, iOS, Windows Phone, Android等),还包括移动设备的选择,例如需要考虑设备的尺寸和精度、设备能力(如GPS、拍照、测距仪)以及联网能力(始终联网...

    大学毕设论文--基于android平台的手机软件开发论文基于android平台的手机“星座”查询软件设计.doc

    本文还对当前应用的Symbian、Windows Mobile、MacOSX和RIM等平台的现状进行了分析与比较,讨论了Android平台的优势和劣势,并对Android平台的未来发展前景进行了展望。 基于Android平台设计和开发的手机“星座”...

    学位论文-—基于android平台手机茶百科开发.doc

    本论文还对Symbian、WindowsMobile、MacOSX和RIM等平台进行了分析和比较,旨在了解不同平台的优势和劣势,从而选择合适的平台进行移动应用开发。 关键词:Android平台,手机茶百科,Intent机制,数据库技术,碎片...

    传智播客android ppt

    在智能手机软件平台中,Android与Symbian、Windows Mobile、RIM BlackBerry、iPhone、Palm、Brew、Java/J2ME等竞争。2009年,尽管Symbian占据主导地位,但Android凭借其开源特性和Google的大力支持,市场份额逐年...

    毕业论文-基于android手机平台的吃豆人游戏设计与开发.doc

    本课题旨在通过基于Android平台的“吃豆人”游戏的设计与开发,进一步探索Android应用开发的技术细节,同时展现作者在过去一年中的学习成果。 ##### 1.2 国内外研究现状 当前,国内外市场上已有多款成熟的手机操作...

    Android概述与学习指南

    #### 七、Android开发技术的应用现状与未来 ##### 7.1 应用领域 - **游戏类App开发**:利用Android强大的图形处理能力和多媒体功能。 - **商业与工具类App开发**:为企业和个人提供高效的工具和解决方案。 - **...

Global site tag (gtag.js) - Google Analytics