Deep understanding HarmonyOS

背景

什么是跨平台?

传统意义上的跨平台可以理解为操作系统,跨平台即不依赖于硬件环境,可以在多个操作系统下运行。但现代的硬件设备多种多样,如手机、手表、汽车、IoT设备等,所以如今谈论的跨平台,也可理解为跨设备。

如何实现跨平台?

在了解鸿蒙的跨平台之前,来看下Java平台是如何实现跨平台的,Java平台无关性是建立在Java虚拟机的平台有关性基础上的,Java虚拟机屏蔽了底层操作系统和硬件的差异。

什么是分布式?


了解HarmonyOS

HarmonyOS的技术特性

  • 分布式架构,实现跨终端无缝协同 通过分布式OS架构、分布式软总线、公共通信平台、分布式数据管理、分布式任务调度和分布式设备虚化实现跨端业务协同能力带来无缝的体验。
  • 确定时延引擎和高性能IPC技术实现系统流畅
  • 确定时延引擎可在任务执行前分配系统中任务执行优先级及时限进行调度处理,优先级高的任务资源将优先保障调度;
  • 鸿蒙微内核结构小巧的特性使IPC(进程间通信)性能大大提高;
  • 基于微内核架构重塑终端设备可信安全 简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护。微内核只提供最基础的服务,比如多进程调度和多进程通信等。另外,鸿蒙OS将微内核技术应用于可信执行环境(TEE),通过形式化方法,重塑可信安全。
  • 面向多终端开发的IDE,实现一次开发,多端部署


HarmonyOS跨平台的实现

相对于通过虚拟机屏蔽底层操作系统和硬件实现跨平台的方式而言,HarmonyOS是通过编译器+多语言IDE实现的:

  • 方舟编译器 方舟编译器是首个取代Android虚拟机模式的静态编译器,可以将高级语言(Java)在开发阶段直接编译成机器码,从而绕过虚拟机,省去了在运行期解释运行的步骤。
  • 多终端开发IDE 面向多终端开发的IDE,支持一次开发,多端部署。还提供了分布式架构Kit对屏幕布局控件以及交互的自动适配。


方舟编译器

内存回收机制

早期C/C++需要开发人员自己管理程序对系统内存的使用和释放,影响开发效率,Java虚拟机的出现提供了内存GC(垃圾回收)机制,某些情况触发全局回收时需要短暂的暂停应用,成为了随机卡顿的原因之一。

相对于自行回收和集中回收这两种机制,方舟编译器采用了引用计数式垃圾收集(Reference Counting GC)[^引用计数法]来进行实时回收,并且配合使用了专门的消除环算法(消除对象互相引用带来的无法回收问题),来避免GC集中回收带来的系统卡顿。


HarmonyOS架构

分层设计,由下而上

harmonyos-framework


内核层

HarmonyOS采用多内核设计,支持对不同的设备选择适用的OS内核。内核抽象层(Kernel Abstract Layer),通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。

硬件驱动框架(Hardware Driver Foundation)提供了统一的外设访问能力和驱动开发、管理框架,是HarmonyOS硬件生态开发的基础。


系统层

分布式总线

分布式软总线为分布式设备之间互联不互通提供了统一的分布式通信能力。

harmonyos-distributed-soft-bus


分布式设备虚化

分布式设备虚拟化平台可以实现不同设备的资源融合,针对不同类型的业务,对设备进行虚化,匹配能力适合的执行硬件,让业务联系地在不同设备间流转。

harmonyos-distributed-driver-virtualization


分布式数据管理

分布式数据管理基于分布式软总线实现,能够实现全场景,多设备下的数据存储、共享和访问。

harmonyos-data-manage


分布式任务调度

分布式任务调度构建统一的分布式服务管理(发现、同步、注册、调用)机制,支持跨设备的应用进行远程启动、调用、连接以及迁移等操作。

harmonyos-task-schedule


框架层


应用层

应用程序

运行在HarmonyOS上的应用有两种形态:

  • 传统方式的需要安装的应用
  • 提供特定功能,免安装的应用(原子化服务)


应用程序包结构

HarmonyOS的应用程序包以APP Pack(Application Package)形式发布,由一个或多个HAP(HarmonyOS Ability Package)的Ability的部署包以及描述每个HAP属性的pack.info组成。

harmonyos-app-package