前言

  Native App:C/S架构,使用原生技术(Java/Objective-C/Swift)实现。

  Web App:B/S架构,使用浏览器技术来实现,广义上也包括phoneGap以及DP正在尝试使用的EFTE框架。

  在PC上,轻量级的应用多是B/S架构,具有轻便、速度快、无需安装、易于版本控制等优点,这种思想运用到极致就是用浏览器充当操作系统(Chromium OS)。在手机上,由于网络流量、屏幕适配、机能限制等种种原因,C/S架构的Native App目前仍然是主流。因为本blog主要专注于移动开发,下面就移动平台上,两种app的优劣做一下简单的总结,个人拙见。

Web App 的不足

  相比于原生,移动平台上的Web App应用并不是十分广泛,打开应用商店,排在前十名内并无一只严格意义上的web app。大致分析其原因,可总结为以下几点:

  1. 移动网络环境的限制。传输速度慢、不稳定、资费昂贵,这些是目前中国大部分地区移动网络的现状。相较于原生应用,web app往往需要更大的流量,所达到的渲染效果却很一般。对移动应用而言,加载速度慢是致命要害。在用户体验至上的考虑下,大部分厂商都会选择native作为实现方式。
  2. 设备本身性能有限。这一点在低端android机上尤其明显,CPU、内存、存储器、图像处理能力与PC机相比,差距是相当大的。这一点反映到用户体验上,同样是不可接受的速度拖慢。而native实现则可更多利用移动平台底层API接口,作出相应的优化。
  3. 相较于浏览器,native更容易实现一些酷炫的交互。如传感器、动画、定位、陀螺仪、拍照、录音……
  4. 移动平台碎片化严重,屏幕尺寸、分辨率千差万别,导致相同的页面放在大屏手机上展示正常,在小屏幕手机上却莫名其妙地发生换行,视觉效果糟糕,影响用户体验。而native则在适配上提供了一些措施,减少了适配方面的工作量。
  5. 同样是出于网络限制,浏览器不易于控制图片等大文件的缓存,浪费流量且加载速度慢,native可以自由制定缓存策略,且有sqlite等工具做数据存储。

  web app的不足,从另一角度讲,就是native app的优势所在。如果对以上5点进行分类的话,随着4G与wifi的普及,1、2在可以预见的未来里,相信会有一定改善,3、4两点恐怕需要相当的时间与努力,才可能完全克服。尤其是碎片化这点,加之GFW这一绊脚石,直接让谷歌统一android系统进入到困难模式。

Web App 的希望

  我是中国dota的希望尽管以上诸多方面表明,在十年(?)内,native仍旧会是主流,但web app仍然延续了PC时代一贯的优点,在一些场合,可以作为优于native的解决方案。下面也简单总结一下web app的闪光之处:

  1. 便于维护、升级。之所以把这个排在第一,是因为深受efte荼毒。每一次DP的app提交审核,都要冒着被App Store打回的风险,幸好天朝无需提Google play审核,不然android版本恐怕也要提心吊胆来发布了。efte则很好解决了这个问题,在后台更新相关模块的jar包后,前端无需提升版本,即可下载新功能使用。据说微信游戏也是类似的实现,没有研究过,不可妄下结论。不过站在用户的角度,隔三差五需要升级各种客户端,也是相当苦恼的,尤其是在没有wifi的环境下。
  2. PC时代,Trident/Gecko/KHTML/WebKit 等内核群雄逐鹿的场面,让不少前端工程师头痛不已。而在移动互联网时代,html、css、javascript技术,保持了高度一致。通过这些技术,可以消除移动平台的差异,作出一套东西同时运行在iOS与Android系统上。(感觉要失业的节奏)
  3. html5、css3等技术的发展与普及,为web app提供了更多的可能性。

认清自己的位置

  native也好,web也好,两者之间并不是谁取代谁,而是彼此协作相辅相成的关系。对于一名前端(客户端)工程师来讲,要吃透两个中的任何一个,都不是一朝一夕能够完成。学习的过程,更多的是一种提高自己学习能力与解决问题能力的过程,如同乐器,知识在某种程度上也都是相通的。想起前几天读过一段话,颇为有趣:人们总说小孩子学起东西来要比成年人快,也许是因为,小孩子在学习一项技能时,往往是一门心思日复一日去做,很少去考虑,这个东西我学了一周后就能掌握吗?一个月后就可以熟练吗?引以自勉。

参考资料

  1. web前端工程师在移动互联网时代里的地位问题 by 夏天的森林

对Native App与Web App的一些思考的更多相关文章

  1. Native App、Web App 还是Hybrid App?

    一.什么是Native App? Native App即原生应用,即我们一般所称的客户端,是针对不同手机系统单独开发的本地应用,如需使用需要先下载到手机并安装,下载Native App的最常见方法是访 ...

  2. Native App、Web App 还是Hybrid App

    Native App.Web App 还是Hybrid App? 技术 标点符 1年前 (2014-05-09) 3036℃ 0评论 一.什么是Native App? Native App即原生应用, ...

  3. Native App、Web App 还是Hybrid App?(转)

    一.什么是Native App? Native App即原生应用,即我们一般所称的客户端,是针对不同手机系统单独开发的本地应用,如需使用需要先下载到手机并安装,下载Native App的最常见方法是访 ...

  4. Do带你解析:原生APP与web APP的区别

    对于DeviceOne原生跨平台APP与WEB APP的区别,很多人还不是很清楚,下面就让小编来简单介绍DeviceOne原生APP的功能以及与WEB APP的区别. 定义,什么是原生APP和web ...

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

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

  6. Native App和Web App 的差异

    开发者们都知道在高端智能手机系统中有两种应用程序:一种是基于本地(操作系统)运行的APP:一种是基于高端机的浏览器运行的WebApp,本文将主要讲解后者. WebApp与Native App有何区别呢 ...

  7. Native APP ,Web APP,Hybrid APP三者对比

    Native APP Native APP 指的是原生程序(Android.iOS.WP),一般依托于操作系统,有很强的交互,可拓展性强,需要用户下载安装使用,是一个完整的App. 原生应用程序是某一 ...

  8. native app、web app、hybrid app、react-native 区别

    Native App:指的是原生应用程序,一般依托于操作系统,有很强的交互. 技术:Objective-C Java Native App开发的优点 提供最佳的 户体验 拥有系统级别的通知或提醒 可以 ...

  9. Native App vs Web App 以及 Hybrid App的实现原理

    移动应用基本的三种类型 1)  Native 应用程序 2)  Web 应用程序 3)  混合应用程序(Hybrid: Native应用和web应用结合) Native 应用 直接运行在电脑上或者智能 ...

随机推荐

  1. android操作sdcard中的多媒体文件(二)——音乐列表的更新

    android操作sdcard中的多媒体文件(二)——音乐列表的更新 原文地址 在上一篇随笔中,我介绍了如何在程序中查询sdcard内的多媒体文件,并且显示到播放列表中,但是,如果在sdcard内删除 ...

  2. Linux中ftp不能上传文件/目录的解决办法

    在linux中不能上传文件或文件夹最多的问题就是权限问题,但有时也不一定是权限问题了,像我就是空间不够用了,下面我来总结一些ftp不能上传文件/目录的解决办法   在排除用户组和权限等问题后,最可能引 ...

  3. LeetCode "Longest Substring with At Most K Distinct Characters"

    A simple variation to "Longest Substring with At Most Two Distinct Characters". A typical ...

  4. lucene 区分大小写 问题以及解决方案

    转自:http://blog.csdn.net/huaishu/article/details/8543236 本文介绍lucene区分大小的原因,和解决方案.关于lucene大小写敏感问题我总结一下 ...

  5. Redis主从同步介绍

    Redis主从同步命令和配置项 启动主从复制:master无需任何操作,slave中使用以下任意一种开启复制功能 (1).通过配置文件启动主从复制: 在redis.conf中加入"slave ...

  6. RPM Fusion on CentOS7

    RPM Fusion RPM Fusion provides software that the Fedora Project or Red Hat doesn't want to ship. Tha ...

  7. Lvs+Keepalived+Squid+Nginx负载均衡

    前言* 随着互联网IT行业的发展,越来越多的企业开始使用开源软件搭建自己的web架构,主流的LVS也得到了广泛的应用,在保证高可用的同时,用户对网站的体验速度也有了很高的要求,这时候需要我们在我们的架 ...

  8. nand flash,nor flash,spi flash,片上RAM,片外RAM

    Flash有掉电数据保存的特点,RAM掉电则数据丢失,但是RAM的速度更高,擦写次数理论上没有限制,而Flash则不行. Nand Flash相比其余的几种flash优势在于可擦写次数多,擦写速度快, ...

  9. spring+springMVC+mybatis的框架项目基础环境搭建

    上一个项目在后台用到spring+springMVC+mybatis的框架,先新项目初步需求也已经下来,不出意外的话,应该也是用这个框架组合. 虽然在之前activiti相关的学习中所用到的框架也是这 ...

  10. TCP非阻塞通信

    一.SelectableChannel SelectableChannel支持阻塞和非阻塞模式的channel 非阻塞模式下的SelectableChannel,读写不会阻塞 SelectableCh ...