移动领域自2007年iPhone首度面世以来发生了一场革命性的转变。2008年,苹果公司发布了其原生SDK(即软件开发工具包),这无异于给整场革命添加了新的燃料。快速推进到今天,市场上的移动应用程序已经多达数百万款,面向数十种平台并伴随着数不清的移动开发框架、平台以及工具方案。
那么我们该如何选择适合自己的移动应用开发方案?今天的文章正是为了回答这个问题而出现。我们将一同探讨目前市面上常见的几种移动应用程序类型,了解原生与混合应用程序的各自优势,同时罗列几种最具人气的常见移动平台。
应用程序类型
移动应用程序可以分为以下三大常见类型:
· Web应用程序
· 混合应用程序
· 原生应用程序
其中每一种类型都有着自己的优势与缺点。如果大家想了解哪种类型最适合自己的需求,那么我的答案还是那样,“具体问题具体分析”。为了证明自己的结论,我首先要跟大家一起聊聊每种应用程序类型。好了,就从Web应用程序入手吧。
Web应用程序
大家对于Web应用程序可能已经非常熟悉。Web应用程序从本质上来说跟网站并没有什么本质区别,只是在操作与体验方面更接近于应用程序。在iOS SDK于2008年出现之前,Web应用程序是开发人员们为原生iPhone开发应用时的惟一选项。
Web应用程序拥有一系列显著估摸,其中最重要的一项就是理想的开发周期。由于Web应用在本质上就是一种网站,因此其一次构建之后即可在任何能够运行网络浏览器的平台上加以访问。对于部分企业而言,这是一种非常理想的解决方案——因为正如我们在下文所要提到,原生开发工作在成本上非常可观而且需要投入大量时间。换句话来说,Web应用的最大特色就是具备跨平台运行能力。
其另一大优势在于,Web应用程序在开发方面拥有非常友善的学习曲线。要开发一款Web应用,大家只需要运用自己早已熟知的Web技术即可——包括HTML、CSS以及JavaScript。通过这种方式,几乎用不了多少时间我们的移动应用即可顺利启动并上线。
太棒了!那么Web应用程序的劣势何在?这个嘛,这类应用确实存在几大劣势,其中最重要的两点就是性能较差而且无法访问设备的固有功能。如果大家打算开发一款游戏,那么Web应用程序显然不会是各位的很好选项。虽然不是实现不了,但Web应用的性能表现并不稳定。网站或者说Web应用也没办法访问到设备中的固有功能,例如摄像头、地理位置服务以及其它一些既定机制。虽然我相信未来几年中这类局限会得到有效缓解,不过就目前而言其仍然无法在这方面与原生应用程序相匹敌。
因此,如果大家不想拿出大量资源对自己的移动应用程序进行开发与维护,而且不太关注其性能表现,那么Web应用程序无疑是最为理想的开发选项。
混合应用程序
混合应用程序过去以及现在都是非常流行的移动开发选项。这类应用将Web与原生这两大领域的各类优势加以混合,从而最大程度发挥移动平台的承载能力。用于开发混合应用程序的相关技术方案能够让熟悉创建Web应用、HTML、CSS以及JavaScript代码的朋友轻松上手。因此只要了解了混合应用的运作原理,大家都能很快打造出属于自己的移动开发成果。
混合应用程序在本质上就是一款通过原生应用中的网络浏览机制作为交互界面的Web应用。不过区别在于,混合应用程序将原生应用作为自身容器,从而保证其在外观上与原生应用高度接近。这意味着对用户来说,混合应用程序的视觉效果与使用感受都很像是原生应用……至少在一定程度上非常相似。用户们能够从对应平台的移动应用商店当中进行下载,而应用程序图标也会正确显示在大家的设备主屏幕当中。
那么缺点有哪些?由于混合应用程序高度依赖于Web技术并运行在网络视图当中,因此其存在着与Web应用相同的种种弊端。其性能表现同样无法与原生应用相匹敌。不过需要强调的是,其性能表现每一年都在实现显著提升。而且令人印象深刻的是,JavaScript代码的性能表现在过去十年当中一直在不断改进。
目前最具人气的混合应用程序开发解决方案为Apache Cordova——或者简称Cordova。几年前当Adobe公司收购PhoneGap时,他们对其中的大部分代码进行了开源,而Cordova也由此诞生。PhoneGap目前仍然存在,并作为Cordova项目的商用表亲健康运营。
为了提升开发速度,开发人员通常会将Cordova与其它框架配合使用,包括Ionic与Onsen UI等等。
原生应用程序
选择原生开发方式意味着我们更加关注性能表现与可靠性水平。那么为什么原生开发机制会吓退那么多开发人员?让我们以iOS平台为例。如果大家希望构建一款原生iOS应用程序,那么首先需要学习一种新型编程语言——Objective-C或者Swift。另外,大家还需要熟悉Xcode的各项特性——也就是苹果自家的IDE(即集成开发环境)。再有,原生应用程序的构建工作往往需要耗费大量时间,因为我们需要更多考虑设备自身的特性与契合程度。着眼于此,Objective-C以及JavaScript可说是两种完全不同的语言。
那么我们能够得到怎样的回报?性能表现可以说是原生应用程序最值得引以为傲的竞争优势了。原生应用程序的使用感受更为顺畅,特别是在游戏方面,因为其能够发挥设备以及操作系统所提供的全部资源。再有,设备中的全部特性与功能都可通过SDK的API进行调用,这意味着开发人员的发挥空间更加广阔。而这也是原生应用压倒混合与Web开发机制的另一大核心优势。
目前有着大量混合型方案,能够帮助更多开发人员更为轻松地上手原生应用开发工作。其解决方式非常简单,我们可以选择自己熟悉的语言进行代码编写,并将其编译为原生应用程序。在这一领域,当前最具人气的解决方案选项包括Xamarin与React Native等。
Xamarin允许开发人员利用C#语言为iOS、Android以及Windows Phone平台编写原生应用程序。Xamarin工具采用Mono开源项目。在另一方面,React Native则源自Facebook,能够帮助开发者利用JavaScript实现原生应用程序编写。
原生还是混合
那么到底哪种解决方案更值得考量?原生?混合?抑或是Web应用程序?我给不出统一的答案,因为其具体取决于多项因素。如果大家身为一位开发者,那么答案可能就没那么复杂了。您最为熟稔的技术是什么?您是打算让自己的应用立足于单一平台,还是拥有多平台运行能力?
事实上,同时着眼于iOS、Android以及Windows Phone已经变得愈发具有挑战性。很多开发人员都会面向多种平台编写原生应用程序,但这么做真的非常艰难,我不建议大家将此作为首选方案。移动领域的演进速度非常迅猛,而且我们几乎不可能随时保持对各类移动平台的深入理解。如果大家决定走上原生应用开发道路,那么作为第一项目标,各位必须要对自己着眼的平台拥有极为充分且深入的理解。是的,每位原生开发人员都应该拥有这种能力。
有鉴于此,很多开发人员更倾向于选择混合开发方案。如果您是一位经验丰富的Web开发者,那么绝对能够立刻上手混合应用开发工作——而无需任何学习或者适应周期。Apache Cordova再配合上Ionic或者Onsen UI将能够显著提升开发工作的推进速度。
Web应用程序也是需要留意的开发选项之一。不过Web开发拥有多种不同类型。通过创建Web应用,大家用不着针对各系统平台的官方应用商店对自己的成果做出任何调整。过去几年中,多数企业都会选择这种较为省心的开发途径。不过现在,如果大家拥有较为充裕的预算及可调配资源,那么原生及混合方案往往更受欢迎。
需要回答的问题
作为文章的收尾部分,我打算向大家提出几个问题,而其具体答案将决定您对所谓“很好移动应用开发方式”的判断。
性能表现是否重要?
如果答案是肯定的,那么原生开发将是您的很好选项。而且如果大家打算开发的是游戏软件,那么Unity绝对是不容错过的理想方案。
跨平台支持能力是否重要?
如果答案是否定的,那么原生开发将再一次胜出。而如果大家需要强大的跨平台能力,那么混合原生或者混合Web方案则将成为很好选项。另外,如果大家也需要保证自己的应用成果具备理想的性能表现及设备功能支持效果,那么Xamarin或者React Native绝对不容错过。
您的下一步发展目标是什么?
如果大家的目标是成为一名出色的移动开发人员,那么我的建议是选择原生开发方案。当然,这只是我的个人观点。我是名iOS开发者,而且我在可预见的未来不打算转移到其它平台。对于专注于单一平台(包括iOS、tvOS、watchOS以及OS X),我能够花时间让自己熟悉该平台并积累到更为丰富的开发经验。这一点对于移动开发工作非常重要,特别是确保自己的应用程序具有强大的竞争优势以及卓越的用户界面。
如果大家拥有Web开发背景,那么原生开发仍是个不错的选择。当然,如果大家需要的是能够快速见效、快速推出的开发效果,那么混合或者Web解决方案在速度上确实更具优势。
总结陈词
如果大家想要一个明确的答案,那么我恐怕让各位失望了。如果各位还没有拿定主意,那我建议大家对文章中提到的选项加以尝试。上手Cordova或者认真看看与Swift相关的快速指南教程,然后问自己到底喜不喜欢这种开发风格。千万不要单纯因为简单或者快捷而选定目标开发方式。总之,确保自己能够充分享受这段旅程——因为这也正是开发工作的乐趣所在嘛。
关于:中科研拓
深圳市中科研拓科技有限公司专注提供软件外包、app开发、智能硬件开发、O2O电商平台、手机应用程序、大数据系统、物联网项目等开发外包服务,十年研发经验,上百成功案例,中科院软件外包合作企业。通过IT技术实现创造客户和社会的价值,致力于为用户提供很好的软件解决方案。联系电话400-0316-532,邮箱sales@zhongkerd.com,网址www.zhongkerd.com