赞
踩
作为众多操作系统中的一员,鸿蒙操作系统是一款面向全场景、全连接(万物互联)、全智能时代的分布式操作系统,是新一代操作系统——物联网操作系统。本文首先介绍鸿蒙操作系统的诞生及发展历程;然后结合作者自己的理解谈一谈鸿蒙操作系统的意义、简单介绍鸿蒙操作系统的技术架构;最后给出作者本人学习鸿蒙的路线,供大家参考。
鸿蒙操作系统最早是由华为自主研发出来的。可查阅:https://www.harmonyos.com/cn/information/获取华为发布鸿蒙的信息。
鸿蒙从华为诞生之后,华为在2020年9月和2021年5月分两次将HarmonyOS的基础能力代码全部捐献给开放原子开源基金会(https://www.openatom.org),这是鸿蒙操作系统发展历程中非常重要的事件,至此之后,鸿蒙操作系统进入了“众人拾柴火焰高”的发展阶段。所谓“基础能力代码”,应该是HarmonyOS中与华为自家的产品和商业模式无关的那部分代码。开放原子开源基金会成立于2020年,是国内第一家开源基金会。
开放原子开源基金会在接收到华为捐赠的代码之后,就遵循 Apache 许可协议把代码开源了,同时创立了一个开源项目,并将其命名为 OpenHarmony(开源鸿蒙)。下面是OpenHarmony的部分发展历程,可查阅https://gitee.com/openharmony/docs/tree/master/zh-cn/release-notes获取更详细的信息。
如下图所示,鸿蒙诞生于华为,华为把用在华为手机、手表、智慧屏等自家产品中的鸿蒙操作系统称为HarmonyOS,我们也不妨称之为华为鸿蒙。后来,华为将HarmonyOS中的一部分代码捐给开放原子开源基金会,于是就有了Openharmony,也就是开源鸿蒙。OpenHarmony的代码是完全开源的,由开放原子开源基金会负责运营和维护,所有人都可以免费使用OpenHarmony的代码,也可以向其贡献自己的代码,这其中当然也包括华为。我们可以认为HarmonyOS是OpenHarmony的最早的一个商业发行版。
在商业发行版中,因为有涉及到自家产品和商业模式的东西,通常都是不开源的。不过在华为的DevEco Marketplace这个网站里,可以找到一些开源的鸿蒙发行版。这些开源的发行版主要是针对某一个具体的设备(如:一款开发板),对OpenHarmony的全量代码进行了裁剪。比如,某个设备因为硬件资源有限,没办法运行OpenHarmony中的一些功能组件,那么这些组件在发行版中就被裁掉了;或着说在这个设备的应用场景中根本就不需要某项功能,相应的功能组件也会在发行版中被裁掉。我们在进行鸿蒙设备开发的时候,可以先到这个网站上去找一找有没有合适的发行版,这个网站也支持在这些发行版的基础上增加或删除一些功能组件,定制一个发行版本。当然,你也可以把自己做的发行版提交到这个网站上开源给别人使用。注意:从DevEco Marketplace这个网站上下载资源需要先注册一个华为账号。
随着鸿蒙技术的发展,越来越多的公司和组织都基于OpenHarmony推出了自己的鸿蒙操作系统,例如:
以上这些都属于开源鸿蒙的发行版,无非有的是商业发行版、有的是开源发行版,相信以后会出现更多的开源鸿蒙发行版,鸿蒙生态也会越来越好。
综上所述,到目前为止,鸿蒙操作系统的发展可分为两大阶段:第一阶段是华为鸿蒙HarmonyOS的诞生与发展;第二阶段是开源鸿蒙OpenHarmony的诞生,以及开源鸿蒙OpenHarmony和包括华为鸿蒙HarmonyOS在内的各种OpenHarmony发行版相互促进、共同发展。
如下图所示,在鸿蒙诞生之前,我们已经有非常多可用的操作系统。
首先是计算机(PC、服务器)上的操作系统,包括:像Ubuntu、红帽等以Linux为内核的操作系统、家喻户晓的Windows操作系统、苹果的MacOS操作系统;然后,随着移动互联网的兴起,出现了用在移动终端(手机、平板、其它手持设备)上的操作系统,发展到今天,基本上就是谷歌的安卓和苹果的IOS二分天下;另外,还有很多用在资源相对有限的嵌入式设备中的实时操作系统,比如:uC/OS、FreeRTOS、RT-Thread等等,这些操作系统大多是一些操作系统内核,并不是特别完整的操作系统。
纵观这些操作系统,不难发现一个特点:它们都是专门为某一类设备开发的。比如:计算机操作系统就只能用在计算机上,不能用到移动终端上;移动终端上的操作系统也不能用到电脑上。但是无论如何,已经有这么多操作系统了,华为为什么还要搞鸿蒙操作系统?难道仅仅是为了要替代某个操作系统,解决“卡脖子”问题吗?
个人理解:不仅仅是要解决“卡脖子”问题,更重要的是要解决现有操作系统所无法解决的问题。
现有操作系统所无法解决的问题是什么?物联网生态的碎片化。
现在,随着技术的发展和设备成本的下降,可以接入网络的设备在数量上、特别是在种类上越来越多,已经不仅仅是之前的计算机、手机、平板这些设备,像手表、耳机、音响、门锁、电灯、空调、冰箱、洗衣机、电饭锅、电子秤等已皆可入网,我们看似已经进入了一个万物互联的时代——物联网时代。当然,这些设备的入网也确实给我们的生活带来了很多便利,但同时也出现了一个非常大的问题:物联网生态的碎片化。如果这个问题不解决,用户的体验很难得到进一步的提升。
那么导致“物联网生态的碎片化”的原因是什么呢?
个人认为,主要有两个方面:客观上,物联网时代的终端设备的确是种类繁多、形态各异、硬件资源也有多有少、应用场景也千差万别;主观上,各个设备生产厂商更多地考虑自己的商业利益,自己搞自己的一套,各自为政。比如:一个用户在A厂家买了一个智能音箱,那他就要在手机上装一个A厂家智能音箱的APP;如果他又在B厂家买了一个电饭锅,他就又要在手机上装一个B厂家电饭锅的APP;那如果他又买了一个电子秤呢,可能又要装一个电子秤的APP。最后结果就是,用户几乎是每买一个设备就要装一个APP。这样的体验肯定不会太好,而且不同厂家的设备之间不能实现互联互通、资源共享,也就更谈不上设备之间的协作互助了,这样也不能满足用户对设备智能化的要求。
那用户希望获得什么样的体验呢?
个人认为,以智能家居为例,用户希望获得的体验应该是这样的:首先,通过一个app就可以操控不同厂商的不同设备;其次,应该尽量少地让用户去通过操作app告诉某个设备要干什么,而更多的应该是让设备之间通过互联互通、信息共享和协作互助,按照用户之前已经做过的一些设置,或者是设备通过自己学习得到的用户习惯,主动地给用户提供一些服务。
所以,我认为鸿蒙操作系统的出现,不仅仅是要解决卡脖子的问题,更重要的是,它试图在操作系统这一层面解决物联网面临的碎片化问题。就像本文前言中所说,鸿蒙操作系统是一款面向全场景、全连接(万物互联)、全智能时代的分布式操作系统,它与安卓这些操作系统完全是不同时代的产物,是新一代操作系统——物联网操作系统。鸿蒙操作系统不仅能用在像电脑、手机这样资源丰富的设备上,也能用在像智能门锁、温湿度传感器这些资源非常有限的嵌入式设备上,通过鸿蒙操作系统可以把不同类型的终端设备统一管理起来,无论设备是哪个厂商生产的,只要大家用的都是鸿蒙操作系统,就能够实现自发现、自组网、信息共享和协作互助。
下面,从总体上简单介绍鸿蒙操作系统的构成,参考:https://gitee.com/openharmony/docs/blob/master/zh-cn/OpenHarmony-Overview_zh.md。鸿蒙操作系统的技术架构如下图所示:
鸿蒙操作系统在整体上遵循了分层设计的原则,从下向上依次为:内核层、系统服务层、框架层和应用层。
内核层包括两个部分,分别是内核子系统和驱动子系统。
鸿蒙操作系统采用的是多内核设计,目前支持三种内核:linux内核、LiteOS内核,LiteOS内核又分为LiteOS-A和LiteOS-M两种。开发者可以根据设备的资源去选择一个合适的内核。内核抽象层的作用是屏蔽多内核之间的差异,向上层提供统一的接口。
驱动子系统的核心是一个硬件驱动框架,这个框架能够提供统一外设访问、驱动开发和驱动管理能力,是鸿蒙硬件生态开放的基础。
系统服务层集合了鸿蒙操作系统的核心功能,它通过框架层给应用程序提供服务。主要包括四个子系统集:系统基本能力子系统集、基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集。
框架层为应用开发提供了C/C++/JS等多语言的用户程序框架和Ability框架,适用于JS语言的ArkUI框架,以及各种软硬件服务对外开放的多语言框架API。根据系统的组件化裁剪程度,设备支持的API也会有所不同。
也可以把系统服务层和框架层合称为系统层。从横向来看,系统层是按照“系统(子系统集) > 子系统(Subsystem) > 组件/功能模块(Component)”逐级展开。也就是说,整个系统层是由若干个子系统集组成的,每个子系统集里又包含了若干个子系统,每个子系统又是由若干个组件/功能模块构成的。根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。
应用层里就是应用程序,主要包括:系统应用和第三方的非系统应用。比如:手机里面的设置、时钟、日历就属于系统应用,也就是系统自带的应用;百度地图就属于第三方的非系统应用。
鸿蒙操作系统上的应用由一个或多个FA(Feature Ability)或PA(Particle Ability)组成。其中,FA有UI界面,提供与用户交互的能力;而PA无UI界面,提供后台运行任务的能力以及统一的数据访问抽象。
前面提到,鸿蒙操作系统的功能是按照“系统(子系统集) > 子系统(Subsystem) > 组件/功能模块(Component)”逐级展开的,支持根据实际的需求和运行环境裁剪某些非必要的子系统或组件。为此,根据所采用的操作系统内核、所要求的设备最小内存,以及所适用的处理器,OpenHarmony定义了以下三种系统量级(系统类型):
采用LiteOS-A内核;支持设备最小内存128KB;面向MCU类(如:Arm Cortex-M、RISC-V 32位)处理器。
采用LiteOS-A内核或Linux内核;支持设备最小内存1MB;面向应用类(如:Arm Cortex-A)处理器。
采用Linux内核;支持设备最小内存128MB;面向应用类(如:Arm Cortex-A)处理器。
至此之后,如无特别声明,我学习和使用的鸿蒙默认是开源鸿蒙OpenHarmony。
由于鸿蒙的学习路线跟个人的技术背景和目标定位密切相关,所以下面的内容仅供大家参考。我在学习过程中也会根据实际情况对这部分内容进行补仓完善。
无论是在华为鸿蒙HarmonyOS的官网(https://www.harmonyos.com),还是在开源鸿蒙OpenHarmony的官网(https://www.openharmony.cn、https://gitee.com/openharmony)都将鸿蒙开发分成两类:
典型的应用开发就是手机应用开发。使用的集成开发环境是:DevEco Studio;使用的编程语言主要是JavaScript,还有CSS、HML、eTS。
像系统的移植和适配、驱动开发等都属于设备开发。使用的集成开发环境是:DevEco Device Tool;使用的编程语言主要是C和C++。
基于我偏硬件开发的技术背景,我的学习以设备开发(南向)为主,在需要的时候兼顾应用开发(北向);另外,按照系统量级,从轻量系统开始,到小型系统,再到标准系统。
本篇是在学习鸿蒙操作系统的路上迈出的第一步,了解了鸿蒙操作系统的发展历程、意义和技术架构,接下来有两个很基本的学习专题:
然后,就是围绕OpenHarmony中的各个子系统或功能模块展开学习。
以上是我的初步想法,欢迎大家多提宝贵意见。
华为鸿蒙HarmonyOS:https://www.harmonyos.com/
华为鸿蒙HarmonyOS设备开发:https://device.harmonyos.com
华为鸿蒙HarmonyOS应用开发:https://developer.harmonyos.com
开源鸿蒙OpenHarmony官网:https://www.openharmony.cn
开源鸿蒙OpenHarmony仓库:https://gitee.com/openharmony
在以上这些网站中,有学习鸿蒙操作系统最基本、最原始、最重要的资料,希望大家认真挖掘,我在之后的文章中也会根据具体的内容给出更具体的网址链接。
PS:关于鸿蒙操作系统的发展历程、意义和技术架构,之前在《鸿蒙系列课程:Hi3861网络编程实验》这个专题中录过一个视频,想看视频的朋友可点击以下任意链接免费观看:
https://download.csdn.net/learn/36850/568611?spm=1003.2001.3001.4143
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。