OpenHarmony面向万物智联的应用框架的思考与探索

2024-05-29 16:44

本文主要是介绍OpenHarmony面向万物智联的应用框架的思考与探索,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

应用框架,是操作系统连接开发者生态,实现用户体验的关键基础设施。业务的飞速发展促进了应用框架不断演进和变化。

01►业界应用框架的演进

应用是用户使用操作系统/设备的入口,应用框架则是应用开发和运行的基础设施。以移动端为例,一个典型的应用结构一般包括用户界面、业务逻辑、共享库以及包清单文件等部分。

1.用户界面以及相应的业务处理逻辑。这里主要包括构建用户界面所需的 UI(User Interface)组件,布局,动效,事件交互响应处理,所需的资源(图片/字体等),以及结合 UI 呈现的业务逻辑处理等。从运行时的维度来看,它主要对应了系统运行环境中的 UI 框架(含语言运行时),以及部分的系统能力 API (Application Programming Interface);

2.共享库。这里主要包括开发者封装好的 SDK(Software Development Kit),以及使用的三方库等。从运行时维度来看,它主要对应了系统能力 API 以及语言运行时,如果共享库涉及 UI 的话,还对应了 UI 框架;

3.包清单文件。这里主要包括应用包的结构描述,权限声明等,它主要对应了系统运行环境中的包管理,应用生命周期/权限管理/进程管理等。其中,UI 框架的主要组成如下图所示:

■开发模型:对开发者提供的开发范式、UI 组件/API 能力、编程语言等,重点体现的是开发效率与难易程度;

■运行框架:UI 界面渲染及交互的基础能力框架,将开发者的程序运行在具体系统平台上,包括应用整体渲染处理流程,语言逻辑执行流程,以及平台能力扩展机制,重点体现的是应用运行的性能体验;

■平台适配:承载框架的具体操作系统或平台的适配层。

一般而言,应用框架中的包管理、生命周期/权限管理,和具体的操作系统关联较紧,并相对稳定;能力 API 则是操作系统对设备能力的封装,主要影响应用使用设备的能力。UI 框架以及相应的编程语言则是影响用户体验(包括开发和运行体验)的关键要素,尤其随着移动平台的不断普及以及移动设备的差异,移动平台上的 UI 框架(含编程语言)是业界不断演进的重点领域。

近十年来,业界 UI 编程框架围绕着更好的开发效率,更好的运行体验以及适应更多的平台不断发展演进。其中有三个关键的时间节点:

1.2013 年,Facebook 发布的 React.js 第一次综合的将数据绑定,虚拟 DOM(Document Object Model)等机制引入前端开发框架设计中。开发者只需声明好相应的数据和 UI 的绑定,之后由框架来跟踪数据的变化,并通过虚拟 DOM 树的对比找出变化点,从而实现界面的自动更新,而无需开发者手动基于 DOM 编程。

2.2018 年,Google 发布的 Flutter 则是个重要的分界点。Flutter 融合了 Dart 语言,是第一个深度融合了语言的较为完整的声明式开发框架,实现了完全通过数据驱动的 UI 变更。另外,Flutter 通过基于 Skia 的自绘制引擎实现了高性能的跨平台的平台一致性的渲染能力,并提供了 Hot Reload 机制提升开发测试体验。不过,Flutter 的整体设计哲学偏向底层的灵活性 – 主要通过底层的细粒度的能力供开发者自由组合,另外,Google 对 Dart 语言的简洁度的改进较少,整体上开发的简洁度以及对用户的友好度不足。

3.2019 年,Apple SwiftUI 的推出,意味着主流 OS 的原生应用框架开始逐步往声明式开发方式迁移。SwiftUI 推动了 Swift 语言特性扩展实现了更加简洁自然的 UI 描述,并通过 XCode 开发工具的所见即所得的高效预览能力进一步提升开发效率。同时,SwiftUI 也是真正意义上开始通过一套框架,逐步统一 Apple 生态中的不同的设备/OS 上的应用开发。另外,2019 年 Google 将更简洁的 Kotlin 语言升级为 Android 首选的编程语言,并在 2021 年推出基于 Kotlin 的应用框架 Jetpack Compose, 同时结合开发工具 Android Studio 逐步往多设备以及跨平台演进。

■总体而言,移动端应用框架的演进包含以下几个关键特征:从命令式 UI 开发逐步演进到声明式 UI 开发;

■UI 和编程语言的融合从相对松散演进到逐步紧密;

■开发范围从单设备演进到多设备,从单平台演进到多平台。

02►万物智联下的应用框架的架构设计思考

目前,在万物智联的新场景下,智能设备的数量和种类越来越多,场景也越来越复杂,存在着新需求和新挑战:1.设备间具有不同形态:各设备的屏幕不同,其分辨率、长宽、形状、尺寸等均不相同;2.设备自身的交互方式不同:存在触控、键鼠、遥控、语音、3D 手势等多种形式;3.设备间具有不同的能力:各设备的 CPU、GPU、NPU、蓝牙等处理能力不同,且 RAM、ROM 的规格也不相同;4.设备之间的交互方式也不相同:例如无缝流转、协同等。此外,跨 OS 平台,动态内容部署能力也是重要的需求。

如何设计相应的应用框架来应对挑战呢?以下将从语言选型和框架设计两个维度来讨论。

2.1►►语言选型

如图所示的排行榜显示了在 2012 年至 2022 年的区间里,最活跃、热度最高的前 20 名编程语言,由图可以看出 JavaScript 和 TypeScript 的排名是遥遥领先的,本身拥有非常好的生态基础。但是,JavaScript 和 TypeScript 也有一定的缺陷,比如缺失基于类型系统的运行时优化,AOT 能力,精细化类型以及细粒度的并行化等。

2.2►►框架设计

相应的,现有框架如 Web 引擎、React Native、Flutter 等在各自领域都具备一定的优势,但也存在性能体验及其与生态难平衡、HTML+CSS+JS 三段式开发方式和业界领先的声明式开发(SwiftUI)相比有较大差距的问题。

2.3►►设计思考

尽管业界在语言、框架等各领域都持续进行了相关改进,但始终缺乏系统性的跨越。对于单平台应用框架来说,需要解决开发效率(开发范式、语言、基础库、三方库、调试调优、预览等)、性能体验(性能、内存、功耗、能力完备度等)以及跨设备(不同设备的 UI 适配和能力适配)等核心问题;对于跨平台应用框架来说,需要解决不同平台的代码复用度、性能和体验不一致等核心问题。此外,还需要考虑动态化内容部署机制和应用部署等因素。

03►ArkUI 的创新和实践

OpenHarmony 应用框架围绕如何解决上述问题,设计了 ArkTS 开发语言以及 ArkUI 开发框架,下面将从语言和框架两个维度进行介绍。

3.1►►OpenHarmony 生态开发语言-ArkTS

OpenHarmony 生态开发语言 ArkTS 在 JavaScript 和 TypeScript 的基础上,围绕着极简表达、极致性能的最终目标进一步演进。改进了 JavaScript 和 TypeScript 的运行时,优化了类型信息,扩展了声明式 UI 语法,以及轻量级并行能力。后续会持续演进分布式、严格类型等相关能力。

3.2►►ArkUI 开发框架

ArkUI 整体架构如图所示。最上层提供了自研声明式 UI 范式,也支持类 Web 范式;中间层为方舟编译器和运行时、声明式 UI 后端引擎以及渲染引擎,下层为平台适配层和平台桥接层。此外,ArkUI 开发框架还配套了相应的 IDE 开发工具以及工具链,提升开发体验。

ArkUI 的声明式范式通过语法扩展方法,提供了装饰器、自定义组件、UI 描述、状态管理、内置组件、属性方法以及事件方法等模块,可以根据用户需求灵活组合,从而形成定制化界面。ArkUI 的声明式范式具备简洁自然声明式语法,统一 UI 表达;多态组件/动态布局,简化多设备 UI 适配;多维度状态管理,简化数据传递 &UI 变更等关键特征。其中,多维度状态管理包括组件、页面、全局以及分布式等多个维度,数据与 UI 间的传递方式也支持单向以及双向传递,以满足应用开发的相关诉求。

ArkUI 的运行机制如图所示。其中,以 ArkTS 语言开发的源代码,经过编译工具链和 ArkUI 框架 API 编译,形成中间代码,再通过方舟运行时形成 ArkUI 框架运行时。在整个渲染设计上,ArkUI 提供了扁平化渲染管线、按需渲染、数据绑定以及基于 PGO 的 AOT 等创新能力,提升用户体验以及渲染效率。在跨设备的设计上,ArkUI 提供了响应式组件+响应式能力的响应式布局能力以及自适应组件+自适应能力的自适应布局能力,并且在视觉交互侧也通过分层参数和主题风格、多态组件以及交互归一等进行了交互能力的增强。此外,ArkUI 支持部署至百 K 级、M 级的轻量化设备,通过引擎轻量化改造以及基于目标平台进一步轻量化定制,实现跨设备能力适配。

3.3►►ArkUI 生态

衡量一个应用框架最终是否成功,关键还是要看它对应用开发者生态影响的深度和广度。下图描述了 ArkUI 生态构建思路概览。

如图所示,自底向上,整体生态构建分为四个维度。

1.  框架。这层主要是框架本身的特性完备度以及竞争力,并能够满足关键应用的需求(包括关键自研应用和关键三方应用)。尤其是要通过关键垂类应用(比如电商,地图,游戏等)的突破来进一步完善框架本身。另外,当多个主流 OS 平台会长时间并存的情况下,跨 OS 平台是核心竞争力诉求。框架必须具备相应的能力来进一步提升开发效率。

2.  工具。这层主要是配套开发工具的完备度以及三方主流开发工具的支持度。DevEco 作为 ArkUI 的核心配套工具,需要在整体开发工作流进一步完善,同步,也需逐步推进和三方开发工具的整合,包括 VSCode, 基于 Chrome 浏览器的调试等,进一步方便开发者。

3.  社区。这层主要是通过相应的开源社区(开放原子开源基金会等),以及三方开源库,组件仓库等建设,以及结合主流的组件仓库 NPM(Node Package Manager)等推动 ArkUI 的三方组件的进一步完善。

4.  标准。这层主要是通过标准化的参与,来构建中长线影响力。包括 W3C 相关的标准组织(ArkUI 类 Web 范式的进一步标准化,WebAssembly 的融合探索等),ECMAScript 标准组织(ArkTS 的增强语言特性的进一步标准化等),软件绿色联盟(应用质量标准,原子化服务标准的完善/互通等)。

总之,ArkUI 的整体生态推进策略是以关键应用为牵引,逐步夯实相应能力构建,通过工具、社区协同,并布局标准培育中长线影响力。

04►未来规划

在未来的工作中,ArkUI 开发框架团队将持续围绕生态和竞争力逐步演进,包括跨平台能力、分层对接能力、跨设备适配能力、渲染能力、并行化/资源调度能力等进行增强,不断提高用户体验。期待大家一起助力鸿蒙生态,持续创新,使其能够更好地赋能万物智联新场景。

如果大家想更加深入的学习 OpenHarmony 开发的内容,不妨可以参考以下相关学习文档进行学习,助你快速提升自己:

OpenHarmony 开发环境搭建:https://qr18.cn/CgxrRy

《OpenHarmony源码解析》:https://qr18.cn/CgxrRy

  • 搭建开发环境
  • Windows 开发环境的搭建
  • Ubuntu 开发环境搭建
  • Linux 与 Windows 之间的文件共享
  • ……

系统架构分析:https://qr18.cn/CgxrRy

  • 构建子系统
  • 启动流程
  • 子系统
  • 分布式任务调度子系统
  • 分布式通信子系统
  • 驱动子系统
  • ……

OpenHarmony 设备开发学习手册:https://qr18.cn/CgxrRy

在这里插入图片描述

OpenHarmony面试题(内含参考答案):https://qr18.cn/CgxrRy

这篇关于OpenHarmony面向万物智联的应用框架的思考与探索的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1014074

相关文章

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

关于如何更好管理好数据库的一点思考

本文尝试从数据库设计理论、ER图简介、性能优化、避免过度设计及权限管理方面进行思考阐述。 一、数据库范式 以下通过详细的示例说明数据库范式的概念,将逐步规范化一个例子,逐级说明每个范式的要求和变换过程。 示例:学生课程登记系统 初始表格如下: 学生ID学生姓名课程ID课程名称教师教师办公室1张三101数学王老师101室2李四102英语李老师102室3王五101数学王老师101室4赵六103物理陈

亮相WOT全球技术创新大会,揭秘火山引擎边缘容器技术在泛CDN场景的应用与实践

2024年6月21日-22日,51CTO“WOT全球技术创新大会2024”在北京举办。火山引擎边缘计算架构师李志明受邀参与,以“边缘容器技术在泛CDN场景的应用和实践”为主题,与多位行业资深专家,共同探讨泛CDN行业技术架构以及云原生与边缘计算的发展和展望。 火山引擎边缘计算架构师李志明表示:为更好地解决传统泛CDN类业务运行中的问题,火山引擎边缘容器团队参考行业做法,结合实践经验,打造火山

自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用

自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用。如果你看不懂,请留言。 完整代码: <!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><ti

探索蓝牙协议的奥秘:用ESP32实现高质量蓝牙音频传输

蓝牙(Bluetooth)是一种短距离无线通信技术,广泛应用于各种电子设备之间的数据传输。自1994年由爱立信公司首次提出以来,蓝牙技术已经经历了多个版本的更新和改进。本文将详细介绍蓝牙协议,并通过一个具体的项目——使用ESP32实现蓝牙音频传输,来展示蓝牙协议的实际应用及其优点。 蓝牙协议概述 蓝牙协议栈 蓝牙协议栈是蓝牙技术的核心,定义了蓝牙设备之间如何进行通信。蓝牙协议

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

探索Elastic Search:强大的开源搜索引擎,详解及使用

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引入 全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选,相信大家多多少少的都听说过它。它可以快速地储存、搜索和分析海量数据。就连维基百科、Stack Overflow、

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述。以下是从不同角度对气象站的种类和应用范围的介绍: 一、气象站的种类 根据用途和安装环境分类: 农业气象站:专为农业生产服务,监测土壤温度、湿度等参数,为农业生产提供科学依据。交通气象站:用于公路、铁路、机场等交通场所的气象监测,提供实时气象数据以支持交通运营和调度。林业气象站:监测林区风速、湿度、温度等气象要素,为林区保护和

PyTorch模型_trace实战:深入理解与应用

pytorch使用trace模型 1、使用trace生成torchscript模型2、使用trace的模型预测 1、使用trace生成torchscript模型 def save_trace(model, input, save_path):traced_script_model = torch.jit.trace(model, input)<

哺乳细胞重组表达人鼠嵌合抗体:制备与应用

重组抗体是一类具有广泛应用价值的蛋白质,在药物研发和生物医学研究中发挥着重要作用。本文将介绍重组抗体的表达方式,重点关注嵌合抗体制备和哺乳细胞重组表达人鼠嵌合抗体的技术原理和应用。 重组抗体表达的原理和方法 重组抗体表达是通过将人或动物源的免疫球蛋白基因导入表达宿主细胞,并使其表达出特异性抗体蛋白质。常用的表达系统包括细菌、哺乳细胞和真核微生物等。 嵌合抗体制备的步骤和优势 选择适当的抗原