昨天4500入手了谷歌的三儿子,Galaxy Nexus。用了一天,感觉畅快淋漓。昨天在微薄上发了一条消息,说终于不用忍受WP7了,激起了一些小讨论,可能有WP7的爱好者吧。那就详细的说一下我的看法吧。也算是一个在Mobile Computing的Research和Development领域摸爬滚打了将近10年的人的一家之言。本来文章的题目叫“我为什么要换安卓”,后来想干脆要玩就玩大的,把几个平台都评头论足一番。

那天在小米网站上看到有个展示手机的功能,就花了点时间做了一个图,如下(点小图看大图)。

十多年,用了这么多部手机,除了第一步Motorola的手机是所谓的feature phone之外,其它的都可以算是smartphone。这其中绝大多数都是Windows CE。当然,这跟我当了4年的微软Windows CE的MVP有关系。我的Mobile Computing之路也是从Windows CE开始的。当然,这几年对Android玩得多一些。至于Research领域么,不在手机,就在此不表了。

做预测什么的很容易,每个人都可以号称自己是xx专家或者砖家。至于预测准不准就是另一回事了。4年前的2008年,我也写过一篇类似的文章,地址如下:

iphone V.S. Windows Mobile V.S. Symbian

http://hezongjian.com/blog/?p=9871

iphone V.S. Windows Mobile V.S. Symbian(续)

http://hezongjian.com/blog/?p=9872

大家可以去围观。也在这两篇文章里面做了一些所谓的预言,当然,有些实现了,有些没实现。比如说当年如日中天的Symbian的悲惨命运被我几乎一点也不差的言中(份额下滑->拥抱开源->抛弃Symbian->拥抱微软)。当时作出拥抱微软的判断,是因为palm拥抱了微软,而且我当时对微软的产品比较乐观。所以对Windows Mobile的预计也太乐观,甚至预计Windows Mobile的份额会上升,今天看来也不过是徒增笑料而已了。

当时写那篇文章的背景,是苹果邀请我去美国开会,拿人手短,吃人嘴短,自然要对苹果美言几句。今天再来写么,也很难摆脱个人感情因素,因此本着信息公开原则,说说我跟这几个平台,几个公司的千丝万缕联系,这其中有没有个人感情因素,读者自己判断。

微软与我:02年到微软上海技术中心实习一年,后来当了四年的Windows CE的MVP(自己退了)。从工作以来,跟微软亚洲研究院一直联系紧密,有两门微软的精品课程,还有联合项目。从个人感情上来说,与MS的感情是最深的,甚至当时抛弃会计,转到软件学院学习,也是因为受到盖茨首富的激励跟01年的时候听了微软校园行张亚勤的讲座而起的贼心。

谷歌与我:07年开始,有一个联合的实验室,有一个联合的精品课程,谷歌为同济捐赠了20W,支持我们开课跟建立联合实验室,上面提到的一些安卓手机其实不是自己掏腰包,而是在实验室借用的。还搞了一次联合的师资培训跟Android学生竞赛评委。计划在cloud computing跟mobile computing方面展开一些joint research,因为我来HK了所以搁浅了。对于谷歌而言,个人觉得他们很务实。

苹果与我:在同济有个俱乐部,但是与我关系不大,我至今不会苹果编程。唯一的恩惠是我两次带队去美国旧金山参加WWDC,听了两次乔帮主的神级别忽悠。虽然第一次见乔布斯前我都没接触过任何苹果产品,但是听了讲座以后,我也被忽悠的自掏腰包买了不少苹果产品。BTW,我也现场听过盖茨演讲,那次估计盖茨感冒了,一直在咳嗽,然后他带病演讲,在演讲的时候不断的咳咳咳,让我感觉首富也得病,真不可思议。然后听完之后,只记得盖茨咳嗽了,没有其他收获。但是帮主的演讲,每一个动作,每一句话,每一个眼神(我离乔也就50米,能看清眼神)都极为到位,人家也是带病演讲,而且还带的是癌症。这才是置生死于度外的专业级忽悠。

08年以来,变化太大了,那篇文章中评论的三个系统,一个已经挂了,一个已经换马甲了,还有一个系统没挂但老大挂了。所以可以把这文章当新作品看。作为码农,肯定会讨论技术,一个系统要成功,技术重要,但不是全部,所以我尽可能不对技术细节做太多评论,写不开,只写一些high level的东西。如果想了解细节,可以看本人的《移动应用开发》讲义。好了,正文开始。

———————————–分割线——————————————

技术篇:

从技术角度讲,我本人最欣赏Android。当然有些人说安卓抄iPhone界面,肤浅!没看到安卓的架构都是抄的,改过的Linux上面跑改过的java虚拟机,这不就是抄早期黑莓么。不管它是哪里来的,反正今天他就是这样子了。之所以欣赏安卓,是因为他在软件架构层面设计的非常优美,对于软件安装、卸载;通知;广播;组件调用;消息传递;权限管理;异步等,都有比较优雅的实现方式,让Windows程序员,Linux程序员甚至.NET/java程序员都会觉得眼前一亮。iPhone跟Mac OS X架构类似,Native Code开发最大的问题还是资源管理,提高了码农的准入门槛,在纷纷奉承开发人员的今天,不得不说是个遗憾。Windows Phone也有深深的微软痕迹,基于.NET的托管代码,很多实现可以看到以前微软技术的影子。

别的不说,就说一个弹对话框问题。MessageBox这个API在桌面上用的很多,但是在手机里面如果太多的对话框,不是好事情。除了对话框通知用户,应该有其它方式。在安卓上,弹出一个传统的windows一样的对话框,估计要消耗10行代码左右。在ios上我不知道,但在Windows Phone上,只需要一行代码。这里一行代码就实现一个功能是好事么?不见得,很容易导致码农对此功能的滥用。所以,在Windows Phone的各类应用上,都可以经常看到弹框:退出的时候,弹框,问你要退出么,亲?保存的时候,弹框,问你要保存么,亲?发送的时候弹框,问你要发送么,亲?废话,我当然要退出,当然要保存,当然要发送,烦死了烦死了,把我当傻子。倒是搞了一个search键,一不小心碰到就打开浏览器上bing了。你这个时候怎么不弹框问我你要search么?我不要search,真要search我也不用bing去search,可你那个破搜索按钮一不小心就按到了,谢特!这也都罢了,哪个傻子设计的,WP7里面弹出来的框居然在屏幕的最上边,单手操作的时候,伸手指头去够那个框的yes/no去把它点掉,手指头太短的人,花好大力气也够不到,比iPhone跟安卓的居中弹框费劲多了。在安卓上,各种各样的弹框虽然存在,就少不少。因为码农可以用Toast,Toast只要一行代码,而toast却不那么烦人。iOS么,我不了解,iOS 5里面从安卓山寨来一个从上面拉下来的提示窗口,不得不说苹果也意识到弹框提醒太多是要不得的。

插图:我当然要replay,否则我干嘛按replay按钮?你干嘛把OK放得那么远,谁的手指头有那么长?

当然,任何设计都有tradeoff,安卓“优美”的设计有时候是用性能换来的,比方说intent。

单单从软件架构来讲,如果给安卓打100分的话,给iPhone跟Windows Phone都打70分。

策略篇:

还是从系统的开放性,封闭性上来讨论策略。

换了一批竞争对手,iPhone依然是最封闭的,这也是苹果公司一贯策略。market,硬件,销售等上下游,苹果公司都想控制。凡跟苹果有竞争关系的软件,都不能在Store里面卖。封闭带来的坏处么,自然是不可能一家独大。用反证法,试想如果某一天只剩下苹果一下手机公司了。苹果公司选中的硬件厂商就有生意,苹果公司不选中的硬件厂商就生意冷清。苹果公司选中的运营商就有移动用户,苹果没选中的运营商就没移动用户。这是不可能发生的,ZF也不会让它发生。封闭带来的好处么,也不少,还是木桶原理,软硬件协同设计做的非常好。market的封闭也可以保护开发人员,让码农的付出可以获得实惠,此外,平台的单一性也可以降低开发难度。

安卓是最开放的。代码都给你看,那就啥秘密没有了。各种山寨手机都转战安卓了。MTK也转战安卓了。当然,开放有开放的问题。有些硬件厂商的确不给力,我见过几百块钱的单点触摸的安卓手机,有人用了这个手机之后,就断言安卓被iPhone秒杀。反过来用了galaxy nexus之后又说安卓要秒杀iPhone。500块钱跟5000块钱的手机都是安卓,可是哪个最能代表安卓呢?难说。安卓的开放性对开发人员来说也不是个好消息,在android market里面赚到钱的程序员比在iPhone那里赚到钱的人要少得多。豌豆荚一出,什么软件都免费,还不用像iPhone一样辛苦越狱,对用户是爽了,对辛苦的码农呢?

这次Windows Phone走得是中间路线,小厂商没法从微软那里拿到Windows Phone的授权。只有大厂商才有资格开发WP手机。而market也是封闭的,要微软审核。

由于不同公司策略都不一样,无法打分,如果一定要打,就都打100分吧。

**

**