移动端跨平台之三国演义

前言

移动端跨平台是眼下比较火的一个话题。各类相关技术方案也是层出不穷,从PWA, Phonegap, React Native, Weex,等等到新出现的Flutter,让人看得眼花缭乱。网上也有不少对这些跨平台方案的技术方面的全方位比较。可是因为这些解决方案还在不断快速发展。开发者难以据此作出选择投身于哪一个平台。 而本文则但愿从非技术角度来探讨移动端跨平台技术发展方向。让开发者可以有多一个维度的考量。扯上三国演义是由于我以为状况有点相似,也是为了方便你们理解。好了,闲话少说 让咱们进入正题。前端

“话说,东汉末年。。。”程序员

过去和如今

从2007年第1代iPhone发布到如今,智能手机已经走过了11个年头了。智能手机市场也由Android和iOS两大系统主导。同时随着智能手机崛起的是App开发产业。各个移动互联网产品基本上会标配3个前端开发团队:Android,iOS和H5。一样的需求会在Android和iOS各开发一遍,有时候甚至须要H5也实现一样的功能。而App发布则须要提交各大市场,而后才能触达最终用户。开发时的重复投入和发布时的时效性差是移动端产品遇到的两大问题。小程序

原本这两大问题是能够经过纯Web技术栈解决的。Web标准是你们都要遵照的,不管是Andriod手机仍是iPhone,理论上讲h5页面在它们的内置浏览器上跑起来基本上不会有太大的差异。可是纯Web页面也有本身的问题,功能受限,不少智能手机的系统功能内置浏览器并不提供;性能受限,虽然智能手机性能在不断提高,可是短时间以内,h5仍是没法作到足以和原生匹敌的表现。PWA和Hybrid,但愿能经过扩展Web技术栈来达到和原生相似的体验。React Native/Weex则另辟蹊径,上层使用Web技术,底层利用原生控件来作渲染。Google的Flutter更完全,另起炉灶,连原生控件都不要了,都由本身来画。浏览器

为了实现跨平台这一终极目标,你们都在各自的技术路线上狂飙猛进。程序员们看得眼花缭乱,纷纷表示“学不动了”。确实,这些技术方案都有着各自的优势和缺点;都是看起来能解决全部问题,可是实际上却带来更多的问题。有人说,“没有银弹,咱们须要取长补短”,而后你会看到集Native/Hybrid/React Native/Flutter等等于一身的“要你命3000”App。。。 微信

要你命3000
但我觉的这种状况不该该持续太长时间,最终将会有一种技术方案胜出,毕竟通常人驾驭不了这样的大杀器。至于胜出的是谁,仅从技术角度讲,你们都是见仁见智。而在技术以外,起决定性做用的,我认为有三股重要的力量。那就是魏蜀吴。。啊不对,是Google,Apple和各大“纯”互联网厂商。

“天下大势,分久必合,合久必分。” by罗贯中app

技术以外的力量

先来了解一下三方的状况。 性能

三分天下

  • Apple: 目前地球上市值最高的公司,财大气粗,拥有iOS生态系统,可是自身并无提出本身的跨平台技术方案。是等着被跨的平台。
  • 以Facebook为表明的各大“纯”互联网厂商:这里所谓“纯”是指这些厂家没有本身的移动OS生态。但却掌握着移动端上巨大的流量,在Web技术方面有着深厚的积累。因此在跨平台方面,这些厂家都是从Web技术演进向Native演进,提出了React Native,Weex,小程序等解决方案。
  • Google: 既有深厚的Web技术积累,又主导着Android生态系统。能够说是得天独厚了。Web端提出了PWA,反手又从本身的技术储备里捣鼓出来个Flutter。

移动端跨平台的战场就是上面这三股力量的角力。有同窗可能要问了,移动端跨平台不过是为了解决前面说的那些Native开发的问题而提出的技术方案,为何搞的像要打仗同样?我要说的是这里面有更深层次的缘由。不知道你们有没有听过一个缩写叫OTT(Over The Top)?OTT的具体定义简单一句话我解释不清楚,可是我举个OTT的例子你们就能明白其重大意义。移动,联通,电信等这些运营商,做为移动通信的基础服务提供商在功能手机时代是很是赚钱的。当年1毛多钱1条的短信其实成本几乎为0。而到了智能手机时代,微信取代了短信和语音。运营商沦为流量管道。眼看着钱在本身的手中流动却分不到一杯羹,反而之前赚钱的业务也都被吞噬了,最可怕的是它们只能接受这样的结果却没法反抗。这就是OTT的威力!移动端跨平台就是这样的OTT,在Android和iOS的生态之上创建本身的跨平台生态,其颠覆性能够参考上面运营商的例子。这里我要提一下,其实微信已经创建了这样的一个小型OTT生态,那就是小程序。这也是我一直想不明白的一点,Apple怎么会赞成微信搞小程序?是看不懂?看不上?仍是两家达成了什么协议?有知道的同窗能够说一说。cdn

了解了移动端跨平台重要意义,那咱们就能够推演一下未来可能出现的情形。首先的一种可能性是三家达成共识,支持其中的一种技术方案。这也是最好的一种情形,若是可能发生的话,那这个方案很大几率是基于Web技术栈的,毕竟Web已是你们都遵照的标准,只是须要Google和Apple各自扩展本身的OS,提供更高性能的浏览器和开放更多的Native API并制定为标准,PWA貌似走的就是这条路,但其进展实在是过于缓慢,并且要制定成为标准还要三方一致才行,这种几率在我看来是极小的,毕竟协调三方的利益是很困难的。blog

剩下的选择就是三方博弈了。比较理性的作法是联合一家而后一块儿对付剩下的那一家。造成2v1的局面。也就是可能会出现如下三种组合中的一个:Google+Facebook vs Apple, Facebook+Apple vs Google和Apple+Google vs Facebook。咱们来逐一分析下这三种状况出现的可能性:开发

Google+Facebook vs Apple

这个组合有个前提条件,那就是Google和Facebook首先得在内部达成共识:跨平台的方案是选Flutter仍是选React Native。这个共识在我看来是难以达成的,更况且Apple还控制着iOS。因此这个组合能够排除了。

Facebook+Apple vs Google

Facebook主推React Native, Apple在iOS上给与系统级的支持。漏洞是Google掌握的Android生态。除非出现1+1>>2的状况,这个组合基本上也能够排除掉了。

Apple+Google vs Facebook

这个组合在我看来是最有可能出现的,Apple有iOS,Google有Android。跨平台方案有Flutter,只要两家移动OS生态强强联合,主推Flutter,使之成为移动端跨平台的事实标准,那么在未来即便出现OTT局面也会掌握在本身手里。避免重蹈运营商的覆辙。而对于一众“纯”互联网大厂来讲,接受这样的标准也不会有太大的困难。

综合起来,在移动端跨平台的技术的演进方向上,彷佛OS厂商联合主推本身的跨平台方案看起来更合理一些。可是合理的不必定会成为现实,有太多的变数。而开发者最但愿的就是如今这种混乱的状况能尽快清晰起来。你搞你的React Native,我搞个人Flutter,Apple则仍然继续本身Native开发+App Store审核的模式,“大家只管折腾,开发出来的跨平台app能取代原生算我输。” 观望吧,怕本身会落后。赶忙跟上吧,但是跟哪一个?AirBnb的教训还近在眼前。真的是脑袋疼。。。总之,做为移动开发者,只能从技术角度和非技术角度作出本身的判断了。我呢,只有一个建议,在作判断的过程当中,尽可能不要把我的对某个公司,某种技术,某种语言的好恶带进来。这极可能会误导你作出错误的决定。

"良禽择木而栖,贤臣择主而事。见机不早,悔之晚矣。" by李肃

后记

本文从非技术的角度对移动端跨平台技术的可能演进方向作了一点粗陋的分析,但愿能对你们作技术选型,自身技术栈扩展方面提供一点参考。同时这也只是我我的的一些想法,你们若是有不一样的看法,请大声说出来,咱们一块儿探讨。

“谋事在人,成事在天。” by诸葛亮

相关文章
相关标签/搜索