青青子衿, 悠悠我心, 但为君故, 沉吟至今
« Android能否引领移动互联网革命谷歌到底怎么绕过浏览器的隐私设定 »

移动开发中HTML5能否替代本地程序?

  随着移动设备越来越先进,对HTML5的支持度越来越高,我们进军移动领域的时候,都会遇到一个问题,是选择HTML5和还是Native(用原生代码编写的本地程序)?HTML5的前景无疑是诱人的,一句“Write once, run anywhere”就可以秒杀一切。笔者最近两年来对HTML5与Native有较为深入的研究,觉得两者之间不能仅仅是二分法来选择,还要根据企业自身的情况、团队的构成、公司的战略以及产品的特点来综合选择。

  HTML5的发展前景我无疑是非常看好的,各大公司也不遗余力的推动,目前主流的三大智能机操作系统iOS、Android和WIndows Phone都已经支持大部分的HTML5特性。而移动设备硬件军备竞赛也为HTML5扫清硬件障碍。按照现在的发展速度,我判断是在三年以内甚至更快,移动设备运行HTML5将会完全没有压力,无论是标准还是硬件。现在主流的智能机已经配置双核处理器(之前笔误为浏览器)和1G及以上的内存,今年再出智能机没这个配置你都不好意思发布了。

  谈谈HTML5

  1.HTML5可以让你摆脱对平台的依赖,用户打开浏览器,直接就可以访问你的应用,而不需要经过各种Store的审核。

  2.实时更新,通常平台的审核都需要七个工作日左右的时间,如果你发布之后发现问题怎么办?Web方式就不存在这种问题。

  3.Write once, run anywhere?

  这是多少程序员的梦想,也曾经是Java让人心动的地方,但真正做过跨平台解决方案的人都知道,这只是一句口号而已,跨平台没那么容易玩转的。没错,HTML5可以实现Write once, run anywhere,但我们总不能写一个Hello World来run anywhere吧。不同平台有自己的特性,不同平台用户也有自己的操作习惯,如果你想讨好所有人,也就意味着你无法讨好任何人。

  4.减少开发工作量或者让开发变得更简单?

  对老板来说,这是一个非常诱人话题,因为工作量的减少就意味着节省更多的钱,没有老板不喜欢用更少的钱办更多的事。而且目前一个非常大的问题是,移动设备开发人员特别是iOS开发人员非常不好找,因为技术好的都自己做应用了,人家自己也能赚个月薪上万甚至更多,为什么要进你的公司?怎么说也是自己的事业,拥有无限可能,还可以充分享受自由。但如果可以充分利用HTML5,那么我们就可以招聘Web前端的开发人员来构建移动应用,这样就不愁招人的有问题。因为在许多人的眼里,HTML5/CSS/Javascript都是没多大技术含量的东西,实在找不到人,找些实习生学学也就会了。

  但问题是,工作量真的会减少吗?技术门槛真的那么低么?答案是NO!

  我曾经花了半年的时间去开发一个基于HTML5的移动框架,用来模拟Native应用,让HTML5应用看起来尽可能看起来像本地应用,注意:是像。这有点像jTouch,但不一样的是,它能和Native程序很好地交互,并且能调用本地资源等等特性。但最后结果确不是那么令人满意,比如HTML5在动画切换的时候,有时候候会有一些莫名其妙的问题,当然你可以告诉我把动画效果关了,但这看起来很死板,最后我不得不关闭某些动画。而用Objective-c编写程序就没这么多事了,几句简单的代码可以实现很酷的动画,用HTML5需要更多的代码,甚至根本无法实现。

  而且移动设备上的HTML5开发对开发人员的技术有非常高的要求,不是一般的Web前端人员能解决的,通常拥有这样技术的人才,工资水平也不会比Native开发人员低多少。如果你仅仅是要开发一个移动设备上的网站,这会简单很多,但如果你希望模拟Native应用,并且拥有较高的效率和优雅的用户体验,这就很有技术含量了。不要小看Javascript这类Web开发语言,通常我的看法是越简单的语言越会体现出技术人员的水平,特别是规划设计能力。

  5.其它问题,资源调用的限制,比如说在iOS中有Javascript运行不能超过15秒的限制,不能调用本地硬件设备(如相机等),无法使用推送服务等。

  如何选择?

  是否这样,我们就不要选择HTML5了呢?我在前面说过:“要根据企业自身的情况、团队的构成、公司的战略以及产品的特点来综合选择”,我最近在关于HTML5讨论的微博上也有谈到:“HTML5是战略性方向,Facebook和Google已经布局,Google Mobile在iPhone上的体验可以媲美Native。基本上Native+Web App可以秒杀多数应用,如果不愿意受制于各种Store,单独的Web App也是一个不错的方向。对于游戏类和对硬件环境依赖严重的应用,只能是是Native”。仅管有这样那样的问题,但HTML5是一种趋势,在未来三至五年,HTML5将会取代很多本地应用,但就像多年前我们一直在谈B/S架构取代C/S架构一样,这需要一个过程。

  通常在HTML与Native之间,我们有三种选择——HTML5、Native App以及HTML5+Native,HTML5就是指纯Web的移动应用,用户需要打开浏览器,然后输入应用的网址访问。Native指的是基于特定平台开发的应用。Native+HTML5实际上是一种加壳的方式,将HTML5用和浏览器封装起来,但这对用户是不可见的,用户没有任何异物感,和Store上下载的App没有什么两样。

  就我个人而言,我是比较推崇HTML5+Native的,这种加壳的方式,可以让你享受Native与HTML5的双重好处,但缺点是对技术含量要求较高。当然我这里指的不是简单地把HTML5封装到一个浏览器里面,Native与HTML5会有许多的交互,实际上这有点像混合硬盘,我们即便享受SSD的快速,但我们又想获得机械硬盘的高性价比。我认为在5-10年内,这都会是一种不错的解决方案,当HTML5和硬件发展到一定水平之后,我们再完全转向HTML5成本也会非常低的。

  如何做?

  假定现有一个对本地环境依赖不那么严重的项目,如微博客户端,各种社交美食甚至LBS应用,我们都可以采用HTML5+Native。如图所示,我们可以将核心的代码Core层用封装起来,这个代码和平台无关,主要是业务逻辑以及和Shell的交互,代码用Web语言编写。在Core层上我们再根据不同的移动平台制作不同的UI。最后我们将上述两层放到各平台的Shell中,这个Shell主要是由浏览器来完成工作,当然还包括一些硬件操作和读取本地资源,如GPS、重力感应、相机调用、地图、推送通知或者IAP等。

移动开发中HTML5能否替代本地程序

  我们可以把Web的升级部分部署到服务器上,用户运行App后,App会向服务器讲求获取最新的Web程序并下载运行,这样可以达到跳过各种Store的更新审核,达到快速更新的目的。而且假如用户无法访问互联网,我们可以让用户使用上一个版本的程序,不会像纯Web App那样要求用户一定要联网

  好处

  1.用户可以离线使用

  2.更新下载量及少,可以全部更新,也可以选择替换部分文件

  3.代码很安全安全,众所周知Web应用有一个很大的问题就是代码安全的问题,但现在我们可以将Web代码全部加密,本地应用解密后再运行,大大的提供了代码的安全性。

  4.可以通过浏览器作为中介充分利用Native的好处,比如说可以使用GPS、照相机、本地相册、读取本地联系人,也可以使用推送功能等,最重要的是,某些Web无法实现的功能,我们可以利用Native来实现。

  5.跨平台,多数核心代码不用重写,Javascript的代码用得好的话,在许多地方都可以用到,包括移动应用、移动网站、PC网站、各种浏览器插件,甚至可以用WebKit封装作为跨平台的应用程序。诚然,这种方式并非完全跨平台,但这样也足以减少很多工作量了,特别是后期的维护。而且完全的跨平台是没有意义的,不同平台有自己的风格,为了更好的用户体验,界面层还是需要针对性开发的。

  坏处

  我觉得最大的坏处是技术难度高,如果仅仅是简单的浏览器封装几个HTML文件,那没什么技术难度,但如果要打造一个系统级的东西,这就很有技术难度了。这要求有人要了解三个主流平台的浏览器特性,通晓Native程序的开发,要精通HTML5/CSS3/Javascript,最重要的是,要有较强的架构设计能力。

  如果要再找一个坏处的话,就是它不能满足所有的需要,它并不能代替Native,但我认为他可以替代大部的Native。

  适合我们吗?

  首先从产品的角度考虑,你的产品是否严重依赖于本地环境,比如说图像处理和华丽的游戏之类的。第二要考虑的是你的技术团队的构成,如果你们的团队有一个能解决这些问题的牛人,并且有一些清通Web前端的人,那我觉得你可以考虑用这种方式。技术选型非常重要,稍有不慎,后患无穷。第三个要考虑你们公司的战略,对HTML5未来发展的看法,愿意在移动互联网上付出多少代价,是否愿意做前瞻性的事,是否愿意在前期投入较多的资源,是否允许试错等等。

  本文来自涂雅,原文链接



  除非注明,月光博客文章均为原创,转载请以链接形式标明本文地址

  本文地址:http://www.williamlong.info/archives/3004.html
  • 文章排行:
  • 1.towry
  • 努力学习中。。。。。。。
  • 2012/2/20 22:45:37   支持(28)反对(14) 回复
  • 2.满天红石头
  • 全都云端,全跨平台,现在干啥都不考虑cpu计算能力吗?还有带宽等等?都是硬件厂商的托?
  • 2012/2/20 23:57:21   支持(24)反对(11) 回复
  • 5.o0_路人甲_0o
  • Native原生代码的速度是无可替代的 HTML5外壳配上Native内核应该可以兼顾速度的方便
  • 2012/2/20 23:42:48   支持(22)反对(13) 回复
  • 6.云小右
  • 很多项目都指望成为所有App的核心,好像东方不败似的一统江湖。其实这想法几乎被证明了就是个笑话,就拿“著名”的java来说,低下的效率,永远都是Beta版本的稳定性,根本就统不了。其实,跨平台的最佳解决方案就是:只用一个平台,除此之外,别无他法。因为这根本不是个技术问题,而是个利益问题。
  • 2012/2/20 23:15:33   支持(28)反对(20) 回复
  • 7.canbeing
  • Native+HTML5的混搭式应用是趋势,但HTML5的性能还是有待提升
  • 2012/2/20 23:09:44   支持(17)反对(12) 回复
  • 8.春寒水晶
  • web app的适用性无疑是最诱人的
  • 2012/2/20 23:36:58   支持(18)反对(13) 回复
  • 9.曹志士
  • 还是有可能的,而且很可能是JavaScript来担负此重任。无为无不为,前端后台、WebApp,通吃!
  • 2012/2/20 22:43:35   支持(25)反对(21) 回复
  • 10.混世小灰
  • html5确实是夜个值得深入的技术!不一定要取代,多元混合更完美!
  • 2012/2/20 22:49:24   支持(24)反对(20) 回复
  • 11.Android-阿蛋
  • 肯定可以流行,但是不能替代本地。
  • 2012/2/21 0:01:13   支持(19)反对(15) 回复
  • 13.Ciscogeek
  • 试了一下中移动HTML5的手机阅读,2分钟后就删掉了。让iPhone 有安卓的体验。
  • 2012/2/20 23:00:03   支持(23)反对(20) 回复
  • 14.别格网络
  • 同意,HTML5还是有局限性的。
  • 2012/2/21 13:07:13   支持(17)反对(14) 回复
  • 15.向琦
  • 就拿WEB开发的框架来说,框架功能越强大,性能越地下,效率最快的永远是最原始的方式,文中也提到,这需要具体问题具体分析。性能问题始终存在,因为硬件提升始的同时终伴随着软件功能的开销提升。

    html5 native 以及混合 ,还应该算上跨平台框架,都将存在。
  • 2012/7/16 21:18:27   支持(15)反对(13) 回复
  • 16.DeamonJ
  • 说是代替本地程序有点痴人说梦,但是绝对可以带来新的用户体验。
  • 2012/2/20 22:56:10   支持(16)反对(15) 回复
  • 17.Some
  • HTML5标准需要完善到一定程度
    浏览器对标准支持需要达到一定程度
    JS引擎执行效率需要达到一定程度
    这是移动开发中HTML5面临的最大问题
    我想开发工作量,开发难度并不是大问题,未来javascript框架会越来越好,开发会越来越便捷。
  • 2012/2/20 23:44:37   支持(19)反对(18) 回复
  • 18.移动互联网kevin
  • html5是趋势,但目前效率还是不太友好,特别对一些较低端设备来说
  • 2012/2/20 23:23:18   支持(16)反对(16) 回复
  • 19.abcUI
  • 不妨看看“36氪”网站的这篇文章:
    Mozilla的移动操作系统Boot2Gecko和Gaia UI首次曝光

    注:没法提供链接,因为链接中的单词被误判而xxx,请自搜索
  • 2012/2/21 0:49:12   支持(17)反对(17) 回复
  • 20.玩ERP
  • 对新技术保持观望,未来如何,实在难说。
  • 2012/2/20 23:20:24   支持(16)反对(17) 回复
  • 23.Feng华君
  • 这个趋势趋了很久了。所有人都看到的趋势究竟能不能算趋势?以此来指导工作靠谱吗?
  • 2012/2/21 11:42:59   支持(16)反对(17) 回复
  • 24.xpjsh
  • 要看JS引擎了, 现在chrome的js速度远非IE4.0能及的.
  • 2012/7/19 21:13:33   支持(8)反对(9) 回复
  • 29.waiting的无限博客
  • 这个有好处也有坏处,看各人喜好了
  • 2012/2/20 23:15:19   支持(19)反对(22) 回复
  • 30.依然太仔
  • 我只知道要是html5真打败了native,那么未来的应用层的移动开发人员将越来 越便宜
  • 2012/2/20 23:33:06   支持(19)反对(22) 回复
  • 32.Liwin23
  • 程序猿必备一门脚本语言防身啊!
  • 2012/2/21 9:34:02   支持(14)反对(18) 回复
  • 33.春寒水晶
  • web app是跨平台适用性是最诱人的,但也是最不切实际的。如果你想讨好所有人,也就意味着你无法讨好任何人。
  • 2012/2/21 10:36:07   支持(16)反对(20) 回复
  • 34.红酒
  • 暂时先不用,完善后应该会更好些。。
  • 2012/2/22 9:58:47   支持(16)反对(20) 回复
  • 35.大众
  • 试了一下中移动HTML5的手机阅读,42089791秒就删掉了。13681847652让iPhone 有安卓的体验。
  • 2012/3/2 11:42:37   支持(16)反对(20) 回复
  • 36.Tracy
  • 暂时还不那么好用吧,起码要等它成熟之后再用
  • 2012/2/21 14:04:07   支持(15)反对(20) 回复
  • 39.玩ERP
  • IT新技术新概念层出不穷,风潮一变,就成过眼烟云,云计算与分布式计算是统和分的较量,两者最终会处于相安无事的状态,不可能灭掉一方。
  • 2012/2/20 23:30:10   支持(13)反对(24) 回复
  • 40.洛德陈
  • 我就不信HTML5结合JS和CSS的执行效率会很高。早年我用JS+CSS1写的DHTML,直接把IE4.0给拖到死机
  • 2012/2/20 22:46:29   支持(17)反对(32) 回复

发表评论:

 请勿发送垃圾信息、广告、推广信息或链接,这样的信息将会被直接删除。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 关注新浪微博:关注新浪微博
  • 关注腾讯微博:关注腾讯微博
  • 关注认证空间:关注QQ空间
  • 通过电子邮件订阅
  • 通过QQ邮件订阅

站内搜索

热文排行


月度排行

本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享. 转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议.
This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.