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 為 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 應用不同的是,移動應用一旦發布出去,其中的錯誤就很難恢復。
特性標誌使用特定的標誌來控制應用所提供的特性集,這些標誌可以用來啟用或禁用特定的特性。強制更新允許開發者淘汰舊版本的應用,而增量發布可以有效減少具有潛在風險的變更對用戶群的影響。
同樣受歡迎的還有所謂的迷你應用,也被稱為超級應用或移動微前端,它們是作為原生應用的插件或擴展而開發的與平台無關的應用。迷你應用主要由微信、支付寶等應用推廣,通常實現為 PWA 或 React 原生模塊,並依靠其原生容器,通過微平台或微應用橋提供對系統級特性的訪問能力。
微應用的主要好處是它們無需經過 AppStore 和 PlayStore 的審查 / 發布流程,從而節約了開發成本和時間。
核心組件的平台化需求在任何軟件開發領域中都是必不可少的,移動應用也不例外。例如,日誌、分析、架構框架等都屬於組件的範疇,這些組件自然會形成一個平台,讓開發人員在此基礎上構建各種應用所需的其他特性。
在這種場景中,在構建這樣一個平台時應該要考慮到具體的責任分配。預測客戶需求、定義標準的最佳實踐、選擇正確的技術棧、評估工具等等工作,都將成為專門的平台團隊的責任。
這種方法有望提供清晰的抽象,同時指導整個組織保持一致的開發風格和基本的邊界。肯定需要有一個足夠大的移動團隊才能讓這種方法行之有效。幾個採用這種方法的大型組織,比如 Uber、Twitter、Amazon 等組織就是成功案例。
對於早期採用階段,我們指的是那些正在聚集更多注意力,並為開發者帶來全新可能性的軟件開發技術和方法。
首先,我們想在這裡提到的說設備端或邊緣機器學習,也就是說你實際上是直接在移動設備或邊緣上運行預先訓練好的 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 等輕型協議。
一個值得密切觀察的次級趨勢是,業界正在建立標準化的協議和 / 或專門的第三方解決方案,目的是讓持久連接具備即插即用的便利性。
最近達到 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 的常用支持。
在移動應用上持續大規模地提供特性是一個真正的挑戰。這需要多個團隊高度協作來交付特性,並採用簡化的最佳實踐、流程和原則。
軟件可靠性工程(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 標準,旨在實現智能物件和基於 Web 的應用之間的通信。它試圖為物聯網設備定義一種與其他設備和網絡互操作的方式,從而為物聯網設備的高度異質性世界提供一個答案。
雖然對 Web of Things 標準的定義已經進行了幾年時間,但大多數物聯網設備仍有自己的管理界面和應用,這是事實。這些 UI 和應用都兼容的是製造商選擇的底層網絡協議和標準。這導致用戶處於一個不太理想的狀態,他們無法從一個接入點控制所有的設備。此外,這些設備之間也不能相互交流。
像 Mozilla WebThing 網關、AWS IoT 和其他一些解決方案有望加速物聯網協議的採用。
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/
點擊底部閱讀原文訪問 InfoQ 官網,獲取更多精彩內容!
發現競爭對手代碼中的低級Bug後,我被公司解僱並送上了法庭
我不認為Flutter比React Native好
以反戰為名,百萬周下載量node-ipc包作者進行供應鏈投毒
估值超百億的UI設計軟件封禁中國大疆,國產軟件火速發聲
點個在看少個 bug👇