【云驻共创】鸿蒙的Java技术栈

小Bob来啦 发表于 2021/09/03 18:36:32 2021/09/03
【摘要】 大家好,我是小Bob,一个关注软件领域而又执着于计算机底层的开发者~ 说到鸿蒙,大家都不陌生,作为华为的一张底牌,在之前放出消息时便受到了极大的关注。当然,作为IT界的我们更是对这个系统拥有更多的好奇,这不,在学完华为云Java的部分课程后,小编来了解鸿蒙的Java技术栈。 一.什么是鸿蒙?鸿蒙OS,可以简单称之为是可兼容Android应用程序的跨平台分布式操作系统。系统架构支持多内核,比如...

大家好,我是小Bob,一个关注软件领域而又执着于计算机底层的开发者~

 

说到鸿蒙,大家都不陌生,作为华为的一张底牌,在之前放出消息时便受到了极大的关注。当然,作为IT界的我们更是对这个系统拥有更多的好奇,这不,在学完华为云Java的部分课程后,小编来了解鸿蒙的Java技术栈。

 

.什么是鸿蒙?

鸿蒙OS,可以简单称之为是可兼容Android应用程序的跨平台分布式操作系统。系统架构支持多内核,比如Linux内核、LiteOS和鸿蒙的微内核,在使用时可按照不同的智能设备选择所需内核,例如在低功耗设备上使用LiteOS内核。

上面说到鸿蒙OS是一款分布式的操作系统,加上物联网的时代,自然也要承担也要承担新一代的智能终端操作系统;鸿蒙HarmonyOS开发者、应用开发、设备开发、鸿蒙生态、分布式系统为不同设备的智能化、互联与协同提供了统一的语言。

在今年的鸿蒙2.0发布之后,也是有越来越多的设备选择了鸿蒙OS。其实作为一款操作系统,对于用户而言只要好用就类似于得到了用户的认可,为今后的万物互联打下基础。

可能会有很多人说鸿蒙是安卓的套壳,可能小编起初想法也是的,毕竟你看UI都差不多的,但是在华为云直播时听到李欣老师说过我们用Java来编写安卓程序或者鸿蒙程序,其实在编程思想上是一样的,就好比Java和C++都是面向对象的编程语言,那你能说java是C++的套壳吗?

那么鸿蒙和安卓真的没有不同吗?这里我们来以鸿蒙的微内核做个简单介绍。

 

.什么是微内核?

在计算机业界的说法来看,微内核是一种内核的设计架构,由尽可能精简的程序所组成,以实现一个操作系统所需要的最基本功能,包括了底层的寻址空间管理、线程管理、与进程间通信。

微核心的设计理念:

是将系统服务的实现,与系统的基本操作规则区分开来。它实现的方式,是将核心功能模块化,划分成几个独立的进程,各自运行,这些进程被称为服务。所有的服务进程,都运行在不同的地址空间。只有需要绝对特权的进程,才能在具特权的运行模式下运行,其余的进程则在用户空间运行。

微内核的基本原理:

只有最基本的操作系统功能才放入内核中。非基本的服务和应用程序在内核之上构建,并在用户模式下运行。关于什么功能应该放入微内核,不同的设计有不同的方式,但是共同特点是许多传统上属于操作系统一部分的功能现在都是外部子系统,包括设备驱动程序文件系统虚存管理程序窗口系统安全服务,它们可以和内核交互,也可以相互交互。

摘录一张经典的对比操作系统微内核和宏内核的图示:


 比如我们经常使用的 Windows,便是采用的混合内核。

微内核结构使用一个水平分层代替传统的纵向分层,所有微内核之外的操作系统构件都被当作服务进程来实现,它们可以通过微内核传递消息来实现相互之间的交互。因此,微内核还可以验证消息并授权访问硬件,而且微内核还执行保护功能,阻止非法的信息等。

例如,应用程序如果要打开一个文件,则它发送消息给文件系统服务,如果他想创建一个进程或线程,则它发送消息给进程服务进程。每个服务进程之间可以相互通信,并可以调用微内核中的功能。

 

微内核的性能:

通过微内核构造和发送消息,比直接进行一次系统调用发花费更多时间。一种解决方式是将一些关键服务和驱动程序重新放回内核中,可以减少用户-内核模式以及进程间的切换次数,但是这是以牺牲微内核的设计强度为代价;另一种解决方式是通过正确的设计,构造一个非常小的内核,可以消除消除性能损失并提高灵活性。

微内核设计:

低级存储器管理:微内核必须控制硬件上的地址空间,使得操作系统可以在进程级进行保护。微内核只负责把每个虚页映射到一个物理页帧,而存储管理部分则在内核外实现,包括保护一个进程的地址空间不被其他进程干涉,页面替换算法以及分页逻辑。例如,内核外的虚拟存储器负责何时把一个页面调入存储器或者何时换出一个页面,而内核就负责将这些页面索引映射到物理地址。

当一个应用程序发生引用了不在主存中的一页的时候,,内核发生缺页错误并执行陷阱,内核给页面管理器所在进程发送一条消息。页面管理器决定装载页面并分配一个页帧,页面管理器和内核进行交互,以把页面管理器的逻辑操作映射到物理存储器。一旦该页可用,页面管理器就给应用程序发送一条中断恢复的消息。

 

这种技术可以不用调用内核操作,就将文件和数据库映射到用户地址空间。微内核一共提供了三个内核操作用于支持核外的分页和虚存管理:

  1. 授权:一个地址空间的所有者可以授权其他进程使用它的某些页。内核把这些页从授权者的地址空间移出,并把它们分配给指定的进程;
  2. 映射:一个进程可以把它的任何页映射到另一个进程的地址空间,使得两个进程都可以访问这些页,就形成了共享内存。内核把这些页面分配给最初的所有者,为其他进程   提供一个映射以便访问它们;
  3. 刷新:进程可以回收授权给其他进程或者映射到另外进程的任何页面;

 

进程间的通信:微内核操作系统中,进程之间或者线程之间进行通信的基本方式是消息消息包括消息头和消息体:消息头描述了发送和接受消息的进程;消息体包含数据或者指向数据的指针。

 

可以认为进程间通信是基于与进程相关联的端口(某个进程的消息序列),端口可以表明那些进程可以与这个进程通信。端口的标识和功能由内核维护,进程可以给内核发送一条指明新端口功能的消息,进程可以允许对自身授权新的访问。

地址空间不重叠的进程间的消息传递涉及到存储器到存储器的复制,因此受限于存储器的速度,复制的速度会远远低于处理器的速度。

I/O 和中断管理:在内核结构中,硬件中断可能被当作消息处理。微内核可以识别中断但是不处理中断,它会产生一条消息给与该中断相关联的用户级线程。因此,当允许一个中断时,一个特定的用户级进程被指派给这个中断,并由内核维护这个映射。把中断转换为消息的工作必须由微内核完成,但是微内核并不涉及设备专用的中断处理。

 

落实到鸿蒙系统,它的存在让华为在智能手机操作系统上避免了“无米之炊”的困境,但其在推出面世之后,究竟会如何发展,又是否能够承担起当前我们的厚望,华为还需要回答很多问题,做很多工作,等待华为的依旧是万里长征。

 

三.鸿蒙IDE下载安装

 

回到主题,我们作为一名开发者,我们的开发体验也是华为需要交的答卷,当然,它也给出了,在鸿蒙(https://www.harmonyos.com/)的官网,我们可以也可以看到它在上面的导航栏列出了开发这个选项,想必也是为我们拥有更好的开发体验操碎了心。那么我们来看看这个体验到底怎样呢?

点击导航栏上的开发选项,在下面我们找到华为的在线开发体验以及HUAWEI DevEco Studio的下载和开发设备工具的下载。这里主要来讲讲HUAWEI DevEco Studio的下载以及安装。

 

首先找到DevEco Studio的下载网址:https://developer.harmonyos.com/cn/develop/deveco-studio#download

根据不同的设备我们可以选择不同的安装包,这里我们以Windows为例。

下载完成后,我们会得到一个压缩包,里面有DevEco Studio的安装包,在安装时需要注意自己设置好安装路径。

接下来点击install安装即可。

在安装完成后我们便可以配置相关环境以及创建项目来开始相关鸿蒙的开发。

 

 

四.Java开发

说完鸿蒙,那么我们的Java如何开始学习呢?

 

小编最近在暑假也是跟着华为云的课堂有在学习Java,并且效果还不错,比如有详细的代码讲解,以及小型的项目代码实现。

 

相关学习在华为云的活动中可以查看,学习时的笔记也是必不可少的哦~

学习Java除了做笔记之外,敲代码也是必不可少的一部分,我们也可以试着将自己学习的笔记加源代码通过git上传到我们的GitHub上,也作为自己学习的一次经历。

 

五.简述鸿蒙的Java技术栈

Ability分类

Ability模板

用途

支持语言

Feature Ability交互类(FA)

Page Ability

提供用户交互的能力

JavaJs

Particle Ability逻辑类(PA)

Service Ability

提供后台运行任务的能力

Java

Particle Ability逻辑类(PA)

Data Ability

对外部提供统一的数据访问抽象

Java

 

这里小编主要介绍的是鸿蒙的Java技术栈,那么就不可避免的介绍鸿蒙的FA调用PA机制。简单来说我们用FA端来调用PA端,也可以称之为是JS端调用Java,可见鸿蒙也尝试将前后端进行融合,JSJava都能调用的数据格式:json(各个语言都能接收的标准格式)。

 

JS UI框架下FAPA交互的使用:

JS UI框架提供的声明式编程,使应用开发更加简单,但当前鸿蒙OS对于JS API还不够丰富, 还无法处理数据等更复杂的业务。为了达到处理复杂业务,同时保证业务数据和UI的解耦,一般会将复杂逻辑放到PA中即Java端实现;而界面交互则放到FA中的UI部分即JS端实现。

 

可能会有人说上述的部分功能使用JavaJS都能单独实现,就好比我们做一个一个事情可能两个人都能单独做好,但同时一起来做肯定效率会比单独一个人做的更好。

最后,鸿蒙生态的完善还需我们每一个开发者共同去努力~

 

参考资料

鸿蒙系统(HOS)终于上线,微内核操作系统科普

 

本文整理自华为云社区内容共创活动:鸿蒙的Java技术栈+IT人加薪新思路,认证华为云签约作者,赢取500元稿酬和流量扶持!

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。