认识HarmonyOS

HarmonyOS 三大特性

  • 硬件互助,资源共享
    • 把各终端硬件的能力,虚拟为一个共享的能力资源池,让应用通过系统,调用取其硬件能力。在这种架构下,硬件能力就像“活字印刷术”中的单词字母,可以被无限次的重复使用。即各终端实现“硬件互助,资源共享”的应用,具有了调用远程终端的能力,就像在调用本地终端一样方便。用户是收获了一个多设备组成的超级终端。
      • 比如有手机、电视、手表等多种终端形态,但是各个终端能使用的资源是不一样的,比如在手机上打游戏,手机的屏幕非常小,看着非常不方便,就可以把手机的屏幕画面投屏到电视上。这样就可以实现了在手机上操作游戏,然后画面是在电视上呈现。手机跟电视就组成了一个超级终端。手机的硬件和电视的屏幕硬件,它们就相当于是互助的,就实现了游戏资源的共享。
    • 实现方式:(五个方面)
      • 分布式软总线
        • 多种终端设备统一的基座,为设备之间互联互通提供了统一的这种分布式通信能力,能够快速发现并连接设备,高效的分发任务和传输数据。
      • 分布式设备虚拟化
        • 它可以实现不同设备的资源融合、设备管理、数据处理。多种设备共同形成了一个超级虚拟终端,针对不同类型的任务,为用户匹配并选择能力合适的对应执行硬件,让业务连续地在不同设备间流转,充分发挥不同设备的这种资源优势
      • 分布式数据管理
        • 它是基于分布式软总线的能力实现应用数据和用户数据的分布式管理。用户数据,它不再与单一的物理设备绑定。业务逻辑与数据存储是分离的。应用跨设备运行时,数据可以无缝地衔接,为打造一致的流畅用户体验创造了对应技术条件。
      • 分布式任务调度
        • 它是基于分布式软总线、分布式数据管理、分布式 profile 等技术特性,构建统一的这种分布式服务管理。支持对跨设备的应用进行远程的这种启动、远程的调用、远程连接以及迁移等等操作。它能够根据不同的设备的能力位置、业务运行状况、资源使用情况以及用户的习惯和意图来选择合适的设备来运行分布式任务。
      • 分布式连接能力
        • 它提供了智能终端底层和应用层的连接能力。通过 USB 接口共享终端部分硬件资源和软件能力,开发者基于分布式连接能力可以开发相应形态的生态产品,为消费者提供更丰富的连接体验。
  • 一次开发,多端部署
    • HarmonyOS 它提供了用户程序的框架,ability 框架, UI 框架。它能够保证开发的应用在多端运行的一致性,一次开发、多端部署、多终端软件平台 API 具备一致性,确保用户程序运行的兼容性,支持在开发过程中预览终端的能力适配情况。支持根据用户程序与软件平台的兼容性来调度用户权限。下图也展示了一次开发多端部署的这么一个示意图。

image.png

  • 统一 OS,弹性部署

HarmonyOS 通过组件化和小型化等方面来支持多种终端按需弹性部署,能够适配不同类型的硬件资源和功能需求。支持通过编译链关系去自动生成组件化的一个依赖关系,形成组件树依赖图,支持产品系统的便捷开发。具体来讲它在哪几些方面做到了弹性部署呢?

  • 组件可有可无
    • 可以支持各组件的一种选择,可以根据硬件的形态和需求来选择需要的一些组件。
  • 组件可大可小
    • 它可以根据硬件的资源的情况和功能需求,可以选择配置组件中的一些功能集,比如选择配置图形框架组件中有一部分的空间。
  • 平台可大可小
    • 根据编译链的关系,可以自动生成组件化的依赖关系。例如选择图形框架的组件,将会自动选择依赖中的图形引擎组件等等。

全视角了解HarmonyOS架构

下图全视角展现了 HarmonyOS 的一个架构,它遵循的是分层架构设计。从下而上它依次为内核层、系统服务层、框架层和应用层。系统功能按照:系统、子系统功能模块逐级展开,在多设备部署场景下,支持根据实际需求去检查某些非必要的子系统或者功能模块。
image.png

内核层

首这是一张内核层的示意图。 HarmonyOS 的内核层主要分为两个大的部分,第一部分是内核子系统,第二部分是驱动子系统。在内核子系统里面, HarmonyOS 采用的是多内核的一种设计,支持针对不同资源受限的设备,选用适合 OS 内核, 内核抽象层,它会通过屏蔽多内核的差异,对上层提供基础的内核能力,包括进程和线程的管理、内层的管理、文件系统、网络管理和外设管理等等。
从这个示意图上里也可以看到它支持的内壳目前是有Linux,还有 LiteOS 驱动子系统,它是硬件驱动框架,是 HarmonyOS 硬件生态开放的基础,提供了统一外设访问能力和驱动开发管理框架。
image.png

系统服务层

以下是整个系统服务层的一些核心能力的一个集合。从图上可以看到包含了以下几个部分,首先是系统的基本能力,即系统级。这些能力,它是为分布式应用在 HarmonyOS 多设备上运行、调度、迁移等操作提供了一些基础的一些能力。它是由分布式软总线、分布式数据管理、分布式任务调度、方舟多语言运行时、公共基础库、多模输入、图形安全、 AI 等子系统组成。其中方舟运行时提供了C、 C++、 JS 多语言运行时和基础系统库,也为使用方舟编译器静态化的 Java 程序提供运行时。
在基础软件服务子系统级里面,它是为 HarmonyOS 提供公共的、通用的软件服务。由事件通知电话、多媒体、DFXD 子系统、 MSDPDB 等子系统组成。增强软件服务子系统级里面为 HarmonyOS 提供了针对不同设备差异化的能力。增强型软件服务,由智慧屏专有业务、穿戴专有业务、 IoT 等业务子系统组成。硬件服务子系统级,它为 HarmonyOS 提供硬件服务,有位置服务、生物特征识别、穿戴专有硬件服务、IOT 专用硬件服务等子系统组成,根据不同的设备形态的部署环境,基础软件服务子系统级,增强软件服务子系统级、硬件服务子系统级内部可以按子系统的粒度,来裁剪,为每个子系统内部又可以按功能颗粒度来裁剪。
image.png

框架层

以下是框架层的一个示意图。框架层它是为 Harmony OS 开发,提供了Java、c、js 等多语言用户程序的框架。 即 Ability 框架。两种 UI 框架包括适用于 Java 语言的 Java UI 框架和适用于 js 语言的 js ui 框架以及各种软硬件服务对外开放的多语言框架API。根据系统的组件化进行一个裁剪, Harmony OS 设备支持的 API 也会有所不同。
image.png

应用层

应用层它包括的是系统应用和第三方非系统应用。Harmony OS 应用由一个或多个 FA 或者 PA 组成。其中 FA 是有界面的,提供与用户交互的能力,而 PA 是没有界面的,提供后台运行任务以及一些统一的数据访问抽象。那么基于FA/PA 开发的这种应用能够实现特定业务功能,支持跨设备调度与分发,为用户提供一致高效的每一个应用体验。
如下示例,这是一个鸿蒙的一个应用示例,它在一个视频通话应用里面。往往是有一个FA,它作为这个视频通话的一个主界面,而由若干个 PA 组成。 FA 提供这种 UI 界面用于与用户进行交互,然后 PA1 用于摄像头视频的采集, PA2 用于视频美颜处理, PA3 用于超级夜景的处理。FA/PA 是可以按需进行下载的,按需加载和运行的。
image.png
另外一个场景,展示了不同设备下,它下载相应应用时的不同的表现。当手机来下载该应用的时候,它就会拥有 FA 的主界面, PA 的摄像头视频采集, PA2的视频美颜。 PA3的超级夜景的处理,而如果是智慧屏来下载这个应用,如果智慧屏它不支持视频美颜处理,不支持超级夜检夜景的处理功能的时候,它就只会下载 FA 主界面和 PA1 摄像头视频采集,这就是应用层分发的一个逻辑,它其实是可以根据需要进行一个裁剪,可以按需进行下载运行。以上就是整个Harmony OS 的一个架构的一个介绍。
image.png

原生鸿蒙-特性

ArkTS 编程语言

首先第一个特性是 ArkTS 编程语言, Harmony OS提供了多种来开发鸿蒙应用 API 的一些语言,包括像ArkTS ,ts,js,C, C++, Java 等等,ArkTS 是 Harmony OS 相对来说比较新的一门语言,也是目前 Harmony OS 优先推荐的开发语言。
ArkTS 是基于 Typescript 扩展而来的,是 TS 的超集。这也是为什么 ArkTS 的原名,叫ETS,就是 extend typescript 的一个简写。那么 ArkTS 继承了 ts 所有的特性,并且ArkTS 在 ts 的基础上还扩展了这个声明式的UI,能让开发者更简洁、更自然地开发高性能的这种应用。
以下这张图片也展示了 ArkTS 编程语言,它这里只是用了短短的这个 6 行,就可以开发出一个右侧一个 hello word 的这么一个渐变效果。
image.pngimage.png

ArkUI 开发框架

第二个特性是ArkUI开发框架,ArkUI是一套分布式应用界面声明式 开发框架。它使用极简的 UI 语法、丰富的 UI 组件以及实时界面预览工具,帮助提升 Harmony OS 应用界面开发的一个效率。只需使用一套 ArkTS 的API,它就能在多个Harmony OS 设备上提供生动和流畅的这种用户界面体验。然后它具备哪些特点呢?
第一个是UI 更新机制升级,在 ArkTS 新版 3.1 里面,它通过编译器生成特定函数的方式,从而它能极大地优化 UI 组件的这个渲染性能。
第二点是逻辑和 UI 分离,通过数据双向绑定机制来传递页面的一个变化逻辑,将流转的 7 个步骤简化为了 2 个步骤,将跨端迁移和协同开发代码量降低了 40% 以上。
第三点,它是支持这种 stage 模型,面向开发者提供了十几种不同的场景的这种扩展机制服务,在保证后台进程合理运行的基础上,规避了应用进程之间无序拉起,保证前台资源供给、应用调度更加有序的目的。
它还提供了高级 UI 组件的扩展能力,能够满足开发者在游戏、相机、地图、浏览器等复杂的这种应用场景的开发诉求,降低了这类应用的这个移植门槛。
它可以提供原生性能体验。ArkUI内置的非常多核心的这种 UI 控件和动效,比如像图片、列表、网格、属性动画、转场动画等等,加持自研语言运行时的深度优化,这些都是可以在Harmony OS 从设备上达到像移动原生应用一样的一个性能体验。

  • UI 更新机制升级
  • 逻辑和 UI 分离
  • Stage 模型
  • 高级 UI 组件扩展能力
  • 原生性能体验

Stage 模型

stage 模型是从 API 9 开始的,从 API 9 引入了这种 stage 模型的一种开发模式,在 API8 应该说是在 API9 之前了。 Harmony OS ability 框架,它只支持这种 FA 模型。然后从 API 9 开始它就引入了 stage 模型,然后目前 stage 模型它只支持使用ArkTS 语言来进行开发。 stage 模型是从 Harmony OS 3.1 开始新增了的模型,也是目前 Harmony OS 主推而且会长期演进的子模型。在这种模型中提供了像 ability stage, window stage 等等作为应用组件的 window 窗口的舞台,因此这种模型被称为 stage 模型(主流)。

  • FA 模型:API8 及其更早版本的应用程序只能使用 FA 模型进行开发
  • Stage 模型:从 API9 开始。Stage 模型只支持使用ArkTS 语言来进行开发

Ability 组件的生命周期

下图是 Ability 组件的一个生命周期, Ability 的生命周期切换以及和 ability stage、 WindowsStage 的一个关系图。
stage 模型它定义了 Ability 组件的生命周期,包括创建、销毁、前后台等状态,将与界面强相关的获焦失焦状态放在了 WindowsStage 中,从而实现了Ability 组件跟窗口之间的弱耦合。
在服务侧,窗口管理服务依赖于组件管理服务,前者通知,后者前后台变化,这样组件管理服务仅感知前后台变化,不感知焦点变化。这也需要注意背景中它存在两个与 windowStage 相关的生命周期状态,第一个是 onWindowStageCreate 和 onWindowStageDestroy。这两个生命周期状态的变化仅存在于具有显示能力的这种设备中。前者onWindowStageCreate,它是表示 windowStage 已经创建完成了,开发者可以通过执行 load Content 方法操作设置 ability 加载的界面。后者 onWindowStageDestroy,它表示 WindowsStage 销毁后调用,方便开发者对自研进行一个释放。
image.png

ArkCompiler

Ark compiler,是华为自研的统一编程平台,它包括了编译器、工具链、运行时等关键部位,支持高级语言在多种芯片平台的编译与运行,并支撑应用和服务运行在手机、个人电脑、平板、电视、汽车和智能穿戴等多种设备的需求。然后这个编译器有什么特点呢?
第一个是它是支持 AOT 编译模式,这种模式它会利用 ArcTS 静态类型信息,进行类型的一个推导,并生成对象描述和内联缓存。加速运行时对字节码的解析执行,让应用启动即可运行高性能的代码,提升应用启动和运行的性能。
第二点,它支持这个 LiteActor 的轻量化并发。ArkCompiler运行时在 Harmony OS 上提供了 work API 来支持并发编程。在运行时实例内存隔离的基础上,通过共享运行实例中不可变或者不易变的对象,内建代码块、方法字节码等技术手段优化了并发运行实例的启动性能和内存开销。
第三点是源码安全,ArkCompiler会把ArcTS、ts、js 编译为方舟字节码,运行时直接运行方舟字节码,然后运用多种混淆技术来提高更高强度的混淆与保护,使得 Harmony OS 应用代码强度会变得更高。

  • 并发 AOT 编译模式
  • LiteActor 轻量化并发
  • 源码安全

原生鸿蒙与 HarmonyOS NEXT 的关系

在 2023 年8月4日,在华为开发者大会上,华为就公布了这个 Harmony OS next 开发者预览版计划,这个计划它在 2023 年8月,会面向企业开发者开放。 2024 年第一季度面向所有开发者开放。然后 Harmony OS next 它有什么特点呢?
第一个特点是它去掉了传统的 AOSP 的代码,然后因为剥离了很多传统的一些很多框架,所以这个冗余代码相对比较少,系统就会相对来说比较流畅,能效、纯净、安全特性就会大大的提升。当然了, HarmonyOS NEXT ,它虽然是在 2024 年的这个第一季度面向开发者开放,但实际上它这种开放程度不是非常高,它有非常高的一些设置和非常高的一些门槛。不是谁都可以去参与它这个开发。比如说他要求你要具备 Mate60 及以上的这种旗舰和华为旗舰手机,然后他还要审核开发者的一些能力等等。
所以 Harmony OS next 系统目前来看它还不是非常完善,而且它还是处于这种项目的初级阶段,也没有在市面上正式的发布过,所以对于学习鸿蒙的人而言,HarmonyOS NEXT 不是一个非常好的一个学习的一个样本,它的稳定性也还不够,它也没有在市面上公开,所以不太具备这种学习能力,也不具备商用的这种能力。
但是它所使用的开发工具,以及所开发应用所使用的编程语言,它都是跟我们前面所介绍的原生鸿蒙的特质性是一致的,所以掌握到的原生鸿蒙所具备的这些开发能力,包括 API 等等,它都是可以在未来所发布的这个 harmony OS next 中可以得到很好的一个兼容和适配,所以不用担心,未来一定会发布。

  • 去掉了传统的 AOSP 代码
  • 减少了 40%的冗余代码
  • 保持原生鸿蒙特性

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

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

相关文章

勇闯机器学习(第三关-特征工程)

以下内容皆为原创,制作不易,请帅锅、镁铝点点赞赞和关注吧❥(^_^) 一.提问环节 机器学习是什么? 机器学习就是通过自动分析大量数据去建立模型,训练模型,预测数据。 这么好记的概念,你应该记住了吧&#x…

企业高性能web服务器知识点合集

文章目录 nginx源码编译安装平滑升级及版本回滚平滑升级版本回滚 服务启动脚本核心配置全局配置参数优化调整root与alias自定义错误日志自定义错误页面检测文件是否存在长链接配置下载服务器的配置 nginx高级配置nginx状态页面压缩功能变量内置变量自定义变量 nginx rewrite指令…

MySQL基础知识(二)-超详细 Linux安装MySQL5.7完整版教程及遇到的坑

1.简介 我们经常会在Linux上安装MySQL数据库,但是安装的时候总是会这里错,那里错,不顺利,今天整理了一下安装流程,连续安装来了两遍,没有遇到什么大错误,基本上十分钟左右可以搞定,教…

自行车制造5G智能工厂工业物联数字孪生平台,推进制造业数字化

在当今这个日新月异的数字化时代,制造业正经历着前所未有的变革,自行车制造5G智能工厂工业物联数字孪生平台的兴起,无疑是这场转型浪潮中一股强劲力量。自行车制造5G智能工厂工业物联数字孪生平台的成功应用,不仅仅是技术上的突破…

【Go】实现字符切片零拷贝开销转为字符串

package mainimport ("fmt""unsafe" )func main() {bytes : []byte("hello world")s : *(*string)(unsafe.Pointer(&bytes))fmt.Println(s)bytes[0] Hfmt.Println(s) }slice的底层结构是底层数组、len字段、cap字段。string的底层结构是底层…

产品帮助中心如何搭建?五步让客户满意度提升100%

一、引言 创建帮助文章的好处是节省了招募大量客户联系代理的昂贵成本。它们现在通过解决客户的早期问题而无需支持干预,并为自助提供逐步指导,从而取代了支持代理。 当您创建帮助文章时,您会构建知识库并为将来保留它。这些帮助文章充当新…

案例:ZooKeeper + Kafka消息队列集群部署

目录 消息队列 概念 使用场景 不适宜 适宜 消息队列的特征 存储 异步 异步的优点 同步 为什么需要消息队列 解耦 作用 冗余 扩展性 灵活性 峰值处理能力 可恢复性 顺序保证 Kafka 概念 Kafka技术名词 (1)Broker (2&a…

C语言一笔画迷宫

目录 开头程序程序的流程图程序游玩的效果结尾 开头 大家好&#xff0c;我叫这是我58。 程序 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h> #include <Windows.h> void printmaze(const char strmaze[11][11]) {int ia 0;…

BUG——imx6u开发_结构体导致的死机问题(未解决)

简介&#xff1a; 最近在做imx6u的linux下裸机驱动开发&#xff0c;由于是学习的初级阶段&#xff0c;既没有现成的IDE可以使用&#xff0c;也没有GDB等在线调试工具&#xff0c;只能把代码烧写在SD卡上再反复插拔&#xff0c;仅靠卑微的亮灯来判断程序死在哪一步。 至于没有使…

41-设计规则:线宽规则

1.设置电源线规则和信号线规则 2.设置信号线规则 3.设置电源线规则 如果未生效&#xff1a; ① 提升优先级即可。 ②查看使能选项有没有勾选

20:【stm32】定时器一:时基单元

时基单元 1、什么是定时器2、时基单元的基本结构2.1&#xff1a;脉冲的来源2.2&#xff1a;预分频器PSC2.3&#xff1a;计数器CNT2.4&#xff1a;update事件与预加载 3、标准库编程3.1&#xff1a;通过定时器中断来设置延迟函数 1、什么是定时器 定时器是一种专门负责定时功能…

Vue 满屏纵向轮播图

目录 前言轮播图效果展示具体实现实现思路具体代码前言 今天汇总一个需求,还是之前写的,要求写一个满屏的轮播图,准确的说,是鼠标滑动到轮播图的时候,轮播图固定在屏幕上,随着其中的轮播子项遍历结束后,解除固定的效果。原本我最开始想直接修改Element-UI的组件的,但是…

CISAW认证考试的时间是多久

CISAW&#xff0c;即中国信息安全保障人员&#xff0c;是中国信息安全认证与审查中心进行权威认证的缩写。它是全国范围内最为权威、最高端的信息安全认证之一。作为信息安全领域的重要认证&#xff0c;对于从事网络安全工作的人员来说具有极其重要的意义。因此&#xff0c;备考…

【容器安全系列Ⅲ】- 深入了解Capabilities的作用

在本系列的上一部分中&#xff0c;我们提到 Docker 容器尚未使用 time 命名空间。我们还探讨了容器在许多情况下如何以 root 用户身份运行。考虑到这两点&#xff0c;如果我们尝试更改容器内的日期和时间会发生什么&#xff1f; 为了测试这一点&#xff0c;我们先运行 docker r…

入门网络安全工程师要学习哪些内容

大家都知道网络安全行业很火&#xff0c;这个行业因为国家政策趋势正在大力发展&#xff0c;大有可为!但很多人对网络安全工程师还是不了解&#xff0c;不知道网络安全工程师需要学什么?知了堂小编总结出以下要点。 网络安全工程师是一个概称&#xff0c;学习的东西很多&…

2000-2023年逐年最大NDVI数据集(500m)

植被指数&#xff08;NDVI, Normalized Difference Vegetation Index&#xff09;可以准确反映地表植被覆盖状况。目前&#xff0c;NDVI时序数据已经在各尺度区域的植被动态变化监测、土地利用/覆被变化检测、宏观植被覆盖分类和净初级生产力估算等研究中得到了广泛的应用。 中…

【java】RuoYi-Vue前后端分离版本-请求被拦截,怎么修改拦截过滤器,解决方案

【java】RuoYi-Vue前后端分离版本-请求被拦截&#xff0c;怎么修改拦截过滤器 它用到了一个安全管理框架Spring Security 你可以通过这篇文章《Spring Security 详解》 去了解它&#xff0c;怎么使用或者使用原理。 所有业务都受SecurityConfig配置所过滤 SecurityConfig配置…

【功能自动化】使用Excel文档获取参数数据

环境搭建&#xff1a; 1.需要配置WebTours网站 2.安装pandas pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python_dateutil…

设计模式(3)结构型模式

结构型模式 结构型模式1. Adapter&#xff08;适配器模式&#xff09;2. Bridge&#xff08;桥接模式&#xff09;3.Composite&#xff08;组合模式&#xff09;4.Decorator&#xff08;装饰模式&#xff09;5.Facade&#xff08;外观模式&#xff09;6.Flyweight&#xff08;享…

14、Ripper

难度 低->中 目标 一个root 两个flag kali 192.168.135.58 靶机 192.168.135.104 netdiscover -i eth0 -r 192.168.135.0/24 端口扫描 先访问一下80端口和10000端口&#xff0c;这两个都是web服务的样子 80端口是初始化界面&#xff0c;可以尝试扫扫目录 访问10000端口…