HarmonyOS 通过组件化和小型化等方面来支持多种终端按需弹性部署,能够适配不同类型的硬件资源和功能需求。支持通过编译链关系去自动生成组件化的一个依赖关系,形成组件树依赖图,支持产品系统的便捷开发。具体来讲它在哪几些方面做到了弹性部署呢?
下图全视角展现了 HarmonyOS 的一个架构,它遵循的是分层架构设计。从下而上它依次为内核层、系统服务层、框架层和应用层。系统功能按照:系统、子系统功能模块逐级展开,在多设备部署场景下,支持根据实际需求去检查某些非必要的子系统或者功能模块。
首这是一张内核层的示意图。 HarmonyOS 的内核层主要分为两个大的部分,第一部分是内核子系统,第二部分是驱动子系统。在内核子系统里面, HarmonyOS 采用的是多内核的一种设计,支持针对不同资源受限的设备,选用适合 OS 内核, 内核抽象层,它会通过屏蔽多内核的差异,对上层提供基础的内核能力,包括进程和线程的管理、内层的管理、文件系统、网络管理和外设管理等等。
从这个示意图上里也可以看到它支持的内壳目前是有Linux,还有 LiteOS 驱动子系统,它是硬件驱动框架,是 HarmonyOS 硬件生态开放的基础,提供了统一外设访问能力和驱动开发管理框架。
以下是整个系统服务层的一些核心能力的一个集合。从图上可以看到包含了以下几个部分,首先是系统的基本能力,即系统级。这些能力,它是为分布式应用在 HarmonyOS 多设备上运行、调度、迁移等操作提供了一些基础的一些能力。它是由分布式软总线、分布式数据管理、分布式任务调度、方舟多语言运行时、公共基础库、多模输入、图形安全、 AI 等子系统组成。其中方舟运行时提供了C、 C++、 JS 多语言运行时和基础系统库,也为使用方舟编译器静态化的 Java 程序提供运行时。
在基础软件服务子系统级里面,它是为 HarmonyOS 提供公共的、通用的软件服务。由事件通知电话、多媒体、DFXD 子系统、 MSDPDB 等子系统组成。增强软件服务子系统级里面为 HarmonyOS 提供了针对不同设备差异化的能力。增强型软件服务,由智慧屏专有业务、穿戴专有业务、 IoT 等业务子系统组成。硬件服务子系统级,它为 HarmonyOS 提供硬件服务,有位置服务、生物特征识别、穿戴专有硬件服务、IOT 专用硬件服务等子系统组成,根据不同的设备形态的部署环境,基础软件服务子系统级,增强软件服务子系统级、硬件服务子系统级内部可以按子系统的粒度,来裁剪,为每个子系统内部又可以按功能颗粒度来裁剪。
以下是框架层的一个示意图。框架层它是为 Harmony OS 开发,提供了Java、c、js 等多语言用户程序的框架。 即 Ability 框架。两种 UI 框架包括适用于 Java 语言的 Java UI 框架和适用于 js 语言的 js ui 框架以及各种软硬件服务对外开放的多语言框架API。根据系统的组件化进行一个裁剪, Harmony OS 设备支持的 API 也会有所不同。
应用层它包括的是系统应用和第三方非系统应用。Harmony OS 应用由一个或多个 FA 或者 PA 组成。其中 FA 是有界面的,提供与用户交互的能力,而 PA 是没有界面的,提供后台运行任务以及一些统一的数据访问抽象。那么基于FA/PA 开发的这种应用能够实现特定业务功能,支持跨设备调度与分发,为用户提供一致高效的每一个应用体验。
如下示例,这是一个鸿蒙的一个应用示例,它在一个视频通话应用里面。往往是有一个FA,它作为这个视频通话的一个主界面,而由若干个 PA 组成。 FA 提供这种 UI 界面用于与用户进行交互,然后 PA1 用于摄像头视频的采集, PA2 用于视频美颜处理, PA3 用于超级夜景的处理。FA/PA 是可以按需进行下载的,按需加载和运行的。
另外一个场景,展示了不同设备下,它下载相应应用时的不同的表现。当手机来下载该应用的时候,它就会拥有 FA 的主界面, PA 的摄像头视频采集, PA2的视频美颜。 PA3的超级夜景的处理,而如果是智慧屏来下载这个应用,如果智慧屏它不支持视频美颜处理,不支持超级夜检夜景的处理功能的时候,它就只会下载 FA 主界面和 PA1 摄像头视频采集,这就是应用层分发的一个逻辑,它其实是可以根据需要进行一个裁剪,可以按需进行下载运行。以上就是整个Harmony OS 的一个架构的一个介绍。
首先第一个特性是 ArkTS 编程语言, Harmony OS提供了多种来开发鸿蒙应用 API 的一些语言,包括像ArkTS ,ts,js,C, C++, Java 等等,ArkTS 是 Harmony OS 相对来说比较新的一门语言,也是目前 Harmony OS 优先推荐的开发语言。
ArkTS 是基于 Typescript 扩展而来的,是 TS 的超集。这也是为什么 ArkTS 的原名,叫ETS,就是 extend typescript 的一个简写。那么 ArkTS 继承了 ts 所有的特性,并且ArkTS 在 ts 的基础上还扩展了这个声明式的UI,能让开发者更简洁、更自然地开发高性能的这种应用。
以下这张图片也展示了 ArkTS 编程语言,它这里只是用了短短的这个 6 行,就可以开发出一个右侧一个 hello word 的这么一个渐变效果。
第二个特性是ArkUI开发框架,ArkUI是一套分布式应用界面声明式 开发框架。它使用极简的 UI 语法、丰富的 UI 组件以及实时界面预览工具,帮助提升 Harmony OS 应用界面开发的一个效率。只需使用一套 ArkTS 的API,它就能在多个Harmony OS 设备上提供生动和流畅的这种用户界面体验。然后它具备哪些特点呢?
第一个是UI 更新机制升级,在 ArkTS 新版 3.1 里面,它通过编译器生成特定函数的方式,从而它能极大地优化 UI 组件的这个渲染性能。
第二点是逻辑和 UI 分离,通过数据双向绑定机制来传递页面的一个变化逻辑,将流转的 7 个步骤简化为了 2 个步骤,将跨端迁移和协同开发代码量降低了 40% 以上。
第三点,它是支持这种 stage 模型,面向开发者提供了十几种不同的场景的这种扩展机制服务,在保证后台进程合理运行的基础上,规避了应用进程之间无序拉起,保证前台资源供给、应用调度更加有序的目的。
它还提供了高级 UI 组件的扩展能力,能够满足开发者在游戏、相机、地图、浏览器等复杂的这种应用场景的开发诉求,降低了这类应用的这个移植门槛。
它可以提供原生性能体验。ArkUI内置的非常多核心的这种 UI 控件和动效,比如像图片、列表、网格、属性动画、转场动画等等,加持自研语言运行时的深度优化,这些都是可以在Harmony OS 从设备上达到像移动原生应用一样的一个性能体验。
stage 模型是从 API 9 开始的,从 API 9 引入了这种 stage 模型的一种开发模式,在 API8 应该说是在 API9 之前了。 Harmony OS ability 框架,它只支持这种 FA 模型。然后从 API 9 开始它就引入了 stage 模型,然后目前 stage 模型它只支持使用ArkTS 语言来进行开发。 stage 模型是从 Harmony OS 3.1 开始新增了的模型,也是目前 Harmony OS 主推而且会长期演进的子模型。在这种模型中提供了像 ability stage, window stage 等等作为应用组件的 window 窗口的舞台,因此这种模型被称为 stage 模型(主流)。
下图是 Ability 组件的一个生命周期, Ability 的生命周期切换以及和 ability stage、 WindowsStage 的一个关系图。
stage 模型它定义了 Ability 组件的生命周期,包括创建、销毁、前后台等状态,将与界面强相关的获焦失焦状态放在了 WindowsStage 中,从而实现了Ability 组件跟窗口之间的弱耦合。
在服务侧,窗口管理服务依赖于组件管理服务,前者通知,后者前后台变化,这样组件管理服务仅感知前后台变化,不感知焦点变化。这也需要注意背景中它存在两个与 windowStage 相关的生命周期状态,第一个是 onWindowStageCreate 和 onWindowStageDestroy。这两个生命周期状态的变化仅存在于具有显示能力的这种设备中。前者onWindowStageCreate,它是表示 windowStage 已经创建完成了,开发者可以通过执行 load Content 方法操作设置 ability 加载的界面。后者 onWindowStageDestroy,它表示 WindowsStage 销毁后调用,方便开发者对自研进行一个释放。
Ark compiler,是华为自研的统一编程平台,它包括了编译器、工具链、运行时等关键部位,支持高级语言在多种芯片平台的编译与运行,并支撑应用和服务运行在手机、个人电脑、平板、电视、汽车和智能穿戴等多种设备的需求。然后这个编译器有什么特点呢?
第一个是它是支持 AOT 编译模式,这种模式它会利用 ArcTS 静态类型信息,进行类型的一个推导,并生成对象描述和内联缓存。加速运行时对字节码的解析执行,让应用启动即可运行高性能的代码,提升应用启动和运行的性能。
第二点,它支持这个 LiteActor 的轻量化并发。ArkCompiler运行时在 Harmony OS 上提供了 work API 来支持并发编程。在运行时实例内存隔离的基础上,通过共享运行实例中不可变或者不易变的对象,内建代码块、方法字节码等技术手段优化了并发运行实例的启动性能和内存开销。
第三点是源码安全,ArkCompiler会把ArcTS、ts、js 编译为方舟字节码,运行时直接运行方舟字节码,然后运用多种混淆技术来提高更高强度的混淆与保护,使得 Harmony OS 应用代码强度会变得更高。
在 2023 年8月4日,在华为开发者大会上,华为就公布了这个 Harmony OS next 开发者预览版计划,这个计划它在 2023 年8月,会面向企业开发者开放。 2024 年第一季度面向所有开发者开放。然后 Harmony OS next 它有什么特点呢?
第一个特点是它去掉了传统的 AOSP 的代码,然后因为剥离了很多传统的一些很多框架,所以这个冗余代码相对比较少,系统就会相对来说比较流畅,能效、纯净、安全特性就会大大的提升。当然了, HarmonyOS NEXT ,它虽然是在 2024 年的这个第一季度面向开发者开放,但实际上它这种开放程度不是非常高,它有非常高的一些设置和非常高的一些门槛。不是谁都可以去参与它这个开发。比如说他要求你要具备 Mate60 及以上的这种旗舰和华为旗舰手机,然后他还要审核开发者的一些能力等等。
所以 Harmony OS next 系统目前来看它还不是非常完善,而且它还是处于这种项目的初级阶段,也没有在市面上正式的发布过,所以对于学习鸿蒙的人而言,HarmonyOS NEXT 不是一个非常好的一个学习的一个样本,它的稳定性也还不够,它也没有在市面上公开,所以不太具备这种学习能力,也不具备商用的这种能力。
但是它所使用的开发工具,以及所开发应用所使用的编程语言,它都是跟我们前面所介绍的原生鸿蒙的特质性是一致的,所以掌握到的原生鸿蒙所具备的这些开发能力,包括 API 等等,它都是可以在未来所发布的这个 harmony OS next 中可以得到很好的一个兼容和适配,所以不用担心,未来一定会发布。