共计 4640 个字符,预计需要花费 12 分钟才能阅读完成。
去年 8 月份,华为在开发者大会上正式公布操作系统 HarmonyOS。时隔一年无余,往年 9 月 10 日鸿蒙零碎正式降级至 2.0 版本。依据官网颁布的打算,在明天(12 月 16 日)凋谢手机 Beta 测试版本。
在过来的一年里,身边的安卓开发者仿佛对 HarmonyOS 并不理解。目前因为华为并没有凋谢鸿蒙手机零碎相干内容,没有足够亮眼的体现来引起挪动开发者的关注。
在 12 月 9 号,谷歌正式开源 Fuchsia 零碎,继 Android 和 ChromeOS 后公布的第三个操作系统。
Fuchsia 零碎对于谷歌尝试多端零碎一体化生态构建起至关性作用。其分层模块的设计使得 Fuchsia 可便捷裁剪定制操作系统,可用于适配手机,平板,笔记本,IoT 甚至车载等零碎。早在几年前 Dart 及 Flutter 已开始为为其铺路并一路高歌,主打 一端开发多端部署 的口号吸引了很多 Android/web 开发者参加进来。
HarmonyOS 一个朝 万物互联 方向倒退的新一代零碎,与 Fuchsia 必由之路。HarmonyOS 肩负着操作系统国产自主化的重大使命,在将来华为的终端产品将降级反对 HarmonyOS 并影响同行厂商退出应用。
作为 Android 开发者,可提前 入局 理解 HarmonyOS 相干的开发内容。
概述与了解
HarmonyOS是一款 面向未来 、 面向全场景(挪动办公、静止衰弱、社交通信、媒体娱乐等)的分布式操作系统。在传统的单设施零碎能力的根底上,HarmonyOS 提出了基于同一套零碎能力、适配多种终端状态的分布式理念,可能反对多种终端设备。
对消费者而言,HarmonyOS 可能将生存场景中的各类终端进行能力整合,造成一个 超级虚构终端,能够实现不同的终端设备之间的疾速连贯、能力互助、资源共享,匹配适合的设施、提供晦涩的全场景体验。
简而言之,当你应用基于 HarmonyOS 的终端设备(如手机,电脑,IoT 智能家电等)时,能撑持起设施之间更好的体验。比方你可应用手势在设施屏幕中把一个文件间接甩给另一个设施;应用智慧屏观影主动调整环境灯光亮度等。而这些性能不再是在零碎服务下层基于某种协定(比方蓝牙等)来实现,而是零碎内人造反对。
对利用开发者而言,HarmonyOS 采纳了多种分布式技术,使得应用程序的开发实现与不同终端设备的状态差别无关,升高了开发难度和老本。这可能让开发者聚焦下层业务逻辑,更加便捷、高效地开发利用。
近几年多端对立开发十分火。对于开发者而言,优良的多端对立计划可能最大限度缩小适配的工作老本。以前端技术栈为根底的框架有腾讯 Hippy,滴滴 Chameleon,京东 Taro,阿里 Weex,脸书的 RN 及基于 RN 优化的携程 CRN,美团 MRN 等;以原生技术栈为根底的 Flutter 另辟蹊径,以 Native 侧性能劣势小跑当先并在 web/desktop 方面逐渐追赶。而 HarmonyOS 也反对开发者应用一端代码适配多端程序,相比传统基于 Java/Kotlin 零碎安卓利用,在适配多端设施上将有相对的劣势。
对设施开发者而言,HarmonyOS 采纳了组件化的设计方案,能够依据设施的资源能力和业务特色进行灵便裁剪,满足不同状态的终端设备对于操作系统的要求。
同 Fuchsia 一样,HarmonyOS 也是可依据终端的硬件能力及业务要求动静裁剪零碎服务。
技术架构 vs Android
HarmonyOS 整体听从分层设计,从下向上顺次为:内核层、零碎服务层、框架层和应用层。
零碎性能依照 零碎 > 子系统 > 性能 / 模块 逐级开展,在多设施部署场景下,反对依据理论需要裁剪某些非必要的子系统或性能 / 模块。HarmonyOS 技术架构下所示。
内核层
内核层分为 内核子系统 和驱动子系统,其作用在于向下层提供根底内核能力及对立调用入口。
内核子系统 ,HarmonyOS 采纳多内核设计,反对针对不同资源受限设施选用适宜的 OS 内核。内核形象层(KAL,KernelAbstract Layer)通过屏蔽多内核差别, 对下层提供根底的内核能力,包含过程 / 线程治理、内存治理、文件系统、网络管理和外设治理等。
驱动子系统 ,HarmonyOS 驱动框架(HDF)是 HarmonyOS 硬件生态凋谢的根底, 提供对立外设拜访能力和驱动开发、治理框架。
零碎服务层
零碎服务层是 HarmonyOS 的外围能力汇合,通过框架层对应用程序提供服务。该层蕴含以下几个局部:
- 零碎根本能力子系统集:为分布式应用在 HarmonyOS 多设施上的运行、调度、迁徙等操作提供了根底能力,由分布式软总线、分布式数据管理、分布式任务调度、方舟多语言运行时、公共根底库、多模输出、图形、平安、AI 等子系统组成。其中,方舟运行时提供了 C/C++/JS 多语言运行时和根底的零碎类库,也为应用方舟编译器动态化的 Java 程序(即应用程序或框架层中应用 Java 语言开发的局部)提供运行时。
- 根底软件服务子系统集:为 HarmonyOS 提供公共的、通用的软件服务,由事件告诉、电话、多媒体、DFX、MSDP & DV 等子系统组成。
- 加强软件服务子系统集:为 HarmonyOS 提供针对不同设施的、差异化的能力增强型软件服务,由智慧屏专有业务、穿戴专有业务、IoT 专有业务等子系统组成。
- 硬件服务子系统集:为 HarmonyOS 提供硬件服务,由位置服务、生物特色辨认、穿戴专有硬件服务、IoT 专有硬件服务等子系统组成。
依据不同设施状态的部署环境,根底软件服务子系统集、加强软件服务子系统集、硬件服务子系统集外部能够按子系统粒度裁剪,每个子系统外部又能够按性能粒度裁剪。
框架层
框架层为 HarmonyOS 的应用程序提供了 Java/C/C++/JS 等多语言的用户程序框架和 Ability 框架,以及各种软硬件服务对外开放的多语言框架 API。
同时为采纳 HarmonyOS 的设施提供了 C/C++/JS 等多语言的框架 API,不同设施反对的 API 与零碎的组件化裁剪水平相干。
应用层
应用层包含零碎利用和第三方非零碎利用。
HarmonyOS 的利用由一个或多个 FA(Feature Ability)或 PA(Particle Ability)组成。
其中,FA 有 UI 界面,提供与用户交互的能力;而 PA 无 UI 界面,提供后盾运行工作的能力以及对立的数据拜访形象。
基于 FA/PA 开发的利用,可能实现特定的业务性能,反对跨设施调度与散发,为用户提供统一、高效的利用体验。
vs Android 架构
HarmonyOS 架构以 4 层结构设计,而 Android 官网最新平台架构中 Hardware Abstraction Layer 硬件形象层独立后其零碎为 5 层结构设计。
对齐 Android 架构
- Harmony 内核层 对齐 Android Linux 内核及硬件形象层,都是基于内核定制提供底层性能及对外硬件接口;
- Harmony 零碎服务层 对齐 Android Runtime 及原生 C/C++ 库,因为 Harmony 面向分布式应用设计,多了解决分布式工作 / 数据 / 总线模块及解决多语言运行时方舟模块。其余根底软件服务 / 硬件服务内容大抵和 Android 雷同,但 Harmony 面向多端设计,采纳的子系统集治理形式来划分服务。
- Harmony 框架层对齐 Android Java API Framework,这部分是下层开发者最关注的模块。Android 则提供了整个 OS 的功能集,可通过 Java/Kotlin 调用 OS 的功能集 API;Harmony 则提供反对多语言程序框架及 Ability 框架,可依据不同设施进行 API 及零碎组建 裁剪(你可了解为阉割)。Ability 就蕴含了 Harmony 提供的所有功能集。
- Harmony 应用层 与 Android 应用层从利用开发者角度来看根本无差别。
独有的技术个性
Harmony 有三个重要的技术个性:
- 硬件互助 资源共享
- 一次开发 多端部署
- 对立 OS 弹性部署
对于产品服务商而言,第一,三个性可能提供更优质的服务,体现在基于 HarmonyOS 实现多端互联,高效传输。同时可依据设施能力择优运行分布式工作及弹性部署服务性能。
对于产品开发商而言,第二个性无疑最有吸引力。无需为多端适配付出额定老本,做到一次开发多端部署。
硬件互助 资源共享
要实现多端互联就须要总线撑持。Harmony 为多种终端设别提供了 分布式软总线,为设施间的互联互通提供了对立的分布式通信能力,可能疾速发现并连贯设施,高效地散发工作和传输数据。
不同设施遵循 Harmony 提供的通信协定与总线中枢通信,中枢蕴含了管理中心用于发现 / 连贯 / 治理多端设施,同时数据与计算中心参加传输数据计算并由决策核心决定策略下发。
对于繁多设施而言,实现不同设施资源交融,设施治理,数据处理,需反对 分布式设施虚拟化。多设施间通过分布式设施虚拟化可能造成一个超级虚构终端。
针对不同类型的工作,为用户匹配并抉择能力适合的执行硬件,让业务间断地在不同设施间流转,充分发挥不同设施的资源优势。
在分布式软总线根底上,应用程序数据及用户数据可能实现分布式治理。用户数据不再与繁多物理设施绑定,业务逻辑与数据存储拆散,利用跨设施运行时数据无缝连接,为打造统一、晦涩的用户体验发明了根底条件。
基于分布式软总线、分布式数据管理、分布式 Profile 等技术个性,Harmony 构建的多端生态反对分布式工作的调度。
反对构建对立的分布式服务治理(发现、同步、注册、调用)机制,反对对跨设施的利用进行近程启动、近程调用、近程连贯以及迁徙等操作,可能依据不同设施的能力、地位、业务运行状态、资源应用状况,以及用户的习惯和用意,抉择适合的设施运行分布式工作。
以利用迁徙为例,简要地展现了分布式任务调度能力。
一次开发 多端部署
HarmonyOS 提供了用户程序框架、Ability 框架以及 UI 框架,反对利用开发过程中多终端的业务逻辑和界面逻辑进行复用,可能实现利用的一次开发、多端部署,晋升了跨设施利用的开发效率。
对立 OS 弹性部署
HarmonyOS 通过组件化和小型化等设计办法,反对多种终端设备按需弹性部署,可能适配不同类别的硬件资源和性能需要。撑持通过编译链关系去主动生成组件化的依赖关系,造成组件树依赖图,撑持产品零碎的便捷开发,升高硬件设施的开发门槛。
- 反对各组件的抉择(组件可有可无):依据硬件的状态和需要,能够抉择所需的组件。
- 反对组件内功能集的配置(组件可大可小):依据硬件的资源状况和性能需要,能够抉择配置组件中的功能集。例如,抉择配置图形框架组件中的局部控件。
- 反对组件间依赖的关联(平台可大可小):依据编译链关系,能够主动生成组件化的依赖关系。例如,抉择图形框架组件,将会主动抉择依赖的图形引擎组件等。
时机
HarmonyOS 对 Android 开发者来说是生疏的,毕竟是一个全新操作系统,其将来倒退及开发者生态前景也是未知的。但也是相熟的,反对 Java 语言编程开发,Ability 框架的设计与 Android API 设计有殊途同归之妙,通过迁徙 Android 开发教训学习即可疾速上手。
Harmony 系列文章 后续将会以 Android 开发视角来迁徙把握鸿蒙零碎利用开发,借助已有开发教训疾速入门并熟练掌握开发利用,同感兴趣的敌人一起为 Harmony OS 开发生态贡献绵薄之力。
欢送继续关注我。
欢送关注「Android 之禅」公众号,和你分享有价值有思考的技术文章。
可增加微信「Ming_Lyan」备注“进群”退出技术交换群,探讨技术问题严禁所有广告灌水。
如有 Android 畛域有遇到技术难题亦或对将来职业规划有纳闷,一起探讨交换。
欢送来扰。