对Native App与Web App的一些思考

前言

  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 夏天的森林
时间: 2024-11-03 03:27:01

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

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

快速区分定义: Native App 以基于智能手机本地操作系统如IOS.Android.WP并使用原生程式(SDK)编写运行的需要用户安装使用的第三方应用程序; Web APP 以HTML+JS+CSS等WEB技术编程,代码运行在移动端浏览器中,通过该移动端浏览器来调用Device API(取决于HTML5未来的支持能力)的不需要用户安装的应用程序: Hybrid App 同时使用网页语言(Web技术)与程序语言(Java.Objective-C等)开发,通过应用商店区分移动操作系统分发,需要

测试工作——Native App, Web App 和 Hybrid app

目前主流应用程序大体分为三类:Web App.Hybrid App. Native App. 一.Web App.Hybrid App.Native App 纵向对比 首先,我们来看看什么是 Web App.Hybrid App. Native App. Web APP Web App 指采用Html5语言写出的App,不需要下载安装.类似于现在所说的轻应用.生存在浏览器中的应用,基本上可以说是触屏版的网页应用. · 优点 (1)开发成本低, (2)更新快, (3)更新无需通知用户,不需要手动升

Native App、Web App 还是Hybrid App

Native App.Web App 还是Hybrid App? 技术 标点符 1年前 (2014-05-09) 3036℃ 0评论 一.什么是Native App? Native App即原生应用,即我们一般所称的客户端,是针对不同手机系统单独开发的本地应用,如需使用需要先下载到手机并安装,下载Native App的最常见方法是访问应用程序商店,如苹果的App Store.安卓市场.Google Play等.在技术实现上一般采用针对操作系统的特定语言进行编写,如:使用Objective-c开发

Native App、Web App 还是Hybrid App?

一.什么是Native App? Native App即原生应用,即我们一般所称的客户端,是针对不同手机系统单独开发的本地应用,如需使用需要先下载到手机并安装,下载Native App的最常见方法是访问应用程序商店,如苹果的App Store.安卓市场.Google Play等.在技术实现上一般采用针对操作系统的特定语言进行编写,如:使用Objective-c开发IOS应用,使用Java+Android开发android应用. Native App的优点: 可以在应用商店轻易地找到并且能在手机主

hybrid app、web app与native app工具

1.使用过哪些工具? Webapp:ThinkPHP Mobile(TPM).Ionic Framework.JingleUI Hybridapp:Apicloud.Phonegap(稍了解Hbuilder.Appcan.Wex5) Nativeapp:CrossApp.React-Native.Xcode.Eclipse-ADT/Android Studio 2. 以上工具各自的编程语言是? Webapp:主要使用H5(html5.css3.js)语言规范来编写,对JS语言掌握要求较高 Hyb

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

对于DeviceOne原生跨平台APP与WEB APP的区别,很多人还不是很清楚,下面就让小编来简单介绍DeviceOne原生APP的功能以及与WEB APP的区别. 定义,什么是原生APP和web APP? Web App Web App即是一种框架型APP开发模式(HTML5 APP 框架开发模式),该开发具有跨平台的优势,该模式通常由"HTML5云网站+APP应用客户端"两部份构成,APP应用客户端只需安装应用的框架部份,而应用的数据则是每次打开APP的时候,去云端取数据呈现给手

测试工作——如何区别一个 App 是 Native App, Web App 还是 Hybrid app?

nativeapp是一个原生程序,一般运行在机器操作系统上,有很强的交互,一般静态资源都是在本地的.浏览使用方便,体验度高.在实现上要么使用Objecttive-c和cocoaTouch Framework撰写IOS程序,要么选择java+Android Framework撰写android应用程序. hybridapp是一个半原生程序,伪造了一个浏览器的apk/ipa原生程序,把地址写死了,然后里面运行了一个webapp.里面是WebView UI .但是还是运行在机器的操作系统上,交互较弱,

Native App和Web App 的差异

开发者们都知道在高端智能手机系统中有两种应用程序:一种是基于本地(操作系统)运行的APP:一种是基于高端机的浏览器运行的WebApp,本文将主要讲解后者. WebApp与Native App有何区别呢? Native App: 1.开发成本非常大. 一般使用的开发语言为JAVA.C++.Objective-C. 2.更新体验较差.同时也比较麻烦 每一次发布新的版本,都需要做版本打包,且需要用户手动更新(有些应用程序即使不需要用户手动更新,但是也需要有一个恶心的提示). 3.非常酷 因为nativ

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

Native APP Native APP 指的是原生程序(Android.iOS.WP),一般依托于操作系统,有很强的交互,可拓展性强,需要用户下载安装使用,是一个完整的App. 原生应用程序是某一个移动平台(比如iOS或安卓)所特有的,使用相应平台支持的开发工具和语言(比如iOS平台支持Xcode和Objective-C,安卓平台支持Eclipse和Java).原生应用程序看起来(外观)和运行起来(性能)是最佳的 Native app优势: 1.速度快,性能高,用户体验更好2.可以调用手机终