💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
副标题是移动开发技术之思考 公司各部门都在“高价”招HTML5开发者,而且多数是针对移动终端的。舆论氛围高涨,不得不让我对移动应用开发技术再进行一些思考了。 时间回到了2011年,这一年可谓是HTML5的开局年。各大技术新闻,论坛等等宣传渠道中都被HTML5充斥着,混杂着,喧闹着。一副HTML5舍我其谁的势头,一发不可收拾。但我的感觉却是雷声大雨点小,因为那一时期的HTML5技术尚未成熟,标准也没出台,所以就当它是造势阶段,并没有给予重要关注。那时的伟仔是个快乐的移动开发者,括号,原生应用开发者,弃WM平台转向Android两年有余。 原生应用的好处不言而喻,它可以最大程度的发挥设备的速度与性能,并将系统平台的独特性轻松展现,对硬件的无障碍控制更加丰富应用的使用场景,可以说这是移动应用开发的不二之选。 HTML5作为RIA(互联网富客户端)的一种实践路径,可以做出很炫的界面效果,它的最大优势是跨平台。它只要关注跑在各个浏览器中的效果而不去刻意对待你是Android还是iOS。 原生应用的优点是H5的缺点,反之亦然。 再抛出一个小问题:跨平台性对于移动应用就那么重要吗?  2015年第一季度全球智能手机市场份额是: ~~~ Android 78.9% iOS 17.9% WP 2.5% BlackBerry 0.4% Other 0.4% ~~~ 主流四大手机操作系统,按照市场份额来说,你至少需要开发Android和iOS两个系统的app,对于那些大厂,WP也是要支持的。按照惯例,每个移动平台都会有自己的开发团队对应。养一个团队的成本是很高的,从公司层面来说,针对各移动平台开发一款移动应用的成本太高了,如果有一个应用适应多个平台的方案就好了。 人类对跨平台的探索从来没有止步。  时间又回到了2015年,经过4年的发展,H5终于慢慢登上舞台了。有些公司开始着手用H5这个web前端技术去开发一个万金油的应用,不论其结果是成果还是失败,H5向前迈出了很重要的一步,它要动原生应用的蛋糕了。 这让我想起了几年前苹果的一件事儿。  乔帮主是大力支持HTML5技术的,而他也果断放弃iOS对Flash的支持。他说:“没有人愿意使用Flash,全球已经开始步入HTML5时代”。当苹果大力支持H5的时候,人们不禁去想,当开发者都去用H5开发应用了,苹果的app store里的原生应用就会少了,那么苹果的收入就会减少(app store里禁止纯web app发布)。这看起来好像H5的发展会影响苹果的利益。乔帮主是怎样想的,不得而知。然而从这几年的发展看,H5并没有对app store中原生应用产生影响。 目前业内的方案有两套:  一是财大气粗型。大公司都会为了用户体验而推出原生应用版,而作为补充还是会推出移动web版。  二是混合动力型。为了节约成本,公司会尽力去做资源复用。那么很多简单的模块会用H5去做,然后嵌入到原生应用中。这样的hybrid app也成了目前的主流方案。 那么移动开发技术就出现了三国鼎立的局面:native app、web app、hybrid app。 引入伟仔的一篇微薄:  > 汽车领域和移动开发领域的相似性:原来汽车是烧油的,这叫原生汽车;然后出现油电混动,这叫hybrid car;令一个就是目前较火的纯电动车。移动开发原来都是基于各系统的SDK开发,这是原生app;然后html5要推纯web app去跨平台;由于各有利弊,目前混合应用也较多,这是hybrid app。什么时候纯电动能够完全替代烧油车?什么时候web app完全替代原生app?原生开发者真的就不值钱了么? 伟仔的这篇微薄以三个问号结尾,伟仔自己先做一个回答。  第一个真不好说。  第二个我觉得应该是永远不会。因为世界需要差异化,每个操作系统的存在都会有自己的特色,而这些特色只有原生应用才能充分发挥出来。除非世界上的操作系统被Web统一了,人们只需要一个浏览器就可以了。  第三个的回答是否定的。  就像对本文标题的回答是否定的一样,我是站在原生应用这一边的。我认为原生应用开发者仍然很值钱。首先,原生应用开发的市场前景仍然看好。其次,即使真的都用web app了,那么团队中仍然需要懂不同操作的专家存在。除非世界被Web统治了。 ## 参考:  [http://www.missyuan.net/school/web_2012/web_9205.html](http://www.missyuan.net/school/web_2012/web_9205.html)  [http://www.ibm.com/developerworks/cn/web/lp/html5/develop.html](http://www.ibm.com/developerworks/cn/web/lp/html5/develop.html)