周末在家休息,女朋友在刷朋友圈,突然她问我:

鸿蒙OS回顾

2019年8月9日华为开发者大会上,华为消费者业务CEO余承东正式宣布发布自有操作系统鸿蒙,内核为Linux内核、鸿蒙微内核和LiteOS。未来将摆脱Linux内核和LiteOS,只有鸿蒙微内核。

鸿蒙(英语:Harmony OS,开发代号Ark)是华为自2012年开发的一款可能兼容Android app的跨平台操作系统。


图:鸿蒙OS的四大技术特性1.分布式架构首次用于终端OS,实现跨终端无缝协同体验 2. 确定时延引擎和高性能IPC技术实现系统天生流畅 3. 基于微内核架构重塑终端设备可信安全 4. 通过统一IDE支撑一次开发,多端部署,实现跨终端生态共享

什么是跨平台

在以前,平台 ≈ 操作系统。所以,传统意义上的跨平台即不依赖于操作系统,也不依赖硬件环境。一个操作系统下开发的应用,放到另一个操作系统下依然可以运行。

但是随着科技的发展,平台 ≈ 操作系统已经不成立了,就像华为推出的鸿蒙OS,他可以支持到多种多样的设备,如手机、手表、电脑、汽车、智能家居设备等。


所以,今天我们谈的跨平台,指的是跨设备。即平台 ≈ 设备


所以,华为希望鸿蒙OS可以运行在各种各样的设备上,所以,鸿蒙OS必然需要具备跨平台的能力。

而且,鸿蒙想要做的不仅仅是操作系统可以跨平台,更重要的是要让用户和开发者真正的感受到跨平台。

所以,跨平台操作系统鸿蒙的目的是:使开发者能够聚焦自身业务逻辑,像开发同一终端一样开发跨终端分布式应用,也使最终消费者享受到强大的跨终端业务协同能力为各使用场景带来的无缝体验。

Java实现跨平台

先来说说Java是如何实现跨平台的。

Java对于跨平台的支持,就像对安全性和网络移动性的支持一样,是分布在整个Java体系结构中的。其中扮演者重要的角色的有Java语言规范、Class文件、Java虚拟机(JVM)等。

首先,在Java语言规范中,规定了Java语言中基本数据类型的取值范围和行为。其次,所有Java文件要编译成统一的Class文件。最后,通过Java虚拟机将Class文件转成对应平台的二进制文件。

Java的平台无关性是建立在Java虚拟机的平台有关性基础之上的,是因为Java虚拟机屏蔽了底层操作系统和硬件的差异。

想要运行一段Java代码,要经过多个步骤,将Java源代码转换成机器可以执行的机器代码,这个过程主要由虚拟机来完成。

在著名的HotSpot虚拟机中,主要有解释执行和即时编译两种形式:

  • 解释执行

    • 逐条将字节码翻译成机器码并执行

  • 即时编译(Just-in-time ,JIT)

    • 将一个方法中包含的所有字节码编译成机器码后再执行。

HotSpot 默认采用混合模式,综合了解释执行和即时编译两者的优点。它会先解释执行字节码,而后将其中反复执行的热点代码(热点检测),以方法为单位进行即时编译。

Android实现跨平台

Android其实基于Java语言的,所以同理,想要运行一段Android代码,也要经过多个步骤,将Android源代码转换成机器可以执行的机器代码。

但是这个转换过程在Android的不同版本中实现不尽相同:

Android 1.0(2008 年):采用一个名为 Dalvik 的虚拟机,并且集成了一个解释器。当 App 运行时,就会调用这个解释器,对代码进行逐句解释,速度很慢。

Android 2.2(2010 年):引入 JIT(Just In Time)即时编译机制,当 App 运行时,会将用户经常使用的功能编译为机器能直接执行的 010101 机器码,不用一句一句地去翻译。当出现不常用的功能时,再调用解释器来翻译;这样速度加快,但每次启动 App 都要重新编译一次,不能一劳永逸。


Android 5.0(2014 年 10 月):将虚拟机 Dalvik 换成 ART(Android Run Time),将 JIT 的编译器替换成 AOT(Ahead of Time)。如此,App 在下载后安装到手机上时同时把能编译的代码先编译成机器听得懂的 101010;剩下不太好翻译的代码,就在用户使用时再叫醒解释器来翻译。如此,不用每次打开 App 都需要编译,但安装 App 的时间有点长,而且占用手机空间。


Android 7.0(2016 年):采用混合编译机制,安装时先不编译中间代码,而是在用户空闲时将能够编译成机器码的那部分代码,通过 AOT 编译器先静态编译了。如果 AOT 还没来得及编译或者不能编译,再调用 JIT+ 解释器。这种机制,相当于用时间换空间,既缩短了用户安装 APP 的等待时间,又将虚拟机里编译器和解释器能做的优化提升到最大效率了。


Android编译的问题

可以看到,从2008年的Android 1.0开始,Android在编译优化上面在一直下功夫。

当前的 Android 采用的是解释执行 + JIT + AOT 的综合模式,在 空间占用+安装速度+运行速度 上已经达到了一个很好的平衡。

但是Android的编译问题一直被诟病。尽管在后续的Android 8.0 上改进了解释器,解释模式执行效率大幅提升;Android 10.0 上提供了预先放置热点代码的方式,应用在安装的时候就能知道常用代码会被提前编译。

但是,目前来看,无论如何,Android都没能摆脱这样一个前提:即应用在被打包成 APK 的时候,采用的还是 Java 代码。换句话说,在 APK 变成用户可应用的过程中,还经历了一个在 Android 系统内部的编译过程,这是一个绕不过的坎。


鸿蒙实现跨平台

那么,鸿蒙OS的代码编译是怎么样的呢?他又是如何解决跨平台的问题的呢?


从上图中可以看到,在鸿蒙OS架构中,方舟编译器多终端开发IDE扮演着重要的位置。

跨平台有一个最大的挑战,那就是各个平台的适配问题,尤其是目前各种设备类型越来越多,如何将同一个应用,在手机、手表、汽车、电视上面都可以适配的展示呢?这就是多终端开发IDE所做的事情。


使用华为提供的多终端IDE,多语言统一编译,分布式架构Kit提供屏幕布局控件以及交互的自动适配,支持控件拖拽,面向预览的可视化编程,从而使开发者可以基于同一工程高效构建多端自动运行App,实现真正的一次开发,多端部署,在跨设备之间实现共享生态。


上图就是华为提供的IDE,在里面可以通过图形化界面拖拽控件,并且IDE可以帮助自动适配各种终端设备。


有了IDE,开发可以方便的开发一套代码,这样可以自动适配到各种设备中,但是各种设备所执行的机器指令是不一样的,如何把这一套代码分别编译成各个设备需要的机器指令呢?

Android设备是由不同设备上内置的虚拟机进行编译的,所以编译之前就知道这个设备具体是什么了,那么,鸿蒙OS是怎么做的呢?这就是方舟编译器所干的事情了。

华为方舟编译器是首个取代Android虚拟机模式的静态编译器,可供开发者在开发环境中一次性将高级语言编译为机器码。此外,方舟编译器未来将支持多语言统一编译,可大幅提高开发效率。


Android之所以"慢",是因为他的编译过程是在终端进行的,也就是说需要在用户的手机上,通过虚拟机进行编译成可执行的机器代码。

而鸿蒙OS使用的方舟编译器,可以将高级语言(Java)直接变成机器码,从而绕过了虚拟机。并且这个编译过程并不是在用户的手机上完成的,而是在应用开发阶段就完成了。


通过方舟编译器,开发者的应用在下载之前就已经转化成为机器可以识别的代码,因而可以在手机上快速安装、启动和运行,而无需在经过 VM 的编译——某种程度上,方舟编译器是将编译过程提前到应用开发阶段,从而大幅度减少了智能手机和操作系统的运行负担。

华为官方介绍,方舟编译器是首家完全替代语言虚拟机的静态编译器,完全不需要解释器。兼顾Java开发效率和C语言运行效率的编译器。

除了代码编译,方舟编译器也提供了更高效的内存机制,它与 Android 内存回收的不同之处在于:

Android 在内存回收上采用集中回收机制,发声全局回收时更需要暂停应用,这也是随机卡顿的根因之一。而方舟编译器采用了引用计数法来进行内存的实时回收,并且配合使用了专门的消除环算法(消除对象互相引用带来的无法回收问题),来避免 GC 集中式回收带来的系统卡顿。相比 GC,方舟的内存回收是实时的而非集中式的,且不需要暂停应用进程,这样便大大消除了卡顿。


另外,就像JVM其实也是支持多种语言一样,华为表示,方舟编译器未来也会支持更过的开发语言。换句话说,其他语言的开发者,日后也能开发基于鸿蒙OS的应用。

参考资料: 

https://www.jishuwen.com/d/2NN3 

https://www.zhihu.com/question/339567108 

https://www.cnbeta.com/articles/tech/876171.htm https://www.cnbeta.com/articles/tech/876919.htm https://juejin.im/post/5cb07000f265da037d4f9be6

有道无术,术可成;有术无道,止于术欢迎大家关注Java之道公众号
好文章,我在看❤️

漫话:如何给女朋友解释华为鸿蒙OS是怎样实现跨平台的?相关推荐

  1. 漫话:如何给女朋友解释鸿蒙OS是怎样实现跨平台的?

    戳蓝字"CSDN云计算"关注我们哦! 周末在家休息,女朋友在刷朋友圈,突然她问我: 鸿蒙OS回顾 2019年8月9日华为开发者大会上,华为消费者业务CEO余承东正式宣布发布自有操作 ...

  2. 华为新系统鸿蒙有哪些手机_华为鸿蒙OS系统传来新消息!外媒宣布:未来几年内华为手机都将无缘...

    导语:看科技资讯,品鉴最新最全的科技新闻,了解当今科技发展水平.点击关注微信公众号:"数码科技大爆炸",每天最新最全的科技资讯,轻松放松,更多好看科技资讯尽在这里,还不快来点击关注 ...

  3. 华为鸿蒙os3.0评测,华为鸿蒙OS威力初显!实测体验比EMUI更好 功耗却更低 惊喜还有很多...

    2019年,华为正式发布鸿蒙OS.彼时的鸿蒙还停留在概念阶段,外界的嘲讽和质疑不绝于耳.2021年4月27日,华为鸿蒙OS开发者公测版本大批量向开发者推送,网上出现大量鸿蒙OS实测视频.值得一提的是, ...

  4. 联想拯救者pro装华为鸿蒙OS,网友Mate 40 Pro+升级鸿蒙2.0:谷歌服务照样能用

    从昨天开始,华为的鸿蒙2.0系统已经开始公测了,不少人已经报名参加,并收到了 对网友来说,升级鸿蒙OS会有什么变化?这个问题是最关键的,也是最影响他们日常使用的,从已有的反馈来看,流畅度.日常使用还是 ...

  5. 华为手机承载系统在哪里_华为鸿蒙OS系统取得重大突破!华为手机新系统真的来了:兼容安卓10...

    导语:看科技资讯,品鉴最新最全的科技新闻,了解当今科技发展水平.点击关注微信公众号:"数码科技大爆炸",每天最新最全的科技资讯,轻松放松,更多好看科技资讯尽在这里,还不快来点击关注 ...

  6. harmonyos系统适配机型,华为鸿蒙os适配手机一览,HarmonyOS系统适配机型有哪些

    华为鸿蒙os也是要上线了,正式版会在12月份到来的,这个也是自己开发的系统,能否乐成照样要看适配是否合适,经由漫长的守候,鸿蒙终于要来了,下面就来先容下华为鸿蒙os适配机型有哪些. 华为鸿蒙os适配机 ...

  7. 2020年华为鸿蒙最新官方消息,华为鸿蒙OS系统传来新消息!外媒宣布:未来几年内华为手机都将无缘...

    [5月4日讯]自从华为发布了鸿蒙OS系统以后,作为首款全平台国产操作系统,也是得到了许多网友们的高度关注,由于这是华为在遭受到谷歌断供以后,正式将其"备胎系统"正式转正,全新的华为 ...

  8. 鸿蒙os有碎片化问题吗,华为鸿蒙OS系统再爆好消息!解决碎片化问题,4GB流畅度媲美12GB...

    相信关注智能手机领域的用户都知道华为研发了自主手机操作系统鸿蒙,系统发布后在国内手机圈的关注度大增,虽然现在依旧没有商用在手机上,但关注度仍然在上涨,因为余承东多次表示愿意和谷歌合作,如果安卓真的用不 ...

  9. 荣耀3OS怎么升级鸿蒙系统,华为鸿蒙OS正式发布!教你如何升级

    原标题:华为鸿蒙OS正式发布!教你如何升级 6月2日晚上8点,华为正式发布了全新的鸿蒙HarmonyOS 2系统,HarmonyOS操作系统的slogan为「一生万物,万物归一」. 同时,华为还公布了 ...

最新文章

  1. 16.CSS选择器【下】
  2. sql的加减乘除运算_SQL简单查询语、运算符学习和练习
  3. 小米2s回退出厂版本_雷军很高兴,小米出货量升至全球第四
  4. 要的需求 ip提取网站源码带采集 要求是PHP源码
  5. dozer bean_使用Dozer框架进行Bean操作
  6. express 设置handlebars模板引擎
  7. 你相信这是XP经典桌面拍摄地现在的模样吗?
  8. DirectX修复工具V4.1公测!
  9. 【YOLOV5-5.x 源码讲解】整体项目文件导航
  10. 消失的遗传力--wiki
  11. android room 分页,Android官方ORM数据库Room技术解决方案简介(一)
  12. cta 音频测试_CTA测试介绍.pdf
  13. 三针重叠问题算法整理
  14. 我的FLASH情结2010——浅谈FLASH WEB GAME与创业(2)
  15. kali linux忘记用户名,kali_linux忘记root密码怎么办?
  16. 充电:28G各类资料送给您!PPT模板、商业计划书等
  17. 【高数】高数平面立体几何
  18. RGP游戏的非主流应用——虚拟地图
  19. java如何获取手机号码归属地_在java中如何根据手机号查询号码归属地
  20. Android基站定位——通过手机信号获取基站信息(一)

热门文章

  1. 加固工程验收规范50550_轻质隔墙怎样做才规范,看完这3点
  2. 微信红包随机数字_微信红包随机算法转载
  3. war 发布后页面不更新_吐槽 | 都发布一万年了,这游戏还不“更新”?
  4. html实现websocket协议,HTML5实现WebSocket协议原理浅析
  5. HTML跳转为啥会404,为什么网页会出现404 not found?
  6. 二十、UE和UI的区别
  7. 操作系统之计算机系统概述:1、操作系统概述(定义、功能、作用)
  8. (计算机组成原理)第五章中央处理器-第三节2:CPU专用数据通路
  9. 100万并发连接服务器笔记之1M并发连接目标达成
  10. qt中关于坐标的说明