Categories
程式開發

阿里資深技術專家談跨平台開發的發展趨勢和變化


隨著移動互聯網的發展,Android和iOS呈兩分天下之勢,跨平台開發也逐漸成為移動領域的熱門話題之一。怎麼看待其背後的發展邏輯?跨平台開發的難點是什麼?未來的發展方向如何?近日,InfoQ 有幸約到阿里巴巴淘系技術部資深無線技術專家黃剛(花名:騰淵),請他介紹跨平台開發的發展趨勢和變化。

騰淵認為:從早期比較流行的Hybrid App,到後來的React Native、Weex,再到現在比較火爆的小程序和Flutter,可以看到跨平台的發展趨勢是框架變得越來越重。如果當前的業務情況下前台呈現比較不穩定並且整個前台開發佔比較高,那麼應用跨平台框架的收益就比較高了。到底哪個方向更正確、哪個框架更好其實是沒有標準答案的,更多需要開發者因時制宜地選擇。如果說跨平台解決的是個節約研發成本的問題,On-Device AI的應用是真正會產生業務增量的技術新賽道。

他還會在即將召開的QCon全球軟件開發大會 2020(北京站)上擔任「移動新生態趨勢下的應用實踐」專題的出品人,感興趣的讀者可以關注。以下為黃剛(騰淵)的觀點精華。

如何選擇適合自己的跨平台開發框架?

在移動互聯網時代,當Android和iOS奠定了整個移動OS的地位後,跨平台研發就一直是一個大的研究方向或者說大的課題。這個話題其實很有意思,因為很多時候大家會有些默認的假設,比較容易忽視這個方向出現或者變熱的前提條件。

從PC時代開始,就有一些像Qt之類的非常優秀的跨平台軟件研發框架。但是我們回過頭來看,那個時候面向個人用戶的跨平台研發很難說是一個非常熱的方向,其中最主要的原因就在於PC時代Windows的絕對統治地位。假設今天我們在移動互聯網上只有一個OS佔絕對統治地位,那可能今天也不太會有業界同仁在研究跨平台研發這個事情了,這是一個大的前提。

在移動時代,在Android、iOS作為移動OS雙巨頭的格局下,天然就會帶來一個重複開發導致移動應用開發成本增大的問題。要開發一個應用,服務端、前端都可以是一套班子,客戶端基本需要Android和iOS兩套開發班子,所以不難理解跨平台研發這個話題的起點在於降低研發成本。在這個基本問題下,往下衍生的問題就是多平台的開發增加的額外成本到底是多少,在整個研發生命週期中的佔比是多少,跨平台的開發框架能多大程度上解決這個問題?只有這個問題回答清楚了,我們才能明確適合自己的跨平台開發框架應該具備哪些特徵,這個跨平台框架在一個App應用中的使用範圍是多大。

從早期比較流行的Hybrid App到後來的React Native、Weex,再到現在比較火爆的小程序和Flutter,可以看到跨平台研發框架變得越來越重。是不是一定越重、越新的框架越好?答案是不一定。

從應用的Life Cycle來看,研發階段只是其中一個階段,是否具有長久的可維護性、可運維性也是需要重點考慮的問題。再到研發階段本身,整個研發是從前端到後端End-to-End的,跨平台更多地是集中在大前端領域內的話題,如果在當下的業務形態裡,前台展現是高度產品化、比較穩定或者對於性能以及交互的要求極度苛刻的,那麼Cross-Platform First未必是一個理想的選擇。

一方面是多平台開發工作在整個研發成本里的佔比不高,ROI未必高;另一方面是Cross-Platform First是以犧牲平台特性為代價來達到跨平台的一致性(本質上跨平台研發框架也基本無法做到多平台上表現得完全一致性)。在達到一致性表現的過程中,工程上的填坑成本可能更高。

反過來講,如果當前的業務情況下,前台的呈現比較不穩定並且整個前台開發佔比較高,那麼應用跨平台框架的收益就比較高了,在阿里比較典型的例子就是Weex在大促會場上的應用。

我們都應該理解,從Hybrid的方案到React Native、Weex再到Flutter,本質上都是在研發成本、靈活性、性能體驗三者間找一個平衡點,只是大家切入的點不太一樣,最終導致整個解決方案有了不同。假設說現在你要做一個新的App,可能整個開發團隊是多前端、少客戶端的,那麼我可能會比較建議大家多考慮Hybrid的模式;如果對性能要求比較高,就可以考慮用用Weex或者React Native;反過來,如果是客戶端同學比較多,那麼考慮下Flutter未嘗不可。

其實我們也可以看到,像Google同時在推Flutter和Kotlin,這兩個東西本質是不一樣的,Flutter更多地體現Cross-Platform,Kotlin更多地體現Platform First,到底哪個方向更正確,哪個框架更好,其實是沒有標準答案的,更多需要開發者因時制宜地進行選擇。

阿里各跨平台開發框架的發展及應用

當下阿里用的比較多的應該是Weex、DinamicX和小程序這幾個框架,在不同場景下解決不同的核心問題。任何框架都不能脫離當時發展的背景討論,這幾個框架是因為在不同階段解決了當時手淘的一些核心問題,所以才能在各條業務線上廣泛應用。

我們從2015年開始做Weex,2016年大規模應用。當時我們大促會場頁面從研發效率以及發布的靈活性考慮,統一使用的是H5,但在當時,性能和體驗都有些問題。同樣,當時手淘上眾多的導購業務因為很難接受H5的性能與體驗,強烈要求使用Native做頁面開發,這樣就又帶來了另外一個問題,即App的包大小的問題。 Weex在這個背景下誕生,在盡量保留H5研發效率以及部署靈活性的前提下,盡量提升頁面的性能體驗。

不難想像,在這種情況下,我們整個開發框架必然是面向前端、全面兼容H5的研發模式。當然其中Vue和Rax這樣的前端框架也是功不可沒的。因為Weex的出現,大幅度提高了當時會場頁面的性能,而且滿足了大部分導購頻道對於性能的要求。導購業務在性能基礎體驗能夠滿足的情況下,其實很多導購業務還是傾向於更靈活的研發與部署模式,所以當時很多的導購業務還從Native轉回到了Weex進行開發,間接幫助了手淘App包大小的控制。

我們從2017年開始做DinamicX,2018年大規模應用。這個框架的誕生就要順著剛才的歷史接著往下講。 Weex解決了原先使用H5的業務的性能訴求,但是我們發現Weex在一些產品化程度很高的業務域內,依然不能滿足性能要求,比如說首頁這類一級Tab頁,所以這種業務基本都還是保留了Native的開發模式。

雖然Native的開發模式被保留了下來,但是不意味著這些業務對於開發的平台一致性、研發效率、部署效率沒有要求。為了解決這些問題,DinamicX使用了類似於Android layout的聲明式佈局。相較於Weex,DinamicX並沒有引入腳本引擎的能力,通過犧牲部分靈活性,來達到性能的極致。通過這樣的方式,能夠做到在性能基本和Native開發持平的情況下,比較靈活地調整頁面佈局,再通過和我們內部的新奧創研發平台的結合,實現頁面佈局與業務邏輯的分離。通過這樣的方式,DinamicX這個框架基本解決了我們在基礎產品業務域內的研發效率以及性能體驗的平衡問題。

再來講講小程序框架,現在我們更多地是使用在了商家應用場景上,核心是為了解決我們在集團多個App之間業務快速部署以及外部商家開發的頁面快速入駐手淘並且能夠得到有效管控的問題。小程序最近比較熱,這個點上我就不展開了。

至於Flutter,我們內部使用比較深入的是閒魚的同學。對於跨平台領域的解決方案,我不太秉持只有一個正確答案的想法,對於終極解決方案這個結論我還是比較存疑的,但有一個需要探索的重要方向是可以確定的:決定一個跨平台解決方案的成敗有兩個重要因素,一個是技術產品化程度,或者說是工程化水平;另外一個是整個開發者生態的構建。如果從這兩個因素來看的話,可以明確都還有一段很長的路要走。手淘今年也成立了專門的團隊在研究Flutter的應用,我們可以拭目以待。

5G時代給移動領域帶來的新機會

5G也是大家非常關注的熱點,我們內部的討論也會比較多。毫無疑問,5G將能帶來一些爆點場景,但是這方面的預測是相當困難的。現在市面上關於AR/VR和多媒體應用的暢想理論上都沒有什麼問題,但是從商業的角度來講,我們還不知道整個變化對於成本方面的影響,而成本的考量對於應用場景是極其重要的。

我舉個簡單的例子,很多App在視頻自動播放下都有一個設置選項,叫做“Wi-Fi下自動播放”,絕大多數App在使用移動流量播放流媒體之前一般都會給用戶彈一個提醒, “當前在用移動流量播放,可能會產生資費”。大家想一想,這個背後的本質是不是就是關於成本的考量。這個限制其實對於整個應用的場景影響是非常大的,正如4G的流量費用大幅降低讓移動互聯網走到了億萬用戶手中,5G的使用成本將極大影響它的使用場景。但是我們依然可以做一個大膽的預測,當5G幫助大家極大突破了網絡傳輸速率的束縛後,後面緊接而來的可能是對終端設備算力大幅提升的訴求,最後才創造出一個個嶄新的應用場景,這是一個從網絡到終端設備到應用場景整體升級的過程。

我個人最近比較關注On-Device AI的應用實踐,如果說跨平台解決的是節約研發成本的問題,On-Device AI的應用是真正會產生業務增量的技術新賽道。過去的一年中,在On-Device AI上手淘有了比較大規模的應用,一個典型的場景就是信息流這個商品、內容等的混合智能推薦場景。我們通過更低的資源消耗、更多的數據輸入、更實時的感知,在整個信息流場景導購側有了非常大幅度的提升。過去一年的實踐只是一個開端,我們齊頭並進的應用場景還包括AR美妝、消息Push、直播等等,這塊的想像空間是非常大的。

作者介紹:

黃剛(騰淵) 阿里巴巴淘系技術部資深無線技術專家,現淘系技術部基礎鏈路負責人,負責首頁、商品詳情、交易、信息流等核心業務。 2014 年加入阿里巴巴,2018 年雙十一淘寶技術部技術隊長,2019 年淘系技術部技術隊長。

更多前端前沿技術及工程化落地實踐請關注 QCon北京2020,大會邀請多位技術大咖分享伴隨業務形態轉變、團隊規模擴大和技術快速升級沉澱下來的經驗和實踐。點擊了解詳情。