开发路线问题:原生、HTML5与混合之优势及短板
以下三种方式可算是移动应用程序开发工作的主要实现思路。我们将对每一种进行简要介绍,其适用范围、优势与短板以及一份与之相对应之开发工具清单。
原生应用程序开发
在原生应用程序开发机制当中,移动应用会专门面向特定移动平台进行编写,其中包括iOS、Android以及Windows Phone。这类应用驻留在移动设备当中,而且通常利用由平台制造商提供的开发工具编写而成。其代码无法在不同平台之间随意迁移或者重复使用。
最佳适用范围
面向消费者之应用程序
游戏
拥有高强度图形及多媒体处理量的应用程序
优势
- 通常拥有比Web应用或者混合型应用更出色的执行效果,特别是在游戏类应用当中。
- 能够访问到设备之上的全部传感器、硬件、联系人信息以及通知内容。
- 通过公共应用程序商店进行发布——包括苹果App Store、Google Play以及Windows Store。
- 在安装完成之后,对应图标会立即出现在设备的主屏幕当中。
短板
- 优秀开发人员较为匮乏
- 在面向多种平台构建多款应用程序时成本非常昂贵
- 为每种平台进行彼此独立的代码库管理不仅成本高昂而且极耗时间
- 开发周期更长
- 不同平台之上的各个版本可能由于开发时长不同而导致无法同步
- 由于不同应用程序商店的审批周期有所区别,因此应用程序发布有可能因此受到影响
开发工具
- 苹果iOS: XCode
- Android: 谷歌Android Studio
- Windows Phone: Visual Studio
利用HTML 5、CSS以及JavaScript开发之Web应用程序
Web应用程序由HTML 5、CSS以及JavaScript构建而成。这类应用可以通过移动设备上的浏览器进行访问且具备交互特性,但其无法访问移动设备上的联系人列表以及传感器等内置机制。这类应用只需一次开发并部署在Web服务器之上即可接受各类平台用户的使用。
最佳适用范围
企业与企业以及企业与员工间所使用的内部服务及资源应用。
优势
- 此类应用利用Web标准构建而成,但在设计中往往作为“响应式”应用存在
- 企业能够利用现有Web开发人员创建此类应用程序
- 成本最低的应用程序构建方式
- 只需要维护单一一套代码库
- 能够快速实现修改、更新与部署
短板
- 界面与标准原生应用之间可能存在较大出入
- 性能表现,特别是在游戏以及某些强调图形与多媒体处理负载的场景当中,无法与原生应用程序相提并论
- 无法在应用程序商店当中上架,这意味着不利于向消费级客户直接推广
- 可能无法访问全部传感器、硬件以及通知等设备之上内置的功能
- 图标无法直接出现在设备主屏幕之上,除非用户手动进行添加
开发工具
任何一款能够利用HTML 5、JavaScript以及CSS构建Web页面的开发工具都能够开发移动Web应用。其中部分高人气工具包括:
混合应用程序
混合应用程序首先利用HTML 5、CSS以及JavaScript构建成形,而后由打包工具将其转化为能够在不同移动平台之上运行的原生应用程序。此类应用倾向于将原生应用与Web应用的优势加以结合,在运用标准Web开发资源的同时允许应用成果以原生方式运行在各类设备之上。
最佳适用范围
企业与企业以及企业与员工类应用程序
企业内部服务及资源应用
希望在不同平台之上部署原生应用的企业用户
优势
- 利用Web标准进行构建;要求利用部分特定代码通过API访问手机内置功能
- 企业可以利用现有Web开发人员构建此类应用
- 能够快速实现修改、更新与部署
- 能够在不同平台之上以原生应用形式运行
短板
- 界面与标准原生应用程序相比可能存在较大区别
- 性能表现,特别是在游戏及某些图形及多媒体处理负载较高的场景下,远逊于原生应用
- 通常能够访问设备当中的全部传感器及硬件,但在支持新功能方面可能存在一定滞后
- 可能需要对原生应用“shell”的不同代码库进行维护
- 开发人员需要利用其它软件将Web应用转化为原生应用
开发工具
这类应用程序拥有更为广泛的适用开发工具,从将现有Web代码转化为原生应用的工具到完整的开发环境可谓无所不包。以下列出的仅仅是其中的一小部分。
Adobe PhoneGap,Adobe推出的Apache Cordova的一套衍生方案
Alpha Anywhere,这套开发环境允许用户构建Web应用程序并将其作为原生应用加以部署,其对编程经验要求不高、但亦允许高水平程序员充分发挥自己的编程技能
Ionic Framework:这套框架专注于构建用户界面,其能够与AngularJS以及Cordova相配合以实现Web应用程序向原生应用之转化
OutSystems:允许用户利用可视化工具构建Web应用与原生应用
Kony:这套平台提供一系列工具选项,帮助用户构建面向不同平台类型的原生应用程序
Xamarin:用于构建原生应用程序的跨平台开发平台