2020年9月,华为发布了鸿蒙操作系统(HarmonyOS)2.0,并发布了其开源版本OpenHarmony。从此,鸿蒙操作系统的面纱终于被揭开了。作为国人期待已久的操作系统,鸿蒙不仅承载着华为软件生态的未来,也代表着中国操作系统领域的一次重要尝试和突破。
鸿蒙的本意是指远古时代开天辟地之前的混沌之气,而鸿蒙操作系统则代表了华为从零开始开天辟地的决心和勇气。与学习Android和iOS不同,鸿蒙的软件生态刚刚起步,这是一片全新的领域等待你的探索。笔者相信,正在阅读这段文字的你一定对鸿蒙操作系统的未来充满信心!
截至2021年8月,HarmonyOS 2.0升级用户已经突破5000万,而这距离HarmonyOS 2.0的发布仅过去了2个月,如图1所示。当你第一次听说HarmonyOS时,一定想知道它究竟蕴含着什么能量?为什么HarmonyOS在短短两个月内就可以得到广大开发者和消费者的认可?这篇文章就让我们细细道来。
图1  HarmonyOS 2升级用户突破5000万
01
历史的机遇:物联网时代的到来
开发一个完整的操作系统不是一件容易的事。华为消费者业务CEO余承东表示,鸿蒙操作系统在研发上已经投入了上亿的资金,消耗了大量的人力和物力,然而,这些投入在短期内很难获得相应的收益回报。那么,华为为什么还要研发鸿蒙呢?
抛开政治因素和企业竞争不谈,鸿蒙操作系统具有一些其他操作系统所不具备的革命性的创新,如分布式架构、微内核等,而这些创新正满足了目前物联网(Internet of Things,IoT)的高速发展、移动设备互动互联等所带来的新需求。它们支撑着鸿蒙的未来,也是鸿蒙操作系统诞生的意义所在。
事实上,操作系统更迭的背后是设备能力与形态的革新。最初,PC图形显示能力的提升成就了macOS和Windows;21世纪,移动设备的发展成就了Symbian;随后,触摸技术的发展成就了iOS和Android。如今,似乎即将迎来物联网时代。根据Analytics的统计结果,截至2020年上半年,全球物联网设备数量达到了11.7亿,而中国的物联网设备连接数量占全球的75%。
通过传统的操作系统构建物联网设备体系已经出现了许多弊端:利用RTOS进行物联网设备固件研发扩展性很低,并且研发难度大;利用移动操作系统开发物联网设备固件会出现占用内存大、启动慢、实时性低、高功耗、低能效等问题。另外,许多家庭中已经拥有了不止一个物联网设备,这些设备之间的互联效率很低。常常既没有统一的操作系统支持,也没有统一的指令和数据传输方案,碎片化非常严重,给用户带来较差的用户体验,因此,从操作系统层面解决设备间的有效协同是整个问题的重中之重,这主要包含以下几个方面。
在操作系统层面,统一物联网设备的通信接口,为用户提供统一的使用体验,为开发者提供统一的开发方案。
在设备通信层面,打通物联网之间的桥梁,构建多设备的统一体,方便地进行数据和指令的互通。
在应用程序层面,实现在多个物联网设备上进行应用协同。
这是来源于物联网世界的召唤!
02
鸿蒙操作系统的设计理念
响应物联网世界的召唤,鸿蒙操作系统诞生了!HarmonyOS是一款面向万物互联时代的、全新的分布式操作系统,因此分布式特性是HarmonyOS的核心,如图2所示。接下来,让我们仔细分析一下。
■ 图2  HarmonyOS 2的技术特性
鸿蒙操作系统包括分布式软总线、分布式设备虚拟化、分布式数据管理、分布式任务调度等关键技术。
1
分布式软总线
分布式软总线是鸿蒙操作系统分布式能力最为基础的特性,其设计理念参考了计算机硬件总线:以手机为中心将总线分为任务总线(传输指令)和数据总线(同步数据),如图3所示。
■ 图3分布式软总线
分布式软总线的主要特征有以下几点。
分布式软总线针对不稳定的无线环境进行了优化,相对于传统的传输协议具有高带宽、低时延、高可靠、开放、标准等特点。
通过分布式软总线可以实现设备间快速的自动发现(同一网络且登录同一华为账号)。
分布式软总线支持并可以整合WiFi、蓝牙、USB等多种有线/无线传输协议。通过手机等中转设备,可以打通蓝牙设备与WiFi设备之间的隔离,使其互联互通。
分布式软总线具有极简API和极简协议,不仅方便了开发者,而且有效地提高了网络传输能力。开发者只需面对一个逻辑协议,而不感知其具体的传输协议。
通过分布式软总线,鸿蒙操作系统可以为处在同一网络内的设备提供高效的通信能力,实现万物互联。
2
分布式设备虚拟化
分布式设备虚拟化建立在分布式软总线的基础上,可以实现多个鸿蒙设备性能和资源的整合,形成超级虚拟终端。例如,同一个家庭中的手机、路由器和智慧屏就可以以单一的、超级虚拟终端的方式共用硬件资源。
3
分布式数据管理
分布式数据管理建立在分布式软总线的基础上,可以实现多个鸿蒙设备之间进行高效的数据同步和管理。
4
分布式任务调度
分布式任务调度建立在分布式软总线和分布式数据管理之上,可以显示多个鸿蒙设备间高效地进行应用流转和协同。
应用流转是指同一个应用程序在不同设备上的迁移和迁回。例如,用户正在使用手机进行视频通话,但此时不方便拿手机,就可以将该应用界面迁移到智慧屏上继续进行视频通话。当然,用户还可以再将视频通话界面迁回到手机上。
应用协同是指在不同的鸿蒙设备上显示同一个应用程序的不同功能组件。例如,在手机上显示新闻列表,在智慧屏上显示新闻内容,通过手机的新闻列表就可以流畅地切换智慧屏上的新闻内容。
综上所述,鸿蒙操作系统响应了时代的召唤,微内核是前提,分布式是手段,全场景是目的。鸿蒙操作系统的上述特性让鸿蒙本身不仅是现有移动操作系统的替代品,而是全新的分布式操作系统,为鸿蒙未来的发展提供动力源泉!
03
鸿蒙操作系统的未来
鸿蒙操作系统非常年轻。2019年5月24日,鸿蒙操作系统第一次与大众见面,随后华为首先将其应用在智慧屏设备上。同年9月,华为宣布鸿蒙开源。2020年9月10日,华为发布了鸿蒙操作系统2.0,此时广大开发者才见到了鸿蒙操作系统的真面目:可用的虚拟机、可读的官方文档和由码云托管的OpenHarmony工程。
事实上,鸿蒙操作系统并不孤单,许多企业早已嗅到了物联网发展的味道,并产出了适合于物联网设备的操作系统,其中典型的物联网操作系统包括Google的Fuchsia、三星的Tizen OS、小米的Vela、腾讯的TencentOS tiny、阿里的AliOS等,可以说是百花齐放了。
相对而言,鸿蒙操作系统的设备支持性较强,并且拥有众多自主研发的技术优势。例如,鸿蒙不仅支持互联网设备,还适用于手机、智慧屏等多种设备,成为为数不多的打通“南向”和“北向”的操作系统。
为此,华为提出了“1+8+N”战略,其中“1”代表了手机;“8”代表了8种常用设备(PC、平板、智慧屏、音箱、眼镜、手表、车机、耳机);“N”代表了更加广泛的物联网设备。通过鸿蒙操作系统,这些设备可以有机地结合在一起,形成统一的“超级智能终端”。这个“超级智能终端”既可以实现软件的伸缩,也可以实现硬件的伸缩,如表1所示。
表1 超级智能终端具有可变的硬件和软件
伸缩性
功能机
智能机
超级智能终端
软件可变
×
硬件可变
×
×
通过场景化的设计,依托分布式软总线等技术优势,鸿蒙操作系统的未来应当是光明的。华为消费者业务CEO余承东在2020年华为开发者大会上表示“没有人能够熄灭满天的星光,每个开发者都是华为要汇聚的星星之火。”希望广大开发者一起努力,创建属于鸿蒙操作系统的未来。星星之火,可以燎原!
04
参考图书
鸿蒙应用程序开发》
ISBN:978-7-302-58199-4
作者:董昱
定价:109元
本书特色
鸿蒙应用程序开发入门教程,系统讲解鸿蒙应用开发的基础概念和操作步骤,帮助读者迅速入门鸿蒙应用程序开发并学习使用鸿蒙的分布式能力。
全面、分步、详细地介绍鸿蒙应用开发的基础知识;
配套10章教学课件、950分钟视频讲解及30个示例源代码;
案例丰富,注释详尽,带领读者独立开发一个完整的鸿蒙应用程序。
内容简介
本书以基础知识和实例相结合的方式成体系地介绍鸿蒙应用程序开发的常用技术。
全书共10章。
第1~3章介绍鸿蒙应用程序开发的基础知识,从创建应用程序工程开始手把手介绍用户界面开发的基本流程。
第4章和第5章按照Java和JavaScript这两种编程语言分别介绍了用户界面开发的基本知识。
第6~10章介绍鸿蒙应用程序开发的众多基础特性,包括通知、公共事件、Service Ability、数据持久化、Data Ability、网络访问、媒体访问、相机拍照、订阅传感器、获取地理位置等众多功能。
本书定位为鸿蒙应用程序开发的入门教程,成体系的介绍鸿蒙应用开发的基础知识面向所有对鸿蒙操作系统感兴趣的学生、开发者和相关从业人员。
图书目录
向上滑动阅览
第1章 一见倾心:鸿蒙操作系统!
 1.1 伟大的里程碑:鸿蒙的诞生
    1.1.1 历史的机遇:物联网时代

    1.1.2 鸿蒙操作系统的设计理念
    1.1.3 鸿蒙操作系统的未来
1.2 鸿蒙操作系统的技术特性
    1.2.1 鸿蒙操作系统的基本架构
    1.2.2 鸿蒙应用程序的编程语言
    1.2.3 与常见的移动操作系统的对比
 1.3 鸿蒙应用程序开发环境的搭建
    1.3.1 认证华为开发者
    1.3.2 下载并安装Node.js与DevEco Studio
    1.3. 3尝试打开DevEco Studio
 1.4 本章小结
第2章 第一个鸿蒙应用程序
2.1 鸿蒙应用程序框架
    2.1.1 Ability大家族
    2.1.2 HAP与Entry
    2.1.3 创建一个鸿蒙应用程序工程
    2.1.4 HAP的配置与工程目录结构
    2.1.5 应用权限
    2.1.6 在鸿蒙设备虚拟机中运行程序
 2.2 应用程序签名与真机调试
    2.2.1 申请证书文件
    2.2.2 申请授权文件
    2.2.3 配置应用程序签名
    2.2.4 真机调试
 2.3 调试鸿蒙应用程序
    2.3.1 运行与断点调试
    2.3.2 HiLog日志工具
    2.3.3 可视化调试变量工具X-Ray
    2.3.4 遇到应用程序闪退怎么办?
    2.3.5 通过hdc命令管理鸿蒙设备
 2.4 本章小结
第3章 拥有用户界面的Feature Ability
 3.1 Page和AbilitySlice
    3.1.1 Page的好伙伴AbilitySlice
    3.1.2 初探布局和组件
    3.1.3 通过XML文件构建用户界面
    3.1.4 通过Java代码构建用户界面
    3.1.5 关于像素和虚拟像素的关系
 3.2 Page的生命周期和配置选项
    3.2.1 Page与AbilitySlice的生命周期
    3.2.2 Page常用配置选项
    3.2.3 屏幕方向与设备配置改变
 3.3 用户界面的跳转
    3.3.1 AbilitySlice的跳转
    3.3.2 Page的显式跳转
    3.3.3 Page的隐式跳转
 3.4 应用资源
    3.4.1 应用资源的分类与引用
    3.4.2 常见应用资源的使用方法
    3.4.3 限定词与国际化
 3.5 本章小结
第4章 Java UI用户界面设计
 4.1 详细讲解组件
    4.1.1 组件的创建及其常用属性
    4.1.2 事件监听器与组件状态
    4.1.3 最常用的显示类组件:文本组件
    4.1.4 文本组件的子类:文本框、时钟和计时器
    4.1.5 按钮组件及其子类
    4.1.6 图像组件
    4.1.7 进度条类组件
    4.1.8 滑动选择器
4.2 详细讲解布局
    4.2.1 定向布局
    4.2.2 依赖布局
    4.2.3 表格布局
    4.2.4 自适应布局
    4.2.5 位置布局和堆叠布局
 4.3 更多高级用法
    4.3.1 对话框
    4.3.2 可复用列表项的ListContainer
    4.3.3 多页签(Tab)的实现
    4.3.4 自定义组件的基本方法
 4.4 本章小结
第5章 JavaScript UI用户界面设计
 5.1 初识JavaScript UI
    5.1.1 JavaScript实例与页面
    5.1.2 新的JavaScript实例
    5.1.3 初识页面
    5.1.4 页面的跳转
    5.1.5 页面的生命周期
    5.1.6 应用对象
 5.2 常用组件和容器
    5.2.1 属性、事件和方法
    5.2.2 常用组件
    5.2.3 常用容器
    5.2.4 对话框
 5.3 其他高级用法
    5.3.1 逻辑控制
    5.3.2 代码资源
    5.3.3 设备适配
    5.3.4 模块
 5.4 本章小结
第6章 通知与公共事件
 6.1 通知
    6.1.1 发布一个普通文本通知
    6.1.2 通知渠道
    6.1.3 各种各样的通知类型
 6.2 公共事件
    6.2.1 公共事件简介
    6.2.2 订阅系统公共事件
    6.2.3 自定义公共事件
 6.3 Git版本控制
    6.3.1 Git的安装与配置
    6.3.2 Git的基本用法
    6.3.3 由Gitee托管鸿蒙应用程序工程
 6.4 本章小结
第7章 幕后小英雄Service Ability
 7.1 任务分发器TaskDispatcher
    7.1.1 选用合适的任务分发器
    7.1.2 任务分发
    7.1.3 更多高级分发方法
 7.2 Service的基本用法
    7.2.1 创建Service
    7.2.2 启动和停止Service
    7.2.3 连接和断开连接Service
 7.3 Service的高级用法
    7.3.1 前台Service
    7.3.2 JavaScript UI页面调用Service
 7.4 分布式任务调度
    7.4.1 基本概念和用法
    7.4.2 分布式组网与远程设备信息获取
    7.4.3 应用迁移
 7.5 本章小结
第8章 数据持久化与Data Ability
 8.1 数据库存储
    8.1.1 关系型数据库
    8.1.2 对象关系映射
    8.1.3 应用偏好数据库
    8.1.4 分布式数据库
 8.2 文件存储
    8.2.1 本地文件管理
    8.2.2 分布式文件系统
 8.3 数据的统一访问接口:Data Ability
    8.3.1 Data Ability的基本概念
    8.3.2 跨应用访问数据库
    8.3.3 跨应用访问文件
 8.4 本章小结
第9章 包罗万象的网络与媒体
 9.1 访问互联网
    9.1.1 搭建Web服务器
    9.1.2 通过HTTP协议访问Web服务器
    9.1.3 使用Okhttp
    9.1.4 内嵌浏览器WebView
 9.2 相机与拍照
 9.3 媒体资源与声频播放
    9.3.1 访问外部存储的资源
    9.3.2 播放声频资源
    9.3.3 播放短音
 9.4 全能播放器Player
    9.4.1 通过Player播放声频
    9.4.2 通过Player播放视频
 9.5 本章小结
第10章 传感器与地理位置
 10.1 形形色色的传感器
    10.1.1 初探传感器的应用:加速度传感器
    10.1.2 传感器操作方法与分类
    10.1. 3方向传感器和指南针的实现
 10.2 地理位置与地图应用
    10.2.1 定位信息的获取
    10.2.2 地理编码
    10.2.3 轻量级地图组件TinyMap
 10.3 本章小结和最后要说
附1 常见缩写
附2 常用应用程序权限
05
精彩推荐
继续阅读
阅读原文