关键要点
- 由于 SwiftUI 和 Jetpack Compose 的日益成熟和采用,构建声明式 UI 显然已成为 iOS 和 Android 世界的一种趋势。
- 移动应用程序的跨平台故事也在缓慢而稳定地显示出对原生跨平台工具包(如 Dart Flutter、Multiplatform Kotlin 和 Compose Multiplatform 以及适用于 Android 的 Swift)的兴趣和努力不断增长。这总结了在桌面上运行移动应用程序的可能性带来的新机会。
- 我们在移动应用程序和可穿戴领域看到的另一个趋势是依赖 AR/VR 以及机器学习和计算机视觉的高级 UI。此外,我们看到了一种新的基于手势和姿势的 UI 的新生范例,以及与所谓的智能眼镜相关的日益增长的兴趣和价值主张。总体而言,这有望实现全新的用户体验。
- 移动应用程序和物联网设备的日益复杂性激发了人们对旨在确保使用移动 DevSecOps 和可靠性工程实践及时、安全地部署新功能的方法的浓厚兴趣。同样,围绕“平台团队”的理念组织开发团队的想法正在获得认可,尤其是对于大型项目。
- 通过从 ML-in-the-Cloud 模型转变为 Edge-ML 甚至设备上 ML,物联网设备变得越来越“智能”,这可能在减少延迟和数据隐私方面提供巨大的好处。
- 仍然在物联网世界中,WebOfThings 提案试图为能够相互无缝通信的新一代设备铺平道路。 IOTA 提供了利用区块链促进物联网技术大规模采用的视角。
InfoQ 最引人注目的功能之一是我们的主题图,它综合了我们对不同主题如何在技术采用曲线中叠加的理解。当需要从编辑的角度决定我们想要涵盖的内容时,它们作为优先考虑不同和竞争利益的指南非常有用,但我们也相信分享它们可以帮助我们的读者更好地了解当前和未来的技术前景并帮助 告知他们的决策过程。
主题图建立在 Geoffrey Moore 在他的著作“Crossing the Chasm”中开发的著名框架之上。Moore 的框架描述了五个阶段,通过“创新者”、“早期采用者”、“早期多数”来描述技术采用如何随时间演变 、“晚期多数”和“落后”阶段。
InfoQ 倾向于识别那些属于创新者、早期采用者和早期大众阶段的想法和技术。我们还努力承认我们认为已经进入后期多数的主题。您通常会在 InfoQ 上找到大量关于后期多数和落后阶段的内容,作为我们之前报道的产物。
对于我们的读者来说,拥有五个不同的阶段意味着他们可以更轻松地调节自己的注意力并自己决定现在应该探索什么,或者等待它如何展开。
本报告总结了 InfoQ 编辑团队和软件行业的几位从业者对我们统称为移动和物联网领域的多个领域的新兴趋势的看法。这是一个相当异构的空间,包括从智能手机到智能手表、从物联网设备到智能眼镜、语音驱动助手等的设备和小工具。
所有这些设备的共同点在于它们都是“伪装的连接计算机”。在某些情况下,它们的计算能力已经发展到与个人电脑相当的水平,例如智能手机和平板电脑。在其他情况下,它们的计算能力以及它们提供的功能可能会显得更加受限。在所有情况下,我们都连接了具有一些特殊外形的设备。作为将它们结合在一起的附加元素,我们还可以考虑人机交互 (HCI) 问题。事实上,虽然该领域中不同类别的设备遵循不同的 HCI 范式,但它们的共同点是远离软件行业其他领域普遍存在的键盘鼠标或文本点击范式。
属于移动和物联网领域的所有设备都有一个重要的硬件组件,使它们成为可能或有用。然而,我们的报告不会过分关注硬件方面,而是考虑软件开发角度的影响,以符合 InfoQ 的使命。例如,虽然可折叠设备肯定会带来很多技术创新,但我们会对如何对其 UI 进行编程更感兴趣,这会导致声明式用户界面的兴起,等等。
后期多数和落后者
在后期多数阶段,很容易确定在移动领域构建应用程序和解决方案的一些行之有效的方法。它们代表了被广泛接受的、几乎标准化的完成事情的方式,我们完全理解利弊是什么,为什么以及它们在哪里是有益的,等等。
例如,原生移动应用程序就属于这一类。这意味着使用 Android 或 iOS 提供的原生 SDK 以及它们选择的相应编程语言(即 Kotlin/Java 或 Swift/Objective-C)来构建移动应用程序。根据 AppBrain 的数据,超过 80% 的前 500 名 Android 应用程序是用 Kotlin 编写的,超过 75% 的所有 Android 应用程序使用原生 Android 框架。
我们认为,使用混合应用程序开发框架作为跨平台的一种方式应该被视为属于落后阶段。混合应用程序是嵌入在 WebView 或类似组件中并使用 Web 技术编写的移动应用程序。这有两个主要动机:使用独特的堆栈来开发您的移动和 Web 应用程序,以及创建使用单一代码库在所有移动平台上运行的移动应用程序。这并不意味着混合应用程序在今天不适用。相反,这意味着有替代方法可以解决这两个问题,由于它们的优势,它们正在获得更多关注,例如 React Native 和 Flutter,稍后将讨论。
继续关于移动应用程序开发的主题,两种已经成熟且属于后期多数阶段的做法是使用持续集成/持续部署工具和利用设备群进行测试。例如,像 fastlane 这样的工具在很大程度上帮助开发人员从繁琐的工作中解脱出来,例如拍摄快照、测试版和通过相关应用商店进行预审部署等。同样,有许多公司提供对设备场的访问来运行您的应用程序自动化测试,鉴于市场上大量不同的智能手机,这似乎是确保您的应用程序可靠性的合理方法。
作为关于晚期大众阶段的最后一点,我们还考虑了晚期大众主题,如 Siri/Alexa/Google 助理设备、面向健身的可穿戴设备和智能家居。这种选择与这些技术今天的使用范围并没有真正的关系,而是与我们对它们的一般理解以及它们在提供的那种特性方面已经达到某种成熟状态的事实有关.
早期多数
在早期的多数阶段,我们看到技术和方法已经在支持开发人员的需求方面取得了长足的进步,但尚未占主导地位或在某种程度上仍在不断变化。
声明式用户界面 (SwiftUI)
一个很好的例子是使用 SwiftUI 为 iOS 原生应用创建 UI。SwiftUI 已经到了第三次迭代,它是一个现代的声明式框架,它依赖于 Swift 启用的一些高级语法特性,为 iOS 开发人员提供了全新的体验。
SwiftUI 确实是完全声明式和反应式的。使用 SwiftUI,您无需逐个构建 UI,而是使用文本抽象来描述它的外观并定义其每个组件如何与您的模型交互。得益于其设计,SwiftUI 在 Xcode 中实现了交互式开发风格,您可以在其中预览 UI 并实时调整其参数,而无需编译完整的应用程序。
就 Storyboard 或 UIKit 编程而言,SwiftUI 无疑具有令人信服的价值主张,如果您开始一个新的 iOS 项目,很难不将其评估为候选 UI 框架。但这并不意味着 Storyboard 和 UIKit 在新应用程序中没有位置,只是 SwiftUI 在技术上日趋成熟,采用率不断提高,并且似乎正朝着成为 iOS UI 开发事实上的方式的方向发展。
原生跨平台应用
在跨平台移动应用方面,有很多方法,包括 React Native、Flutter 和 Xamarin,应该被认为是早期的主流。当然,很难想象 React Native、Flutter 或任何其他现有的跨平台解决方案会轻易取代原生开发。因此,将它们纳入早期的大多数意味着它们正在跨平台移动应用程序开发领域迅速取得进展,主要是以牺牲混合应用程序方法为代价。
事实上,如果你喜欢这种方法的原因是利用你在 Web 堆栈(即 HTML、CSS、JavaScript 和相关工具)上的投资,那么当你可以拥有 React Native 时,很难证明使用混合方法是合理的,它为您提供原生、性能更高的用户体验的优势。对于 Xamarin,我们可以应用相同的推理,只是在 Microsoft 技术堆栈而非 Web 的保护下。
另一方面,如果您的动机是通过只编写一次应用程序来节省开发工作量,那么您也有可能使用 Flutter,这不会为您提供原生用户体验,但您可能更喜欢其他考虑因素,包括使用编译的、严格类型的语言。
基于云的机器学习
我们在此阶段还包括使用基于云的机器学习服务,例如您可以在 Snapchat、Tinder 和许多其他应用程序中找到的应用程序,例如,对图片进行分类或检测在云上进行计算的对象并仅传输结果返回应用程序。
物联网网络安全
在物联网和工业物联网方面,我们认为网络安全是早期的主流。理想情况下,我们希望在晚期大众阶段拥有此功能,但令人遗憾的是,家电安全的前景,包括大多数人用来连接互联网的无处不在的 ADSL 路由器,并不能让人放心。除此之外,通过自动固件更新、安全启动和通信以及用户身份验证来保护家用电器和物联网设备的重要性已广为人知,并且正在努力将所有这些付诸实践。
受控推出(Controlled rollout)
说到移动应用程序部署,一些已经开始使用的技术是功能标志、增量发布和 A/B 测试,两者都在 Google Play 商店中得到支持,以及应用程序的强制更新。
这些都属于受控推出的类别,旨在降低与新部署相关的风险。事实上,与服务器或 Web 应用程序不同,移动应用程序中的错误一旦发布就很难恢复。
功能标志可以使用可以启用或禁用特定功能的特定标志来控制应用程序提供的一组功能。强制更新允许开发人员淘汰旧版本的应用程序,而增量发布有助于减少潜在风险更改对用户群子集的影响。
小程序
同样流行的是所谓的 MiniApps,也称为 SuperApps 或 Mobile MicroFrontends,它们是作为原生应用程序的插件或扩展开发的与平台无关的应用程序。由微信、支付宝等应用程序普及,它们通常实现为 PWA 或 React 原生模块,并依靠其原生容器通过微平台或微应用桥提供对 OS 级功能的访问。
MicroApps 的主要好处是它们独立于 App Store 和 Play Store 的审查/发布过程,从而降低了开发成本和时间。
移动平台团队
核心组件平台化的需求在任何软件开发中都是必不可少的,移动应用程序也不例外。例如,日志记录、分析、架构框架等都属于组件类别,这些组件自然会导致自己创建一个平台,在该平台上构建不同应用程序所需的其余功能。
在这种情况下,在构建这样一个平台时,考虑具体的职责就具有相关性。因此,预测客户需求、定义标准最佳实践、选择正确的技术堆栈、评估工具等将成为专门平台团队的责任。
这种方法承诺提供清晰的抽象,同时指导整个组织保持一致的开发风格和基本的护栏。它肯定需要一个足够大的移动团队才能使这种方法可行,就像优步、Twitter、亚马逊等几个采用它的大型组织一样。
早期采用者
当谈到早期采用者阶段时,我们指的是软件开发的技术和方法,这些技术和方法正在获得更多关注,并为开发人员开辟了新的可能性。
设备端机器学习、Edge-ML
首先,我们想在这里提到设备上或边缘机器学习,您实际上是直接在移动设备或边缘上运行预训练的 ML 模型,而不是在云上运行它。
得益于 TensorflowLite、PyTorch Mobile 等解决方案,这种方法越来越受欢迎。这些解决方案显着降低了与云请求相关的开销和延迟,并支持以实时预测为关键的全新应用类别。
另一个重要的优势是用户数据永远不会离开设备,这也可能是许多或用例中的关键问题,例如健康应用程序。
增强现实和虚拟现实
增强现实和虚拟现实的应用也在增长。特别是,iOS 和 Android 都为许多 AR 功能提供了强大的支持,例如表面和平面检测、遮挡、面部跟踪等。
AR 的使用并不普遍,但肯定会引起越来越多的兴趣,因为它不需要专门的硬件,而且集成到应用程序中相对简单。另一方面,虚拟现实主要针对专门的耳机,如 Oculus、索尼 PlayStation VR、HP Reverb 等,它们主要专注于游戏。这个领域的新动力也可能来自智能眼镜的发展。
语音驱动的移动应用程序和家用电器
AR 和 VR 都促进了对新 HCI 范式的探索,这些范式更适合归类为创新者阶段。但是,由于基于语音的界面的发展,新的 HCI 方法在早期多数阶段也看到了一些吸引力。
在这种情况下,我们不是在谈论像 Alexa 或作为操作系统接口运行的 Siri/Google Assistant 之类的专用设备。相反,我们指的是将语音功能集成到移动应用程序和物联网设备本身中。
在桌面上运行移动应用程序
借助 Apple Catalyst 等技术,移动开发人员可以利用的另一个机会是在桌面上运行他们的移动应用程序。特别是一些系统 macOS 应用程序是由 Apple 通过 Catalyst 和 Xcode 实现的,并且 App Store 支持它。微软还为 Windows 10 上的 Android 应用程序提供了一种类似的解决方案,即应用程序在手机上运行并镜像到桌面计算机的窗口内。
集中记录
集中式日志记录在此也值得一提,它旨在将系统生成的所有日志收集到一个存储中。集中式日志记录的使用对应于基于云的系统的一个重要趋势,但这种方法也越来越多地用于移动应用程序。
应用于移动应用程序的集中日志记录的主要优势之一是它有助于实时查看客户应用程序发生的情况,从而有助于解决他们的问题并提高客户满意度。
包括 AWS Central Logging、SolarWinds Centralized Log Management 等在内的众多服务支持采用这种做法。
持久连接
作为关于早期采用者阶段的最后一点,我们提到了在客户端和服务器之间使用持久连接。最初由消息应用程序普及,现在更多地用于电子商务应用程序,例如 Halodoc 和 GoJek,以及移动和其他领域。
持久连接倾向于取代推送通知和网络轮询,旨在减少访问延迟和功耗。
在 MQTT 和 gRPC 等轻量级协议方面,物联网设备也出现了类似的趋势。
一个需要密切观察的有趣子趋势是最终创建标准化协议和/或专门的第三方解决方案,以使持久连接像即插即用一样简单。
声明式用户界面(Jetpack Compose)
最近达到 1.0 的 Jetpack Compose 是 Google 的基于 Kotlin 的 Android 声明式 UI 框架。
关于声明式 UI 为开发带来的好处,Jetpack Compose 与 SwiftUI 的情况大致相同,如上所述。然而,SwiftUI 已经进行了第三次重大迭代,iOS 开发者社区已经在很大程度上采用了它,而 Jetpack Compose 仍处于采用的初始阶段。
创新者
跨平台移动应用
虽然仍然是少数,但跨平台应用程序肯定代表了一组开发要求和约束的答案。从历史上看,混合 Web 应用程序以及最近的 Reach Native、NativeScript 和 Flutter 等方法都试图为它们提供解决方案。
最近尝试解决构建跨平台移动应用程序的问题的代表是 Swift for Android 和 Multiplatform Kotlin 等项目。这种方法会引导您选择一个参考平台,即 iOS 或 Android,并使用其技术堆栈为您的参考平台构建您的应用程序,并尽可能为另一个平台构建您的应用程序。
在 UI 方面,Swift for Android 提供了 Crystal,一个用于构建原生 UI 的跨平台、高性能图形引擎。使用 Multiplatform Kotlin,您可以选择使用 Multiplatform-Compose,但它仍处于高度试验阶段。JetBrains 最近发布了名为 Compose Multiplatform 的测试版,旨在将声明式 UI 编程引入 Multiplatform Kotlin,但尚不支持 iOS。
虽然这两种解决方案都提供了良好的语言互操作性,因此您肯定可以跨两个平台共享您的代码库的一部分,但对于依赖于操作系统的代码,您的里程可能会有所不同。例如,适用于 Android 的 Swift 提供了 Fusion,它是一组自动生成的 Swift API,在某种程度上提供了对 Android API 的惯用访问。
移动可靠性工程(MRE)
在移动应用程序上大规模持续交付功能是一项真正的挑战。多个团队必须相互协调以交付功能,并采用简化的最佳实践、流程和原则。
软件可靠性工程 (SRE) 的诞生旨在实现大规模分布式系统的可靠性,并且最近也获得了作为移动应用程序有用方法的可见性。
MRE 仍处于采用的初期阶段,旨在促进整个组织采用最佳实践。到目前为止,一些成熟的组织和初创公司在各种工具、流程和组织动态的帮助下遵循这种方法,尽管没有明确表示,目的是使功能交付成为一个更敏捷的过程。
基于手势和姿势的 UI
AR 和 VR 都为与应用程序和环境交互提供了新的可能性,这导致了人机交互的新方法,特别是使用手势识别或 2D 姿势检测的可能性。虽然我们将 AR 和 VR 归类为早期采用者阶段,但也有一种趋势是将这些 HCI 方法引入与 VR 或 AR 无关的移动应用程序。
这些方法的基础是用于手和人体姿势检测的 ML 和计算机视觉算法。例如,Apple 通过 Core ML 提供支持,而 Google 有自己的适用于 Android 和 iOS 的 MLKit。
已经存在许多使用这些技术的应用程序,主要专注于健身,例如计算深蹲或运动技能,如跳舞或做瑜伽。很容易预测,在 SDK 级别提供手势和身体姿势检测可能只会促进其他应用程序的开发,将这些 UI 方法扩展到更多领域。
语音驱动的 UI
虽然 Alexa 等设备以及 Siri、Cortana 和 Google Assistant 等智能助手已经普及了使用语音控制设备的想法,但本地语音驱动的 UI 直到最近才开始受到关注。这一趋势是由最近机器学习在多个领域取得的进展推动的,包括语音识别、NLP、问答系统等。
语音驱动界面的好处之一是在许多不同的环境中使用您的声音与机器/程序进行交互很方便,例如驾驶、烹饪、步行等。此外,语音可以为患有某些特定疾病的人提供巨大的帮助。残疾。
许多不同的技术支持将语音驱动的 UI 集成到移动应用程序和物联网设备中,这些技术要么基于基于云的模型,要么使用嵌入式模型。例如,谷歌有它的文本转语音 API 和 Dialogflow,而 AWS 则提供与 AWS IoT 集成的 Alexa 语音服务。
Web物联网
Web of Things 是物联网的 Web 标准,用于实现智能事物和基于 Web 的应用程序之间的通信。它试图通过定义一种让物联网设备与其他设备和 Web 互操作的方式来为物联网设备的高度异构世界提供答案。
虽然物联网标准的定义已经持续了好几年,但大多数物联网设备仍然拥有自己的管理界面和应用程序。这些 UI 和应用程序中的每一个都了解每个制造商采用的低级网络协议和标准。这导致用户无法从单个接入点控制所有设备的情况不太理想。此外,设备不能相互交谈。
Mozilla WebThing 网关、AWS IoT 等解决方案有望加速 Web of Things 协议的采用。
IOTA
IOTA 试图利用区块链技术来解决阻碍物联网大规模采用的一系列挑战,包括异构性、网络复杂性、互操作性差、资源限制、隐私问题、安全性等。
比特币和以太坊等传统区块链系统使用一系列顺序区块链,在一个区块内包含多个交易,而 IOTA 使用名为 Tangle 的多路径有向无环图 (DAG)。其他一些协议,如 Byteball、Avalanche,也使用 Tangle 并进行了某些修改。这些协议的目标之一是在分布式测量中容纳物联网数据,与线性区块链相比,具有改进的性能、可扩展性和可追溯性。
IOTA 被定位为一种免费、矿工和无抵押、高度可扩展的区块链解决方案。它承诺实现与其他基于区块链的分布式账本相同的好处,包括去中心化、分布、不变性和信任,但不会出现资源浪费和交易成本的缺点。
智能眼镜
在可穿戴计算方面,智能眼镜似乎是下一件事情。事实上,关于智能眼镜兴起的预测和预感已经存在多年,至少从谷歌眼镜开始,该项目未能取得任何重大成功,但有助于提高人们对与智能眼镜相关的潜在隐私问题的认识。使用智能眼镜。
从人机交互的角度来看,智能眼镜是推动新方法和技术发展的巨大领域,包括语音和手势识别、眼动追踪和脑机接口。
虽然许多不同的制造商在他们的智能眼镜方面取得了相对成功,包括 Microsoft HoloLens、Oculus Rift、Vuzix 等,但该技术似乎正在等待一个更引人注目的价值主张,这可能使其更加普及。预测想拥有它。尽管如此,对这项技术的兴趣仍在增长,最近有几家大公司进入了这一领域,例如,Facebook 的 Ray-Ban Stories 以及其他传闻正在开发新产品的公司,包括苹果、小米等。
结论
正如科技界经常出现的情况一样,在移动和物联网领域,创新发生的速度也非常快。我们试图传达一个非常广泛的图景,即目前的技术格局以及明年的发展方向。只有时间会告诉我们哪些最新趋势会继续存在,哪些会迅速消失或化为乌有。我们在 InfoQ 的团队将继续履行其使命,即提供从业者优先的视角并覆盖移动和物联网领域。