暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

简谈Harmony OS(鸿蒙)系统

无咎日记 2020-09-10
542

前言

2020年9月10日,华为开发者大会如期举行,作为一个技术人员,整场看下来,给我留下很深印象的一个点就是HarmonyOS 2.0的发布。在谈2.0前我觉得有必要先谈一谈它的上一个版本,HarmonyOS 1.0

自上一次余承东在华为开发者大会上宣布HarmonyOS 1.0问世以来,有关鸿蒙操作系统的话题热度居高不下,可很有意思的是,评论分为两极化,暂且可称之为消极派积极派。其中很引人注目的一点是,大部分的IT从业者普遍对于当时的HarmonyOS 1.0持消极态度,后来我到当时托管代码的官网上看了下,也就明白了原因。

一般来讲,一项技术(开源产品)的出现,需要对开发人员进行相应的匹配,并作出有关的开发Kit。就像今年Apple在发布会上宣布苹果的笔记本生产线将开始转向ARM架构,之后便推出了相应的开发工具,适配方案以及相应的Demo以供开发人员学习。但是在HarmonyOS 1.0时,整个流程是极其简陋,没有IDE,没有可编译运行的DEMO,甚至连官方的文档都没有,这也是当时很多人称其为PPT OS的原因。

但是华为毕竟是中国顶尖的信息技术企业,在当前恶劣的大环境下,也必须要做到"去A化"的战略,因此,我个人非常关注本次的华为开发者大会,事实证明,华为还是给我们带来了一些惊喜。

简析HarmonyOS系统设计

言归正传,交代了HarmonyOS 1.0背景后,还是要简单聊下开发者大会上所说的HarmonyOS 2.0。

这一次的开发者大会,与往届相比较,更加严谨,务实,没有再去吹捧性能有多么多么强大,使用的技术有多么多么先进,而是反复提到了系统架构,设计思路,应用常见以及开发工具等更加趋于专业性的内容,对于开发者来讲,这是一件好事,并且华为本次也提供了HarmonyOS的官方文档和相应的QuickStart,如果有兴趣的同学可以去看一下,这里附上链接

HarmonyOS官方文档 :https://developer.harmonyos.com

在之前的发布会中,反复会提到一个词叫做分布式,非专业人士对此可能感到很陌生,实际上这是一种常见的系统设计思路,这里简单介绍一下。

一般来讲,一个系统可以运行在一台机器之上,但是当这个系统对于性能需求越来越大,并且机器无法拓展时,就需要将一个系统拆分为多个子系统,每个子系统运行在一台独立的机器上,这些子系统通过网络连接进行通讯,这就是最简单的分布式系统。

分布式架构图


实际上在我们日常使用的绝大部分APP都是分布式,在软件开发中,这并非一种特别高级的设计思路,但是在操作系统层面,还没有过分布式方面的尝试,而华为要做的,就是开辟一条新的道路。

当然,华为的HarmonyOS可能和我们所理解的操作系统有一些小小的差别,在大众认知中,操作系统应该是Windows,Mac,或者Linux这样子的,并且操作系统的本质应该是作为进程的运行平台,管理硬件资源所存在的,因此,操作系统往往是独立运行,但是华为提供了一种新的思路,或者是面向未来的一种思路。

在官方文档中,有这样一句话,并配如下一图

HarmonyOS 是面向未来全场景智慧生活方式的分布式操作系统。对消费者而言,HarmonyOS 将生活场景中的各类终端进行能力整合,形成“One Super Device”,以实现不同终端设备之间的极速连接、硬件协同、资源共享,为用户提供最佳的场景体验。

显而易见,HarmonyOS希望做到的,并不是仅仅是一个平台上的操作系统,而是全平台,多领域覆盖,并且能够打通之间的壁垒。在大会上也提到了这种分布式的应用场景,如果能够从操作系统层面打通,则多设备的算力实际上是可以叠加的,例如渲染一个8K视频可能在笔记本上需要很长时间,那么可以使用分布式的方式,将多帧传输到空闲设备渲染,最后将结果合成,类似于分治的思想,实现算力上的叠加,这是一件非常令人兴奋的事情。

同时,分布式的设计能带来很好的交互体验,实际上,在目前的华为生态中,这种场景已经开始显现出自己的优势,从最开始的一碰传,到后面的多屏协同,WIFI桥接等技术,都在慢慢的将多设备进行互联,在实际体验中,确实能在工作中提供非常大的便利。

到了这里,已经能够看到,华为的野心很大,并不囿于PC/手机/平板上的操作系统,而是希望通过鸿蒙OS,打通全链路的生态,包括智能家居,IoT,车机互联,远程医疗,教育等等一切场景,万事开头难,操作系统的研究是一场持久战,需要投入大量的人力,财力,需要大量的厂家进行适配,需要对现有的硬件进行兼容,从零开始,华为的挑战同样很大。

系统架构设计

上面聊了很多关于本次HarmonyOS 2.0的内容,但是作为一个技术人员,更希望关注的是真实的代码,"Show me the code"往往给人带来的安稳远远高于PPT上的承诺,因此,我还是简单的翻看了一下有关HarmonyOS操作系统的设计架构,由于时间很短,可能对于一些细节上的问题理解不够透彻,如有错误,多多包涵。

官方给出了HarmonyOS的三个特点 :

对消费者而言,HarmonyOS能够将生活场景中的各类终端进行能力整合,形成一个“超级虚拟终端[1]”,可以实现不同的终端设备之间的快速连接、能力互助、资源共享,匹配合适的设备、提供流畅的全场景体验。对应用开发者而言,HarmonyOS采用了多种分布式技术,使得应用程序的开发实现与不同终端设备的形态差异无关,降低了开发难度和成本。这能够让开发者聚焦上层业务逻辑,更加便捷、高效地开发应用。对设备开发者而言,HarmonyOS采用了组件化的设计方案,可以根据设备的资源能力和业务特征进行灵活裁剪,满足不同形态的终端设备对于操作系统的要求。

为了求证相关内容,先来看下HarmonyOS的架构设计,以下是HarmonyOS官方提供的架构图

HarmonyOS架构图


整体设计沿用了经典的分层设计,各个层之间通过协议进行通信,考虑到HarmonyOS使用了分布式的设计,因此网络通信在全链路中所占的地位将大幅度提供,可能还会出现类似于RDMA技术的远程内存管理,这对于整个协议栈的设计将会是一个极大的挑战,好在华为通讯行业起家,并且在硬件通讯领域有着非常高的话语权于技术壁垒,在技术上应该是不会有非常大的麻烦。

关于各层的具体含义,在官方文档中已经提供了一些信息,这里也仅做一个简单的总结,添加一些个人的见解,以便刚刚接触的同学更好的理解设计思路。

内核层的设计与当前常见的操作系统内核无二,实际上在这部分很难做出大的改变,只不过华为会为HarmonyOS适配更多的设备,例如智能家居,车机系统等,这一点在开发者大会上有所展示,并在QuickStart中有可编译运行的DEMO供开发人员使用。

系统服务层将是HarmonyOS的重中之重,在该部分中,将会使用到一些分布式的技术来完成多个设备在系统层面的互联,就像苹果的AirDrop,并非依赖于应用层面,而是直接在操作系统层面做了优化和实现。同时还注意到一点,方舟多语言运行时子系统,在上一次开发大会上就提到过,方舟编译器能够对多种语言进行实时编译,并运行在同一个运行环境中,但是官方后期并没有给出相关的具体Kit,本次在架构中出现了该模块,应该是已经初步完成,之后我会尝试使用多种语言测试一下该系统的编译能力。目前官方提供了C/C++/Java/JS四种语言的编译能力,后续可能会加入更多语言。

应用框架层实际上就是类似于GMS的服务框架,官方提供了对于不同设备的自适应框架,例如在大会上展示的车机—手机互联时自适应的效果,除此之外可能还会提供一些常见的开发框架工具等,具体情况在之后详细阅读完整个文档再做总结

应用层应该是变化最小的层面,开发人员只需要使用新的IDE,学习一下HarmonyOS的一些开发规则,就能够使用现在的语言完成开发,由于系统已经完成了对于底层差异的隔离,我们并不需要关注我们的程序运行在哪些设备上,只需要使用华为提供的自适应框架,就能共在多端运行,至于硬件适配工作,则由华为框架的开发工程师完成即可。

本次开发大会令我很兴奋的一点是,基本上大会上提到的技术,都能在开发者官网上找到相应的设计与实现,也就是说,我们现在就能够按照一些文档,开始开发HarmonyOS的应用,这无疑会大大提供开发者对于HarmonyOS的信心,我也尝试使用了一下官方提供的DevEco Studio。

IDE


初次接触,DevEco Studio给我的感官还是比较好的,虽然是Beta版本,但是在各方面的考量以及上手难度,基本功能等方面已经能够支撑简单的开发。

创建一个项目


目前已经提供了Java和JS的语言,根据官方介绍,在之后会快速跟进其他的主流语言,相信在不久,C++/Go/python等热门语言都会在该IDE上的得以实现。同时有意思的是,每个项目可以直接选择不同的开发设备,例如此处我选择的是使用Java开发可穿戴设备。

如果你经常使用JetBrain家的IDE产品,那么DevEco Studio绝对不会陌生,不过需要注意的是,目前DevEco Studio使用的是Gradle构建项目,所使用的Java JDK必须是8,经过我的测试,更高版本的JDK将无法成功编译,后期这种情况可能会解决。

不过遗憾的是,官方文档所提供的DEMO中,需要下载HVD Manager,但是无论是否使用代理,下载过程都会中断,可能是由于并发等原因,具体情况后续测试。

工程结构


HarmonyOS Java项目结构,在官方文档中,给出了这样的一个介绍。

HarmonyOS应用发布形态为APP Pack(Application Package,简称APP),它是由一个或多个HAP(HarmonyOS Ability Package)包以及描述APP Pack属性的pack.info文件组成。

一个HAP在工程目录中对应一个Module,它是由代码、资源、第三方库及应用清单文件组成,可以分为Entry和Feature两种类型。

Entry:应用的主模块。一个APP中,对于同一设备类型必须有且只有一个entry类型的HAP,可独立安装运行。Feature:应用的动态特性模块。一个APP可以包含一个或多个feature类型的HAP,也可以不含。

我们可以理解为,使用此类方式build生成的项目,天生就具备了可移植性,这种可以执行是通过Feature动态特性模块完成的,通过华为底层生态系统对于各种硬件的适配,同时利用自适应UI框架,让程序在不同的设备上有着合适的表现形式,对于前端开发者来说,这绝对是一个巨大的福音。

实际上关于HarmonyOS还有相当多的内容等待探索,但是由于时间关系,目前只能体验到这里,最后来总结一下。

本次开发者大会上所发布的HarmonyOS相关内容带来了不少惊喜,从架构设计,生态领域的探索以及对应的开发IDE,华为已经交上了一份答卷,尽管这份答卷不是很完美,还有很多待完善的地方,例如Kit JDK版本适配问题,HVD Manager插件问题等等,但是起码让开发人员真正看到了实际的代码,能够了解一个工程规范,开发逻辑以及底层实现,这对于未来开源探索,将奠定一个坚实的基础。

在生态与操作系统这条道路上,华为还要走很久很久,这个过程中,会就各种艰难险阻,但是就像大会最后的总结。

没有人能够熄灭满天星光,每一位开发者,都是华为要汇聚的星星之火

References

[1]
 超级虚拟终端: https://developer.harmonyos.com/cn/docs/documentation/doc-guides/glossary-0000000000029587#ZH-CN_TOPIC_0000001050749051__li1133517458578


文章转载自无咎日记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论