
2018年 iOS 技術發(fā)展有點跌宕起伏。在蘋果官方進入慢車道的同時,谷歌卻強勢推出了新的跨平臺移動架構 Flutter;同一時間,與 Flutter 類似的跨平臺解決方案 React Native 卻被 Airbnb 放棄,一時之間蒙受陰影。
Swift vs. Objective-C
原生開發(fā)一直是最正統(tǒng)的 iOS 開發(fā)解決方案。經(jīng)歷了10多年的發(fā)展,蘋果已經(jīng)構建起了相當完善的開發(fā)框架和體系,社區(qū)也開發(fā)出了豐富多彩的第三方框架,其數(shù)量和質量都是其他任何解決方案望塵莫及的。
今年 WWDC 的主旋律可以說是“修修補補”——明星框架依然是 AI (ML & Siri Kit) 和 AR (ARKit) 這兩個;對于 Xcode 和 iOS 系統(tǒng)及其各種框架的性能優(yōu)化如 Auto Layout 算法改進、UITableView 滑動效率增強則是本次大會的重點。
Swift 的更新可以說是乏善可陳。萬眾期待的 Swift ABI 穩(wěn)定被官宣推遲到2019年,4.2 版本小修小補中繼續(xù)向著更易用的方向進行努力;在谷歌大腦的 Swift 之父 Chris 依然在努力的將 Tensorflow Swift 化,雖然取得了一定進步,但 Google 對其顯然支持力度不夠(只有 Richard Wei 一人在進行相關工作);Server 端方面,IBM 依然不遺余力地更新著自家的 Swift 全家桶,然而其8%的云市場份額作用有限。除此之外,一年一度的 Swift Summit 今年居然停辦,不知是因為資金不足還是開發(fā)者熱情消減。
基于 Swift 整體方面不夠給力,Swift 的三大排名更新如下:
- TIOBE 語言排名從第10名下降到第14名
- StackOverflow 最受歡迎語言維持在第14名
- Github 綜合語言排名為第14名
反觀 Objective-C 則在不被看好的情況下逆勢而上。其在 TIOBE 和 Github 的排名穩(wěn)居第10名;而在公司方面,LinkedIn 決定從 Swift 遷移回 Objective-C,與 Snap、Facebook、Twitter 一道成為 Objective-C的衛(wèi)道者。
而完全擁抱 Swift 的依然只有 Uber,Lyft,Coursera 這三家早在 Swift 3 就入坑的公司 。硅谷的絕大多數(shù)公司,如 Google、Amazon、Microsoft、Netflix、Airbnb、Slack、Pinterest、Quora都對 Swift 持觀望態(tài)度,其產(chǎn)品中也大多是以 Objective-C 為主的混編。好消息是,它們中的絕大多數(shù)代碼庫都在往更多 Swift 的方向去遷移;Amazon 則是在11月發(fā)布了輕量級的 smoke 服務器框架,完全是由 Swift 編寫。

總結:Objective-C 瘦死的駱駝比馬大,Swift 發(fā)展陷入低迷。
Flutter
Flutter 應該算是今年 iOS 開發(fā)的年度關鍵詞了。從2015年首次出現(xiàn)在安卓的操作系統(tǒng)中,到2017年 Alpha 版本的發(fā)布,再到兩個 Beta 版本分別在今年2月和3月發(fā)布,隨后在9月上海的谷歌開發(fā)者大會上宣布穩(wěn)定版,最后在2018年的尾巴12月4日,我們終于見到了1.0版本。這款以 Dart 為開發(fā)語言、承載了谷歌未來系統(tǒng)級戰(zhàn)略的框架,注定要展現(xiàn)出巨大的影響力。
對于開發(fā) Flutter 的動機,原 Swift 團隊的二號人物 Kate Stone 認為,開發(fā) Flutter 的目的在于為其 IOT 戰(zhàn)略鋪路和試錯。在 AI First 大背景下的 Google,其基本的布局是以人工智能為核心構建一整套軟硬結合的生態(tài)圈。其中硬件就是以 Google Home 為中心的 IOT 產(chǎn)品線(包括自家的 Clips、Wifi、Nest 一套),這些硬件需要一套更高效和統(tǒng)一的軟件平臺——以 Java 為主的 Android 當然不錯,但將其適配新的 IOT產(chǎn)品線成本較高,且每年要付給 Oracle 大量的專利費顯然并不劃算;Chrome OS 因為理念太先進,完全基于云端而導致現(xiàn)在的基礎設施和第三方廠商難以適應,目前只是小眾產(chǎn)品。整合 Android 和 Chrome OS 兩大平臺的資源,配合未來 5G 的高速通信,使 Google 做出了統(tǒng)一系統(tǒng)、高效開發(fā)的決策。這正是開發(fā) Fuchsia 的原因,而 Flutter 也是其配套的重要一環(huán)。

Flutter 與 Fuchsia 操作系統(tǒng)一樣,采用 Dart 作為底層編程語言。Dart 由于其預編譯和高兼容等特色,使得其可以在 iOS 設備上無縫高速運轉。而 Flutter 作為其架構,完美得繞過了 JSCore 這個橋接,可以直接在機器上渲染圖形,這比 React Native 要前進了一大步,與原生相比效率上幾乎無差別;在兼具熱加載和跨平臺等優(yōu)點的基礎上,F(xiàn)lutter 又擁有豐富成熟的控件,這些噱頭已經(jīng)足夠吸引開發(fā)者。在實際開發(fā)中,Reflectly 的工程團隊證明,React Native 在跨平臺上造成的小毛病在 Flutter 上完全看不到,其跨平臺可靠性、熱加載高效性、工具鏈豐富性、文檔的高可讀性都給整個開發(fā)過程帶來了非常愉快的體驗。
如此優(yōu)越的先天條件使得 Flutter 目前在 Github 上已經(jīng)擁有了48000+的 Star。Google 在優(yōu)達學城開放了入門課程,同時自己在 Google Ads 上投入使用。國外的大廠有 Capital One、Groupon 已經(jīng)開始嘗試 Flutter,而國內(nèi)的阿里巴巴、騰訊、京東更是作為 Google 的合作伙伴使用 Flutter。
雖然好評如潮,但是開發(fā)者對 Flutter 也有一些憂慮。Reflectly 團隊指出,F(xiàn)lutter 對于應用內(nèi)購買和本地推送這兩個功能沒有很好的支持;Google Ads 的技術負責人 Mehmet 在 Quora 上則說,F(xiàn)lutter 只是目前階段的解決方案,當網(wǎng)速足夠快時,網(wǎng)站和瀏覽器就足以取代 App 了 —— 這時候 PWA 才是王道;而閑魚的宗心同學則是在他的直播中說使用 Flutter 后穩(wěn)定性稍有下降,而內(nèi)存占用情況也比較嚴峻。
總結:Flutter 在2018年異軍突起,戰(zhàn)略意圖明顯且優(yōu)點鮮明,值得一試。
React Native
老牌跨平臺框架 React Native 在2018年迭代了5個版本:從0.52到0.57,F(xiàn)acebook 依然在對這個框架進行各種嘗試。然而,壞消息卻是接踵而來,首先是 Airbnb 棄用 React Native,還連發(fā)數(shù)篇文章闡明相識相知到累覺不愛的過程。這波有理有據(jù)的吐槽的蝴蝶效應則是在開發(fā)者中帶動了一波 React Native “下車”的大辯論。
可能 Facebook 團隊也意識到了橋接等性能問題。在 Airbnb 事件之后數(shù)周, React Native 官方就發(fā)文宣布重構。主要工作圍繞在線程、異步渲染、簡化橋接三個方面,整個過程循序漸進,力爭不會對已經(jīng)使用 React Native 的應用和開發(fā)者造成重大影響。這之后8月份,全新的 Accessibility API 推出,而這正是 Airbnb 吐槽的大坑。11月初,React Native 發(fā)布了2019年的路線圖,F(xiàn)acebook 團隊決定明年將完成重構并發(fā)布穩(wěn)定的 API,將其推進到1.0正式版。
如果說 Flutter 是 Google 在 IOT 戰(zhàn)略中下的一步棋,那么 React Native 便是 Facebook 在 VR/AR 戰(zhàn)略中下的類似一步。去年發(fā)布的 React VR 在2018年的 Facebook F8 上與 React Native 深度結合展現(xiàn)出了其優(yōu)秀的可擴展性。然而無論是 VR 產(chǎn)業(yè)的成熟,還是 React VR 框架的成熟都尚需數(shù)年,所以 React Native 在此方面的優(yōu)勢也就僅此而已。
總結:React Native 步履蹣跚,在面對 Airbnb 的拋棄和 Flutter 的競爭下,展現(xiàn)出了一些求生欲。
總結與展望
2018年是第一臺 iPhone 發(fā)布的第11個年頭。很多人都說移動浪潮已過、iOS 工程師沒人要、寫 iOS 以后就和寫網(wǎng)頁一樣,唱衰的聲音此起彼伏。然而 Flutter 的出現(xiàn)像是回應了這種質疑;2019年 React Native 的重構和 Swift 的 ABI 穩(wěn)定,這也許意味著 iOS 的第二春即將來臨。在 Google,F(xiàn)acebook,Apple 三家大廠爭霸布局的同時,我們 iOS 開發(fā)者則應該保持信心,在苦修內(nèi)功的同時又抬頭看看最新的技術,畢竟 iOS 作為平臺也在不斷進化,與 AI 和 VR/AR 的結合也督促著我們不斷學習。
Reference
- What Stats and Surveys are saying about Swift in 2018
- Is Flutter likely to replace Java for Android app development?
- What’s Revolutionary about Flutter
- Flutter 1.0: Google’s Portable UI Toolkit
- Reflectly?—?From React Native to Flutter
- State of React Native 2018
- Open Source Roadmap
- Airbnb: React Native 從選擇到放棄
- 基于Flutter的產(chǎn)品應用實踐