对比Windows Phone与iOS、Android开发的不同[转]
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上,还有很长的路要走,带给新的移动开发者更多的机会。