一个开发者眼中的App Store和i-mode

    有一位在日本工作的中国工程师,同时开发过i-mode和苹果iOS的软件,在他眼中,这两种模式有着什么样的不同呢?

    以下是他的自述:

    本质上来说,i-mode是DOCOMO面向用户推出的一个ISP(Internet Service Provider)服务。与i-mode相类似的几个上网方式有 SP-mode、mopera U等。支持i-mode上网的DOCOMO功能手机系统上都有一个程序i-menu(手机键盘上有相应的快捷键),通过i-menu可以快速访问手机上的浏览器、网页收藏夹、i-chanel等。

    在App Store上开发的程序一般我们称之为App,在i-mode上开发的程序称之为i-appli(这是DOCOMO起的名字,日本三大运营商的另外两家,au相应的名字为EZ-appli,Softbank上的为S!-appli)。

    i-appli是基于Java ME的一种框架,DOCOMO制定的这个框架名称叫作Doja/Star(早期版本称为DoJa,后期版本改名为Star)。Java ME有很多规范。DOCOMO自己定制的这个框架当时比较牛也比较自大,并没有公开为JSR(Java Specification Requests,Java规范请求)。所以这个框架起步很牛,但是天生就有一种封闭性。日本的3G手机以及手机应用当时是领先世界好几年的,但是这个框架的封闭性,导致其局限于日本市场。从开发角度来看,更广泛的英文系开发者无法参与进来(虽然DOCOMO一直提供英文文档)。

    2011年5月份开发过一个基于手机的企业应用,最主要的是开发Android版本,后来由于当时日本市场还存在大量的普通3G功能手机,所以根据客户需求又开发了一个i-mode版本。对比下来的话可以说在i-mode上开发i-appli是非常痛苦的。最主要的是开发框架落后。Doja/Star几乎是10年前的标准了,虽然DOCOMO一直在更新版本,但是换汤不换药,没有本质的新东西。

    (1)Doja对Java语言高级方便语法的支持简直可以用残忍来形容,很多Android上用得很好的一些特性,譬如良好的泛型、丰富的多线程调用方式等,在Doja/Star下面就别想了,本来Android上面几行的代码到i-mode后需要重新改写成几十行、上百行的代码。

    (2)没有本地数据库(Android Local database)支持,Android和iOS上都有内部原生支持sqlite数据库,Doja/star中没有这种特性,只提供一个非常简单的本地持久存储方式,这个问题导致Android程序移植过来后重新改写了很大一部分处理逻辑,很多稍微复杂的处理都得放到Server端,花费了很大的力气。

    (3)默认UI比较简单丑陋。相对于Android的默认UI简直不是一个量级的,更不用提iPhone的UI了。开发界面稍微漂亮些的程序,基本上都要从最底层调用API来画,默认的UI库非常丑陋。

    (4)执行效率低下,本质上是在原来功能手机的各种OS上实现一个Java的跨平台解决方案,因此执行效率低下。相对于现在Android和iOS的native程序来说就是在本来就弱的硬件环境上再穿了一层笨重的盔甲,虽说谁来了都可以穿这层盔甲,但是不管谁穿上都蹦跶不利落了。

    好像上面都是缺点。如果说Doja/Star有些好的方面的话,那就是对日本手机特色功能的支持比较全,比如felica、电子钱包、手机电视等。不过这些特性在现在Android上早就可以轻松获得支持了。