实际上他们的底层都是一样的。
H5写的APP是基于html、js等语言编写的。原生APP用原生的语言与java、c等编写的。
H5写的APP调用机子的一些设备时仍是需要通过底层接口实现的。H5写的APP在不同系统的机子上兼容性更好。
原生APP调用一些接口的速度一般比H5的快,不过现在智能机处理速度都很快,因此用户基本上都看不出来。
原生APP访问和兼容的能力也比较好,可以支持在线或者离线消息推送或是进行本地资源访问,以及摄像、拨号、蓝牙、功能的调取。原生APP开发有许多的优势,如原生APP是针对不同的平台为用户提供不同的体验、节约宽带成本、访问本地资源速度更快,并为用户提供最佳的用户体验和优质的用户界面等。
Web App是一种框架型APP开发模式(HTML5 APP 框架开发模式),具有跨平台的优势,该模式通常由“HTML5云网站+APP应用客户端”两部分构成,APP应用客户端只需安装应用的框架部分,而应用的数据则是每次打开APP的时候,去云端取数据呈现给手机用户。
我们现在手机中的APP,大部分都是混合APP,也就是既用到了原生APP的技术,又用到了Web APP的技术,各自混合的比例从0%到100%之间不等。更好的了解APP的类型,有助于我们选择合适的测试策略。今天就从4个方面来了解下原生APP和Web APP 的区别。
1. 开发方面有区别:
(1)原生APP:Native APP, 每一种移动操作系统都需要独立的开发项目,ios版本、ipad版本、Android版本。每种平台都需要独立的开发语言Java(Android),Objective-C(iOS)等等,需要使用官方给出的软件开发包,开发工具等。
(2)原生APP开发成本高、开发速度慢、维护成本高。不同平台的规则、推广、运营都不相同。官方应用市场对APP上线审核流程比较复杂且耗时很长,严重影响APP的发布上线的速率。
(3)Web App :因为运行在移动设备的浏览器上,所以只需要一个开发项目。可以通过HTML、CSS或者JavaScript来进行Web APP的开发。开发成本低、开发速度快。
2. 功能有区别:
(1)原生App:一个系统性的应用程序,可以类比于电脑上的软件。原生app可以调用移动终端的硬件设备,比如:麦克风、摄像头、短信、蓝牙、GPS等。实现功能丰富
(2)Web App:可以类比于电脑上的网页。更多是页面展示类的APP。只能使用有限的移动硬件设备功能,侧重于简单的交互,无法使用很多硬件设备独特的功能。
3. 版本控制有区别:
(1)原生App:用户可以自由地选择是否更新软件版本,所以会出现不同用户同时使用不同版本的情况。同时也会导致维护成本比较高。使用旧版本的用户无法体验新版本的完整功能。
(2)Web App:所有的用户都是用同样的版本,所有用户获得的功能都是相同的。版本更新比较方便,直接在服务器侧更新数据即可。一个功能做好了就能上线,一天更新几十次都毫无压力。如果客户端只是个浏览器,那一切都会变得很简单。
4. 对于网络的需求不同:
(1)原生App:断开网络,可以继续使用已缓存在本地的数据,大部分功能不受影响。
(2)Web APP:断开网络,绝大部分功能不能使用,受到很大影响。
5. 小结
原生App偏向于交互,注重用户体验(导航切换、勾选选项、图片、视频等操作)。Web APP偏向与浏览和简单的交互,一些功能需要访问硬件(摄像头、传感器等),使用原生App, Web APP用于展示信息。成本有限时,核心的功能使用原生APP,辅助的功能使用Web App。
目前比较流行的方法就是将原生App 和Web App进行融合,就是说应用大的框架是原生的,其他详细的内容就通过网页封装,也就是前文提到的混合APP。这样做的好处就是在方便更新的同时,也能保证核心功能的交互体验。