HarmonyOS与Android的对比分析
HarmonyOS与Android的对比分析
✍️作者简介:小北编程(专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向)
🐳博客主页: 、 、 、 、 、 、 、
🔔如果文章对您有一定的帮助请👉关注✨、点赞👍、收藏📂、评论💬。
🔥如需转载请参考
文章目录
HarmonyOS与Android的全面对比
一、前言
在开始深入了解鸿蒙(HarmonyOS)之前,我对其进行了广泛的调研和学习。首先,我正在开发一个项目,并考虑将鸿蒙作为技术选型的一部分;其次,我个人非常看好鸿蒙系统的未来,特别是华为在国内外的影响力。尽管鸿蒙发布时我很激动,但由于工作繁忙,一直未能深入了解。如今,我决心花时间认真研究和学习鸿蒙系统。
尽管有些人对鸿蒙系统持怀疑态度,甚至在我的博客下留下负面评论,但我仍坚定地支持国产技术,支持每一个为国家富强而努力的同胞。
二、HarmonyOS与Android的对比
2.1 HarmonyOS并不是Android的替代品
相信很多关注鸿蒙的⼈,都会关注的⼀个焦点话题,那就是HarmonyOS是不是Android的套壳,对于这个话题作为一个老的Android开发者目前转战HarmonyOS,我只想阐明以下⼏个观点:
- HarmonyOS并不是Android的替代品,二者并非同一个赛道。
- HarmonyOS目前缺乏生态支持,但其战略眼光更加长远,未来可期。
- HarmonyOS相比Android有一定的性能提升。
可以看一下我的证书排名!
2.2 系统定位
HarmonyOS :面向万物互联时代的分布式操作系统,能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设备,提供全场景业务能力。鸿蒙的目标是构建一个超级终端,实现万物互联的生态。
Android :基于Linux内核的开放源代码操作系统,主要用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟开发。
华为官方的视频介绍展示了鸿蒙系统的定位及其独特之处:
2.3 内核对比
HarmonyOS :基于微内核设计,仅包含操作系统必要的功能模块。微内核的稳定性更高,不会因为某个模块出错而影响整个系统。鸿蒙系统包含两个内核:Linux内核和LiteOS内核。
Android :基于Linux的宏内核设计,包含了操作系统的大多数功能和模块。宏内核的设计虽然简化了系统开发,但也使系统容易崩溃。
华为官方的视频介绍展示了鸿蒙的技术架构:
HarmonyOs 和 Android 系统都是基于Linux,但是HarmonyOs是基于微内核(Micro Kernel)架构设计,而Android系统是基于宏内核/单内核(Monolithic Kernel)架构设计:
微内核: 内核管理着所有的系统资源,在微内核中用户服务和内核服务在不同的地址空间中实现。在应用程序和硬件的通信中,内核进程和内存管理的极小的服务,而客户端程序和运行在用户空间的服务通过消息的传递来建立通信,它们之间不会有直接的交互,这样一来,微内核中的执行速度相对就比较慢了,这是微内核架构的一个缺点。
在内核架构中,用户服务是独立于内核服务的,因此任何用户服务崩溃都不会影响到内核服务,这就加强了操作系统的健壮性,这是微内核的优势所在。另一点,微内核的扩展性强,添加一个功能,只需要建立一个新的服务到用户空间当中,而内核空间不需要任何的修改。因此,微内核可移植性强、安全并且易于扩展。
宏内核定义: 宏内核同样管理着用户程序和硬件之间的系统资源,但是和微内核不一样的是,在宏内核架构中,用户服务和内核服务在同一空间中实现。具体一点,就是内核可以代表内核进程运行代码,就是通常的内核进程;当用户进程经过系统调用或者中断进入到内核态时,内核也可以代表它运行代码。这样一来,宏内核需要管理的资源多于微内核,其大小就相对大一些了。
在宏内核架构当中,内核管理着CPU调度,内存管理,文件管理和系统调用等各模块的的工作,由于用户服务和内核服务被实现在同一空间中,这样在执行速度上要比微内核快。然而,宏内核的劣势也是显而易见的,那就是当内核中的某个服务崩溃了,整个内核也会崩溃。另一点,想要在内核中添加新的功能就意味着内核中的各个模块需要做相应的修改,因此其扩展性很弱。
总结微内核和宏内核的区别如下:
区别 | 微内核 | 宏内核 |
---|---|---|
基本概念 | 用户服务和内核服务运行在不同的地址空间 | 用户服务和内核服务运行在相同的地址空间 |
执行速度 | 慢 | 快 |
尺寸 | 较小 | 较大 |
可扩展性 | 易扩展 | 不易扩展 |
安全性 | 单个服务崩溃不影响全局 | 单个服务崩溃往往意味着整个系统崩溃 |
开发量 | 开发量大 | 平台提供的代码多,相对开发量少 |
2.4 运行速度
HarmonyOS :虽然也支持Java语言开发,但鸿蒙采用了方舟编译器,可以直接与底层操作系统通信,取代了虚拟机解释这一步骤,从而提升了性能。
鸿蒙(HarmonyOS)系统架构图如下:
Android :采用Java语言编码,Java不能直接与底层操作系统通信,需要通过虚拟机作为中间转换层。尽管Java经过多次优化,但这一特点仍影响了其性能突破。
安卓(Android)技术架构图如下:
三、系统工程结构比对
HarmonyOS的应用软件包以APP Pack(Application Package)形式发布,它是由一个或多个HAP(HarmonyOS Ability Package)以及描述每个 HAP 属性的 pack.info 组成。
HAP是Ability的部署包,HarmonyOS应用代码围绕Ability组件展开。一个HAP是由代码、资源、第三方库及应用配置文件组成的模块包。
在Android中,应用软件包以APK(Android Package)形式发布。APK是包含应用代码、资源、第三方库以及应用配置文件的压缩包。Android项目结构主要围绕Activity和Service等组件展开。一个典型的Android项目由多个模块组成,这些模块可以是应用模块、库模块或测试模块。
3.1 目录结构
以下表格对比了HarmonyOS和Android的项目目录结构,展示了源码目录、资源文件目录、清单文件、依赖文件目录、模块编译配置文件以及Gradle目录的不同。
目录结构 | HarmonyOS | Android |
---|---|---|
源码目录 | project\entry\src\main\java | project\app\src\main\java |
资源文件目录 | project\entry\src\main\resources | project\app\src\main\res |
清单文件 | project\entry\src\main\config.json | project\app\src\main\AndroidManifest.xml |
依赖文件目录 | project\entry\libs | project\app\libs |
模块编译配置文件 | project\entry\build.gradle | project\app\build.gradle |
Gradle目录 | project\gradle | project\gradle |
3.1.1 HarmonyOS
- APP Pack
- 应用软件包,包含一个或多个HAP。
- HAP (HarmonyOS Ability Package)
- Ability的部署包,由代码、资源、第三方库及应用配置文件组成。
- entry
- 主模块。
- feature
- 功能模块。
- pack.info
- 描述每个HAP属性的文件。
3.1.2 Android
- APK (Android Package)
- 应用软件包,包含应用代码、资源、第三方库及配置文件。
- Activity
- 用户界面的主要组件。
- Service
- 在后台运行的组件。
- 模块
- 可以是应用模块、库模块或测试模块。
通过上述对比,可以看到HarmonyOS和Android的工程结构在模块化和组件化方面有相似之处,但也有不同的设计理念和实现方式。HarmonyOS更注重分布式能力和跨设备运行,而Android更关注单一设备上的应用开发。
四、方舟编译器
方舟编译器是一款全新的编译器,显著提高了手机的运行速度。它将动态编译改为静态编译,实现全程执行机器码,大大缩短程序响应时间。
方舟编译器的优势 :
- 多语言联合 :将同一应用中的不同语言代码联合编译、优化,消除语言间的性能差距,降低开发者的优化成本。
- 轻量运行时 :通过编译器增强语言实现和优化能力,减少应用运行时的开销。
- 软硬件协同 :编译器与芯片协同优化,充分发挥硬件能效,提升应用体验。
- 多平台支持 :支持多终端设备平台的编译和运行,根据设备特征提供便捷的开发与部署策略,提高开发效率。
通过这些对比和分析,可以看出鸿蒙系统在技术架构和系统定位上具有独特优势,未来有望在万物互联的时代发挥重要作用。希望这篇文章能帮助大家更好地了解和认识鸿蒙系统。
👍 点赞,是我创作的动力!
⭐️ 收藏,是我努力的指引!
✏️ 评论,是我进步的宝藏!
💖 衷心感谢你的阅读以及支持!