iOS 技術發展史:2018

2018年 iOS 技術發展有點跌宕起伏。在蘋果官方進入慢車道的同時,谷歌卻強勢推出了新的跨平臺移動架構 Flutter;同一時間,與 Flutter 類似的跨平臺解決方案 React Native 卻被 Airbnb 放棄,一時之間蒙受陰影。

Swift vs. Objective-C

原生開發一直是最正統的 iOS 開發解決方案。經歷了10多年的發展,蘋果已經構建起了相當完善的開發框架和體系,社區也開發出了豐富多彩的第三方框架,其數量和質量都是其他任何解決方案望塵莫及的。

今年 WWDC 的主旋律可以說是“修修補補”——明星框架依然是 AI (ML & Siri Kit) 和 AR (ARKit) 這兩個;對於 Xcode 和 iOS 系統及其各種框架的性能優化如 Auto Layout 算法改進、UITableView 滑動效率增強則是本次大會的重點。

Swift 的更新可以說是乏善可陳。萬衆期待的 Swift ABI 穩定被官宣推遲到2019年,4.2 版本小修小補中繼續向着更易用的方向進行努力;在谷歌大腦的 Swift 之父 Chris 依然在努力的將 Tensorflow Swift 化,雖然取得了一定進步,但 Google 對其顯然支持力度不夠(只有 Richard Wei 一人在進行相關工作);Server 端方面,IBM 依然不遺餘力地更新着自家的 Swift 全家桶,然而其8%的雲市場份額作用有限。除此之外,一年一度的 Swift Summit 今年居然停辦,不知是因爲資金不足還是開發者熱情消減。

基於 Swift 整體方面不夠給力,Swift 的三大排名更新如下:

  1. TIOBE 語言排名從第10名下降到第14名
  2. StackOverflow 最受歡迎語言維持在第14名
  3. Github 綜合語言排名爲第14名

反觀 Objective-C 則在不被看好的情況下逆勢而上。其在 TIOBE 和 Github 的排名穩居第10名;而在公司方面,LinkedIn 決定從 Swift 遷移回 Objective-C,與 Snap、Facebook、Twitter 一道成爲 Objective-C的衛道者。

而完全擁抱 Swift 的依然只有 Uber,Lyft,Coursera 這三家早在 Swift 3 就入坑的公司 。硅谷的絕大多數公司,如 Google、Amazon、Microsoft、Netflix、Airbnb、Slack、Pinterest、Quora都對 Swift 持觀望態度,其產品中也大多是以 Objective-C 爲主的混編。好消息是,它們中的絕大多數代碼庫都在往更多 Swift 的方向去遷移;Amazon 則是在11月發佈了輕量級的 smoke 服務器框架,完全是由 Swift 編寫。

總結:Objective-C 瘦死的駱駝比馬大,Swift 發展陷入低迷。

Flutter

Flutter 應該算是今年 iOS 開發的年度關鍵詞了。從2015年首次出現在安卓的操作系統中,到2017年 Alpha 版本的發佈,再到兩個 Beta 版本分別在今年2月和3月發佈,隨後在9月上海的谷歌開發者開發者大會上宣佈穩定版,最後在2018年的尾巴12月4日,我們終於見到了1.0版本。這款以 Dart 爲開發語言、承載了谷歌未來系統級戰略的框架,註定要展現出巨大的影響力。

對於開發 Flutter 的動機,原 Swift 團隊的二號人物 Kate Stone 認爲,開發 Flutter 的目的在於爲其 IOT 戰略鋪路和試錯。在 AI First 大背景下的 Google,其基本的佈局是以人工智能爲核心構建一整套軟硬結合的生態圈。其中硬件就是以 Google Home 爲中心的 IOT 產品線(包括自家的 Clips、Wifi、Nest 一套),這些硬件需要一套更高效和統一的軟件平臺——以 Java 爲主的 Android 當然不錯,但將其適配新的 IOT產品線成本較高,且每年要付給 Oracle 大量的專利費顯然並不划算;Chrome OS 因爲理念太先進,完全基於雲端而導致現在的基礎設施和第三方廠商難以適應,目前只是小衆產品。整合 Android 和 Chrome OS 兩大平臺的資源,配合未來 5G 的高速通信,使 Google 做出了統一系統、高效開發的決策。這正是開發 Fuchsia 的原因,而 Flutter 也是其配套的重要一環。

Flutter 與 Fuchsia 操作系統一樣,採用 Dart 作爲底層編程語言。Dart 由於其預編譯和高兼容等特色,使得其可以在 iOS 設備上無縫高速運轉。而 Flutter 作爲其架構,完美得繞過了 JSCore 這個橋接,可以直接在機器上渲染圖形,這比 React Native 要前進了一大步,與原生相比效率上幾乎無差別;在兼具熱加載和跨平臺等優點的基礎上,Flutter 又擁有豐富成熟的控件,這些噱頭已經足夠吸引開發者。在實際開發中,Reflectly 的工程團隊證明,React Native 在跨平臺上造成的小毛病在 Flutter 上完全看不到,其跨平臺可靠性、熱加載高效性、工具鏈豐富性、文檔的高可讀性都給整個開發過程帶來了非常愉快的體驗。

如此優越的先天條件使得 Flutter 目前在 Github 上已經擁有了48000+的 Star。Google 在優達學城開放了入門課程,同時自己在 Google Ads 上投入使用。國外的大廠有 Capital One、Groupon 已經開始嘗試 Flutter,而國內的阿里巴巴、騰訊、京東更是作爲 Google 的合作伙伴使用 Flutter。

雖然好評如潮,但是開發者對 Flutter 也有一些憂慮。Reflectly 團隊指出,Flutter 對於應用內購買和本地推送這兩個功能沒有很好的支持;Google Ads 的技術負責人 Mehmet 在 Quora 上則說,Flutter 只是目前階段的解決方案,當網速足夠快時,網站和瀏覽器就足以取代 App 了 —— 這時候 PWA 纔是王道;而閒魚的宗心同學則是在他的直播中說使用 Flutter 後穩定性稍有下降,而內存佔用情況也比較嚴峻。

總結:Flutter 在2018年異軍突起,戰略意圖明顯且優點鮮明,值得一試。

React Native

老牌跨平臺框架 React Native 在2018年迭代了5個版本:從0.52到0.57,Facebook 依然在對這個框架進行各種嘗試。然而,壞消息卻是接踵而來,首先是 Airbnb 棄用 React Native,還連發數篇文章闡明相識相知到累覺不愛的過程。這波有理有據的吐槽的蝴蝶效應則是在開發者中帶動了一波 React Native “下車”的大辯論。

可能 Facebook 團隊也意識到了橋接等性能問題。在 Airbnb 事件之後數週, React Native 官方就發文宣佈重構。主要工作圍繞在線程、異步渲染、簡化橋接三個方面,整個過程循序漸進,力爭不會對已經使用 React Native 的應用和開發者造成重大影響。這之後8月份,全新的 Accessibility API 推出,而這正是 Airbnb 吐槽的大坑。11月初,React Native 發佈了2019年的路線圖,Facebook 團隊決定明年將完成重構併發布穩定的 API,將其推進到1.0正式版。

如果說 Flutter 是 Google 在 IOT 戰略中下的一步棋,那麼 React Native 便是 Facebook 在 VR/AR 戰略中下的類似一步。去年發佈的 React VR 在2018年的 Facebook F8 上與 React Native 深度結合展現出了其優秀的可擴展性。然而無論是 VR 產業的成熟,還是 React VR 框架的成熟都尚需數年,所以 React Native 在此方面的優勢也就僅此而已。

總結:React Native 步履蹣跚,在面對 Airbnb 的拋棄和 Flutter 的競爭下,展現出了一些求生欲。

總結與展望

2018年是第一臺 iPhone 發佈的第11個年頭。很多人都說移動浪潮已過、iOS 工程師沒人要、寫 iOS 以後就和寫網頁一樣,唱衰的聲音此起彼伏。然而 Flutter 的出現像是迴應了這種質疑;2019年 React Native 的重構和 Swift 的 ABI 穩定,這也許意味着 iOS 的第二春即將來臨。在 Google,Facebook,Apple 三家大廠爭霸佈局的同時,我們 iOS 開發者則應該保持信心,在苦修內功的同時又擡頭看看最新的技術,畢竟 iOS 作爲平臺也在不斷進化,與 AI 和 VR/AR 的結合也督促着我們不斷學習。

Reference

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章