【51CTO译文】毫无疑问的是:如今企业已经开始以严肃认真的态度看待移动商务类应用程序的开发及交付工作。然而无论企业的最终目标是借此传播信息、推销产品、与业务伙伴加深合作抑或是将移动应用本身作为产品加以市场推广,移动平台的更新与进化永远是不变的趋势,这就使得许多IT部门需要在选择***系统版本方面下一番苦功——除此之外,使用哪些工具与执行方案才能让自己的应用产品在正确的时间交付给正确的受众也是一项大问题,而这些与设备本身毫无关系。
在这些新兴企业应用当中,有一些项目的设计寿命周期较短,其中尤以旅游指南类应用为甚;而其它应用则往往能够在未来的数年内持续发挥作用。而以增强现实类阅读器为代表的一类应用则需要不断收集实时信息、访问手机的各项底层功能,例如用户当前地理位置、摄像头、陀螺仪及运动传感器等等。另有一些应用则对移动设备的屏幕尺寸及用户手势操作方案提出更高的要求。尽管应用程序林林总总,但它们都具备一大共同点,即每家企业都希望以尽可能低廉的成本与最短的周期来进行应用开发,而且需要应用产品能够运行于多种系统平台之上——至少要支持Android、iOS以及Windows Phone。
显而易见,这样的需求催生了开发工具市场的一派繁荣景象。不过在浩如烟海的开发方案中做出选择也绝非易事,目前还没有任何一款工具能同时满足周期短、成本低、功能丰富这三大应用程序开发需求。而且一旦在进行选择时稍有不慎,大家就可能发现自己的开发方案无法顺应时代潮流以及用户的***诉求——就以Facebook为例,他们在全身心投入HTML5怀抱后才发现这套新机制与iOS应用很难协调一致,这可真是欲哭无泪的悲剧性结局。
要想做出正确决策,关键在于认真评估我们的应用程序产品在当前及未来所要面对的潜在需求,并在满足用户需求与缩短应用开发周期之间找出恰到好处的平衡点。千万别在一棵树上吊死,我们的应用程序绝不能只针对某一款特定系统平台。积极接纳多种开发平台,满足各类用户群体的心理预期才是合理的发展方向。在下面的文章中,我将与大家系统展开讨论,看看如何才能针对移动开发需求选择正确的前进路线。
移动应用程序开发的三条阳关大道
移动应用开发方案分为三种不同类型,即Native、Web与Hybrid。要想明智地选择开发方案,首先要对三者的优势与缺点了然于胸。在搞清状况之后,我们才能决定应用程序的复杂程度并选择产品的目标运行设备。如果大家希望用户早一点开始使用自己的应用产品,那么对功能及特性进行简化是必不可少的手段——简洁明了的特色一方面让我们的程序拥有鲜明的市场定位,同时也能让我们在选择应用程序框架时少走弯路、缩短开发周期。
虽然最基本的跨平台特性也需要支持至少三大主流系统,但这并不代表我们的应用程序开发成本也将随之提高到三倍。然而如果我们在经过谨慎的市场调查后决定在特定的某一款移动操作系统上全力一搏,整个开发过程的时间及资金成本仍然会得到显著削减。总而言之,跨平台特性带来的开销并没有想象中那么大,但也绝没小到可以忽略不计,因此大家必须认真权衡成本、人力投入以及产品交付周期,看看跨平台到底能不能为我们赚回票价。
纯Native应用能够提供最理想的设备契合度与用户体验,但却对开发人员的技术水平有着严格要求,同时也需要投入大量时间。纯Web类应用程序——包括那些利用WebKit伪装成Native应用的类型——在部署效率方面效果拔群,但局限性也同样明显。除二者之外,Hybrid型应用程序开发也应时而生,它将Native预创建容器与动态Web代码加以结合,试图打造兼具二者优势的新型开发方案。然而一旦采取这种方案,我们的整个开发流程就会被束缚在特定的某一家软件服务商身上,由此带来的局限性与问题同样令人头痛。
一旦选定了开发方案,我们接下来就要准备好采购对应的移动开发工具包。如果大家刚刚开始与移动应用开发工作打交道,希望能够以测试为监控工具严格按照预期的时间及规划进行产品研发,那么请务必重视自己这次小试牛刀的机会。作为***款应用产品,我们一方面要努力在预定周期内完成开发工作,另一方面则不妨降低对于功能性的预期,以朴实稳健的态度完成自己的试水。#p#
移动应用开发的***条阳关大道:Native应用开发方案
针对单一移动操作系统进行Native应用开发可以说是移动开发领域最为传统的解决方案,但它的开发周期也是最长的。由于各家移动平台供应商所提供的编程环境完全不同,加之各系统的用户界面风格也大相径庭,这就导致跨平台成为开发人员心中永远的噩梦。苹果的iOS设备的Xcode IDE采用专门的Objective-C语言,而谷歌的Android编码器则一般采用开源Eclipse IDE与Android的原生Android开发工具(简称ADT)Java编程插件组合。微软公司则专门为Windows移动设备准备了Visual Studio Express以及Windows Phone SDK,在针对WP7设备的开发工作中程序员需要使用专门的C#及.Net语法进行编程。
虽然供应商提供的Native工具能够确保访问到设备的每一项功能,但开发工作同样需要对计算机科学了如指掌的优秀软件工程师。除了开发周期过长,Native开发方案所需要的资金投入也最为昂贵。虽然设备供应商会免费为我们提供开发工具(供应商乐于鼓励针对其移动平台的开发行为,这等于在无形之中壮大了其软件支持阵营),但开发人员仍然需要经过系统学习来掌握这些各具特色的编程技能。另外移动开发与传统开发工作一样,编程难度会随着应用程序自身的复杂性而呈指数级上升——经验丰富的C语言程序员可能只需几个小时的摸索就能搞定简单的移动应用程序,但更为复杂的软件产品则会轻易消耗掉整个开发团队数百小时的工作时间,同时带来数万美元的人力成本。
但对于那些预定寿命周期较长或是对于性能竞争力要求较高的应用程序而言,Native开发是毫无疑问的***选择。但如果大家希望自己的应用程序能够快速上线,那么支付一大笔资金用于雇佣资深技术顾问或是组织严格的技能培训(例如著名的Big Nerd Ranch课程)恐怕是不可避免的——可以说没有雄厚的经济实力作为支持,要想在预定时间内完成Native应用开发工作简直是天方夜谭。#p#
移动应用开发的第二条阳关大道:基于Web的应用开发方案
第二类方案同样受到热烈的追捧,这就是以Web为基础的开发模式。这类应用程序产品其实并不是严格意义上的应用,而是为特定网站量身订制出的特殊软件,能够模拟出应用程序所应该具备的外观与使用感受。时至今日,这仍然是最便捷的开发方案,而且应用程序逻辑可以轻松迁移到各种不同类型的操作系统平台之上。在iOS设备中,我们甚至可以利用“添加到主屏幕”功能将当前Web应用的浏览器快捷方式放置在主界面中,这会进一步让用户产生Web应用与Native应用并无本质差别的感觉。
Web类应用程序通常依赖于JavaScript的客户端编程能力。JavaScript具备成熟的程序体系与面向对象的语言功能,与客户端Java Applets不同,JavaScript能够支持几乎所有类型的移动浏览器。只要采用开源JavaScript框架,我们就能大大简化移动Web应用程序的编码流程,因为该框架能够提供大量预置的用户界面元素以及一套完善的MVC应用程序模板。目前可供挑选的此类JavaScript框架很多,其中的佼佼者包括Ext JS(现在更名为Sencha)、JQuery Mobile以及The-M-Project。JavaScript框架使用起来非常简单,基本上跟在JavaScript应用程序中添加框架的.js文件或者在自己的JavaScript代码中添加框架功能差不多。正因为如此,我们完全不必对自己的IDE做出任何更改,这就使得Web应用开发的学习曲线非常亲民、可谓包教包会。
说了这么多Web应用程序的好处,再来谈谈缺点吧。虽然这类应用在外观与使用感受上与Native应用差别不大,但性能表现却往往大打折扣。由于用户通过设备上的Web浏览器访问应用程序,因此大部分功能都需要借助Web连接进行传输并加以执行,这就使得响应延迟成为用户体验的***天敌。虽然HTML 5拥有访问Native存储数据的能力,但一般来说移动设备的内存容量也就几百兆,因此Web应用不可能将信息一直保存在内存中随时等待调用。
与Native开发模式对于程序员个人技能的严格要求不同,Web应用程序提出的惟一考核标准就是大家得懂Web开发:HTML 5、CSS以及JavaScript,另外再了解一些诸如Java、PHP或者Ruby之类的服务器端语言即可。由于应用程序整体在Web中运行,因此我们可以随时对其加以更新,而无需对应用进行二次发布。
Xpous公司推出的iGenApps售价9.99美元,能够为用户提供一套完全不必跟代码打交道的简易Web应用程序开发方案,而且成品能够顺利运行于Android与iOS两大主流平台。为了迎合小型企业对于应用程序低复杂性与廉价开发成本的需求,iGenApps应运而生,它使得企业用户能够创建基于Web的移动设备应用产品。所有应用程序都被托管在Xpous公司的服务器上,并通过电子邮件中的HTML链接进行发布。收件人只需将该链接添加到浏览器主页的快捷图标中即可。
人类的智慧可谓无穷无尽,目前工艺最精致、打磨最严苛的Web应用已经能够将WebKit使用得炉火纯青。尽管仍然套着浏览器的外壳,但不少Web应用程序已然拥有完全独立的用户界面、全屏功能及导航、状态栏隐藏机制。由于WebKit的实质属于Native应用,因为它能够访问设备中的许多底层功能,例如地理位置等。即使是体积最小巧的WebKit在与服务器端的PHP、Ruby或者客户端的HTML 5、CSS以及JavaScript等Web编程语言相结合之后,同样会迸发出令人印象深刻的化学反应——***的Native应用模拟效果、所有常见操作按钮甚至是软键盘拨号,一切都与真正的Native应用毫无二致。而且值得一提的是,这一切仅仅是模拟出的效果,真正运行的只是最基本的应用代码,手机本身完全不必进行任何复杂的图形处理或者CPU运算。
Adobe公司的免费工具PhoneGap同样体现了WebKit的发展战略——它使得用户能够在服务器端完成应用程序代码的编写,然后将成果直接发布到多种移动操作系统当中,整个过程快捷而便利。PhoneGap利用插件对基础shell进行了大幅强化,使其能够模拟多种Native界面效果,进而为用户带来更为逼真的Native使用体验。#p#
移动应用开发的第三条阳关大道:Hybrid型应用开发方案
WebKit的日趋完善给移动应用程序的第三类开发方案铺平了道路,这就是Hybrid型应用开发模式。所谓Hybrid型模式是将简单的WebKit shell替换为更加复杂的Native化代码容器,并以Native应用的形式运行于目标操作系统平台当中。容器供应商负责维护容器代码,这就规避了Native代码开发工作成本过高的难题。然而随之却产生了一种新的隐性成本——用户被束缚在特定的Hybrid型平台之上,只有在安装时即与该容器绑定或者稍后另行下载才能保证JavaScript代码的正确运行。
与纯Web类应用那种无视设备型号、只提供完全一致的操作界面不同,Hybrid型应用程序能够根据不同的移动操作系统带来风格各异的使用体验:在Kindle Fire设备上采用Android风格、在iPad上变身为iOS外观、在Windows Phone中则转化为Metro范儿。
Appcelerator推出的Titanium就是Hybrid平台中出现最早且至今人气旺盛的平台方案之一。其***产品工具包中包含了一套跨平台SDK,不仅集成了千上万种特定设备API、内置设备模拟器的基于Eclipse的Titanium Studio IDE,还囊括了在Appcelerator云服务器端托管应用的选项。这款SDK与配套IDE完全免费,不过云端托管及各种技术支持服务则属于收费项目。
让Hybrid型开发方案进一步得以推广的功臣当数Sencha的Complete Team系列移动开发工具,其中最知名的项目包括Sencha Touch 2 JavaScript框架、Sencha Architect以及拖拽GUI构建器。Sencha.io仍处于测试阶段,它***尝试利用云技术处理数据、消息以及服务部署工作,这就使得企业在部署应用程序时不必再架设任何面向公众的基础设施。
要想以无需编码的方式从事云基础移动应用开发,MobileFrame无疑是不二之选。它为用户提供了多套预置应用程序模板,大家可以利用Web基础GUI设计器对模板进行自定义,然后将成果部署为Native或者Hybrid型应用。而针对企业级应用程序部署领域的实际需求,MobileFrame还推出了版本及源代码控制、数据库连接功能以及集成测试环境与设备模拟器。除此之外,这款平台还包括内置的移动设备管理(简称MDM)功能,这使其同时成为一套颇具吸引力的BYOD辅助工具。#p#
特定用途平台
除了供应商提供的NativeIDE以及跨平台Hybrid工具包,市场上还有大量专为特殊环境所量身打造的开发产品,希望能在特定移动操作系统或服务器端主机环境中占据属于自己的市场份额。
其中***的实例就是谷歌的J2ObjC Java-to-Objective-C编译器了,它的设计目的是让服务器端的Java开发人员能够将自己的非UI代码转化为能够被苹果设备所直接使用的Objective-C代码。苹果公司目前仍然严禁NativeJava在iOS系统中直接运行,这也成为擅长Java应用开发的程序员们转战苹果的***阻碍。尽管Java开发者们仍然需要系统学习Objective-C中关于iOS图形应用组件的开发知识,但J2ObjC的出现仍然使他们能够在工作中使用自己所熟知的Java执行逻辑,这在无形中节省了应用产品的开发成本与周期,同时弥合了两套代码体系之间的巨大鸿沟。
另一款类似的工具名为CodeName One,但与专注于将Java转译为Objective-C的J2ObjC不同,它的作用在于帮助开发人员***限度地以Java方式进行应用开发工作,其中就包括UI代码这一老大难问题。该产品的“轻量级架构”方案能够横跨多种系统平台,提供无缝化的UI开发流程;开发人员还可以选择“重量级”版本,在必要时利用NativeObjective C替代应用中的Java代码组件,借以节约计算资源或者访问设备的底层功能。它所提供的GUI构建器还给开发人员带来功能完善的UI拖拽操作选项,使得应用产品的使用感受与移动系统本身更加相近。
Salesforce Touch是一款移动开发平台,用于为企业级开发人员提供Salesforce在自家企业级移动应用中所使用的应用引擎。Salesforce Touch既能够生成NativeObjective C应用、也能搞定像Java、纯Web甚至是大杂烩式的Hybrid型应用。这款平台采用Force.com接口,通过REST API实现包括访问Salesforce常驻业务数据、社交Web以及地理位置(例如实时地图)在内的各类Web服务。Touch的身份识别功能同样非常强大,用户可以在其帮助下以单点登录的方式利用移动设备访问企业服务器。
CoralTree Systems推出的Renaissance则是一款专为特定企业IT环境打造的典型实用范例,它只针对IBM的i体系发挥作用。作为一款开源产品,Renaissance为我们提供了与IBM安全API及RPG编程语言相对接的特殊渠道。Renaissance是一款围绕特定服务器运作的移动平台,它能帮助企业为遗留应用提供移动支持、节约利用现代语言(例如PHP或者Ruby)重建复杂业务逻辑所产生的高昂成本。
做出明智的选择
可以说我们生在了***的时代,如今可供选择的移动开发工具可谓史无前例地丰富、史无前例地实惠。我们既可以坚持不懈地走Native应用道路,花大价钱打造一款美观、高效的应用程序,也可以利用更为简单的Web或者Hybrid方式进行开发工作。希望大家花点时间把自己对于应用产品的需求一一列出,然后根据这些特性找出最合适的开发工具。我们不像Facebook那么阔绰,没有精力和财力完全推翻重来,因此请务必慎重再慎重。
原文链接:
原文标题:Native, Web, or hybrid: How to choose your mobile development path
【51CTO译稿,非经授权谢绝转载,合作媒体转载请注明原文出处、作者及51CTO译稿和译者!】