引言

最近看了朱有鹏老师对鸿蒙的科普(链接在最底部),看下来感觉对一个开发者来说是非常有必要了解的,下面我总结了一部分内容,作为学习笔记,也欢迎与大家一起讨论。

什么是鸿蒙

平时我们谈到的鸿蒙,其实包括了两个东西,一个是​​OpenHarmony​​,一个是​​HarmonyOS​​。

OpenHarmony和HarmonyOS的区别

  • OpenHarmony是由​​开放原子开源基金会​​孵化及运营的开源项目,OpenHarmony不是华为的,华为只是OpenHarmony项目的主要贡献者和使用者。华为向OpenHarmony项目贡献了大量代码,未来也将持续为OpenHarmony开源项目贡献代码。
  • HarmonyOS 是华为​​基于开源项目OpenHarmony​​ 开发的面向多种全场景智能设备的​​商用版本​​(不开源)。类比一下安卓的开源项目,不同手机品牌可以拿安卓这个开源项目进行定制,比如小米有自己的MIUI,华为有自己的EMUI系统。所以OpenHarmony就类似Android,HarmonyOS就类似EMUI。

下面我们主要来了解一下HarmonyOS。

HarmonyOS 是什么?

  • HarmonyOS是一款​​智能硬件​​的操作系统。类比一下,Windows是桌面电脑的操作系统,ios,Android是手机的操作系统。这里有明显的区别,智能硬件是一类产品,而手机和电脑是一种产品。
  • HarmonyOS是一个​​完整的操作系统​​,不是一个内核。比如Linux就是一个kernal,而安卓和苹果系统就是一个完整的操作系统。
  • HarmonyOS还包括相关的IDE,认证体系,生态系统等周边元素。一个完整的操作系统其实包括了一个完整的运行生态。为保护华为现有手机和平板用户的数字资产,在遵循AOSP协议的开源许可的基础上HarmonyOS 实现了现有Android生态应用在部分搭载该系统设备上的运行。

HarmonyOS想做的事

为了做​​硬件​​的​​智能化改造​​。

  • 实现硬件之间的​​“智能联动”​​。
  • 成为AIoT OS的​​先驱​​和主流OS​​生态​​。

其次,利用多种​​分布式技术​​相与安卓和苹果三分智能手机天下。

HarmonyOS最大的创新点

  • 最大的特点是​​面向场景式​​编程,而不是传统的​​面向设备​​的编程。比如现在开发一个安卓的APP,我们可以确切的知道这个APP肯定式运行在安卓手机上的,而不是电视上,这就是面向设备编程。那什么是面向场景编程?比如现在我们要开发一个聊天交流的APP,聊天交流就是一个场景,在这个聊天过程中,我们可能坐在客厅,这时候我们可能会希望视频聊天界面是在电视上,在办公桌上,我们就会希望视频聊天界面在电脑上,当我们中途想要去上一个厕所,我们就希望聊天界面流转到手机上。这整个过程应用的场景没变,但是设备在不断变化,这就是面向场景式编程。
  • ​对应用开发者而言:​​HarmonyOS的创新是采用了多种分布式技术,使应用开发与​​不同终端设备的形态差异无关​​,从而让开发者能够​​聚焦上层业务逻辑​​,更加便捷、高效地开发应用。

Harmony分布式操作系统的特点

  • 面向场景,场景中往往包含多个离散分布的设备,就像我刚刚举的聊天的例子。
  • 一次开发多端部署,应用开发的时候就考虑到了场景的多个设备,一次开发:指的是一个团队就把多个设备的适配开发好了。多端部署:最后形成一个APP,这个APP包含了所有设备的页面以及相关功能,可以部署到不同设备上。
  • 有​​流转​​和​​多端协同​​功能,流转:比如刚刚的聊天软件例子,在客厅到厕所发生地点转换的时候,聊天界面从电视自动切换到手机就是一个流转。多端协同:在客厅时,戴着鸿蒙系统的耳机,这时你不想被别人听见你的谈话内容,这时候就是电视显示聊天界面,但是不调用电视的功放外设,而调用耳机,使声音来自耳机。

超级虚拟终端

  • HarmonyOS可以通过​​“物理层通过WIFI + 系统层通过软总线 + 应用层通过app”​​将场景中多个独立的终端连接起来,实现互相调用、智能联动。刚刚的聊天软件例子,在实现不同设备的流程过程中,其实依靠的就是一个超级虚拟终端。
  • 场景中智能联动的多个独立终端,构成了​​虚拟的、逻辑上​​的“HarmonyOS超级终端”

HarmonyOS的南向和北向

  • HarmonyOS应用开发叫北向,HarmonyOS设备内部嵌入式开发叫南向
  • 北向是​​纯软件开发​​,一般用java、js等语言,注重​​业务逻辑​​,目标是实现应用功能,满足客户需求
  • 南向是软硬件结合的​​嵌入式开发​​,一般用C、C++,注重​​硬件操作和能力封装​​,目标是提供北向API的内部实现

hap和app

在HarmonyOS中,app和Android的定义还是有区别。

  • Harmony的app是​​面向场景​​的,对应的是一个场景,Android的app是​​面向设备​​的,对应的是手机等设备。
  • app对应场景和整体超级终端,而hap对应设备和个体终端
  • app中包含1个或多个hap
  • HarmonyOS应用开发者最终产出是app
  • 单个HarmonyOS设备中可运行的代码单位是hap

本博客根据朱有鹏老师的课程总结:
​鸿蒙的十万个为什么【共26课时】_鸿蒙设备开发课程-51CTO学堂​