关于鸿蒙系统开源和技术细节的一些探讨

1月18日在深圳举办了“鸿蒙生态千帆启航仪式”,这也是华为鸿蒙开启生态进阶的信号。在政策的叠加下,鸿蒙未来必定是势不可挡的。我们这些程序员也得与时俱进,熟悉鸿蒙的技术和细节,别在经济寒冬里被淘汰了。

官方称 Harmony OS NEXT开发者预览版将在2024年第一季度面向开发者开放。2024年9月,最新版的HarmonyOS将进入独立生态体系,不再兼容安卓应用。需要及时构建一套基于鸿蒙原生APP的服务,以保障鸿蒙用户的业务连续性。本文我们来聊聊鸿蒙的一些技术细节,也欢迎大家在评论区补充。

宏内核与微内核

先来聊聊内核,内核是操作系统内最基础的构件,因此内核的设计对于操作系统的外部特性也有着至关重要的影响。常见内核结构可以分为宏内核、微内核、混合内核、外内核等。

虽然鸿蒙与安卓都是基于Linnux开发的,区别在于安卓是基于宏内核结构设计,而鸿蒙是基于微内核结构设计。鸿蒙系统使用C和C++编写,不需要虚拟机这一中间过程(当然,过度期间是需要AOSP的),因此运行效率更高。

宏内核:存在历史最长内核,也在应用领域占据着主导地位,比如安卓。

微内核:较新内核结构,但是它拥有着众多宏内核不具有的优良特性,因此被华为选用。

在这里插入图片描述

在这里插入图片描述

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或其他操作系统原生技术融合。下周有时间单独开一篇讲讲这三种鸿蒙开发模式。

在这里插入图片描述

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

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

相关文章

1.24号c++

C绪论 c是c语言的扩充,C包含了C的所有属性,换一句话说,C语言在C中都合法。 C语言编程思想:面向过程 c编程思想:面向对象 可以说在C中一切皆对象。 c的三大属性:封装,继承,多态。…

VMWare扩展Ubuntu LVM卷

当我们在安装程序提示磁盘空间满了时,我们可以通过以下步骤进行空间扩展。 首先是调整虚拟机磁盘大小,注意这里关机后才可编辑 然后是使用df -hl命令,看磁盘占用情况,找到满载的分区 再是使用lsblk查看分区设备名,确定…

安达发|APS排产系统和SCM供应链管理之间的关系

APS排产系统和SCM供应链管理是现代企业管理中非常重要的两个环节,它们之间存在着密切的关系。本文将从以下几个方面来探讨APS排产系统和SCM供应链管理之间的关系。 1. 定义与功能 APS排产系统(Advanced Planning and Scheduling System)是一种…

加速应用开发:低代码云SaaS和源码交付模式如何选

随着数字化转型的加速,企业对于快速开发和交付高质量应用的需求也越来越迫切。为了满足这一需求,开发者们开始探索采用低代码平台进行软件开发工作,以加速应用开发过程。 目前,市场上的低代码产品众多,但基本可分为简单…

外包干了2个多月,技术退步明显。。。。。

先说一下自己的情况,本科生,19年通过校招进入广州某软件公司,干了接近3年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

代理设计模式JDK动态代理CGLIB动态代理原理

代理设计模式 代理模式(Proxy),为其它对象提供一种代理以控制对这个对象的访问。如下图 从上面的类图可以看出,通过代理模式,客户端访问接口时的实例实际上是Proxy对象,Proxy对象持有RealSubject的引用&am…

【2024】新建mysql数据库,如何选择字符集和排序规则

如何使用 Navicat 新建 MySQL 数据库,并选择字符集与排序规则 如何使用 Navicat 新建 MySQL 数据库并选择字符集与排序规则1. 开始之前2. 新建数据库步骤 1: 打开 Navicat步骤 2: 创建新数据库步骤 3: 填写数据库名称 常见的字符集和排序规则及其选择场景1. 字符集&…

有了NFC和蓝牙,为何还要UWB?什么时候UWB才是首推选择呢?

UWB UWB(超宽带,Ultra-Wideband)是一种短距离无线通信技术,它提供比当前使用的其他定位技术更精确的读数,使用飞行时间(ToF)和到达角(AoA)计算,UWB可以实时地…

jmeter分布式压测详解,建议收藏

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号:互联网杂货铺,回复1 ,免费获取软件测试全套资料,资料在手,薪资嘎嘎涨 一、什么是压力测试? 压力测试&#xff0…

SQL 注入总结(详细)

一、前言 这篇文章是最近学习 SQL 注入后的笔记,里面整理了 SQL 常见的注入方式,供大家学习了解 SQL 注入的原理及方法,也方便后续自己回顾,如有什么错误的地方欢迎指出! 二、判断注入类型 按照注入点类型分类 数字型…

QT 实现自动生成小学两位数加减法算式

小学生加减法训练 QT实现–自动生成两位数加减法算式,并输出txt文件 可以copy到word文件,设置适当字体大小和行间距,带回家给娃做做题 void MainWindow::test(int answerMax, int count) {// 创建一个随机数生成器QRandomGenerator *gener…

AIGC:让生成式AI成为自己的外脑(文末送书)

🌈个人主页:聆风吟 🔥系列专栏:数据结构、网络奇遇记 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. 什么是AIGC?二. AIGC如何运作?2.1 步骤一:收集数据2.…

某顺cookie逆向

目标网站:aHR0cHM6Ly9xLjEwanFrYS5jb20uY24v 这个网站是对cookie进行反爬虫的,可以看到cookie中有一个加密参数v 二、分析参数 可以使用hook方法,来hook住cookie中v生成的位置,可以直接在控制台中输入hook函数 (function () {use strict;v…

ZigBee学习——浅析协议栈

✨记录学习过程 文章目录 一、初识OSAL1.1 Z-Stack和Zigbee的OSAL是什么关系?1.2 OSAL可以解决Z-stack在不同厂商的芯片上的使用吗? 二、协议栈运行机制2.1 初始化涉及内容2.2 初始化过程 一、初识OSAL OSAL,全称是操作系统抽象层&#xff0…

五分钟学会接口自动化测试框架

今天,我们来聊聊接口自动化测试。 接口自动化测试是什么?如何开始?接口自动化测试框架如何搭建? 自动化测试 自动化测试,这几年行业内的热词,也是测试人员进阶的必备技能,更是软件测试未来发…

前端开发提高效率的两大工具

一、浏览器中的开发者工具 怎么启动开发者工具? 在浏览器中按下F12或者鼠标右键点击检查 怎么利用(常用的几点)? 1、元素 点击标红的图标可以用于在页面选择元素,同时右侧会找到元素在前端代码中的位置 点击下方红…

用艺术陪伴困境群体活动在庐阳区双岗街道万小店社区开展

用艺术陪伴困境群体活动在庐阳区双岗街道万小店社区开展 1月23日上午9时,王莉老师带领“一欣工作室”的七位小朋友冒着严寒,来到位于万小店社区和煦园小区的合肥市庐阳区为民社会工作服务中心,慰问陪伴中心的兄弟姐妹。 大家一起唱歌、一起表…

【51单片机系列】proteus中的LCD12864液晶屏

文章来源:《单片机C语言编程与Proteus仿真技术》。 点阵字符型LCD显示模块只能显示英文字符和简单的汉字,要想显示较为复杂的汉字或图形,就必须采用点阵图型LCD显示模块,比如12864点阵图型LCD显示模块。 文章目录 一、 LCD12864点…

用可视化案例讲Rust编程4. 用泛型和特性实现自适配shapefile的读取

本节已经涉及Rust学习曲线上的一个大坑:泛型和特性了,属于语言的深水区,如果初学者,建议看一眼知道有这个功能即可。 如果我们立足于功能实现,那么做到像上一节那样就可以了,从原理上来说,每个…

2023 工业 AR 关键词:纵深和开拓

2023 年,以虚实融合、工业元宇宙为代表的“新数字化”升级在工业制造领域达成共识。 ▲五部委联合印发元宇宙行动计划 通过发展元宇宙赋能新型工业化 而相对过去几年的行业渗透广、落地场景多样的 AR 业务拓展与合作,#纵深和#开拓,成为 2023…