华为开发者大会已经结束不久,我想大家应该都知道鸿蒙系统是基于什么语言开发的了。实际上大部分操作系统的开发基本上离不开C/C++、汇编语言、Java这三种编程语言。不过,我相信有大部分朋友应该不知道成为鸿蒙系统的开发者,这些编程语言发挥着什么作用?应用在鸿蒙系统里的哪一方面?如果你是一名开发者,要通过哪些书籍升华知识呢?
Linux
我们都知道鸿蒙系统是基于Linux开发的,它的源码是C++语言。由于Linux可以运行在多种硬件平台上,所以基于此开发的鸿蒙系统可以尽可能的兼容适配更多的硬件设备,开发者在上面开发应用相对来说也会更简单一些。而且鸿蒙操作系统的组成是由四部分组成的:Linux内核+麒麟处理器的运行库+编译器+虚拟机,这样Linux自然就是首选了。
C/C++
我们再来看看华为鸿蒙的方舟编译器,从图片资料我们可以得知:
鸿蒙系统与方舟编译器的思路是相似的,直接使用机器语言编写APP,取消安卓系统的ART虚拟机,直接编译为二进制机器码。这样子做有优点也有缺点,缺点是必须有大量的静态方案、内存空间的要求更高了,优点是不需要中转,执行的速度更快了。
其次,鸿蒙OS是用C/C++进行编写软件,所以对APP开发人员的要求提高了,这也就提高了鸿蒙建设生态链的技术要求。
Java
这是我培训鸿蒙的一个课程内容思维导图,我们可以明显的看出来Java是经常会使用或要接触到的编程语言,且鸿蒙2.0发布会表明鸿蒙OS用 JavaScript 开发鸿蒙应用。那我就主要跟大家简单分析一下鸿蒙JavaScript GUI 技术栈~
JS 框架层,可理解为一个大幅简化的 Vue 式 JavaScript 框架
JS 引擎与运行时层,可理解为一个大幅简化的 WebKit 式运行时
图形渲染层,可理解为一个大幅简化的 Skia 式图形绘制库
这三个构成了一套面向嵌入式硬件的 GUI 技术栈。我个人认为对于 GUI 部分,国内凡是接触过目前主流 Hybrid 式跨端方案或 JS 运行时研发的一线开发者,都很容易从源码出发来理解它。下面我就逐层对其做一些解读和分析。
JS 框架层
从最顶层的视角出发,要想用「鸿蒙 2.0」渲染出一段动态的文本,你只需要编写如下的 HML(类 XML)格式代码:
之后在同级目录编写这样的 JavaScript:
// hello.js
export default {
data: {
hello: 'PPT'
},
boil() {
this.hello = '核武器';
}
}
这样只要点击文本,就会调用boil方法,让PPT变成 核武器。
JS 引擎与运行时层
JS引擎和运行时之间,有什么区别与联系呢?JS引擎一般只需符合ECMA-262规范,其中没有对任何带「副作用」的平台API的定义。从setTimeout到document.getElementById到console.log再到fs.readFile,这些能执行实际IO操作的功能,都需要由「将引擎API和平台API胶合到一起」的运行时提供。
那么在「鸿蒙 2.0」里,JS运行时是怎么搭建出来的?
JS引擎选择了JerryScript,这是一款由三星开发的嵌入式JS引擎。
每种形和
除UI原生对象外,还有一系列在JS中@system为前缀的 built-in 模块,它们提供了JS中可用的Router / Audio / File等平台能力(参见ohos_module_config.h)。
图形绘制层
JS运行时中的各种Component对象,是如何被绘制为手表等设备上的像素的呢?这就有关于「鸿蒙 2.0」中的另一个graphic_lite仓库了。可以说,这里才是真正执行实际绘制的GUI。像之前的TextComponent等原生组件,都会对应到这里的某种图形库View。它以一种相当经典的方式,在C++层实现并提供了「Canvas风格的立即模式GUI」和「DOM风格的保留模式GUI」两套API体系。总的来说,这个图形子系统的要点大致如下:
图形库提供了UIView这个C++控件基类,其中有一系列形如OnClick /OnLongPress/OnDrag的虚函数。基本每种JS中可用的原生Component类,都对应于一种UIView的子类。
除了各种定制化View之外,它还开放了一系列形如DrawLine/DrawCurve/DrawText等命令式的绘制方法。
这个图形库具备名为GFX的GPU加速模块,但它目前似乎只有象征性的FillArea矩形单色填充能力。
为了帮助大家尽快的熟悉了解鸿蒙OS开发应用,我给大家推荐了几本编程语言经典入门书籍,大家可以去看一看~
1.C程序设计语言
鸿蒙OS是用C/C++进行编写软件,而且在计算机发展史上,没有哪一种程序设计不用C语言。我们所熟知的“hello,world”就是这本书首次引入的,并且这一程序已经是众多程序员设计语言的第一选择!
2.《汇编语言》
这本书采用了全新的结构对课程的内容进行组织,对知识进行很小化分割,为读者构造了循序渐进的学习线索。汇编语言就是把0与1的集合用特殊的字母或者符号来表示,比如说01000001代表的是A,01100001代表a,于是就有字母和符号来表达一大堆的0与1,比如0100000101100001直接使用Aa来表示即可,所以汇编大大简化了二进制代码,给我们编写代码带来了极大的方便!但是计算机是不认识这些字母和符号的,所以需要一个专门的程序来把这些字母和符号来转换成0与1的代码,计算机才会执行,这个转换的程序就是编译器~
3.《JavaScript权威指南》
《JavaScript权威指南》主要介绍JavaScript语言的核心内容,以及web浏览器中实现的遗留和标准的DOM。比较适合有经验的开发者~
4.《Java从入门到精通》
顾名思义,这本书适合初学者翻阅,里的语言通俗易懂,并且有丰富的案例,全书详细介绍了使用Java语言进行程序开发要用到的知识。由浅入深,实战演练叙述:基本知识→关键技术→高级运用→新项目实战演练,合乎认知能力规律性。包含初识Java,了解Eclipse开发环境,Java語言基本,步骤操纵,字符数组,数组,类和对象,包裝类等内容。
5.《Linux内核设计与实现》
安卓系统是基于Linux开发,苹果iOS系统是基于Unix开发,而华为自主研发的鸿蒙系统基于Linux开发,由此可见,Linux语言的重要性。这本书诠释了Linux内核的设计与实现。想了解鸿蒙系统的开发者可以通过这本书受益匪浅,帮助他们更了解操作系统,而且提高编码中的效率和生产率。
6.《第一行代码Android》
《第一行代码Android》被誉为安卓开发者的学习经典,整本书一步一步、全面的介绍了安卓开发的知识和经验技巧。
《华为HMS生态与应用开发实战》
这本书是基于华为终端服务多年的技术积累和对移动应用生态发展的理解,结合HMS典型的开放能力和实际的业务场景,通过实战方式详细描述如何使用HMS开放能力快速完成移动应用的开放和上架。
这本书前面两章介绍HMS Core生态发展历程和HMS Core生态整体架构及接入机制等,适合所有人阅读!后面几章介绍Kit快速集成,搭建实战环境,深入讲解每个Kit的功能原理,并通过一个支撑所有Kit集成业务的场景,详解每个Kit的实战环节,包括Account Kit、IAP Kit、Push Kit、Location Kit等,以帮助开发者了解如何快速接入HMS开放的各项能力。
最后,我觉得成为鸿蒙OS的开发者,学什么语言不如去进行系统化学习。想成为一名鸿蒙开发者最好是有一个系统的培训,如果是自学会比较吃力,当然不是老王不推荐自学,只是系统化的学习知识会更加牢固,而且学习的速度也会比较快,节省时间~而且自学考鸿蒙应用开发证书的路途太坎坷了,不一定能拿到证书,想要进入鸿蒙OS应用开发的相关公司工作,证书是一个门槛,所以我推荐大家系统学习!
大家有想要进行系统化学习鸿蒙系统的话,可以私聊我哈。