现如今是一个疯狂的移动化主宰的世界,企业和开发人员都在拼命努力跟上面向消费者的移动应用程序开发的需求,并随之调整企业服务和数据。而这对于企业而言尤其是一个相当棘手的问题。据gartner的调研数据显示,到2017年底,企业对于移动应用程序的需求将大幅增长,其至少是it所能够交付满足的五倍。
问题不仅仅只在于需求的暴涨。而是在于开发人员们需要选择合适的技术以便构建移动应用程序。今天,企业构建移动应用程序有三大选择:为每种平台构建原生态应用程序(ios,android和windows phone);构建移动web应用程序,可以使用html5,css和javascript技术在浏览器上运行;或采用一种混合的方法,通过构建移动web应用程序,然后将其放在native wrapper,使其能够像原生态应用程序一样在不同的设备上运行。
每种方法都各有其优缺点。因此,让我们一起来分析一下每种技术,然后再来看如何在它们之间进行选择吧。
原生态应用程序
原生态应用程序是在特定的移动平台上运行的——包括ios,android或windows phone。其代码是直接为特定的硬件所编写的,并不能直接从平台移植到平台。用于构建原生态应用程序的开发工具通常由平台主提供。例如,ios应用程序的打造通常使用苹果的xcode。谷歌的安卓系统官方开发平台是安卓工作室。而windows phone则是其visual studio。
原生态应用程序可以充分利用所有设备的内置硬件的优势,包括传感器、全球定位系统(gps)、图形加速等等。因为每款应用程序都是专门为每款设备所特定编写的,其提供了高性能,这对于游戏而言尤其重要,同时对图形和媒体应用程序也相当有用。他们通过每家供应商的商店提供:苹果app store、google play和windows应用商店。他们使用通用的控件,并让每台设备都有共同的外观和感觉,这样就很容易让用户能够快速地上手了解并使用。
当前,人才市场对于具备编写原生态应用程序技能的开发人员可谓供不应求,这些人才的薪酬水平相当可观。而这些成本费用并非只是应用程序的最初成本。应用程序开发完之后还需要定期的维护和bug修复,还需要定期更新。因此,高成本往往是持续性的。
这种情况对于为一种平台编写应用程序已经够糟的了。但是,如果您企业还想为两大主要平台编程应用程序,其费用势必会增加一倍,而如果您企业还想有针对windows phone的应用程序,其成本将增加两倍。如果您想要一个手机网站,您企业还需要组建一支单独的移动web开发团队。
利用html 5、css和javascript构建的web应用程序
基于web的应用是是利用html 5,css和javascript技术所构建的web站点。不同于原生态的应用程序,他们不是作为一款应用程序被下载到移动设备上。相反,用户是通过移动浏览器运行它们来浏览网页的。请记住,我们现在谈论的不是静态网页。这些是全面的应用程序,具有交互性等您所期望的功能特点。网络应用程序也可以使用一些移动硬件,如gps,虽然这方面的支持往往受到传感器的限制。
较之原生态的应用程序,其更容易构建,因为其使用的是与构建非移动网页相同的技术。而招聘到web开发人员比要比原生态的应用程序开发人员更容易,前者在人才库中有大量的应聘者可供企业选择。
当您企业在构建web应用程序,只需要维护一个代码库。而不必建立多款独立的原生态的应用程序,然后必须对每款不同的原生态的应用程序分别进行开发、维护和更新。其部署也非常简单,通过一个web服务器即可。应用程序不需要进行编译或通过苹果、谷歌和微软的应用程序商店的审核,毕竟,这一审核过程有时会相当麻烦。所以,构建web应用程序要比原生态的应用程序要更快更便宜。此外,用户也不必要必须下载一款应用程序才能使用,他们只需要打开一个网页即可。
但这也存在着一些缺点。web应用程序的性能表现不及原生态的应用程序,虽然现如今已经有了快速的多核心移动处理器,这在浏览静态页面时得到了相当大的改善。然而,对于一些游戏,或者图形和媒体丰富的应用程序而言,这仍然是一个问题。web应用程序并不总是能够很好的利用每台设备上的传感器。他们也没有权限访问设备上的联系人列表和其他类型的数据。因为web应用程序不是通过应用程序商店下载的,新的用户找到他们可能也很困难,因为大量用户已经习惯了通过应用程序商店找到他们想要的应用程序。它们的接口也可能不像原生态的应用程序的接口,其可能是对某些用户关闭的。
混合应用程序
混合应用程序是一个利用html 5,css和javascript构建的web网页,然后将其放在native wrapper,使其能够像原生态应用程序一样在不同的设备上运行。其能够像一款原生态应用程序一样从应用程序商店被下载到一款设备上。其可以充分利用大部分内置到每种平台的传感器和其他功能(但不一定是所有),如通知。就像一款原生态应用程序一样,其会有一个图标在主屏幕上,用户只需点击即可运行它。
与web应用程序一样,混合应用程序的性能表现也不及原生态应用程序,虽然快速的移动处理器已经使得该问题比以往好了很多。但这一点对于某些游戏,特别是对于那些图形和媒体丰富的应用程序仍然很重要。
对于混合应用程序,您企业往往只需先像往常一样使用html 5,css和javascript技术建立一个网页。在此之后,使用一款平台,如开源的apache cordova或adobe的phonegap(基于cordova)把代码放到原生态应用程序。当然也有各种各样的完整的开发环境让您企业采用html 5,css和javascript或其他语言编写代码,然后将代码转换,以便像原生态应用程序一样运行。这种方法的主要优点是,您企业不必为多种平台雇佣多样的开发人员。web开发人员可以利用他们的技能来编写移动网页,然后利用相应的工具将其转换为原生态应用程序。而这种方式的一个缺点则是导致所生成的应用程序往往并不像原生应用程序,没有与原生应用程序相同的接口和控制。
做出决策
那么,您企业应该怎样做呢---采用原生应用程序,使用html 5,或部署混合的方法?为了做出决策,您需要花费很长的时间来研究您企业的移动需求,资源和时间表,说forrester的分析师michael facemire表示说。他曾就这方面的主题与人合作撰写了许多报告,包括“web, hybrid, and native mobile apps all have their place。”
“首先,想想清楚您企业想要打造怎样的应用程序。”他说。“到底是一款b2c的应用程序,或是b2b抑或是b2e(business-to-employee)的应用程序?“
他说,“就目前而言,大量的关注重心都集中在了b2c的原生应用程序方面。”因为大部分企业均认为其较之web应用程序或混合的方法能够提供更好的用户体验。而用户体验对于那些想要在移动领域展示 其“领导力”的品牌而言尤为重要,他说。此外,他认为,消费者已经习惯了从应用程序商店寻找他们喜欢的新的应用程序,这使得原生应用程序较之基于web的应用程序更能够方便的为消费者所发现。
然而,对于b2b和b2e的应用程序,他建议企业要么采用基于web的应用程序,要么采取混合的方法。“html 5可以满足任何商家和企业的需要,所以采用混合或web应用程序是较为切实的方法。”他说。“这样做会降低成本,使升级和维护更容易。”
根据forrester针对开发人员的调查研究显示,在2014年,31%的开发人员编写的都是原生应用程序;27%的编写的是基于web的应用程序;22%的编写的是混合应用程序;12%的使用的是“跨平台”的方式,在该方式中,他们在诸如xamarin的一款平台编写代码,而其不是基于html 5的。facemire认为企业只将一种方法作为公司的规范会是一个错误。他说:“如果您企业只构建原生应用程序,移动web网站,或混合应用程序都是非常短视的。这应该与您企业发展的需求相匹配。一家企业可能希望为他们的消费者构建原生的应用程序,但同时在企业内部使用移动web网络,如公司名录。”
web应用程序会超越原生应用程序吗?
adobe公司的移动副总裁matt asay也认同facemire的观点,并表示如果只有企业内部员工使用的话,构建原生应用程序就是在浪费时间和金钱。
他说:“我很难想象您企业为什么会在这种情况下建立一款原生应用程序。利用企业内部的应用程序,您企业不是市场上竞争,也不是在与其他基于消费者的应用程序争取消费者。所有这些费用都是没有理由的。”
asay认为,在一般情况下,原生应用程序是一个过渡阶段,最终几乎所有的应用程序将是基于web的。所以,他说,这就是企业的开发工作应该关注的领域。
“作为一个行业,我们认为应用程序是唯一的事情,我们已经忘记了网络,”他说。“随着时间的推移,这将改变。我们开始从桌面台式机上开发原生应用程序,并随着时间的推移迁移大多数应用程序到web上。而在移动领域,您会看到同样的事情发生,web网络会比原生apps更重要。”matt asay说。
他认为,其中一个原因是,创建一款应用程序,被人们发现,并从app store上下载近乎是不可能的。“如果您是一家独立的发行商,您的应用程序从大量同质的应用程序中脱颖而出的机会基本上小于零。”他说。“正因为如此,独立开发者会更好的去开发一个基于web的应用程序。”
人们可以通过多种方式得到基于web的应用程序。他们可以直接在自己的浏览器中键入网址;从他们浏览器的书签上访问,或者可以将其在他们的电脑主屏幕上建立快捷方式,其图标看起来像一个原生应用程序。
至于知名品牌,他认为,人们已经知道这些品牌的网址,所以没有必要创建一个应用程序,以建立知名度和品牌意识。他还表示,对于在线零售商来说,移动网络是优于应用程序的。
“一家年销售额达几亿美元的主要零售商的移动部门负责人告诉我说,该公司90%的移动流量都是来自web网络,而不是该公司的原生应用程序。既然如此,他为什么要花如此多的时间和金钱,继续建立一款原生应用程序呢?“
使用通用的api
tom dale是一款javascript开发框架ember.js的共同创作者,他认为,未来肯定会有一种方式是面向未来的移动开发的,使企业不必在原生应用程序开发,移动web开发,或混合开发之间做出全有或全无的决定。他说,企业应该建立一个能够被所有开发方法通用的api。
“以一家初创型科技公司为例,其规模小,而且没有市场。通常他们将从开发ios应用程序或者android应用程序开始。”他说。“对于这样的应用程序,您企业需要在后端建立一个api。因此以这样一种方式建立一个api,其能够为由原生应用程序、移动网页、混合应用程序,甚至一款桌面应用程序所用是很有意义的。”
他同意asay所说的,最终大多数移动开发将迁移到移动网络并远离原生应用程序和混合应用程序。原生应用程序的优势最终将消失,他说。
原生应用程序具备能够访问所有传感器的优势。但在某些时候,移动设备并没有内置新的传感器。这些技术会变成熟,然后基于web的应用程序将赶上,并能同时访问所有传感器。,他说。
对于开发人员们来说,最后的发展情况将如何?目前,原生应用程序最适合正在构建面向消费者的应用程序的企业,他们需要自己的设计和界面那个从大量同类产品中脱颖而出,并希望其具有顶级的性能,例如,游戏行业。基于web的应用程序是最适合企业构建内部使用的应用程序,b2b和内部应用程序。混合应用程序则处于前面两者之间,能够使应用程序看起来有点像原生应用程序,但却是使用web标准构建的。