华为鸿蒙HarmonyOS应用开发介绍 ——华为开发者大会2020观后感

本文主要介绍看了就会的Harmony APP开发。 java

1 鸿蒙是什么

openharmony.gitee.com/openharmonygit

华为鸿蒙系统,Harmony OS,是能够在不一样类型的终端设备上部署的分布式操做系统。 19年华为开发者大会正式公布,20年华为开发者大会发布2.0版本并开源。编程

部署于手机的鸿蒙系统应该明年初正式面世。ubuntu

2 鸿蒙基于安卓?

  1. HarmonyOS并非基于安卓系统改造的一个OS,而是有别于安卓的另外一种基于Linux内核的操做系统。
  2. HarmonyOS的定位并不只仅是一个手机系统,而是一款面向全场景的开源分布式操做系统,最小支持128K内存的轻量级IoT设备。
  3. HarmonyOS经过组件化和小型化等设计方法,支持多种终端设备按需弹性部署,可以适配不一样类别的硬件资源和功能需求。

3 关键技术

  1. 分布式调用、状态迁移/同步:
    • 跨设备跨进程通讯经过极简协议实现低时延,用户交互在设备组合中能够按场景无缝切换。
  2. 分布式应用包结构:
    • 提供了用户程序框架、Ability框架以及UI框架,支持应用开发过程当中多终端的业务逻辑和界面逻辑进行复用,可以实现应用的一次开发、多端部署。
    • UI能够自动适配不一样屏幕的布局,并支持面向预览的可视化编程。
  3. 分布式软总线:
    • 分布式软总线是多种终端设备的统一基座,为设备之间的互联互通提供了统一的分布式通讯能力,可以快速发现并链接设备,高效地分发任务和传输数据。
    • 借助分布式软总线能够将多种设备组成一个超级虚拟终端。
  4. 安全和隐私保护:
    • 华为TEE(Trusted Execution Environment)微内核采用了形式化验证技术,获CC EAL5+认证。

4 鸿蒙应用开发

“考虑到开发效率、编译效率、运行效率、学习成本、编译后包体积,华为想要追求一个平衡,咱们也是在探索中。”——华为专家windows

对于开发者而言,Harmony应用开发和Android应用开发区别不大,甚至能够说是看了就会安全

IDE:DevEco Studio,基于IntelliJ IDEA,目前仅有Windows版本。markdown

开发语言:Java、JS、C++!框架

论坛截图

具体如何进行鸿蒙应用开发,能够参考论坛当天的截图。mvvm

工程目录结构能够说和Android一模一样:工程目录结构能够说和Android一模一样 一样采用配置清单+java+xml的模板:一样采用配置清单+java+xml的模板 xml布局实现: 生命周期: 触摸事件: 跨设备流转: 项目目录结构: 编程语言

相信在座各位Android开发者们已经大概知道如何进行Harmony APP开发了。能够说几乎和Android开发一致,我的认为华为这样设计是共赢的:

  1. 开发方式向Android看齐,开发者迁移成本低,有利于鸿蒙生态的拓展。
  2. 对于开发者我的来讲,Android开发的工做经验不会由于系统变动而做废。

跨设备流转

与咱们平常接触的Android App开发不一样的是,Harmony App开发多了一个“跨设备流转”——其实基本上能够把HarmonyOS当作一个物联网操做系统,因此华为在论坛上花了很大篇幅介绍软总线,较详细地介绍了Harmony APP在多设备之间通讯的协议模型和开发方式,并展现了部分API,反复强调“一行代码”搞定设备无缝通讯。

协议模型: 开发模型: API示例:

5 Java\JS\C++?

这三种市面上很是主流的编程语言在安卓也是占据了最重要的位置:

  1. 安卓是基于Java语言的,Android SDK也是使用Java语言实现,并包含了经常使用的Java类库。编译器会将.java文件编译成.dex文件,可以被DVM或者ART VM执行而且加载。
  2. 而C++经常使用于处理较底层的一些业务,好比音视频、图像处理等。C++代码最终会被编译成.so库的形式。
  3. JS通常用于H5页面(WebView渲染)或者React-Native之类的跨平台方案(JS调用原生)。

而根据华为专家的介绍,在HarmonyOS中,这三种语言在应用开发过程当中的使用场景和Android相似,但也有所区别:

  1. Harmony APP也是支持使用Java+xml的方式进行业务开发(上文的截图也展现了),这个和Android基本一致。
  2. HarmonyOS和Android同样基于Linux Kernel,也继承了Linux关于so相关的设计。因此C++代码也会被编译成.so库供应用调用,这个和Android基本一致。
  3. Harmony应用开发中的JS就比较特别了:
    • JS会被编译成统一的字节码运行在VM上。
    • JS开发效率高能够用于快速开发UI,而数据逻辑运算能够经过Java语言编写。
    • JS开发UI相似flutter的mvvm响应式布局,并支持预览、可视化编程(现场演示效果很棒,布局预览界面就能够直接点击交互)。

方舟编译器

华为以前就推出了方舟编译器,提供了全新的系统及应用的编译和运行机制,从动态编译变为静态编译,将Java直接编译成机器码,完全消除了虚拟机动态编译的额外开销,实现了开发和运行效率的兼容并举。

根据专家介绍,方舟编译器将来会支持编译JS代码,因此在Harmony应用开发中,JS既不是用于H5,也不一样于React-Native这种JS调原生的机制,JS会被编译成字节码运行在华为自行研发的VM上。

有点矛盾,明明说方舟编译器将高级语言直接编译成机器码,为何又说JS会编译成字节码运行在VM上,华为专家的说法是两者结合起来:

  1. iOS应用采用静态编译:运行效率高,但包体大、动态能力弱。
  2. Android应用采用动态编译:运行效率较低,但包体小、动态能力强。

两种编译流派的优缺点基本互补,方舟编译器可能采用”结合式“的编译方案。

新语言?

现场也有同窗问及华为是否考虑在鸿蒙上提供自研的新编程语言,专家的说法是目前用于Harmony应用开发的Java+JS都更像是现有编程语言的一种子集加强版本,而不是一种新语言。

关于自研新编程语言,华为须要基于HarmonyOS的发展状况再做考虑:编程语言须要考虑开发效率、编译效率、运行效率、学习成本、编译后包体积等等,而华为想要追求一个平衡,目前也是在探索中。

在自研操做系统、编译器的过程当中,华为老是强调”结合“、”平衡“,感受也是比较有野心,想要创造出比现有技术更牛逼的一套体系。

7 现有项目移植鸿蒙?

彻底移植?不须要!

HarmonyOS能够兼容Android App的运行,专家说是两个操做系统并在一块儿运行,我的推测就是在鸿蒙下面开个模拟器,相似于windows电脑也能够开个ubuntu。

但纯鸿蒙应用是确定没法运行在Android系统上的。

部分改造

但考虑到HarmonyOS在多设备上的各类颇具吸引力的新特性(暂时只在PPT里看到效果),假如往后HarmonyOS有至关的市场占有率,那么部分APP确定会有迁移至鸿蒙的必要性,华为提供了两种移植思路:

  1. 部分改造:将已有的某个模块功能 基于鸿蒙上从新实现,从而可让用户体验到APP在HarmonyOS的新特性。

  2. 增量改造:新增一些基于HarmonyOS实现的功能模块,好比提供手表等其余设备版本的应用等。

以上就是上周五周六参加华为开发者大会的HarmonyOS应用开发论坛的所见所闻,但愿能够帮助你们初步了解鸿蒙是怎么样的一个操做系统以及鸿蒙应用开发的方式。

相关文章
相关标签/搜索