OpenHarmony当前进展和未来趋势

操作系统自20世纪50年代诞生,经历了从专用操作系统到通用操作系统的转变。整体可以将操作系统的发展历史分为3个阶段:PC时代、移动互联网时代、万物互联时代。

PC时代主要以计算机为主,用户规模从1970年的10亿增长到1990年的30亿。这一时代诞生了Windows、Linux、MacOS等操作系统。由于Windows操作系统的广泛应用部署,微软于20世纪90年代成为全球市值最高的公司。

随着智能手机的普及,操作系统正式进入了移动互联网时代,苹果推出了iOS操作系统,支撑苹果成为全球市值最高的科技公司;谷歌2005年收购了Android公司,并持续地进行研发投入和版本迭代,如今Android操作系统已经成为世界上发行量最大的移动智能操作系统。

在万物互联时代,随着越来越多的设备接入互联网,单一操作系统很难适应多样化的智能终端、各种复杂应用场景的需求。谷歌、华为等各大企业纷纷进入物联网操作系统领域,并持续加大这方面的投入。

谷歌从2016年开始研发基于Zircon微内核的Fuchsia操作系统,可以取代为移动设备设计的 Android,计划用于个人移动设备、IoT设备等不同算力和需求的场景。

华为于2019发布了基于物联网的鸿蒙操作系统HarmonyOS,随后于2020年正式发布了开源版本,也就是OpenHarmony,面向全场景、全连接,适用于各类智能设备。

1 OpenHarmony发展历史

2012年,华为总裁任正非表示:“华为做终端操作系统是出于战略的考虑”,此时鸿蒙操作系统的概念首次出现在大众视野。

2016年5月,鸿蒙正式在华为公司的软件部内部立项并开始投入研发。

2019年8月9号,华为正式发布了HarmonyOS 1.0,该系统率先部署在智慧屏上。

2020年9月10日,华为在HDC大会上发布HarmonyOS2.0。该版主要在3个方面做出重大提升:分布式的软总线、分布式的数据管理以及分布式的安全。

2020年6月,由工信部牵头的开放原子开源基金会正式成立,也是国内首个开源软件基金会。华为将HarmonyOS2.0中的基础能力部分开源出来,并捐赠给开放原子开源基金会,正式成立了OpenHarmony开源项目。

2021年6月,OpenHarmony发布了2.0 Canary版本,支持轻量带屏设备。该版本新增22个子系统,支持全面的OS能力,支持内存大于128 MB的带屏设备开发等。

2021年9月,OpenHarmony发布了3.0 LTS版本,支持简单标准带屏设备。该版本新增几十项特性,支持方舟JS编译工具链和运行时,支持JS UI框架应用开发和运行。

2022年3月,OpenHarmony发布了3.1 Release版本,支持复杂标准带屏设备。该版本基础能力得到增强,主要体现在多媒体能力、图形显示能力、内存管理能力等,分布式能力也得到了增强。

2023年4月,OpenHarmony发布了3.2 Release版本,全面支持复杂标准带屏设备。该版本能力提升主要如下:

①系统流程度:架构级的全面优化,包括ArkUI最小化更新技术、并行化极速启动架构、高性能ArkTS引擎、基础库性能优化等。

②系统功能方面:HDF支持800多个HDI标准化设备接口,API 9拥有18 000+ ArkTS API,已经足够支持复杂大型应用的开发。

③应用性能方面:提供NAPI及混合开发能力、丰富的Native API、TaskPool并行开发框架、DevEco Insight实时性能分析工具等,支持开发极致高性能的框架和应用。

④分布式能力:进一步优化和完善分布式屏幕能力、分布式数据技术以及一次开发多端部署能力上。

整个OpenHarmony版本迭代如图1所示。

图1 OpenHarmony版本演进路线

此外,在2023年6月,OpenHarmony发布了4.0 Beta版本,ArkUI进一步完善组件能力和效果,并提供首批API Level 10接口。正式的4.0 Release版本在2023年9月发布。

2 鸿蒙、HarmonyOS、OpenHarmony三者关系

从某种意义上来说,鸿蒙包括HarmonyOS和OpenHarmony。

2016 年 5 月,华为消费者 BG 软件部开始立项研发“分布式操作系统 1.0 版本”,这就是鸿蒙系统的雏形。

考虑到华为设备的现有数量和鸿蒙系统初期软件生态的不完善,华为鸿蒙系统技术上兼容Android应用,同时集成了华为自身的能力,包括HMS等,形成了一个可以在华为手机、智慧屏、平板等设备上运行的操作系统,也就是HarmonyOS,该系统不开源。

随着华为开源战略的布局,为确保鸿蒙系统能有一个良好的生态,吸纳更多共建参与,华为将鸿蒙系统的基础能力部分开源出来,开源部分也就是OpenHarmony。该部分为华为自研项目,不兼容Android生态。

所以,一般OpenHarmony指开源鸿蒙,HarmonyOS指华为闭源鸿蒙,两者在应用框架上都采用ArkUI开发框架,应用开发上互相兼容。

随着OpenHarmony生态的完善,OpenHarmony会逐步替代HarmonyOS,最终形成一个统一开源鸿蒙的生态系统。

3 OpenHarmony与Android的对比

Android是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统,主要用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。

在系统架构设计之初,OpenHarmony定位就不是Android的替代品,OpenHarmony的目标是构建一个面向万物互联时代的分布式操作系统,与Android并非同一个赛道。

两者在系统架构设计上比较相似,不过OpenHarmony在传统的系统架构上新增了分布式相关能力,如图2所示。

图2 系统架构对比

可以看到,OpenHarmony有着自己的一套架构设计和实现,在开发语言、运行时、应用框架等方面都不同于Android,两者是完全不同的操作系统。

(1)内核对比

Android:基于Linux内核,程序的安全性、网络协议、内存管理、进程管理、驱动程序都由Linux内核提供。另外,Android Runtime(ART)就是依靠Linux内核来执行底层功能的,其中包括线程和底层内存管理。

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

(2)运行时对比

Android Runtime(ART)是Android上的应用和部分系统服务使用的托管式运行时。ART及其前身Dalvik最初是专为Android项目打造的。作为运行时的ART可执行Dalvik可执行文件并遵循Dex字节码规范。

方舟eTS运行时是OpenHarmony上默认的ArkTS语言运行时,提供完备的C++交互ArkTS NAPI和各种高性能的垃圾回收器,驱动着万物互联时代的OpenHarmony应用程序。

4 技术架构

OpenHarmony整体遵从分层设计,从下向上依次为内核层、系统服务层、框架层和应用层。系统功能按照“系统>子系统>组件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪掉某些非必要的组件。OpenHarmony技术架构如图3所示。

图3 OpenHarmony技术架构

(1)内核层

内核层包括内核子系统和驱动子系统。OpenHarmony是一个支持多种内核的操作系统,包括可以支持华为自研的LiteOS内核、Linux内核等。开发者可以根据自身的硬件平台资源、应用场景选择不同的内核。此外、内核子系统也支持开发者使用其他内核,并通过内核抽象层向上提供统一的操作系统能力。

(2)系统服务层

系统服务层是OpenHarmony的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分:系统基本能力子系统集、基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集。

(3)框架层

框架层为应用开发提供了C/C++/JS等多语言的用户程序框架和Ability框架,适用于JS语言的ArkUI框架,以及各种软硬件服务对外开放的多语言框架API。

(4)应用层

应用层包括系统应用和第三方非系统应用。应用由一个或多个FA(Feature Ability)或PA(Particle Ability)组成。其中,FA有UI界面,提供与用户交互的能力;而PA无UI界面,提供后台运行任务的能力以及统一的数据访问抽象。

4.1 技术特性

OpenHarmony最主要的技术特性是以下3点:

(1)统一OS,弹性部署

OpenHarmony采用组件化和组件弹性化等设计方法,做到硬件资源的可大可小,在多种终端设备间按需弹性部署,全面覆盖了ARM、RISC-V、x86等各种CPU,硬件形态支持手机、平板、工业网关、路由器、音箱、耳机等。

(2)一次开发,多端部署

OpenHarmony提供用户程序框架、Ability框架以及UI框架,能够保证开发的应用在多终端运行时的一致性。一次开发、多端部署。多终端软件平台API具备一致性,确保了用户程序运行的兼容性。

(3)硬件互助,资源共享

多种设备之间能够实现硬件互助、资源共享,依赖的关键技术包括分布式软总线、分布式设备虚拟化、分布式数据管理、分布式任务调度等。

分布式软总线为设备之间的互联互通提供了统一的分布式通信能力,为设备之间的无感发现和零等待传输创造了条件。开发者只需聚焦于业务逻辑的实现,无需关注组网方式与底层协议。分布式软总线技术架构如图4所示。

图4 软总线架构

分布式设备虚拟化平台可以实现不同设备的资源融合、设备管理、数据处理,多种设备共同形成一个超级虚拟终端。

分布式数据管理基于分布式软总线的能力,实现应用程序数据和用户数据的分布式管理。

分布式任务调度基于分布式软总线、分布式数据管理、分布式Profile等技术特性,构建统一的分布式服务管理(发现、同步、注册、调用)机制,支持对跨设备的应用进行远程启动、远程调用、远程连接以及迁移等操作,能够根据不同设备的能力、位置、业务运行状态、资源使用情况,以及用户的习惯和意图,选择合适的设备运行分布式任务。

5 应用开发框架——ArkUI

应用框架是操作系统连接开发者生态、实现用户体验的关键基础设施。OpenHarmony为开发者提供了ArkTS开发语言以及ArkUI开发框架。

ArkUI整体架构如图5所示。最上层提供了自研声明式UI范式,也支持类Web范式;中间层为方舟编译器和运行时、声明式UI后端引擎以及渲染引擎;下层为平台适配层和平台桥接层。此外,ArkUI开发框架还配套了相应的IDE开发工具以及工具链,以提升开发体验。

此外,ArkUI不仅仅局限于OpenHarmony或者HarmonyOS,它是一个支持跨平台的UI框架,也可以运行在Android、iOS等系统上。

图5 ArkUI框架

ArkUI的声明式范式通过语法扩展方法提供了装饰器、自定义组件、UI描述、状态管理、内置组件、属性方法以及事件方法等模块,可以根据用户需求灵活组合,从而形成定制化界面,如图6所示。

图6 ArkUI声明式范式

7 生态发展

一个操作系统的成果,除了系统本身能力足够优秀之外,最重要的是其生态是否足够完善。生态的维度包括硬件生态、应用生态、共建单位、开发者生态等。

7.1 硬件生态

当前,OpenHarmony已经吸引超过50家企业参与共建、落地多个行业,160多款设备搭载OpenHarmony操作系统,如图7所示。接下来从以下几方面介绍OpenHarmony的生态进展。

图7 OpenHarmony生态总览

(1)芯片生态

2020年9月,OpenHarmony第一次发布并开源时,润和软件率先发布了3款支持OpenHarmony海思芯片的开发板,分别是Hi3861、Hi3516、Hi3518。

经过几年发展,目前OpenHarmony已经支持超过40款芯片,芯片适配历程如图8所示。

图8 芯片适配历程

OpenHarmony芯片合作伙伴包括瑞芯微、全志、晶晨、Intel、AMD、NXP、赛昉、飞腾、龙芯、汇顶、瑞昱、上海博通、联盛德、博流、翱捷、意法半导体、芯海等。

(2)设备生态

截止到2023年7月8日,通过OpenHarmony兼容性认证的商用设备数量已达162个,相关厂家80家,如图9所示。

设备形态包括电子学生证、扫码支付终端、冰箱、摄像头、网关等。其中,美的13款、华帝9款,产品形态都是智能家电。联迪9款、升腾6款都是金融行业相关设备,包括POS机、收款云喇叭等。

图9 商用设备厂家数据

7.2 行业落地

为推动相关行业落地,OpenHarmony鼓励企业用户基于开源版本的OpenHarmony系统,根据行业特点,在系统中新增行业组件、应用功能等,最终形成企业自己的行业发行版。

截至2023年7月8日,通过OpenHarmony兼容性测评的行业发行版总共34个,相关企业19家。

对行业发行版进行数据统计和分析,如图10所示。可以看到,OpenHarmony已经落地教育、金融、公共安全、超高清、交通、电力、医疗、工业、智慧城市等。其中,教育和金融行业的发行版最多,都达到了5个。

图10 行业发行版数据

此外,对已经通过兼容性认证的商用设备的行业属性进行数据统计,如图11所示。可以看到当前OpenHarmony在金融、家电行业的产品最多,两者总共占比为49%,接近一半,其次是工业、教育、交通等行业。

图11 行业发行版厂家数据

7.3 应用生态

应用生态是OpenHarmony接下来几年发展的重中之重。

在API能力方面,OpenHarmony已经发展到API9版本,API数量已经达到了18 000多个,包括声明式UI能力、应用开发框架、WEB能力、多媒体能力、分布式能力等,已经可以支持复杂应用开发。

2022年HDC大会上,华为与鸿蒙生态的 14 家合作伙伴签署合作备忘录,将在鸿蒙生态领域深度投入。参加签约的品牌合作伙伴包括新浪、中国国航、人民网、金山办公、奇安信、去哪儿网、乐元素、科大讯飞、酷狗、百度、小沃科技、网易、航旅纵横、搜狗。

搜狗已经推出了OpenHarmony版本的输入法;Cocos引擎适配OpenHarmony,将为应用开发者和用户带来更多的便利和创新;Unity引擎已经能够支持OpenHarmony系统,并且渲染效果和帧率与传统操作系统不相上下。

8 展 望

OpenHarmony作为一款全新的操作系统,其设计理念非常先进,相信未来OpenHarmony一定会发展成一个伟大的操作系统,在装机量、应用数量上有重大突破,在万物互联时代,成为下一代知名操作系统。OpenHarmony未来发展方向主要围绕下面几点。

8.1 架构优化

系统架构设计上持续优化,包括ArkUI重构、视窗架构优化,实现极简UI绘制管线、分布式窗口、多源窗口融合,进一步探索高性能、轻量化的2D&3D融合的UI框架,以实现2D&3D混合UI开发。

进一步优化芯片架构的代码、驱动代码、第三方库、系统组件等相关设计,减少代码耦合性、降低代码复杂度,使得代码结构更合理,降低代码冗余。

进一步提升系统流畅度、稳定性,给开发者提供更易用、更好用以及更高效的并发API。在并发调度上,也将针对现存系统中的线程泛滥问题,从时间和空间两个维度设计相关方案进行优化和改进,并将开发一套统一的并行框架,在运行时根据任务依赖状态和可执行资源自动并发调度和执行任务。

8.2 系统能力

当前,OpenHarmony核心API数量已经到18 000之多,而Android核心API数量为36 000之多。未来,OpenHarmony将围绕声明式UI能力、应用开发框架、WEB能力、多媒体能力、多媒体能力、分布式能力、通信能力、安全能力、全球化服务、DEX、电话等能力,提供更丰富的API,如图12所示。

图12 系统能力

8.3 分布式能力

分布式能力进一步增强,提供更强大的全场景能力。分布式能力效率进一步提升,减少时延、实现大带宽场景的分布式流转和协同,从交互体验走向场景化体验。

轻量系统软总线能力完善,实现IoT设备与智能设备之间的软总线互联互通。

优化软总线代码,减少资源占用,在内存更小的芯片上实现软总线功能。

8.4 多内核

OpenHarmony未来将支持更多的内核,其中比较重要的是硬实时内核和微内核。

(1)硬实时内核

在工业控制领域,实时(Real Time) 是很重要的要求。传统LiteOS-M内核在实时性上达不到硬实时的要求。为了补齐硬实时的能力,OpenHarmony已经开始支持UniProton内核。该内核主要聚焦硬实时场景,同时为上层业务软件提供一个统一的操作系统平台,屏蔽底层硬件差异,并提供强大的调试功能。

(2)微内核

当前,OpenHarmony支持的内核为LiteOS和Linux,两者都是宏内核。OpenHarmony微内核已经在研发中,未来OpenHarmony将支持微内核架构。

同时,OpenHarmony也将基于微内核技术的可信执行环境,通过“形式化方法”显著提升了TEE内核的安全等级,全面提升全场景终端设备的安全性。

8.5 应用生态

应用生态建设是OpenHarmony未来发展的重心,主要围绕以下几方面展开:①补齐应用能力,提供高效的应用API、适配更多的第三方库组件,完善ArkUI开发框架,给开发者提供一个更高效的应用开发环境。②赋能开发者,提供各种激励,建立应用上架、应用商城等,让开发者更有动力开发OpenHarmony应用。③拓展应用厂家,与头部应用厂家建立联合开发机制,加速头部应用支持OpenHarmony,共同建设应用生态;赋能中小应用厂家、开发者,帮助他们解决OpenHarmony应用开发过程中的问题,实现应用生态的突破。

为了能让大家更好的学习鸿蒙 (OpenHarmony) 开发技术,这边特意整理了《鸿蒙 (OpenHarmony)开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙 (OpenHarmony)开发学习手册》

入门必看:https://qr21.cn/FV7h05

  1. 应用开发导读(ArkTS)
  2. ……

HarmonyOS 概念:https://qr21.cn/FV7h05

  1. 系统定义
  2. 技术架构
  3. 技术特性
  4. 系统安全

如何快速入门?:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. 构建第一个JS应用
  4. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/422432.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单源最短路径(java版)

📑前言 本文主要是【单源最短路径】——单源最短路径使用的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每…

Med-YOLO:3D + 医学影像 + 检测框架

Med-YOLO:3D 医学影像 检测框架 提出背景设计思路网络设计训练设计讨论分析 魔改代码:加强小目标检测总结 提出背景 论文链接:https://arxiv.org/abs/2312.07729 代码链接:https://github.com/JDSobek/MedYOLO 提出背景&…

2024如何入局云计算?亚麻云助力您成为云专家!一次不过,免费再考

福利派送 2024年伊始,一波又一波的裁员潮又开始啦!还在做传统行业?还在做传统程序员?亦或是对未来依旧迷茫?赶紧趁着行业东风,开始了解入门云计算吧!亚马逊云科技,认证福利免费送&a…

SRC实战 | 某系统后台登录绕过到getshell

本文由掌控安全学院 - 17828147368投稿 开局一个登录框,漏洞全靠运气,先测试一下弱口令无果,再来个万能密码绕过登录试试 直接进去了,主要这个系统给人感觉就老 一般只要进入后台,功能点就多起来了,权限也…

PXE高效批量网络装机及kickstart无人值守安装

通过网卡启动 将准备的好的 4大文件 下载本地内存 ,然后利用kikstart 应答文件 完成一键装机 单机: 光驱加载 linux 镜像去安装操作系统,光驱里有一个小型的linux操作系统 将操作系统 安装进自己的硬盘 PE 操作系统是外来的 设备的上操作系…

JavaEE 文件操作IO

文件操作&IO 文章目录 文件操作&IO1. 认识文件2. 文件操作2.1 File 类2.2 文件读写2.2.1 FileInputStream2.2.2 FileOutputStream2.2.3 FileReader2.2.4 FileWriter2.2.5 Scanner读取文件 3. 案例练习3.1 案例一3.2 案例二3.3 案例三 在进行文件操作之前,我…

Atlas元数据处理框架:让你的大数据应用更高效、更稳定!

介绍:Apache Atlas是一套开源的元数据管理和治理产品,由Apache软件基金会托管。它广泛应用于大数据领域,帮助企业管理数据资产,分类和治理这些资产,并为数据分析和数据治理提供高质量的元数据信息。 随着企业业务量的增…

0基础转行做软件测试?一文教小白拿到初级岗位offer?

我认为入门软件测试需要四个方面的知识or技能,它们是:业务知识、职业素养、基础知识、技术知识。 职业素养是一切的根基,因为人在职场就必须拥有必要的职业素养,软件测试工程师也不例外。基础知识和技术知识是两大支柱&#xff0…

【Electron】Electron是什么

1. Electron是什么 Electron是使用JavaScript、HTML和CSS构建跨平台(Windows、MacOs、Linux)的桌面应用。Electron其实就是一个可以展示网页内容的壳子,相当于一个独立的浏览器,可以提供给你一些接口,去调用系统的资源…

git本地分支的合并/切换分支时遇到的问题

目录 第一章、本地分支的切换测试1.1)切换之前的master分支下文件内容1.2)切换到develop分支后修改文件1.3)切回master分支出现报错: 第二章、解决方式2.1)方式1:commit提交修改2.2)方式2&#…

深度学习(2)--卷积神经网络(CNN)

目录 一.卷积神经网络基础概念 二.输入层 三.卷积层 四.池化层 五.整体网络架构 六.感受野 一.卷积神经网络基础概念 卷积神经网络(Convolutional Neural Networks)是一种深度学习模型或类似于人工神经网络的多层感知器,常用来分析视…

SpringBoot - SpringBoot手写模拟SpringBoot启动过程

依赖 建一个工程,两个Module: 1. springboot模块,表示springboot框架的源码实现 2. user包,表示用户业务系统,用来写业务代码来测试我们所模拟出来的SpringBoot 首先,SpringBoot是基于的Spring,所以我…