如今,企业员工和客户大都拥有掌上移动设备,其计算能力和存储容量足以让10年前的台式电脑相形见绌。如果除了基本的电子邮件和日历同步程序以外,你还没有为这些智能手机开发其他的应用程序,那这样的做法无疑是在暴殄天物。
几年前,掌上设备一般能卖到500美元左右,如今你只需花上100美元就能买到动态研究公司(Research In Motion,下称RIM)的黑莓珍珠手机(BlackBerry Pearl)或者三星公司(Samsung)的BlackJack II手机(配备Windows Mobile操作系统)。与此同时,将复杂的商业应用程序植入移动设备的技术也在稳步发展,不过其中某些有关分化的问题仍然有待解决。
移动平台的分类并不像桌面操作系统那样一目了然,主流的智能手机平台包括黑莓、塞班(Symbian)、Windows Mobile、Mac OS X以及Mobile Linux等,这些移动平台的竞争已经日趋白热化。此外,还有Java以及高通公司(Qualcomm)的无线二进制运行环境(Binary Runtime Environment for Wireless,Brew)等更高层次的应用程序框架。要决定选择哪种平台、设备以及应用程序架构的确很难,但每个移动应用程序开发商都必须做出一番抉择。
移动设备的不断分化导致开发工作越来越复杂:屏幕尺寸五花八门、用户输入方式多种多样、无线网络连接变化无常、电池的电量有限、软件的部署和更新需要管理系统;此外,还得满足安全方面的需求。
幸运的是,现在厂商们已开始致力于改进架构以解决复杂性问题。新的架构可以使应用程序的开发更加容易,让这些程序更轻松地访问企业的后端系统,并且能在各种设备上运行。新架构包括的技术有:Web 2.0技术、富互联网应用程序(Rich Internet Application,RIA)环境、新Java平台、新的同步技术以及改进过的移动中间件平台。这些技术虽然各自都还存在缺陷,但它们组合起来就成为了功能强大的移动应用程序开发工具集。
《信息周刊》最近进行了一次相关的调研,有近400名IT专业人士参加。结果显示,IT人士正在密切关注移动平台的应用程序开发。33%的企业正在实施相关项目,37%的企业在某些业务单元部署了移动应用程序,而30%的企业则在全公司范围内部署了移动应用程序。由此可见,移动应用程序已经得到了比较广泛的应用。在移动设备方面,RIM占据了主导地位,有57%的IT组织在为黑莓系统开发程序,而为Windows Mobile开发程序的厂商比例也占到了44%。除此之外,为Palm OS、iPhone以及塞班开发程序的厂商所占比例分别为25%、5%和4%。企业内部自行开发移动应用程序的能力也很强,有30%的企业选择了自行开发。
利用本地化语言开发
使用C、C++和Objective C等编程语言在本地化环境中开发应用程序并不新鲜。事实上,到目前为止这仍是开发性能最强、响应速度最快的移动应用程序的好办法。微软公司(Microsoft,下称微软)、苹果公司(Apple)和塞班公司等厂商都推出了功能丰富、配备有调试器和仿真环境的开发环境。
为黑莓系统开发程序需要使用Java的特别版,该版本结合了标准化Java语言以及与RIM产品相关的编程接口。此外,RIM还提供了全套工具集。对微软平台则可以使用C/C++语言进行本地开发,或者是利用功能强大的.NET Framework 精简版(.Net Compact Framework),它提供了一个简易化、易管理的开发环境。
采用C/C++外加特定平台的应用编程接口(API)来进行开发时,需要投入相当多的研究精力,而且开发出的应用程序只能在特定平台运行。对于普通的IT组织而言,这种开发方式往往可望而不可及,因此新的应用程序架构就显得更有吸引力了。不过,尽管如此,调查结果显示仍有43%的受访者使用微软的工具进行移动平台企业应用程序的开发。另外,27%的受访者采用的是Java,还有26%的受访者采用移动中间件。
Web 2.0和RIA中的很多特性可在移动平台上大显身手。我们可以将Web 2.0看作是引人入胜的互动式应用程序,它通常会让用户参与内容的生成。占据市场领先地位的第三方手机浏览器软件供应商Opera公司声称,Opera Mini浏览器每月显示25亿篇网页,这表明移动网络正逐渐成为主流。49%的受访者赞成移动应用程序采用基于网络的模式。
基于网络的应用程序或服务与本地应用程序有着本质上的区别。对移动设备而言,最复杂的一个因素是用户并不总是连在网上,有时他们不在服务区内或者处于断网状态(如乘飞机时)。过去移动网络应用程序速度缓慢,主要原因是无线网络速度慢,延迟时间太长。但如今3G网络速度很快,能提供1 Mbps左右的吞吐量,延迟也降到了100毫秒或更低。3G网络性能的增强以及WiMax等新型网络的出现将进一步提高网络应用程序的性能。
与本地应用程序相比,网络应用程序的开发更加简单,并且后者能在各种不同设备上显示目标内容,无需在移动设备上安装和维护应用程序,此外还能利用SSL VPN等支持HTTP连接的安全技术来提高程序的安全性。这些都是企业考虑采用网络应用程序的理由。
最近一些新技术的发展也为网络解决方案提供了动力,如Ajax、Web widgets、Adobe Flash、Silverlight以及Google Gears等等。这些技术原本是为桌面环境开发的,但它们正被移植到移动平台上,用于网络应用程序的开发。
以Ajax为例,它能够选择性地更新部分网页内容而无需刷新整个屏幕,这一点对于带宽吃紧的移动设备来说非常合适,此外它还能让程序与下载数据进行有限的交互。Ajax能加快网络应用程序的响应速度,并使带宽得到更有效的利用,因此大多数智能手机浏览器都支持Ajax。Adobe Flash、Silverlight以及可缩放矢量图形(Scalable Vector Graphics,SVG)等技术都能在基于Java的系统中使用,它们都支持动画内容。虽说这些技术一般是在消费者应用程序中大显身手,但它们提供的丰富内容同样可以用于增强版的企业应用程序。
Google Gears等技术还能让基于浏览器的应用程序与本地数据源自动同步,从而在脱机情况下也能正常工作,这就解决了移动网络存在的一个大问题。
网站需要为移动浏览器度身定制网页内容吗?iPhone手机上的Safari浏览器以及Opera Micro和Mini浏览器都已经证明,几乎任何网页都能在移动设备上获得良好的显示效果。不过,要是你想得到最佳的显示效果,那网页内容最好是为小屏幕量身定做的,网页中对象的数目也要尽量减少,从而将浏览器的读取工作量降到最低。
虽然这些网络技术还不太成熟,但它们展示了移动应用程序的美好未来。网络应用程序的性能永远不能超越本地程序,但它可以更快地将数据提供给移动办公者,从而降低管理开销。此外,相对于本地应用程序而言,网络应用程序的开发门槛较低,大多数IT组织可以选择自行开发。
Java平台的演化
大多数手机上装有Java虚拟机(Java Virtual Machines,JVM),这些JVM一般比较适合运行游戏程序(RIM的黑莓手机上的JVM是个例外 )。通常来说,移动平台上的JVM功能不足以运行企业应用程序,但随着Java的新发展,这一点将得到改变。
在这里,让我们先来回顾一下有关的背景知识。移动平台Java的架构由下列部分组成:Java平台微型版(Java Platform Micro Edition,JME)、有限连接设备配置(Connected Limited Device Configuration,CLDC)或功能更强的连接设备配置(Connected Device Configuration,CDC)以及移动信息设备配置文件(Mobile Information Device Profile,MIDP)。JME的功能以及编程接口的具体细节是在Java Specification Request(JSR)中定义的。
由国际商业机器公司(IBM)、斯普林特公司(Sprint)和诺基亚公司(Nokia)联手力推的新移动Java平台是第一个重大的进展。该平台基于开放服务网关规范(Open Services Gateway Initiative,OSGi)联盟所定义的管理框架,利用日蚀基金会(Eclipse Foundation)提供的嵌入式富客户端平台(Embedded Rich Client Platform,eRCP)作为运行平台。IBM公司为Windows Mobile系统开发的J9 JVM就部署了OSGi/eRCP。OSGi与eRCP强强联手,打造了一个功能强大的Java环境,拥有多任务处理功能以及丰富的用户界面,可以运行很多企业应用程序。不过,目前只有高端智能手机才能运行这种平台。诺基亚公司同样在塞班操作系统的手机上部署了OSGi和eRCP,但该公司很多型号的手机没有在美国上市。鉴于很多程序员精通Java开发,该方案可能是个很好的选择。
还有一种解决方案利用了即将推出的MIDP 3.0配置文件,在功能上它与OSGi方案基本旗鼓相当。MIDP 3.0将在一年内应用到部分设备上,它与OSGi类似, 是一个能控制安装/卸载和服务的管理框架,可以与JSR 320捆绑使用。
斯普林特公司似乎正通过一个名为Titan的程序走OSGi这条路。美国电话电报公司(AT&T)则支持MIDP 3.0。威瑞森公司(Verizon)没有使用Java,而是采用了Brew,不过你随时可以在威瑞森的手机上安装Java功能。
与此同时,太阳微系统公司(Sun)正在开发新的Java版本——JavaFX,它能支持从手机到桌面电脑等各种设备。JavaFX利用了标准版Java作为运行平台,它是一个比JM功能更为强大的运行环境。JavaFX还增加了脚本功能以及类似于Flash的动画功能,以便为RIA提供支持。JavaFX的技术细节目前还不清楚,但目前已经有了不少类似的解决方案,比如Google Android的编程环境也是基于Java的。
让我们惊讶的是,绝大多数受访者对Java表现出了极高的热情:89%的人认为,Java能提供一个支持多种类型设备的高效平台。当然,这种看法也反映了我们的心声。总而言之,移动平台Java正在茁壮成长,大批Java程序员可以运用他们既有的技能,在更强大的移动平台上开发商业应用程序。
移动中间件
自从10多年前无线数据网络投入使用之后,移动中间件就一直是移动应用程序的组成部分。不过以前它的功能一直着重于数据传输,而如今则侧重于应用程序整合。要使用移动中间件,就得添置客户端软件和服务器平台。但采用中间件显然物有所值,因为它能解决移动应用开发中的不少问题,如后端服务及应用程序的整合、有效的无线通信协议、管理功能以及安全性能等。大约80%的受访者认为利用移动中间件的解决方案非常有效。
新型中间件产品的关键特性包括:利用网络服务将移动应用程序与后端应用程序进行整合;同一客户端应用程序可以同时与多个后端应用程序交互(比如用户界面可以同时显示Oracle和SAP的数据),也就是所谓的复合型应用程序;无需软件编程的开发环境;用于创建用户界面的交互式工具;同一种移动中间件应用程序能在各种移动设备上运行。最后一个功能极具吸引力,因为大多数企业的IT部门都不得不支持多种移动设备。
移动中间件由下列环节组成:位于移动设备的客户端组件、移动服务器、开发工具、管理工具和安全工具。中间件厂商为每种移动操作系统提供了不同的客户端版本。客户端具有与用户进行交互的平台,可以运行利用开发工具创建的应用程序。由于中间件客户端提供了比本地操作系统更高级别的抽象层,企业自行开发的程序便得以在各种类型的设备上运行,而移动中间件客户端则负责处理连接管理、文件系统以及用户界面等底层琐事。
保持同步
同步的一般概念是指在两个系统之间自动协调指定数据。对于本文的主题而言,这里特指移动设备与服务器之间的同步。我们可以把RIM黑莓之类的无线电子邮件系统看作是一种同步形式,微软的无线电子邮件系统则利用了ActiveSync协议。各家厂商都在加强各自的同步性能,比如说我们目前关注的正处于预览阶段的微软同步框架(Microsoft Sync Framework,MSF)。微软打算将MSF作为综合性同步平台,可以支持各种应用程序、服务和设备,通过灵活的网络拓扑结构(network topologies)运作。MSF可以同步启用ADO.Net的数据库,还能够同步文件和文件夹。不过,要利用MSF,开发者必须具备相当程度的编程能力,因为程序必须用C++编写或是在微软的.Net Framework精简版下编写。
数据库厂商也纷纷推出了涵盖移动设备的同步解决方案,如赛贝斯公司(Sybase)的One Bridge和iAnywhere,以及甲骨文公司(Oracle)的Mobile Collaboration 10g。第三方同步解决方案,如诺基亚公司的Intellisync,也很受欢迎。
总的来说,用于开发移动应用程序的工具正变得日趋复杂。IT专业人士必须有能力判断哪种工具最合适自己。这是个棘手的问题,但也可以说是个幸福的问题,因为有选择的余地总比什么都没有强。
