【IT168 评论】
今天我们将要访问的是Allan MacKinnon,他是Everypoint公司的创始人、总经理兼首席技术官。Everypoint是一家开发手机应用程序工具和平台的公司。通过对他近距离的采访,看他是如何重定义手机应用程序开的,也给我们开启一扇审视手机应用程序的视窗。

问题:Allan,您好,据我所知贵公司提供了一个叫"Nemo"的手机应用程序开发环境。那么这个Nemo主要是解决什么问题的?我们能用它做什么呢?
Allan:回答这个问题之前,我首先解释下Everypoint公司的使命。Everypoint成立的目标就是重定义手机应用程序开发,通过为开发者创建一个美观和功能强大的平台,让他们能够为具备英特网功能的移动手机开发、分布和管理应用程序。
Everypoint的Nemo平台是业内第一个手机应用程序开发系统,用来创建、分布和管理高互动性和高质量的应用程序,目前全球有超过10亿部的可上网手机安装了这些应用程序。市场潜力至少增长了100倍。基于这种需求,我们希望能够开发出更好的平台,让开发者能轻松的创建出手机应用程序,满足广大手机用户的需求。
问题:你能从开发者的视角来告诉我们Nemo的作用吗?
Allan:使用Nemo,开发者能够为Java ME设备创建富交互性、永远在线的应用程序。Nemo给开发提供了丰富的表现层,实时传达和同步内容的基础结构和一种交互式脚本语言,该语言能让开发者测试代码,让他们从传统的“编写、编译、测试、调试”手机应用程序开发流程中解脱出来。
Nemo的目标是构建出一种语言和一个运行环境,该运行环境能够支持来自网络和局部存储器程序的动态加载。另外,我们希望给开发者丰富的矢量图形表现层,和克服间歇式低带宽无线网络的手段。
从开发者的角度来看,Nemo程序语言继承了PostScript的图形概念、JSON和JavaScript的结构语法,像Forth面向栈式编程语言的编程模型。
Nemo还有它唯一的特点。它支持结构异常、闭包(closures)和动态作用域变量。我们利用这些特点,来完成图像和动画框架。
Nemo脚本语言最为有趣的特点是支持“云服务”,“云服务”能够创建“流”。流是JSON对象集合的实时复制,JSON对象集合能够在Nemo中快照、查询和控制。流能让开发者订阅到来自Nemo云中的内容,也能订阅到英特网中的内容。它将作为最新的数据集合显示在Nemo中。流可以作为共享内容,甚至是无线网络中的实时应用程序。流是事务元性质的,它能保证手机与云之间,手机与英特网之间,手机与手机之间的传输数据是最小数据量。
因为Nemo是交互式的,开发者能够不费力的开发。开发者能够在屏幕上绘制出平滑的文字和图像,并且可以马上进行测试。我们发现这个特点价值无法衡量,有助于应用程序的快速开发。
最后我想说的是,非常可贵的是Nemo所有都是自己开发的。整个语言,解释器,编译器都是包含在Nemo中。我们发现将此列为重要的特点,在语言发展的最初阶段,“培育”出一个新的语言是一个非常好的途径。
问题:同桌面应用程序相比,开发手机应用程序有什么不同?
Allan:我从哪里开始说呢?典型的Java ME特点的手机仅有2MB的RAM供使用。有些比2MB大一些,有些小一些。稍微想一下,这么大的RAM对于今天的标准来说是非常小的。因此,我们将Nemo脚本语言编译成微小的可执行的表示形式。对我们来说,在空间和时间上的效率是非常重要的,因此我们构建一个在空间上消耗最小,时间上消耗最短的语言。
无线网络并非LAN。手机应用程序应该设计成“间歇式连接”。作为一个手机开发者,你开发的应用程序所遇到的流量会发生变化,有时候没有连接,有时候在2.5G的网络只有10KB/秒,有时候在3.5G网络可达兆字节/秒。因此,我们在Nmeo程序设计语言中构建了功能强大的抽取功能,这就让开发者能够轻易的从Nemo 云(Nemo Cloud)或者真实的因特网中订阅内容。如果有连接的话,内容将会被传送过来。如果没有,就没有内容传送。这些功能由Nemo运行环境和Nemo 云(Nemo Cloud)保证,当订阅的内容发生变化是,就会传送到你的手机。Nemo提取层会通知你什么发生了变化,在什么地方发生了变化。当移动手机备份的内容发送到Nemo Cloud或者英特网的时候,情况也是一样的。
通常来说,手机屏幕的尺寸不仅小,而且屏幕高宽比很不一样。对于开发者来说,240x320像素屏已经快速成为标准屏幕尺寸,但是,当你需要在不同屏幕尺寸和高宽比的手机上开发该怎么办?因此,Nemo运行环境有一个内置的矢量图形引擎。Nemo的矢量图形引擎是非常神奇的,它全部由可移植的Java语言写的,能够让开发者提供抗锯齿图形,贝济埃曲线,透明度,动画制作,放射和透视变换,JPEG图像定法等等。所有这些可以运行在J2ME 设备上,只需要2MB的RAM和150MHz的CPU.
最终,最大最难的是如何让手机应用程序的设计能够和消费者期望的一致。确保用户尽快获得他们需要的信息仍旧是一个挑战。Nemo试着帮助开发者构建更好的手机应用程序,通过提供三种技术创新,也通过一些示例,向开发者和消费展示漂亮美观的手机用户图形界面应该是什么样子的。
问题:如果你需要列举出三个最让手机开发者头疼的问题的话,你觉得会是哪些?
Allan:第一个:设备“存储碎片”极值。到目前为止手机的存储问题一直使得手机的开发停滞不前。能够运行在不同规格硬件和软件能力的应用程序并不容易扩展。我们构建了Nemo运行环境来“整理”消除这些设备的差异,目前为止,对开发者来说,Nemo可能是最为理想的开发环境。
第二个:缺乏丰富的API。不论从强大功能的数据结构的缺乏,还是受到基本图形API的约束,都会让你很郁闷。当你有一个很好的主意的时候,发现这个想法很容易在PC上实现,却不能在手机上成功。这就是为什么我们开始构建Nemo。我们真的希望能够构建一个层,方便构建手机应用程序。
第三个:调试。就是搞不清楚为何你的应用程序在真实设备中发现故障,令人很痛苦。我们都经历过这种痛苦的经历,因此,我们开了Nemo开发平台,尽可能方便排除故障。
问题:读者能在什么地方查找到更多关于Nemo的信息呢?
Allan:通过在www.everypoint.com上注册,就能获得Nemo的常见问题解答。在http://nemo.everypoint.com/wiki/Live使用Everypoint的在线仿真器就能测试每个应用程序的Demo。注册的Nemo开发者,都能免费下载所有5个应用程序的源代码和指南。