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 应用不同的是,移动应用一旦发布出去,其中的错误就很难恢复。
特性标志使用特定的标志来控制应用所提供的特性集,这些标志可以用来启用或禁用特定的特性。强制更新允许开发者淘汰旧版本的应用,而增量发布可以有效减少具有潜在风险的变更对用户群的影响。
迷你应用
同样受欢迎的还有所谓的迷你应用,也被称为超级应用或移动微前端,它们是作为原生应用的插件或扩展而开发的与平台无关的应用。迷你应用主要由微信、支付宝等应用推广,通常实现为 PWA 或 React 原生模块,并依靠其原生容器,通过微平台或微应用桥提供对系统级特性的访问能力。
微应用的主要好处是它们无需经过 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。除了是云计算无服务器模式的崇拜者之外,他也是物联网技术的爱好者。
公众号推荐:
AGI 概念引发热议。那么 AGI 究竟是什么?技术架构来看又包括哪些?AI Agent 如何助力人工智能走向 AGI 时代?现阶段营销、金融、教育、零售、企服等行业场景下,AGI应用程度如何?有哪些典型应用案例了吗?以上问题的回答尽在《中国AGI市场发展研究报告 2024》,欢迎大家扫码关注「AI前线」公众号,回复「AGI」领取。
评论