上周,华为在深圳举办了“鸿蒙生态千帆启航仪式”,这也是华为鸿蒙开启生态进阶的信号。在政策的叠加下,鸿蒙未来必定是势不可挡的。我们这些程序员也得与时俱进,熟悉鸿蒙的技术和细节,别在经济寒冬里被淘汰了。
官方称 Harmony OS NEXT开发者预览版将在2024年第一季度面向开发者开放。2024年9月,最新版的HarmonyOS将进入独立生态体系,不再兼容安卓应用。需要及时构建一套基于鸿蒙原生APP的服务,以保障鸿蒙用户的业务连续性。本文我们来聊聊鸿蒙的一些技术细节,也欢迎大家在评论区补充。
宏内核与微内核
先来聊聊内核,内核是操作系统内最基础的构件,因此内核的设计对于操作系统的外部特性也有着至关重要的影响。常见内核结构可以分为宏内核、微内核、混合内核、外内核等。
虽然鸿蒙与安卓都是基于Linnux开发的,区别在于安卓是基于宏内核结构设计,而鸿蒙是基于微内核结构设计。鸿蒙系统使用C和C++编写,不需要虚拟机这一中间过程(当然,过度期间是需要AOSP的),因此运行效率更高。
宏内核:存在历史最长内核,也在应用领域占据着主导地位,比如安卓。
微内核:较新内核结构,但是它拥有着众多宏内核不具有的优良特性,因此被华为选用。
宏内核 | 1、易于设计与实现 2、硬件性能高 | 1、维护成本高 2、容错机制差 |
微内核 | 1、提高了系统的可扩展性 2、增强了系统的可靠性 3、增强了可移植性 4、提供了分布式系统的支持 5、任务线程 6、融入面向对象技术 | 1、通信失效率高 2、IPC有额外开销 3、Cache命中率低 4、内存复制 |
1、鸿蒙技术细节:微内核架构
由于鸿蒙是微内核架构,我们来着重关注一下微内核架构的组成。
微内核架构包含两类组件:核心系统和插件模块。核心系统负责通用功能,不因为业务的变化而变化;插件模块负责实现具体的业务,可以根据业务的变化而改动和扩展。
微内核架构模式可以将其他应用程序的功能作为插件添加到核心应用程序,从而提供应用的可扩展性、功能分离性和独立性。
微内核架构通常具有以下特征:
- 整体敏捷度高。整体敏捷度是对不断变化的环境做出快速响应的能力。通过松散耦合的插件模块,可以很大程度上隔离并快速实现更改。
- 易部署。根据模式的实现方式,可以在运行时将插件模块动态添加到核心系统,从而最大程度减少部署期间的停机时间。
- 可测性高。插件模块可以单独进行测试,并且可以由核心系统轻松模拟,以演示或原始化特定功能,而对核心系统的更改很少或没有更改。
- 功能表现优秀。虽然微内核架构模式无法自然地适用于高性能应用程序,但大多数使用微内核架构模式构建的应用程序都表现良好,因为可以自定义和简化应用程序以包含仅仅所需的功能。
- 可扩展性强。根据实现插件模块方式,可以在插件功能级别提供可扩展性。不易开发。微内核架构需要周全的设计和协议治理,实施相当复杂。
2、鸿蒙OS结构细节
内核层:内核层包含内核子系统和驱动子系统。鸿蒙OS具有多个内核,针对不同的设备可以选择不同的内核,通过内核抽象层可以将底层的不同内核之间的差异屏蔽,并对上层提供统一的接口。驱动子系统负责提供统一的外设访问接口,以及负责驱动开发和管理框架。
系统服务层:该层包括四个子系统集
- 系统基本能力子系统集可以使分布式应用在多设备上运行、调度和迁移。
- 基础软件服务子系统集可以提供基础的通用软件服务。
- 增强软件服务子系统集可以针对不同的设备提供差异化的软件服务。
- 硬件服务子系统集提供硬件服务,如位置定位、指纹设别等。根据部署环境的不同,除基本能力子系统集以外的子系统集内部可以进行剪裁。
应用层:该层包括系统应用和第三方开发的非系统应用。
框架层:该层提供了Ability框架、UI框架和用户程序框架等。
3、方舟编译器
微内核和方舟编译器是鸿蒙系统中的两大核心。方舟编译器可以方便安卓APP移植到鸿蒙系统。
方舟编译器是华为自主研发的编译器平台,它将以前边解释边执行的低效运行方式转变为将Java、C、C++等代码一次编译成机器码的高效运行方式,同时也实现了多语言的统一。
算机
华为官方数据说,方舟编译器能提升24%的操作系统流畅度、44%的系统响应能力和60%的三方应用操作流畅度。当然具体编译器是不是如官方说的那样流畅还是得实践检验的。
鸿蒙开发的三种方式
对于我们这些普通的程序员来说,鸿蒙系统发布并不会给公司带来增量的客户和业绩增长,但是对于公司和团队来说鸿蒙系统的迁移和搭建必然是一笔巨大的投入。现阶段团队都在寻求快速搭建一个鸿蒙APP 的方案。 目前我们团队调研了三种开发模式:1、使用ArkTS声明式;2、前端HTML+CSS+JS的方式,类似vue+小程序的混合语法;3、拖拖拽拽低代码的形式创建页面或应用。
在上周的会议上,我们预计会选择第二种方案。因为无论在什么操作系统平台、什么技术体系下,HTML5及其延伸技术:例如FinClip小程序技术,永远是兼容性最好、开放程度最高、敏捷性最强的选择。在很多企业服务场景、企业IT现实条件下,也是更好的选择,例如比Flutter更容易掌握、运行风险更低、稳定性更强,同时也可以与Flutter或其他操作系统原生技术融合。下周有时间单独开一篇讲讲这三种鸿蒙开发模式。