阅读更多

0顶
2踩

移动开发

转载新闻 移动开发:HTML5 与本地 App 孰优孰劣?

2012-04-17 14:57 by 正式编辑 nemohq 评论(0) 有3492人浏览
大量新生移动设备的兴起,改变了当今互联网的格局。在技术的发展上,HTML5会取代App应用吗?或者说能够在多大程度上取代呢?在HTML5规范中,已经加入了相机、磁力罗盘、GPS信息的支持。很多新兴浏览器也已经开始支持这些新特性。能否用一个统一的HTML5来替代Android和iOS并行开发的双重成本呢?以下译自Michael Mahemoff的一篇文章,详细分析了HTML5和本地App的优缺点。

以下为文章原文

移动应用程序(App)和HTML5都是目前最火的技术,二者之间也有不少重叠之处。在移动设备浏览器里运行的HTML5的Web页面,也可以重新打包成不同平台上运行的App。目前很多浏览器都有很好的跨平台支持性能,HTML5的Web方案,对开发者来说更为方便。完成一次开发,即可多平台使用。但这确实可行吗?目前,仍有许多原因,使开发者选择了App开发。 很明显,很多人已经在这么做了。本文将详细分析这两种方案的优劣。

1、功能丰富

正方:App里可以开发出更丰富的功能。我们把移动功能分成两类。程序本身和程序与系统的结合。比如在Android里,加入Widget图标或者通知提醒之类的。App对这两者都没问题。不用多说,这是肯定的。

反方:虽然APP发展迅猛,但Web也正在迎头跟进。确实很多原生App实现的功能是HTML5望尘莫及的。不管你的Web做的再好,如果停留在一个没有摄像头支持的沙盒中,还是无法满足一些功能。幸运的是,现在没有这样的沙盒限制了。如果你需要你的Web来照相,可以做一个负责照像的App,再把你的Web打包进这个应用里面。开源的 PhoneGap 框架就是这么做的。

但这种混合开发的问题在于,增加了项目的复杂性,而且不象传统Web那样可以直接在浏览器里运行。这个问题短时间内恐怕还无法解决。不过好在现在网络标准在不断的高速扩充,先进的浏览器也在一直跟进。Android 3.1已经支持Camera了。iOS浏览器也开始支持WebSocket和设备方向检测了。

总得来说,移动设备在发展,而Web也同样在快速变化。而目前也有5家主要浏览器开发商在改进现有标准,丰富新的功能。所以原生App在快速前进,同时,Web也在缩小差距。

2、运行效率

正方:原生APP速度更快。原生APP没有瓶颈,而且可以直接调用GPU加速、使用多线程。

反方:现如今Web的速度已经很快,而且多数应用不需要这么快的速度。

这种说法有点落伍了。Chrome发布之时带来的Javascript V8,给Web访问速度带来质的飞跃。而现在,计算速度变得更快了。

图片处理引擎已经使用Web来加速。现在硬件加速也已经开始。让我们看看用上硬件加速的Canvas的效果



如果要开发3D游戏,或许速度还不够,但对于普通用户来说,新闻、邮件、时间管理、社交网络,这些用Web就已经足够。另外,越来越多的框架结合WebGL,可以发挥OpenGL的优势了。

3、开发感受

正方:原生APP易于开发。原生APP使用强壮的程序语言(Java, Objective C, C++),适合编写复杂的程序,API丰富,在桌面环境可以方便的用模拟器进行测试。而Web程序的Runtime和乱七八糟的各路浏览器让人头疼不已。

反方:一般来说WEB更简单一些,特别是需要兼容不同设备的时候。WEB最初的功能只限于文档展示,而不是程序应用。更何况Web不只是静止的,HTML5,CSS3都给开发者极大帮助。虽然你喜欢C++,Java, Javascript,但是现在没人能否认Javascript也和前者站在同一擂台上。

浏览器/Runtime的互不兼容(碎片化),APP也存在同样的情况。用Java写了Android App,然后又要面对iOS的Objective C。此外还有WebOS, BlackBerry,Windows Mobile等。如果能写一个程序,马上能在所有平台上运行,这该多么方便啊。当然,这只是一个理想。要是想让程序在每个平台都能正常的运行,就要做不少调试和妥协。这对很多原生APP也是一样的。

所谓的Web碎片化,一直都是如此。但好消息是现在已经有很多不错的解决办法。比如 Modernizr 库就可以帮你兼容一大批主流设备,不管是哪种系统平台。有兴趣的话,你可以看看2011年的Google IO演示

4、用户体验

正方:原生APP更契合原有平台。操作感受的定义之一,就是用户希望在你的程序里,用与系统连贯统一的方式来操作。不同的平台,都有一些约定俗成的习惯。你不能期望用一套统一的HTML5 App去满足所有用户。

此外,整个平台的操作感受都由用平台自有的软件库协调。直接调用平台工具包就能直接免费获得完整支持。

反方:Web有自己的传统,但如果你想开发带有原有平台那种感觉的Web,同样可以做出来。前面已经讲过,WEB开发的方式,是先做一个大体适合所有平台的版本,然后再针对不同平台不断改进。当这些改进主要是针对功能时,你可以选择几个你最关心的平台做优化。类似于浏览器检测。我们经常可以听到技术论坛里的程序员们,抱怨有太多的浏览器版本要测试。不过如果你优先关注两三种主流平台,是值得为它们多花点时间做优化的。

Web本来就有自己的操作感受。我们也可以说,不同的默认浏览器以及运行环境造就了独特的"Web感受"。从更广的角度看,这本身就是一种用户公认的方式。此外,还有很多成功的案例并不遵循移动设备的原生操作习惯,但却成功了。想想你最喜欢的手机游戏的界面?很多更传统的App也是一样,比如Twitter的客户端。

5、传播途径

正方:原生App更容易接触客户。像Google Play和Apple Store这样的App商店这几年势不可挡,推动了整个移动行业的发展。每个程序员都能在市场里发布自己的应用。用户都挤在市场里浏览、搜索、接受推荐。不仅如此,只要你的程序足够好,现有用户的打分会帮助你说服更多新的客户。

反方:其实Web才容易接触到客户。通过Web找到内容,这是经过论证的可靠途径。利用URL,每一项发布的内容都有一个独立的地址,包括在网站上发布的应用程序。搜索引擎帮助发现内容,其他网站提供链接,还有一些类似应用市场的分类网站。用户还可以通过邮件、短信和社交网站分享你的链接。你的应用链接可以直接在不同设备上直接打开。

6、收费

正方:App收费,应天意,顺民生。“六岁孩子在午饭时做的App,3美刀一个,已经卖出几百万”。最近常听到类似的新闻。各种大小厂商也跟着蜂拥而至,等着圈钱。应用商点帮开发商直接收费。最简单的办法,一次性收费。也有在App里再另行收费或者做订阅收费的,这都帮助开发商赢得长期稳定的回报。

此外,传统网站的广告、赞助,在App里也同样适用。

反方:网站赚钱,从来都不是问题。现在机会还会越来越多。Web能成为现在社会的推动力,有能力用多种方式取得回报,这是基本条件。虽然使用付费并不普遍。但SaaS的模式已经相当普及了。成功案例包括 Google Apps系列产品,各类邮件的收费版等等。另外,直接收费并不是Web应用的唯一模式。广告、会员链接、赞助和其他产品服务的交叉推广都是可选的模式。

看着能在应用市场里直接赚钱而眼红的Web开发者们,你们不能直接把你的URL发进市场,但是做一个浏览Web的 App的壳子来连接到自己的Web上怎么样?现在市场中已经有成百上千的App正在这样做。有些包装的很好,以至于你甚至都察觉不到它是一个Web程序。

以后应用市场会直接支持Web程序吗?这个现在还不好说,但Google已经建建立了Chrome Web Store。虽然还只能从桌面电脑放问,但这已经挑起了浏览器厂商的兴趣。

结论

现在还看不出有完胜的一方。有些应用适合做App,有一些适合用HTML5。以目前的情况来看,原生APP肯定是一个很重要的方向。上面提到的混合式开发,可能是一个不错的妥协方案。能用Web的时候用App调用Web,Web实现不了的功能再用App开发。

如果你选择Web方式,就要在Web标准和不断的改进上用心。Web技术本身的优点就是能兼容大批不同的操作系统和设备

英文原文:HTML5 VS NATIVE:THE MOBILE APP DEBATE
  • 大小: 21.3 KB
  • 大小: 41.3 KB
来自: Sonic 的博客
0
2
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 跨平台应用:Qt 对决 HTML5

    跨平台应用开发两大利器的精彩对决,诸多指标孰优孰劣……

  • 未来不是Web与App的生死之争,而是Web和App的融合

    原文链接: http://www.36kr.com/p/217334.html ...对开发者而言:手机浏览器跨操作系统,App 开发商一次开发,就可以部署在 Android,iOS,WP 等不同平台的手机浏览器上,开发效率远超 App;对互联网

  • 移动周刊第 196 期:初创团队的 Android 过坑之路、多年 iOS 开发经验总结

    写在前面提到今年 5 月刚刚席卷 150 多个国家的“想哭”(WannaCry)勒索病毒,很多人一定还心有余悸,当时大规模的校园网、局域网用户都曾不慎中招。如今新一代勒索病毒已经登场,更毒、更狠、更难杀。代号为...

  • X5 浏览器内核调研报告

    脱离实际的应用场景来讨论哪一种开发模式孰优孰劣没有意义,关键还是要贴合场景选择最适合的,所以这里对三种开发模式的相关细节不展开讨论,只针对开发有 Web 类场景需求的情况进行考虑:       ...

  • iOS开发 非常全的三方库、插件、大牛博客等等

    不得不说现在做app开发真是很简单,大部分时间搭积木就可以了。 官方网站 。 Chatto.swift - Chatto.swift:轻量级聊天应用框架及示例。文字及图片可扩展输入栏,汽泡效果等聊天核心特性,分页及自动布局完善。 ...

  • iOS:iOS开发非常全的三方库、插件等等

    iOS开发非常全的三方库、插件等等 github排名:https://github.com/trending, github搜索:https://github.com/search. 此文章转自github:https://github.com/Tim9Liu9/TimLiu-iOS 一、UI 下拉刷新 ...

  • iOS开发工具,ios开发类库

    ,iosUI组件介绍,iOS开发常用工具整理,ios开发总结 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SDWebImage多个缩略图缓存组件 UICKeyChainStore存放用户账号密码组件 ...

  • 走向开放的移动 Web——写在腾讯 X5 内核开放之时

    在阿里上市,锋菲复合,李娜退役等头条的当口,腾讯 QQ 手机浏览器 X5 内核面向移动 App 开放,这条消息即使在移动互联网行业内也似乎并不起眼。不过,在我看来,第三方浏览器开始开放内核,是移动 Web 的平台化价值...

  • 管中窥豹:一线工程师看MQTT

    当然,在物联网开发中,MQTT不是唯一的选择,与MQTT互相竞争的协议有XMPP和CoAP协议等,文章末尾会有一个比较和说明。 MQTT是哪一层的协议? 众所周知,TCP/IP参考模型可以分为四层:应用层、传输层、网络层...

  • 前端开发者的跨平台移动应用开发策略及工具

    关于这两种移动化方案孰优孰劣的辩论已然有不少了。 我相信,如果你能以Web应用的方式打造移动化产品,那么你确实应该这样做;反之则不应该...另外一种情况则介于两者之间,即通过HTML、CSS、JavaScript等前端技术...

  • 互联网人提高效率必备软件合集

    这些工具没有孰优孰劣之分,只是应用场景不同,因此我这篇文章也主要介绍适用80%场景的工具;如果你是鳌拜,说全都要,那我就没办法了,我要对那80%的人负责,写的太多了反而会让读者看得眼花缭乱而不知如何取舍; ...

  • iOS:iOS开发非常全的三方库、插件、大牛博客等等

    iOS开发非常全的三方库、插件、大牛博客等等 github排名:https://github.com/trending, github搜索:https://github.com/search. 此文章转自github:https://github.com/Tim9Liu9/TimLiu-iOS UI 下拉刷新 ...

  • iOS开发第三方库汇总

    功能完整、代码简练、实现逻辑巧妙(编辑器核心与 WebView 结合,采用 HTML5 contentEditable 编辑模式,执行JS 配套命令 execCommand 实现富文本编辑功能)。 DTCoreText - 可以解析HTML与CSS最终用...

  • 在Android上应用PhoneGap和Dojo Mobile

    在本文中,你了解到了如何通过整合PhoneGap和Mobile Dojo来快速地创建一个Android版本的混合移动应用,该应用的外观和行为都类似典型的Android应用。你能够很快地编写出这样的应用,因为我们使用的是HTML和...

  • 给所有开发者的React Native详细入门指南

    如果非要把网络数据进行本地存储,那也很方便,通过解构赋值,直接就可以赋值给你创建的Model了。 为什么使用Fetch《传统 Ajax 已死,Fetch 永生》—— Cam 《使用Fetch先了解一下Promise 概念》——来自...

  • 基于java的贝儿米幼儿教育管理系统答辩PPT.pptx

    基于java的贝儿米幼儿教育管理系统答辩PPT.pptx

  • 课设毕设基于SpringBoot+Vue的养老院管理系统的设计与实现源码可运行.zip

    本压缩包资源说明,你现在往下拉可以看到压缩包内容目录 我是批量上传的基于SpringBoot+Vue的项目,所以描述都一样;有源码有数据库脚本,系统都是测试过可运行的,看文件名即可区分项目~ |Java|SpringBoot|Vue|前后端分离| 开发语言:Java 框架:SpringBoot,Vue JDK版本:JDK1.8 数据库:MySQL 5.7+(推荐5.7,8.0也可以) 数据库工具:Navicat 开发软件: idea/eclipse(推荐idea) Maven包:Maven3.3.9+ 系统环境:Windows/Mac

  • 基于java的消防物资存储系统答辩PPT.pptx

    基于java的消防物资存储系统答辩PPT.pptx

  • 【java毕业设计】饮食营养管理信息系统源码(springboot+vue+mysql+说明文档).zip

    项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse

  • 【java毕业设计】酷听音乐源码(springboot+vue+mysql+说明文档).zip

    项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse

Global site tag (gtag.js) - Google Analytics