Native App、Web App 还是Hybrid App?(转)
一、什么是Native App?
Native App即原生应用,即我们一般所称的客户端,是针对不同手机系统单独开发的本地应用,如需使用需要先下载到手机并安装,下载Native App的最常见方法是访问应用程序商店,如苹果的App Store、安卓市场、Google Play等。在技术实现上一般采用针对操作系统的特定语言进行编写,如:使用Objective-c开发IOS应用,使用Java+Android开发android应用。
Native App的优点:
- 可以在应用商店轻易地找到并且能在手机主屏幕上生成相应的图标
 - 可以利用系统API及平台特性,访问手机的提供的功能(GPS,相机等)
 - 可访问本地资源,支持离线工作,节省用户的流量成本
 - 可针对不同平台提供不同的体验,针对平台特性去做用户体验优化
 - 与系统高度切合,可获得更快的运行速度和性能,并支持丰富的图形和动画。
 
Native App的缺点:
- 开发成本高,需要针对不同平台需要不同的技术背景进行开发
 - 维护成本高,用户必须手动下载更新,历史版本又不能不维护
 - 未知的上线时间,需要通过应用商店的审核
 
Native App最大的优势就是可以使用操作系统开发商提供的API。这些API可以分为两大类:低级API和高级API。
- 低级API:应用程序能直接与触摸屏或键盘进行联系、渲染图形、连接至网络、处理从麦克风收到的音频、通过扬声器或麦克风播放声音,或者接收来自摄像头的图像或视频。应用程序能访问全球定位系统(GPS)、接收方位信息,当然还可以读写固态硬盘上的文件,或者访问现有和将来会有的其他任何硬件元件。
 - 高级API:提供对个人移动体验来说很重要的较高级服务,这类服务包括浏览Web,管理日历、联系人资料和相册等,当然还包括打电话或收发文本消息的功能。
 
操作系统提供的另一组重要的API是GUI工具包。每一种移动操作系统都随带各自的一组用户界面组件,比如按钮、输入区、滑块、菜单、菜单栏、对话框及其他。可以使用这些组件的应用程序继承了该特定移动操作系统的外观和感觉,通常会带来非常流畅的用户体验。
二、什么是Web App?
Web App又叫Web应用,简单的说就是一个触屏版的网站。Web应用完全用HTML、JavaScript和CSS等Web技术开发,通过移动设备的浏览器来访问,缺点是这些基于浏览器的应用无法调用系统API来实现一些高级功能,也不适合高性能要求的场合。
Web App的优点:
- 开发成本低,使用现有的Web开发技术即可
 - 适用范围广,覆盖所有智能手机,跨平台和终端
 - 方便、快捷地部署,无需用户安装
 - 用户总能访问到最新版本,迭代更新容易
 - 可被搜索引擎收录并带来流量
 
Web App的缺点:
- 浏览体验短期内还无法超越原生应用
 - 不支持离线模式(HTML5将会解决这个问题)
 - 消息推送不够及时
 - 调用本地文件系统的能力弱
 - 较差的和较慢的性能体验(大部分需要链接互联网)
 - 支持图形和动画效果较差
 - 不适用于应用商店及没有靠下载应用盈利机会
 - 限制用户使用功能(比如,相机、GPS等)
 
移动Web App是一种很有希望的趋势。为了紧紧抓住这个趋势,帮助开发者构建客户端用户界面,已开发出越来越多的JavaScript工具包,比如Sencha Touch和jQuery Mobile,它们创建的用户界面在外观和感觉上与Native App大同小异。两者都完全在移动设备的浏览器里面执行,充分利用了现代移动浏览器所提供的最新JavaScript、CSS和HTML5特性。
三、什么是Hybrid App?
Hybrid App又叫混合应用,是一种介于Native App、Web App之间的App,它虽然看上去是一个Native App,但只是一个UI WebView,里面访问的是一个Web App。Hybrid App实质是伪造一个浏览器的apk/ipa原生程序,并运行了一个Web APP。Hybrid App兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”。它可以使web开发人员可以几乎零成本的转型成移动应用开发者,并且相同的代码只需针对不同平台进行编译就能实现在多平台的分发,而相较于Web App,开发者可以通过包装好的接口,调用大部分常用的系统API。
Hybrid App的优点:
- 支持多平台访问
 - 手机功能都可访问
 - 适用于应用商店
 - 部分支持离线功能
 
Hybrid App的缺点:
- 未知的部署时间
 - 用户体验不如本地应用
 - 性能速度较慢(需链接网络)
 - 该技术尚未发展成熟,依然是一门新技术
 
Hybrid开发方法结合了Native开发和Web技术。借助这种方法,开发者就能使用跨平台Web技术,开发应用程序的大部分代码,又可以在需要时直接访问Native API。App的Native代码部分使用操作系统的API来创建嵌入式HTML渲染引擎,该引擎在浏览器和设备的API之间充当了桥梁。这座桥梁让Hybrid App得以充分利用现代设备所提供的全部特性。App的Web部分可能是驻留在服务器上的网页,也可能是一组HTML、JavaScript、CSS和媒体文件,封装到App代码中,存储在设备本地。放置在服务器上的HTML代码让开发者不必经历提交和批准过程,把Web代码封装到App里面可以提高性能和可访问性。
如果企业使用Hybrid开发方法,就能集两者之所长。一方面,Native让开发者可以充分利用现代移动设备所提供的全部不同的特性和功能。另一方面,使用Web语言编写的所有代码都可以在不同的移动平台之间共享,使得开发和日常维护过程变得集中式、更简短、更经济高效。
四、Native App、Web App和Hybrid App的比较
Native开发方法在性能和设备访问方面很出色,但成本和更新方面有缺点。Web方法更新起来简单得多,成本较低,也更容易,但是目前功能有限,也无法获得使用Native API调用所能获得的那种出色的用户体验。Hybrid开发方法提供了折中方案:在许多情况下,它集两者之所长,如果开发者面向多种操作系统更是如此。

从上面的表格中可以看出,没有哪一种开发方法总是提供所有的优点。每一种开发方法有天生的局限性,没有哪一种方法能够满足现代移动企业的所有要求、应对复杂情况。选择一种合适的方法取决于企业的具体要求,可能取决于诸多因素,比如预算、时间表、内部资源、目标市场、所需的应用程序功能、IT基础设施及其他许多方面。但是有一点很清楚:如今的大多数公司显然在两个方面之间作取舍:一是用户体验和应用程序功能,另一是开发成本和产品上市时间。问题就变成了选择一种合适的开发方法,能兼顾企业的要求和其在预算和产品上市时间方面的限制。
转载:标点符 » Native App、Web App 还是Hybrid App?
Native App、Web App 还是Hybrid App?(转)的更多相关文章
- Hybrid APP基础篇(三)->Hybrid APP之Native和H5页面交互原理
		
本文已经不维护,新地址: http://www.cnblogs.com/dailc/p/8097598.html 说明 Hybrid模式原生和H5交互原理 目录 前言 参考来源 前置技术要求 楔子 A ...
 - OnSen UI结合AngularJs打造”美团"APP"我的”页面 --Hybrid App
		
1.页面效果图: 演示地址:http://www.nxl123.cn/bokeyuan/meiTuanDemo_mine/ 2.核心代码 mine.html: <ons-page id=&quo ...
 - OnSen UI结合AngularJs打造”美团"APP底部导航栏 --Hybrid App
		
1.页面效果图:(点击底部导航按钮,可切换到不同的页面) 演示地址:http://www.nxl123.cn/bokeyuan/2018080301/meiTuanDemo/ 2.项目目录结构 3.核 ...
 - 移动开发 Native APP、Hybrid APP和Web APP介绍
		
高速区分定义: Native App 以基于智能手机本地操作系统如IOS.Android.WP并使用原生程式(SDK)编写执行的须要用户安装使用的第三方应用程序; Web APP 以HTML+JS+C ...
 - Web App、Hybrid App与Native App
		
在这个App的时代,转战了前端,一直接触的都是pc, 离out不远了. 那么接下来,app是我接下来半年的重点,为什么是半年,因为时间不多了. 因为是前端,那么我的重心肯定是 Web App, Hyb ...
 - 【微信小程序项目实践总结】30分钟从陌生到熟悉  web app 、native app、hybrid app比较  30分钟ES6从陌生到熟悉  【原创】浅谈内存泄露  HTML5 五子棋 - JS/Canvas 游戏  meta 详解,html5 meta 标签日常设置  C#中回滚TransactionScope的使用方法和原理
		
[微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...
 - web app 、native app、hybrid app比较
		
web app .native app.hybrid app比较 产品新人学习路 关注 2017.06.04 14:52* 字数 1887 阅读 11476评论 1喜欢 15 之前做讨论的时候,提出了 ...
 - 转: 跨终端Web之Hybrid App
		
转: http://www.infoq.com/cn/articles/hybrid-app 编者按:InfoQ开设新栏目“品味书香”,精选技术书籍的精彩章节,以及分享看完书留下的思考和收获,欢迎大 ...
 - 单纯觉得是篇好文——跨终端Web之Hybrid App
		
[reference]http://www.infoq.com/cn/articles/hybrid-app#theCommentsSection 编者按:InfoQ开设新栏目“品味书香”,精选技术书 ...
 - hybrid app
		
hybrid app Hybrid App(混合模式移动应用)是指介于web-app.native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”和“Web App跨平台 ...
 
随机推荐
- http转成https
			
1.在阿里云服务器上购买一个AC证书,将证书下载下来 2.解压放在tomcat目录下,cert文件夹是我自己建的 3.修改tomcat的配置文件上面那个原来是被注掉的放开 把端口改为443,htt ...
 - scrapy的allowed_domains设置含义
			
设置allowed_domains的含义是过滤爬取的域名,在插件OffsiteMiddleware启用的情况下(默认是启用的),不在此允许范围内的域名就会被过滤,而不会进行爬取 但是有一个问题:像下面 ...
 - 【Todo】git的fast forward & git命令学习 & no-ff
			
git的fast-forward在之前的文章有介绍过,但是介绍的不细: http://www.cnblogs.com/charlesblc/p/5953066.html fast-forward方式就 ...
 - Python 一行命令ftp服务器
			
Obligatory Twisted example: twistd -n ftp And probably useful: twistd ftp --help Usage: twistd [opti ...
 - 基于源码学习-fighting
			
今天逛着逛着,看到个培训网站,点进去和客服人员聊了一下.接着,看了看他们的培训课程,想了解一下 嵌入式开发的. (人就是要放空自己,把自己当做什么都不会,当着个婴儿[小学生]一般认真,要学什么知识就是 ...
 - 总结下JavaWeb应用里正确显示中文需要的设置
			
1.前台页面需要加的设置: <%@ page contentType="text/html; charset=UTF-8"%> html标签后加上<meta ht ...
 - 锤子Smartisan T1手机官方4.4.2系统内核版本号信息
			
从锤子smartisan T1手机官方系统EGL中获取内核版本号信息(由cofface提供): I/Adreno-EGL( 816): <qeglDrvAPI_eglInitialize:41 ...
 - C#语言基础语句
			
case,switch,break的使用 Console.WriteLine("1.汉堡"); Console.WriteLine("2.薯条"); Conso ...
 - C# json反序列化 对象中嵌套数组 (转载)   可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
			
C# json反序列化 对象中嵌套数组 (转载) 看图: 这里可以看到是二层嵌套!!使用C#如何实现?? 思路:使用list集合实现 → 建立类 → list集合 → 微软的 Newtonso ...
 - libusb 源码阅读
			
libusb_init(NULL), 如果传入一个NULL, 则libusb 内部会有一个 usbi_default_context 变量在内部保存上下文. 这样以后调用 libusb 函数时可以不指 ...