乐趣区

关于harmonyos:ArkUI更高效的框架设计

上期文章咱们讲到了 ArkUI 的三大个性,同时提到了 ArkUI 是一套用于构建 HarmonyOS 利用界面的 UI 开发框架,本期咱们将从架构设计上来聊聊 ArkUI 的设计理念。

ArkUI 架构图

从架构图能够看出,ArkUI 的设计理念是在端到端整条技术门路设计上建设了一整套残缺的分层机制。接下来咱们顺次分层为大家介绍。

ArkUI 框架的“前驱”——【前端层】

前端层

架构的第一层【前端层】又称【申明式 UI 前端】,这一层蕴含了上期文章介绍的极简的 UI 信息语法标准,UI 组件以及 ArkTS 语言特有的状态管理机制。

独立的封装

此外,ArkUI 对罕用的 UI 组件的构造、款式、事件三大属性进行了独立的封装,内置于 SDK 中。开发人员能够依据我的项目设计需要,调用与设计匹配的组件函数,传入相应的参数来实现 UI 形容。

申明式 UI 信息语法

同时应用申明式 UI 信息语法,能够让数据和 View 进行联动更新,华为自研语言 ArkTS 为这种联动刷新提供了多维度的状态管理机制,开发人员通过对数据进行正文标记,正当控制数据对应 View 的更新作用范畴。

三种更新形式

如: 只独自更新、父子单向更新,父子双向同步更新等。到这里,第一层【前端层】就介绍结束了。

ArkUI 框架的“外围局部”——【核心层】

接下来咱们来到了框架的第二层【核心层】。

核心层

这一层次要蕴含两局部【方舟编译运行时】和【申明式 UI 后端引擎】。

方舟编译运行时

【核心层】的第一局部是【方舟编译运行时】,它波及到开发环境和终端环境

运行流程图

【方舟编译运行时】的流程蕴含 4 步

跨语言调用

第 1 步是跨语言调用 ArkUI 在开发我的项目时反对多语言开发,为不同的开发语言互相通信提供了通道,例如:提供了 JS/TS 与 C / C++ 交互的 NAPI 机制。

新语言 ArkTS

而在 ArkUI 反对的多种语言中,ArkTS 是以 TS 为语法根底的利用编程语言。

类型零碎

在预编译的过程中,数据的动态类型信息会携带在生成的对立字节码中,后端编译的时候能间接利用这种类型信息减速机器码的执行,防止了运行时收集对象造成的额定开销,同时这些类型信息被用于 AOT 编译过程,使得利用启动时就能够执行 AOT 生成的优化机器码取得高性能运行体验。

对立字节码

第 2 步是对立字节码实现我的项目开发将我的项目进行打包时,方舟编译器将编写的高级编程语言通过内置的工具链,编译为一种与运行设施和零碎无关的可移植介质,这种介质就叫对立字节码(又称方舟码,abc 文件),这个过程也称为字节码预编译。

对立字节码

第 3 步是机器码和安装包字节码在设施上能够通过解释执行或者编译后执行的形式运行,对于执行性能要求高的局部字节码调用 AOT 生成机器码。

最初,利用经验了开发、字节码预编译、AOT 动态优化编译、打包签名就造成了一个残缺安装包,这样一来就终于能够在设施上运行预览了。

GC 机制

第 4 步是 GC(Garbage Collection)机制

搭载 HarmonyOS 零碎的设施

比照其余设施,搭载 HarmonyOS 零碎的设施上运行利用时会显得特地晦涩,这里的机密是什么呢?

GC 机制技术问题

因为在传统的操作系统中,基于 Tracing 的 GC 存在着 STW(Stop The World)阶段暂停工夫较长的问题。

STW

当手机内存资源不够用的时候,传统操作系统虚拟机就会号召 GC(Garbage Collection)封闭公路,暂停手机运行的所有线程,期待它回收内存空间。

STW 暂停工夫较长

而且 STW(Stop The World)阶段的暂停时间段较长,开发者无奈准确管制和干涉,在性能较差的手机上会体现出较强的“间歇性”卡顿。这就好比行驶在市区路线的车辆,在通过每个路口都遇到了较长时间的红灯期待,一路走走停停,行驶体验感较差。

HPP GC

而方舟编译运行时在内存回收方面从新设计,基于 Tracing GC 推出了高性能内存回收技术——HPP GC(High Performance Partial Garbage Collection)。HPP GC 综合了多种 Tracing GC 算法,依据不同对象区域,采纳不同的回收形式。这种 GC 机制能够缩短 STW 阶段的时长,用在市区驾驶车辆来比喻,就是缩短了车辆在路口红灯期待的工夫,减少了行驶的体验感。

HPP GC

接下来咱们来看核心层的第二局部——申明式 UI 后端引擎。

它在 HarmonyOS 零碎终端运行时,由 C ++ 编写 UI 的根本组件、布局、动效和事件组成。供 UI 前端开发人员调用。

渲染管线

渲染管线是位于运行时外部的一个独立的渲染线程,它负责摆布 CPU 多线程地去工作,让 CPU 为 GPU 提供更多的渲染数据,最大额度的调取 GPU 的能力。

到此,【核心层】已全副介绍结束。

通过本期 ArkUI 架构的学习,置信大家曾经理解方舟编译运行时的技术和流程,也对 ArkUI 的设计理念有了根底的意识。完整版的内容可查看上方的视频,咱们下期再见~

退出移动版