天天看點

InfoQ 2022 年趨勢報告:移動及物聯網篇

作者 | Sergio De Simone

譯者 | 王強

策劃 | 丁曉昀

InfoQ 最引人注目的亮點之一是我們的主題圖,它反映了我們對技術采用曲線中不同主題交疊情況的綜合了解。當我們從編輯的角度決定要報道哪些内容時,就可以用它們作為參考來從紛繁複雜且互相競争的話題中選出最優先的事項。我們也相信,分享這些主題圖可以幫助我們的讀者更好地了解目前和未來的技術環境,并幫助他們更好地做出決策。

主題圖是基于 Geoffrey Moore 在他的著作《跨越鴻溝》中提出的著名架構繪制的。Moore 的架構描述了五個階段,分别是“創新者““早期采用““普及早期“、“普及晚期“和“落伍“,反映了技術采用狀态随着時間的演變趨勢。

InfoQ 希望識别出那些屬于創新者、早期采用和普及早期階段的想法和技術。我們也在努力确認那些我們認為已經進入普及晚期階段的主題。InfoQ 之前的報道中上可以找到大量關于普及晚期和落伍階段的内容。

對于我們的讀者來說,這五個階段意味着他們可以更容易地調整自己的注意力,并能自己來決定哪些事物是現在就值得探索的,或者等着看它如何發展。

本報告總結了 InfoQ 編輯團隊和軟體行業的一些從業者對移動和物聯網領域中新興趨勢的看法。這個領域内涵相當豐富,内容涵蓋智能手機、智能手表、物聯網裝置、智能眼鏡、語音驅動助手等裝置和物件。

所有這些裝置的共同點在于,它們的外表之下都是“連接配接網絡的計算機器“。在某些情況下,它們的計算能力已經發展到與個人電腦相當的水準,智能手機和平闆電腦就是這樣的例子。在其他一些情況下,它們的計算能力和所提供的功能都可能有很多局限。而所有裝置都有一些特别的外形,都能連接配接到網絡。人類計算機互動(HCI)界面則是它們之間的另一個共同點所在。事實上,雖然這個領域中不同類别的裝置遵循不同的人機互動範式,但它們都會遠離“鍵盤 - 滑鼠”或“文本 - 點和點選”這些在軟體行業的其他領域很流行的範式。

所有屬于移動和物聯網領域的裝置都有一個對于自身功能來說不可或缺的硬體元件。然而,我們的報告不會過度關注硬體方面,而更多是從軟體開發的角度考慮它們的影響,這也符合 InfoQ 的使命。例如,雖然可折疊裝置肯定會帶來很多技術創新,但我們更感興趣的是如何對它們的使用者界面進行程式設計,這讓我們想到了聲明式使用者界面的興起。

普及晚期和落伍

在普及晚期階段,我們很容易識别出一些在移動領域建構應用和解決方案的成熟方法。它們代表了被廣泛接受的、幾乎是标準化的行事路徑,而且我們完全了解這些路徑的利弊,知道為什麼以及在什麼情況下這些路徑是有益的,等等。

例如,原生移動應用就屬于這個類别。這一領域中,開發人員使用 Android 或 iOS 提供的原生 SDK,以及相應的程式設計語言(即 Kotlin/Java 或 Swift/Objective-C)建構移動應用。根據 AppBrain 的資料,前 500 名 Android 應用中超過 80% 是用 Kotlin 編寫的,而全部 Android 應用中超過 75% 使用原生 Android 架構。

我們認為,作為跨平台的一種方式,混合應用開發架構應該屬于落伍階段。混合應用是嵌入在 WebView 或類似元件内的移動應用,使用 Web 技術編寫。使用這種方法主要有兩個動機:使用一個技術棧來開發移動和 Web 應用,以及建立一個使用單一代碼庫就能在所有移動平台上運作的移動應用。這并不意味着混合應用在今天就沒有意義了。相反,這意味着我們有其他更好的方法來解決這兩個問題,如 React Native 和 Flutter——後文具體讨論。

繼續讨論移動應用開發的話題。有兩種實踐也很成熟,屬于普及晚期階段,它們分别是“使用持續內建 / 持續部署工具”和“利用裝置農場進行測試”。例如,像 fastlane 這樣的工具可以将開發者從大部分瑣事中解脫出來,如擷取快照、通過相關應用商店進行測試和預審查部署等等。同樣,也有一些公司提供了裝置農場來運作你的應用的自動測試流程。鑒于市場上有大量型号各異的智能手機,這應該是一種確定你的應用可靠性的合理方式。

最後,我們認為像 Siri/Alexa/Google 助手裝置、面向健身用途的可穿戴裝置,以及智能家居都同樣屬于普及晚期階段。之是以這麼判斷其實與這些技術今天的流行程度無關,而是根據我們對它們的一些一般性名額的了解作出的,并且我們認為它們提供的功能已經達到了某種成熟度水準。

普及早期

在普及早期階段,我們看到的技術和方法在支援開發需求方面取得了很大進展,但它們還不沒有進入主流,或者在某種程度上仍處于變化之中。

聲明式使用者界面(SwiftUI)

一個很好的例子是使用 SwiftUI 為 iOS 原生應用建立 UI 的方法。已經進入第三次疊代的 SwiftUI 是一個現代聲明式架構,它依靠 Swift 實作了一些進階文法特性,為 iOS 開發者提供了一個全新的體驗。

事實上,SwiftUI 是完全聲明式和響應式的。使用 SwiftUI 時,你不需要一塊一塊地建構你的使用者界面,而隻需用一個文本抽象來描述它的樣子,并定義它的每個元件如何與你的模型互動即可。由于它的設計理念,SwiftUI 在 Xcode 中實作了一種互動式的開發風格,你可以實時預覽你的使用者界面并調整其參數,而不必編譯完整的應用。

相對于 Storyboards 或 UIKit 程式設計方法,SwiftUI 無疑有一個強力的價值主張。如果你開始一個新的 iOS 項目,你很容易把它作為一個候選的 UI 架構來評估。但這并不意味着 Storyboard 和 UIKit 在新的應用中就沒有地位了。隻不過 SwiftUI 在技術上越來越成熟,采用率越來越高,而且似乎正在朝着成為 iOS UI 開發的事實标準這個方向發展。

原生跨平台應用

在跨平台移動應用開發領域有許多方法,包括 React Native、Flutter 和 Xamarin,它們都應該屬于普及早期階段。當然,很難想象 React Native、Flutter 或其他什麼現有的跨平台解決方案會輕易取代原生開發。是以,它們被列入普及早期階段意味着它們在跨平台移動應用開發領域的迅速崛起,主要是侵占了混合應用開發方法的市場空間。

事實上,如果你喜歡這種方法的原因是想要充分利用你在 Web 堆棧中的投資,包括 HTML、CSS、JavaScript 和相關工具的話,那麼考慮到 React Native 可以為你提供原生的、更高性能的使用者體驗,顯然很難說混合方法是更合理的選項。對于 Xamarin,我們的推理也是類似的,隻不過它是處在微軟技術棧的領域,而不是在 Web 的領域。

另一方面,如果你的動機是想要隻寫一次應用代碼來節省開發精力,那麼你也有可能使用 Flutter。它不會給你帶來原生的使用者體驗,但出于其他考慮因素,你可能更喜歡使用編譯的、嚴格類型的語言,是以選擇 Flutter。

基于雲的機器學習

基于雲的機器學習服務也被我們加入了這個階段。你可以在 Snapchat、Tinder 等應用中找到這種服務,例如對圖檔進行分類或檢測物體時把計算過程放在雲上,然後将結果傳回給應用。

物聯網安全

在物聯網和 IIoT 領域,我們認為網絡安全處于普及早期階段。其實我們更希望将其歸入普及晚期階段,但遺憾的是家用電器的安全現狀,包括大多數人用來連接配接網際網路的寬帶路由器的安全性并不那麼令人放心。另外,業界已經充分認可了通過自動固件更新、安全啟動和通信以及使用者認證措施來保護家用電器和物聯網裝置的重要性,而且人們正在努力所有這些措施付諸實踐。

受控釋出

在移動應用部署領域,已經開始使用的一些技術包括特性标志、增量釋出和 A/B 測試(兩者都得到了谷歌應用商店支援),以及應用的強制更新。

這些都屬于受控釋出這個主題的範疇,其目的是減少與新版本部署相關的風險。事實上,與伺服器或 Web 應用不同的是,移動應用一旦釋出出去,其中的錯誤就很難恢複。

特性标志使用特定的标志來控制應用所提供的特性集,這些标志可以用來啟用或禁用特定的特性。強制更新允許開發者淘汰舊版本的應用,而增量釋出可以有效減少具有潛在風險的變更對使用者群的影響。

迷你應用

微應用的主要好處是它們無需經過 AppStore 和 PlayStore 的審查 / 釋出流程,進而節約了開發成本和時間。

移動平台團隊

核心元件的平台化需求在任何軟體開發領域中都是必不可少的,移動應用也不例外。例如,日志、分析、架構架構等都屬于元件的範疇,這些元件自然會形成一個平台,讓開發人員在此基礎上建構各種應用所需的其他特性。

在這種場景中,在建構這樣一個平台時應該要考慮到具體的責任配置設定。預測客戶需求、定義标準的最佳實踐、選擇正确的技術棧、評估工具等等工作,都将成為專門的平台團隊的責任。

這種方法有望提供清晰的抽象,同時指導整個組織保持一緻的開發風格和基本的邊界。肯定需要有一個足夠大的移動團隊才能讓這種方法行之有效。幾個采用這種方法的大型組織,比如 Uber、Twitter、Amazon 等組織就是成功案例。

早期采用

對于早期采用階段,我們指的是那些正在聚集更多注意力,并為開發者帶來全新可能性的軟體開發技術和方法。

裝置端機器學習,邊緣 ML

首先,我們想在這裡提到的說裝置端或邊緣機器學習,也就是說你實際上是直接在移動裝置或邊緣上運作預先訓練好的 ML 模型——而不是在雲端運作它。

由于 TensorflowLite、PyTorch Mobile 等解決方案的出現,這種方法越來越受到重視。這些解決方案大大減少了與雲端請求相關的開銷和延遲,并催生了一些全新的應用類别,其中實時預測是關鍵所在。

它們提供的另一個重要優勢是使用者資料永遠不會離開裝置,這也可能是一些用例(如健康應用)中的關鍵優勢。

增強現實和虛拟現實

增強現實和虛拟現實的應用也在增長。特别是,iOS 和 Android 系統都為一些 AR 功能提供了充足的支援,如表面和平面檢測、遮擋、臉部追蹤等等。

AR 的應用尚未普及,但肯定會引起越來越多的興趣。因為它不需要專門的硬體,并且可以相對簡單地內建到一個應用中。另一方面,虛拟現實技術主要針對專門的頭盔,如 Oculus、索尼 PlayStation VR、惠普 Reverb 等,它們的應用主要集中在遊戲方面。這個領域的新動力也可能來自智能眼鏡的發展。

語音驅動的移動應用和家用電器

AR 和 VR 都促進了業界對全新人機互動範式的探索,這些範式歸入創新者階段更合适。但是,由于基于語音的互動界面的發展,很多新的人機互動方法也正在走進普及早期階段。

這裡我們不是在談論像 Alexa 這樣的專用裝置,或者 Siri/ 谷歌助手這樣的作業系統界面。相反,我們指的是将語音功能整合到移動應用和物聯網裝置本身的實踐。

在桌面上運作移動應用

由于 Apple Catalyst 等技術的誕生,移動開發者還可以在桌面上運作他們的移動應用。尤其要注意的是,一些 macOS 系統應用就是由蘋果公司通過 Catalyst 和 Xcode 實作的,AppStore 也支援這種技術。微軟也為 Windows 10 上的 Android 應用提供了一個類似的解決方案,具體來說是在手機上運作應用,并在桌面機器上的一個視窗内鏡像它。

中心化日志記錄

中心化日志記錄在這裡也值得一提,它是一種旨在将系統生成的所有日志收集在一個單一的存儲中的實踐。中心化日志的流行是基于雲的系統帶來的一個重要趨勢,但這種方法也越來越多被用于移動應用。

用于移動應用的中心化日志的一個主要優勢是,它能幫助開發者實時了解客戶的應用發生了什麼事情,進而幫助解決他們的問題,提高客戶滿意度。

這種實踐的流行是由衆多服務促成的,包括 AWS 中央日志、SolarWinds 中心化日志管理等。

持久連接配接

最後一種處于早期采用階段的技術是用戶端和伺服器之間的持久連接配接。這種技術最初是由消息應用開始流行的,現在越來越多被用于電子商務應用(例如 Halodoc 和 GoJek)、移動應用和其他領域。

持久連接配接希望取代推送通知以及網絡輪詢,目的是減少通路延遲和電力消耗。

在物聯網裝置方面,類似的趨勢也在發展,如 MQTT 和 gRPC 等輕型協定。

一個值得密切觀察的次級趨勢是,業界正在建立标準化的協定和 / 或專門的第三方解決方案,目的是讓持久連接配接具備即插即用的便利性。

聲明式使用者界面(Jetpack Compose)

最近達到 1.0 版本的 Jetpack Compose 是谷歌基于 Kotlin 開發的 Android 聲明式使用者界面架構。

關于聲明式使用者界面給開發帶來的好處,可以說 Jetpack Compose 和上面提到的 SwiftUI 有很多相同之處。然而,SwiftUI 已經來到了它的第三次主要疊代階段,iOS 開發社群已經普遍接受了它,而 Jetpack Compose 仍處于采用的早期階段。

創新者

跨平台移動應用

雖然跨平台移動仍然屬于少數派别,但這種應用肯定是對衆多開發需求和限制的回應。回顧曆史,混合 Web 應用和最近的 React Native、NativeScript 和 Flutter 等方法都試圖為它們提供解決方案。

最近業界還在嘗試一種新的跨平台移動應用問題的解決方案,Swift for Android 和 Multiplatform Kotlin 等項目就是代表。這種方法引導你選擇一個參考平台,即 iOS 或 Android,并使用其技術棧來為你的參考平台建構應用,同時盡可能為另一個平台建構同樣的應用。

在使用者界面方面,Swift for Android 提供了 Crystal,一個跨平台、高性能的圖形引擎來建構原生 UI。對于 Multiplatform Kotlin,你可以選擇使用 Multiplatform-Compose,不過它仍然是高度實驗性的。JetBrains 最近釋出了類似的 Compose Multiplatform 的測試版,其目的是為 Multiplatform Kotlin 帶來聲明式 UI 程式設計支援,但目前它還沒有對 iOS 的支援。

這兩種解決方案都提供了良好的語言互操作性,是以你肯定可以在兩個平台上分享你的部分代碼庫;但在涉及到依賴作業系統的代碼時就可能不一樣了。例如,Swift for Android 提供了 Fusion,一個自動生成的 Swift API 集合,在一定程度上提供了對 Android API 的常用支援。

移動可靠性工程(MRE)

在移動應用上持續大規模地提供特性是一個真正的挑戰。這需要多個團隊高度協作來傳遞特性,并采用簡化的最佳實踐、流程和原則。

軟體可靠性工程(SRE)是為了實作大規模分布式系統的可靠性而誕生的,最近它在移動應用領域也作為一種有用的方法獲得了知名度。

MRE 仍處于早期采用階段,其目的是促進整個組織采用最佳實踐。目前,一些成熟的組織和初創公司都在采用這種方法(盡管不是很明顯),在各種工具、流程群組織動态的幫助下,希望讓特性傳遞成為一個更靈活的流程。

基于手勢和身體姿勢的使用者界面

AR 和 VR 為與應用和環境之間的互動提供了新的可能性,進而催生了人類與計算機互動的全新方法,特别是使用手勢識别或 2D 姿勢檢測的方法。雖然我們将 AR 和 VR 歸入早期采用階段,但也有一種趨勢是将這些人機互動的方法帶到與 VR 或 AR 無關的移動應用中去。

這些方法的基礎是用于手勢和人體姿勢檢測的 ML 和計算機視覺算法。例如,蘋果公司通過 CoreML 提供這方面的支援,而谷歌有自己的 MLKit,用于 Android 和 iOS。

已經有一些應用使用了這些技術,大多集中在健身方面,例如統計深蹲次數,或在跳舞或做瑜伽時識别動作。我們很容易預測,在 SDK 層面上提供手勢和身體姿勢檢測支援将會促進開發者開發更多應用,将這些使用者界面方法擴充到更多領域。

語音驅動的使用者界面

雖然像 Alexa 這樣的裝置和像 Siri、Cortana 和 Google Assistant 這樣的智能助手已經讓用語音控制裝置的想法廣泛普及了,但原生語音驅動 UI 最近才開始受到重視。這種趨勢由最近幾個領域的機器學習進展所推動,包括語音識别、NLP、問題回答系統等。

語音驅動界面的好處之一是在許多場景下提供了用語音與機器 / 程式互動的便利性,比如開車、做飯、走路等場景。此外,語音對某些殘障人士士來說也是一個巨大的幫助。

許多技術能夠将語音驅動的使用者界面整合到移動應用和物聯網裝置中,它們可以基于雲計算模式,也可以使用嵌入模式。例如,谷歌有自己的文本到語音 API 以及 Dialogflow,而 AWS 則提供與 AWS IoT 內建的 Alexa 語音服務。

Web of Things

Web of Things 是物聯網領域的一個 Web 标準,旨在實作智能物件和基于 Web 的應用之間的通信。它試圖為物聯網裝置定義一種與其他裝置和網絡互操作的方式,進而為物聯網裝置的高度異質性世界提供一個答案。

雖然對 Web of Things 标準的定義已經進行了幾年時間,但大多數物聯網裝置仍有自己的管理界面和應用,這是事實。這些 UI 和應用都相容的是制造商選擇的底層網絡協定和标準。這導緻使用者處于一個不太理想的狀态,他們無法從一個接入點控制所有的裝置。此外,這些裝置之間也不能互相交流。

像 Mozilla WebThing 網關、AWS IoT 和其他一些解決方案有望加速物聯網協定的采用。

IOTA

IOTA 試圖利用區塊鍊技術來解決阻礙物聯網大規模采用的一些挑戰,包括異質性、網絡複雜性、較差的互操作性、資源限制、隐私問題、安全性等。

傳統的區塊鍊系統(如比特币和以太坊)使用的是一個區塊内有多個交易的順序區塊鍊,而 IOTA 使用的是多路徑有向無環圖(DAG),名為 Tangle。其他一些協定(如 Byteball 和 Avalanche)也使用 Tangle,并做了某些修改。這些協定的目标之一是在一種分布式方法中容納物聯網資料,其性能、可擴充性和可追溯性都比線性區塊鍊要好。

IOTA 被認為是一種不收費、無礦工和委員會、高度可擴充的區塊鍊解決方案。它承諾實作與其他基于區塊鍊的分布式賬本相同的優勢,包括去中心化、分布式、不可更改和信任等,但沒有後者浪費資源和較高交易成本的缺點。

智能眼鏡

在可穿戴計算領域,智能眼鏡似乎是下一場變革。事實上,關于智能眼鏡崛起的預測和預言已經流行好幾年了,至少從谷歌眼鏡開始就有了。這個項目沒有取得任何值得一提的成就,但有助于提高人們對與智能眼鏡的使用有關的潛在隐私問題的認識。

從人機互動的角度來看,智能眼鏡是推動衆多新方法和技術的一個巨大的遊樂場,包括語音和手勢識别、眼球追蹤和腦機接口等技術都将迎來機遇。

雖然一些制造商确實在智能眼鏡市場取得了相對成功(包括微軟 HoloLens、Oculus Rift、Vuzix 等),但這項技術似乎還在等待一個更有說服力的價值主張,來推動它像預測的那樣廣泛流行。盡管如此,人們對這項技術的興趣仍在增長,最近有幾家大公司進入了這一領域,例如 Facebook 的 Ray-Ban Stories,以及其他據傳正在開發新産品的公司,包括蘋果、小米等。

總 結

正如科技界經常發生的情況一樣,創新的速度總是令人驚訝,在移動和物聯網領域也是如此。我們試圖傳達一個非常廣泛的圖景,向大家展現這一領域目前的技術格局和來年的發展方向。隻有時間才能告訴我們,哪些最新的趨勢會繼續存在,哪些則會迅速消退或者化為烏有。我們 InfoQ 的團隊将繼續履行自己的使命,為移動和物聯網領域提供從業者至上的觀點和報道。

作者介紹

Sergio De Simone是一名軟體工程師。Sergio 作為一名軟體工程師已經工作了超過 15 年,參與了一系列不同的項目和公司,經曆了包括西門子、惠普和小型創業公司等工作環境。在過去的幾年裡,他的工作重點是移動平台和相關技術的開發。他目前在 BigML 公司工作,上司 iOS 和 OSX 的開發。

Abhijith Krishnappa是 Halodoc 的架構師,在移動應用和平台方面擁有超過 15 年的經驗。他目前在 Halodoc 負責各種平台的架構、技術戰略群組織發展。他喜歡創新工作,在美國專利商标局擁有 4 項專利。Abhijith 擁有芝加哥伊利諾伊理工學院的計算機科學碩士學位。

Tridib Bolar在印度加爾各答工作,是一家 IT 公司的雲解決方案架構師。他已經在程式設計領域工作了 18 年以上。他主要從事 AWS 平台的工作,作為副業也在探索 GCP。除了是雲計算無伺服器模式的崇拜者之外,他也是物聯網技術的愛好者。

https://www.infoq.com/articles/mobile-and-iot-trends-2022/

繼續閱讀