Native App、Web App 还是Hybrid App?

技术 标点符 1年前 (2014-05-09) 3036℃ 0评论

一、什么是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的更多相关文章

  1. Hybrid APP基础篇(三)->Hybrid APP之Native和H5页面交互原理

    本文已经不维护,新地址: http://www.cnblogs.com/dailc/p/8097598.html 说明 Hybrid模式原生和H5交互原理 目录 前言 参考来源 前置技术要求 楔子 A ...

  2. OnSen UI结合AngularJs打造”美团"APP"我的”页面 --Hybrid App

    1.页面效果图: 演示地址:http://www.nxl123.cn/bokeyuan/meiTuanDemo_mine/ 2.核心代码 mine.html: <ons-page id=&quo ...

  3. OnSen UI结合AngularJs打造”美团"APP底部导航栏 --Hybrid App

    1.页面效果图:(点击底部导航按钮,可切换到不同的页面) 演示地址:http://www.nxl123.cn/bokeyuan/2018080301/meiTuanDemo/ 2.项目目录结构 3.核 ...

  4. 移动开发 Native APP、Hybrid APP和Web APP介绍

    高速区分定义: Native App 以基于智能手机本地操作系统如IOS.Android.WP并使用原生程式(SDK)编写执行的须要用户安装使用的第三方应用程序; Web APP 以HTML+JS+C ...

  5. Web App、Hybrid App与Native App

    在这个App的时代,转战了前端,一直接触的都是pc, 离out不远了. 那么接下来,app是我接下来半年的重点,为什么是半年,因为时间不多了. 因为是前端,那么我的重心肯定是 Web App, Hyb ...

  6. 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理

    [微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...

  7. web app 、native app、hybrid app比较

    web app .native app.hybrid app比较 产品新人学习路 关注 2017.06.04 14:52* 字数 1887 阅读 11476评论 1喜欢 15 之前做讨论的时候,提出了 ...

  8. 转: 跨终端Web之Hybrid App

    转:  http://www.infoq.com/cn/articles/hybrid-app 编者按:InfoQ开设新栏目“品味书香”,精选技术书籍的精彩章节,以及分享看完书留下的思考和收获,欢迎大 ...

  9. 单纯觉得是篇好文——跨终端Web之Hybrid App

    [reference]http://www.infoq.com/cn/articles/hybrid-app#theCommentsSection 编者按:InfoQ开设新栏目“品味书香”,精选技术书 ...

  10. hybrid app

    hybrid app Hybrid App(混合模式移动应用)是指介于web-app.native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”和“Web App跨平台 ...

随机推荐

  1. Markdown---锚点使用

    Markdown目前还没有支持文内锚点的标记语法:但是支持html,所以锚点可以通过html语法来实现 使用方法 <a href='#jump'>第一个题目</a> 带有锚点的 ...

  2. Codeforces Beta Round #9 (Div. 2 Only) C. Hexadecimal's Numbers dfs

    C. Hexadecimal's Numbers 题目连接: http://www.codeforces.com/contest/9/problem/C Description One beautif ...

  3. uva 6957 Hyacinth bfs

    Hyacinth Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/problem/viewPro ...

  4. pt-archive提速的实践经验

    最近遇到很多业务需求,需要进行数据导出工作,由于有格式要求,故之前一直使用mysqldump的方法. mysqldump -uuser -ppassword -S mysql.sock -t db t ...

  5. Vue学习记录-接口通信(数据请求)

    这一篇,把前两天实践的“数据请求”部分总结一下.从最终的结果来看,配置非常的简单,使用非常的简单,也非常的灵活,同时也存在一个很头疼的问题,这个问题可以解决,但是解释不了(功力尚浅). 选型 可选项: ...

  6. 利用BusyBox ~私人定制 My LINUX~

    前言 我在今天在这里跟大家详细地探讨一下Linux系统的定制过程和实现例如.用户能够远程登录:和Nginx能够稳定地运行在我们私人定制的LINUX系统上.一步一步从头开始定制属于我们自己的系统. 正文 ...

  7. drbd + pacemaker

    Centos6.5 X86 64 2014-04-27 # yum -y install corosync pacemaker # -.el6.x86_64.rpm pssh--.el6.x86_64 ...

  8. mysql group by 组内排序

    有数据表 comments------------------------------------------------| id | newsID | comment | theTime |---- ...

  9. Caused by: java.net.UnknownHostException: localhost.localdomain: localhost.localdomain的问题解决

    在hosts文件增加如下配置即可,下面的方法适合上面提示的错误,无论是Tomcat问题还是MongoDB等等的问题都可以完美解决. vi /etc/hosts 127.0.0.1 localhost ...

  10. Linux下添加静态路由表设置网关出现SIOCADDRT: Network is unreachable的问题分析

    场景: # route add default gw 192.168.4.1 route: SIOCADDRT: Network is unreachable 解释: 1.先ping一下网关,但是pi ...