从一个开发人员的角度比较Windows Mobile与Android

                             

 

 

当前就移动系统来说,最火的两个系统应该是WM和Android了,自己工作的关系两个系统都有所接触,在这里想谈一下我对两个系统的认识,希望同大家一起分享。

    开发工具

     Windows Mobile的主流开发工具肯定是VS了,Android是Eclipse,两个比较来说,从移动开发方面来说,VS无疑要好过Eclipse,从调试来说,VS+ActiveSync对于模拟器和真机的支持做的很不错,VS的调试器比Eclipse要强好多,开发Android程序,经常会由于调试麻烦,退化到不用调试器,而是使用Logcat来定位错误,原因是adb(Android中类似于ActiveSync一样的同步工具)真的还是一个beta的产品,能用但不好用。但是Android可以在Linux开发,我也相信,在大多数企业级开发中,基于成本的考虑,企业也会一般选择ubuntu来进行开发,在Linux的世界里,免费开源才是王道。   

    SDK资源

     MSDN+Emulator+广阔的博客资源(但我们Windows Mobile 博客园小组就有很多资料),Windows Mobile的开发非常丰富,而Android也因为事刚刚推出的系统,学习的资源很少,google开放的SDK也并不全面,经常在开发Android的时候,一个小小的问题通常都会研究很久,代码资源就更少了,而且一个事实是:很多厂商都在定制自己的Android,这样Android可能会因为不同的裁剪修改而让SDK统一不起来,进而让Anroid程序不能相互兼容。

     开发语言与系统结构

     JAVA与C#,不分伯仲,语言的特性来说,就不用细说了, 这里想从一个HelloWorld来谈一下在开发思路上,两者有多少不同。对于Windows Mobile来说,

一个HelloWorld,只需要创建一个工程,拖个Lable和Button,在Button响应事件里写:this.lable1.Text="Hello Wolrd";

    而Android,也需要创建一个Anroid工程,完了之后,就不能拖拽了,如果要实现一个和上面一样的效果,首先得创建一个Activity(这个东西类似于一个Form减去UI的东西,他加上View就能实现和Form一样的UI),然后到layout里,添加一个Layout.xml,这个事用来配置Form上Lable和Button的布局,然后,在Activiy中要写上一句: setContentView(R.id.Layout),R这个类是自动生成的类,类似于WM中Designer.cs,然后获取以下Layout中的Button,

 Button button = (Button) findViewById(R.id.btn);

       button.setOnClickListener(new OnClickListener()    {   

            public void onClick(View v)        {    

             TextView text=(TextView)findeViewById(R.id.text);

            text.setText("Hello World");

}

完事之后,Debug一下。比较下来,确实麻烦一点。

     另外我想说一下Anroid中的Intent,在WM中,窗体之间是可以相互引用 ,这样可以实现功能和界面上的跳转,而Android中Activity是不建议进行相互间引用的,他们之间是通过Intent相互通信的,Intent不但可以实现应用程序内的通信,还可以实现同一平台下应用程序之间的相互通信的,这一点来说,WM正是欠缺的。

 

 

     UI设计

     Windows Mobile 6.5发布了,从整个UI Framework上来说,并没有做多大的改动,WM的UI从一开始就在被PC绑架,很多用户都不认可这种Windows的UI,可能在Windows Mobile 7,微软会觉悟过来,抄袭模仿一下iphone,到时候做到很炫应该没什么问题,而Android的UI风格和iphone有些相似(肯定有模仿借鉴),如果要设计漂亮酷炫的UI,Android肯定会赢过WM,一个Dialog,在Android下可以设计任意喜欢View,然后把View Set到Acitivty上(并不是说WM不能做,重写MessageBox类,通过GDI,费点劲也能做出来,但是他和整个OS UI风格肯定是不相称),而对于基础控件来说,无论ListView,特殊Button,TabView等,比较WM来说,在缩放,切换行为,滑动的动画效果来说,WM肯定是很土的。其实使用C++,在WM也有很多炫酷的应用,比如说Pointui ,但是开发成本很大,而且WM要赢,OS的UI Framework才是比拼的重点,这样之上的APP才能有更加丰富的应用。

 

     开放性

     这个肯定是Android大赢了,包括iphone,Symbian,MTK等,Android的开放性能使支持他的硬件更加多元,很多厂商运营商也加入进来,比如说AT&T,T-Moible,ChinaMobile等,运营商希望定制服务,让厂商制造他们指定的定制系统,来获取消费者的服务费用。不花钱的系统谁都喜欢,WM的高额授权费用和Windows Mobile的不开源(也不可能开源),让WM比较开发系统来说生命力上还是差很多的,Android与WM的博弈,并不是MS与Google的正面交锋,而是google扔给了全世界喜欢免费Mobile OS的厂商,让他们来和MS干,而Android的大赢,将会是手机厂商(比如说摩托,三星等因为手机卖了很多而且没给别人交授权费),移动运营商(因为用的人多了,交的网络流量费,流氓服务费也收的多了),半导体公司(高通,TI等,芯片出货量大了),软件公司(各个公司有各个公司的小算盘,比如说谷歌,肯定是搜索广告垄断了Android,app软件在以后的app Market里收钱。。。)

 

     类库和应用软件

      这里想说一下浏览器和数据库,WM有Mobile IE和Sqlserver Compact,Android有WebKit和SqlLite,未来的移动操作系统将会是Web OS特性的系统,本人觉得WM最欠缺的也就是这个方面,未来的Web应用将会更加多元化,web程序和本地程序对用户来说应该是透明的,Android中一个非常大的亮点就是Widget,在Home上Widget的数量要远远大于本地应用,因为Widget是轻量级的,夸平台的。 Moible IE的核心与WebKit是不同的,但是使用HTML+JS+CSS的应用程序,将使Widget无论在PC还是各种手机上,只要有浏览器,就又可以至少跑起来,也希望MS不要冒天下之大不惟,再搞一套自己的JS标准。在WM 6.5中,Mobile IE虽然有不错的进步,但创新的应用还是远远不够的,希望MS在WM上能少一点抄袭模仿,多一点创新性革命性的应用。另外,Android集成sqlLite,这样很容易能够配合着做一些复杂的信息处理应用,包括Android中SMS,MAIL等也都是使用SQLLITE,WM的SQLSERVER比较起来还是有点大,以后希望WM直接集成进去,并且推出一套类似于Android的ContentProvider(对数据库,XML等信息载体进行集中管理存取的对象),能够更加方便高效的使用这些信息载体。

     云计算

     在本次的MWC上,MS推出了MyPhone,这是个很实用的云应用,对于Android与WM来说,讨论云计算并没有太多意义,这里只是想说google与MS的竞争,对于Google来说,己出的Android未来肯定会获得google的移动精确搜索,google地图等云计算的支持 ,对于MS来说这些都是短板,希望MS赶紧把yahoo搜索搞定,将来手机服务才是王道,也许Android与WM都会退化成一个带着浏览器的OS,那个时候,才是MS与google死掐最激烈的时候。

 

转自:http://www.cnblogs.com/abob/archive/2009/02/27/1399693.html

posted @ 2009-02-27 23:11  wang's Blog  阅读(1294)  评论(0编辑  收藏  举报