移動端跨平臺之三國演義

前言

移動端跨平臺是眼下比較火的一個話題。各類相關技術方案也是層出不窮,從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諸葛亮

相關文章
相關標籤/搜索