Deviceone:站在移動互聯(lián)時代的十字路口上
最近總能看到類似“App已死,服務永生”、“App必死,web永生” 、“App已死,微信建站已生”這樣的文章。不曉得這些網(wǎng)絡寫手到底是想代表某些公司的立場、還是想要表達怎么樣的一個情結,文章中語氣都是如此之肯定,好像大家真的有什么仇什么怨一樣。
回顧軟件發(fā)展的歷史,C++開始流行時,就有人因其優(yōu)秀的面向對象能力而預言C語言已死;Java語言開始流行時,也有人因其出色的跨平臺能力和完備的內存管理機制而預言C++已死;在web盛行的年代,更是而有人因看好這種輕量級的B/S交互模式而預言原生應用已死。可實際上呢:這么多年過去了,根據(jù)TIOBE發(fā)布的編程語言排名結果(2015年2月版本),c和c++這兩類古老語言都位于前3;原生應用也在智能手機時代重新回歸主流地位??萍嫉陌l(fā)展就好像大自然的進化一樣,是一個極其復雜的過程。我們非要試圖從某一個簡單側面去解釋或者預言這個過程演變,其結果往往都是比較片面的。從大型機時代的T/S架構,到PC機時代的C/S架構,互聯(lián)網(wǎng)時代的B/S架構,以及移動互聯(lián)和大數(shù)據(jù)時代提出的IaaS、PaaS、SaaS以及BaaS架構;所有的軟件架構都是為特定的技術時代和應用環(huán)境而服務的。就好像“java好還是.net好”這樣的討論,這些年來就從來沒停過,都快讓人聽得耳朵起繭子了??勺罱K又如何,java和.net兩者各自都發(fā)展的好好的,科技的發(fā)展會以某些人的主觀傾向為轉移嗎? 技術本身就無所謂好壞,最多只能說哪項技術更適合你而已。所以我們在討論哪一項技術好哪一項技術不好這類命題的時候,應該首先明確一個大前提:我們到底要做什么?
服務還是App?
我們所說的服務,通常情況下應該理解為移動互聯(lián)時代里的BAAS模式的服務,也就是為移動互聯(lián)網(wǎng)應用開發(fā)而提供的云服務。其主要內容包括:數(shù)據(jù)存儲、數(shù)據(jù)推送、版本管理、數(shù)據(jù)統(tǒng)計等幾大類服務。由此可見服務和App之間本來就是兩個不同層面的東西,根本就不應該相互比較,更不應該說誰能替代誰。個別人偷換概念,甚至在文章中用微信服務號當做服務來說事,這種說法雖然有失水準,但卻是別有用心的,根本不值得我們過多的討論。
Web還是App?
去年的10月份,W3C的HTML工作組正式發(fā)布了HTML5的正式推薦標準(W3C Recommendation)。這一消息讓很多人為之滿心鼓舞,還有些人因此而斷定web的回歸以及App的滅亡。但我們當仔細瀏覽W3C官方規(guī)劃的HTML5發(fā)展計劃,可能會發(fā)現(xiàn)現(xiàn)實并沒有我們想的那么樂觀:
http://dev.w3.org/html5/decision-policy/html5-2014-plan.html
W3C官方公告稱:“模塊化一直在標準制定過程中扮演著重要角色。為了實現(xiàn)功能的獨立、快速進化,工作組會使用所謂的‘擴展規(guī)范’(extension specifications)。有一些最終會作為獨立文檔公布,并成為HTML規(guī)范家族的一部分,其它則會整合到HTML5規(guī)范里,成為基礎。”
目前來看HTML5.1才會是真正的HTML5,HTML5只是個妥協(xié)方案。就好像微軟的windows8到windows8.1的升級一樣,windows8的按時推出完全是一種市場策略,而windows8.1雖然只是一個小版本變化,卻在系統(tǒng)體系結構層面做了巨大的調整。 HTML5.1預計2016年第四季度公布后,工作組會重復上述步驟再搞一個新的HTML5.2,繼續(xù)完善、豐富功能。具體時間沒說,但估計得到2018年了。而從HTML5每個方案的公布到獲得幾大廠商瀏覽器的穩(wěn)定支持,一般還要再等待至少1年多的時間。就算我們等到了HTML5.1或HTML5.2的到來,它就一定能夠全面的解決我們移動端應用開發(fā)的問題嗎?
HTML5標準在正式通過的前些年,早就已經(jīng)是實時上的標準了。無論Webkit內核、還是Firefox內核、IE內核(9.0以后版本)都先后對其實現(xiàn)了全面的兼容。以PhoneGap產(chǎn)品為首基于HTML5技術的移動中間件早在2008年就出現(xiàn)了,事實上我們自己的中間件產(chǎn)品在3.0之前也是以HTML5技術為核心的。但這幾年發(fā)展過來,這一類中間件技術并沒有實現(xiàn)對原生App開發(fā)的大規(guī)模替代,反倒是有些被開發(fā)者們越來越淡忘了。這也難怪,我們真的很難從AppStore里能找到一款完全基于HTML5技術開發(fā)且讓人覺得還算優(yōu)秀的應用。雖然HTML5技術結合原生App開發(fā)的模式已經(jīng)比較成熟,但如果想讓HTML5技術完全替代原生App開發(fā),這么多年來,其可行性目前應該仍然停留在實踐的路上…
HTML5的草案最早是在2007年就被W3C接納了,同年9月IPhone1代手機才對外發(fā)布。確切的說HTML5的最初設計根本就沒有考慮現(xiàn)有智能手機的體系結構,不是為智能手機時代而生。我認為未來主流移動應用開發(fā)技術的改進首先會體現(xiàn)在以下3個方面:即UI視圖的標簽化,邏輯語言的腳本化以及底層技術的開放能力。初一看,HTML/HTML5技術已經(jīng)天然的滿足了前兩條,其實則不然。瀏覽器DOM的實現(xiàn)過程和原生UI的實現(xiàn)過程存在著本質上的差別,這就決定了從web頁面到原生頁面之間根本就無法做到平滑過渡。對于底層技術的開放能力,不應該僅僅停留在簡單API擴展能力上,更應該支持UI標簽的擴展。或許我們可以憧憬和期待未來HTML6標準的到來,或許在移動端HTML標準根本就不是必須的,我們完全可以找到更好的替代方案。
Facebook在移動端的技術發(fā)展路線就是對以上技術發(fā)展趨勢一個很好的驗證。Facebook之前曾經(jīng)推出了react框架,它采用的全新思路雖然基于瀏覽器DOM的前端UI框架,同時也完全接管了UI開發(fā)中最為復雜的局部更新部分,擅長在在復雜場景下保證高性能。盡管react框架在web體系下已經(jīng)非常優(yōu)秀,然而web終究是web,無論怎么改進還是達不到原生應用的效果,F(xiàn)acebook最終也因此放棄了HTML5方案,在移動端轉入純原生開發(fā)的模式。近期Facebook官方宣稱他們將要推出react-native計劃,React Native完全不用DOM,開發(fā)者可以使用<View>取代<div>,使用<Image>替代<img>等,可以擴展自定義標簽并實現(xiàn)原生對接,可以通過JavaScript來寫高質量的應用。在我看來,雖然react-native還尚未正式推出,但它的技術結構已經(jīng)是已知中間件產(chǎn)品中***進、最能代表未來發(fā)展趨勢的。它所推崇的UI視圖的標簽化,邏輯語言的腳本化以及底層技術的開放能力和ZBuilder4.0產(chǎn)品有著異曲同工之默契。
為什么一定要把Web模式和原生App模式分開來對立呢?這兩者本來就有著各自不同的優(yōu)勢。Web已經(jīng)成為App的一部分,和App組件融一起各自完成其擅長的工作。 所以,Web和App都是我們需要的,要取長補短結合在一起做。
微信還是App?
談到微信應用,自然是發(fā)自內心的佩服。國產(chǎn)的App產(chǎn)品能夠做到如此之優(yōu)秀的程度,確實讓人折服。微信應用發(fā)展到今天,僅注冊用戶就已經(jīng)發(fā)展到了6億多,其市場發(fā)展的定位也遠不止其早期起家時的語音通訊和即時通信那么簡單了。朋友圈的分享模塊,讓微信占領移動社交網(wǎng)絡的高地;公眾號及開放平臺,讓微信成為智能手機端的信息門戶;掃一掃功能,讓微信成為移動端訪問網(wǎng)頁或者下載應用的標準入口;現(xiàn)在又微信開放了設備接入能力,不僅僅是在為O2O市場的發(fā)展做準備,更是已經(jīng)開始染指個人健康設備的領域了。再加上微信錢包、微信支付、微信商城、微信游戲等重磅型的巨無霸功能,真是微信觸手無處不及呀。細分析微信的這些功能,其實早已涉及到了雅虎、谷歌、Facebook、阿里巴巴和蘋果等多家互聯(lián)網(wǎng)大佬們的核心服務范圍。前段時間微信又發(fā)布新功能,在廣州、深圳、佛山展開試點,啟動城市服務這個全新的領域。騰訊的整體布局之大,看來真是想讓微信做移動互聯(lián)網(wǎng)的“唯一應用入口”,其野心已經(jīng)很明顯了。
我們大可不必被微信的洶涌攻勢所嚇倒,冷靜的思考,微信的快速膨脹快速擴展戰(zhàn)略,其實本身也沒那么可怕。每個垂直細分的行業(yè)都有自己的價值衡量標準,短期的流量如沒有長期優(yōu)質的服務為基礎也是徒勞,只有堅持做品質做價值才是正道。就好像當年的QQ一樣,即時通信帶來的大量流量,確實能夠帶動起巨大眼球經(jīng)濟,比如其帶動了騰訊游戲的快速發(fā)展。但是騰訊也曾投巨資嘗試過做搜索引擎、做新聞資訊、做網(wǎng)上購物,最終還不是也都敗下陣來。
凡事物極必反,今天微信確實太強太大了,強大得讓人擔心是否它是否早已經(jīng)觸及了“去中心化”的自然發(fā)展規(guī)律。人們真正離不開的是“點對點”的溝通(即時通訊),而不是點對多的溝通(社交網(wǎng)絡)。微信的***弱點應該就在于人們對“私密小圈子”的渴望,這恰恰也是微信早期獲得成功的原因。目前為止微信的用戶一直在增加,我們每一個人在微信上都能看到自己的七大姑八大姨、單位的同事、領導、各種類型的客戶、還有一大批賣東西的人(說的好聽一點叫搞微信營銷的人)都在里面了,導致原有的私密空間變得越來越不私密,這樣下去微信恐怕也將面對類似“大批用戶逃離Facebook”一樣的局面。國內也發(fā)生過類似的情況,當初大家一窩蜂的涌入開心網(wǎng),之前沒玩過這類東西嘛,熱情過后又一窩蜂全部逃離出去!
放在微信里打開的即使是普通web頁面,初一看也會讓人覺得閃閃發(fā)光。然而移動端終究和PC端不同,長期來看各種細分功能的用戶體驗效果還是至關重要的。微信也有其自身的技術短板,例如:微信的web擴展應用必須有網(wǎng)絡的環(huán)境下才能打開;微信自己的“返回”鍵和web應用內的“返回”鍵還會互相干擾等。但是沒辦法,微信支持的擴展能力也只限Web。微信***版本的安裝包已經(jīng)有55M多了,再無限制的增加功能只會讓微信越來越冗腫而加速毀滅。如果你想指望著在微信中擴展實時導航、虛擬現(xiàn)實、文檔類解析、面部識別、3D控制、離線地圖等這些功能,對不起,這些功能在微信里都是做不到的。
今天的微信已經(jīng)成為移動應用的發(fā)布的重要渠道之一,大有“蘋果、安卓、微信一個都不能少”的勢頭。無論智慧城市應用還是行業(yè)解決方案應用,我們既要保持保持蘋果、安卓、微信(未來還會包括windowsPhone)等幾個平臺的同步發(fā)展,又要控制風險,不要把資源全部投入到其中的某一個渠道中,特別是不能把寶全都輕易的壓在微信平臺上,要充分考慮未來的風險。就好比在“呼機、手機、商務通一個都不能少”那個狂熱的年代,那些壓巨資于呼機或商務通的代理商們,***的結局也差不多都和呼機或商務通一樣,全部消失了。
微信想要做移動終端唯一入口,著實還是有很大困難的。微信只是一個普通應用而已,它再強大也必須運行在在蘋果和安卓的系統(tǒng)上運行。特別是蘋果公司,每年都在不斷調整對上線App的政策要求,而微信仍在不斷開放和擴展開放第三方應用,誰敢保障蘋果公司哪天不會和微信翻臉。在安卓系統(tǒng)體系內,阿里、百度、小米、魅族這些公司都基于安卓內核在做自己云操作系統(tǒng),并且這些系統(tǒng)在國內的市場占有率相當之高。IT生態(tài)圈的平衡發(fā)展,上下游之間即相互依賴又相互制約,長期來看主導權不可能只由微信一家說的算。正如馬化騰自己所說"打敗微信的肯定不會是微信,而是另外更好玩的",科技的發(fā)展每時每刻都在不斷向前推進,這也許并非危言聳聽。
所以,我們要原生App也要微信,但不能只要微信。
原生開發(fā)之困惑
我們說App死不了,并不表示說App的很好嗎?其實開發(fā)App是一個極其痛苦的過程??傆腥苏页鲆恍├碛烧fApp已死,甚至還有些人對原生App開發(fā)模式明確給以仇視的態(tài)度,這些也都有其現(xiàn)實原因的,我完全能夠理解。智能手機的時代確實發(fā)展的太迅猛,過程中除了對傳統(tǒng)行業(yè)造成了強烈的沖擊外,同時也造成了IT行業(yè)內部一些資源的明顯失衡??陀^的說,對于絕大多數(shù)的移動應用項目而言,原生開發(fā)過程絕對是一個昂貴的陷阱。目前原生開發(fā)者(特別是IOS的開發(fā)者)工資水平確實太高:剛畢業(yè)的學生,培訓的2~3個月,就能要到10K的月薪。有個2~3年開發(fā)經(jīng)歷且有些經(jīng)驗的,就敢叫到20K的月薪。App應用需求爆發(fā)性增長導致了市場供求關系的現(xiàn)狀,這讓IOS原生開發(fā)人員越來越緊俏,競爭已經(jīng)不僅僅是非理性,甚至已經(jīng)開始有些瘋狂了。在拉勾網(wǎng)上,招聘3~5年以上原生開發(fā)的工程師,月薪能夠給到50K的居然也大有人在。最讓人接受不了的是這么高的工資,居然一直都是供不應求。這讓市場上的大多數(shù)公司如何忍受,讓那些經(jīng)驗豐富的老程序員們情何以堪呀?
這讓我想起了2000年互聯(lián)網(wǎng)剛興起那個時候的情形,在網(wǎng)泡沫破滅之前,剛畢業(yè)普通做網(wǎng)頁的學生就能拿到10K工資,和現(xiàn)在的狀況何其相似。
每一個原生應用開發(fā)的項目都是一個巨大的坑。要么等著競爭者通過移動互聯(lián)技術把你打敗,要么跳進坑,自己招人來開發(fā)移動應用。特別是對于面向互聯(lián)網(wǎng)的2C應用或者企業(yè)內BYOD的應用,更是需要至少招聘IOS、Android兩個以上的原生開發(fā)團隊,開發(fā)成本也隨之加倍。最可怕的是,需要面對大量的黑屏、閃退、屏幕適配等底層技術陷阱。再加上技術人員流失更換頻率較高,業(yè)務系統(tǒng)維護周期較長,操作系統(tǒng)平臺升級后的兼容性問題(例如IOS7 UI布局結構的強制調整問題、IOS8的64位內核強制升級問題)。到處都是技術陷阱,這豈是每個小項目的成本能夠承受的呀。
于是乎,很多開發(fā)者就會很自然的想到了Web技術,想到了微信平臺。對于一些用戶范圍小、要求性低的App可能是無所謂的。但對一些重要的移動應用來說,降低品質降低用戶體驗效果,往往會直接導致該應用的失敗。
原生APP不一定非要由純原生的開發(fā)人員才能完成。這些年我們一直在探尋移動端跨平臺的中間件技術,希望能夠以此來大幅度降低移動應用開發(fā)成本。
出路在哪里?
開發(fā)高品質的App本就不該是一件困難的事情,我們一直都期望著能夠通過移動中間件技術平臺,讓普通的菜鳥也可以輕松的站到巨人肩膀上。你的應用程序邏輯使用統(tǒng)一的腳本語言編寫并運行,而你的應用程序用戶界面則完全是原生的,想一想都會覺得很酷!科技的發(fā)展需要更專業(yè)的分工與合作:有人做手機就會有人做CPU模塊、做攝像頭模塊;同樣有人做App應用,也就應該有人做底層的UI組件、做API組件。一個優(yōu)秀的移動中間件產(chǎn)品就是應該能“讓昂貴項的原生開發(fā)人員能夠更專注于底層技術創(chuàng)新和組件封裝,讓應用開發(fā)人員可以更加專注于具體項目的業(yè)務需求,實現(xiàn)原生開發(fā)和應用開發(fā)的***分離!”
目前已有的移動中間件開發(fā)技術主要包括:IOS、Android或WindowsPhone的純原生開發(fā);以Html5技術為核心的中間件開發(fā)(例如PhoneGap, HBuilder, AppCan, ApiCloud)、以OpenGL技術為核心的中間件開發(fā)(例如:CrossApp)、以代碼轉換和原生反射技術為核心的中間件開發(fā)(例如:Titanium,Xamarin,React Native),以及以虛擬UI、抽象SDK、動態(tài)組件為核心的中間件開發(fā)(例如DeviceOne)。
采用純原生代碼開發(fā)App,雖然在能力上是***大最靈活的,但卻往往都要面臨以下這些問題:多個平臺作戰(zhàn)、開發(fā)工期長、開發(fā)成本高;原生代碼太靈活技術陷阱太多,再加上開發(fā)人員水平參差不齊,很難控制應用質量;項目中要考慮的設備機型太多,屏幕適配工作量巨大;App升級工作煩瑣、哪怕是很小的缺陷修復都必須經(jīng)過AppStore的審批,還可能經(jīng)常被拒…
當我們考慮跨平臺需求時,很自然就能想到Html5技術。如果僅僅是做一個演示demo或體驗要求不高的app還勉強,然而當我們真的去嘗試用Html5做真實App項目時,我們才會發(fā)現(xiàn)它所欠缺可不僅僅是運行效率的問題,在很各個方面與原生交互體驗的差距實在是太大了。 到目前為之我們都很難從蘋果商店里找到一個Html5框架做的且體驗還算不錯的應用,我們還在移動端項目中痛苦的嘗試Html5技術的時候,怎能忽略這個事實呢?
以OpenGL技術為核心和以代碼轉換和原生反射技術為核心的中間件產(chǎn)品,實際上并不具備完整的跨平臺能力。就像facebook官方說的那樣,他們所要達到的目標只是”learn once, write anywhere”而已,還不是”write once, run anywhere”。用Javascript語法僅僅是簡單的調用IOS現(xiàn)有類庫,其開發(fā)難度是可想而知的。
虛擬UI、抽象SDK、動態(tài)組件為核心的中間件,是目前***的中間技術。目前來看,這類產(chǎn)品在技術上優(yōu)勢還是比較明顯的。但由于此類產(chǎn)品推出時間太短,市場檢驗的時間還夠,所以我們還只能對此采取觀望和嘗試的態(tài)度,后續(xù)其能否真的成為***個值得我們依托的移動中間件平臺,這還要拭目以待。
多樣性的趨勢是移動互聯(lián)時代發(fā)展的特點,無論在智能設備端、物聯(lián)網(wǎng)傳感器端、還是各種終端上的應用,都會變得豐富多彩。然而,發(fā)展多樣性并不表示不能解決碎片化的問題,相信未來每個人最常用的App應該也不會太多。包括聽音樂、看視頻、玩游戲這些娛樂類的應用,還有即時通信應用、城市服務應用、辦公管理應用、健康管理應用、個人信息管理類應用等。每個垂直細分方向上的應用,最終可能只有1~2家能夠存活。能否降低開發(fā)成本是事關發(fā)展事關生死的問題,但高品質應用對于優(yōu)秀的移動應用產(chǎn)品來說也是至關重要的。我們期待著能夠真正解決問題的移動中間件產(chǎn)品能夠早一天到來。