搜档网
当前位置:搜档网 › 移动开发:HTML5 与本地 App 孰优孰劣?

移动开发: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 技术本身的优点就是能兼容大批不同的操作系统和设备。

相关主题