五千年(敝帚自珍)

主题:【原创】鸿蒙与盘古 - 智业时代的蒸汽机端倪已现 -- 泉畔人家

共:💬167 🌺1154 🌵91
全看分页树展 · 主题 跟帖
家园 某youtube 节目下面的讨论里,有人详细解释了鸿蒙系统

大家可以去看一下第一条评论“和蔡蔡用爱发电”发的:

https://www.youtube.com/watch?v=ZF7Amgdb6kE&ab_channel=%E6%88%91%E6%98%AF%E6%9F%B3%E5%82%91%E5%85%8B

“作为一个干了15年软件开发, 3年嵌入式开发的程序员. 我这里科普一点简单的基础知识.

Android程序的调用顺序是 源代码-->字节码(编译阶段)---->生成APP(用户态)--->在java虚拟机上运行(这些都在用户态)-->java虚拟机调用操作系统内核(进入内核态)--->操作系统内核调用内核中的驱动程序(内核态)---->驱动程序控制硬件工作(内核态硬件调用).

一个操作系统大致可以分两层"内核层"和"用户层":

Android的内核层: 使用的是Linux内核, 可以说Android是一个加了触摸控制界面的Linux.Android进程调度机制, 内存管理, 驱动管理都是Linux的. Android只做了很小一部分修改. 这也就是为什么Android 必须开源的原因. 因为其使用了开源软件, 所以要遵守开源协议.

Android的用户层: 它改写了java的虚拟机.(这就是为什么Oracle会状告Google). 这点Google的想法和华为是一样的, 就是兼容更多的现有程序员的知识体系, 吸引更多开发者. 这也是为什么很多做手机app开发的java程序员认为鸿蒙是Android套皮. 应为如果只看调用的函数, 二者几乎是一致的. 但其实函数的实现是完全不同的(这就相当于大家都叫宫保鸡丁, 不同饭店的做法都是不同, 可作为用户(APP开发者)你点菜的时候只看到菜单上写着宫保鸡丁就可以点了). 这点可以参考Oracle状告Google的案子的最后判决和审判法官的说辞.

鸿蒙的内核: 是华为重新写的内核和Linux内核完全不同. 华为使用了新的设备管理机制, 也就是华为的所谓软总线系统. 华为的万物互联的流畅度就是基于

这个部分设计. 鸿蒙的进程调度和内存管理也是基于全新的设计, 和Android 没有一点关系. 只有一小部分保留了相同的函数名称, 为了兼容Android的程序.

鸿蒙的用户层: 鸿蒙的用户层也实现了一个java虚拟机, 但这个虚拟机不是Android的虚拟机, 这个虚拟机是重新写的. 但是为了兼容Android程序, 这个虚拟机暴露的函数是和Android的虚拟机保持一直的.(所以对APP开发者看上去是一样的). 同时鸿蒙还有一个javascript的虚拟机用来吸引网页端的开发者. 这个虚拟机和java虚拟机几乎是平行关系. 可以说在鸿蒙OS中Android现在是鸿蒙的一个子系统. 这也是Google官方也没有对鸿蒙的版权有任何质疑的原因.

这段写给昨天的成都老兄. 你看到的源代码调用的函数名是调用java虚拟机的api和操作系统内核没有任何关系.因为Android的java虚拟机是遵循java虚拟机规范写的. 所以不论谁写java的虚拟机暴露的api很多都是相似的. 鸿蒙为了完全兼容Android程序和重用Android的已有的开发工具. 所以鸿蒙暴露的api函数名和Android的java虚拟机的函数名完全兼容. 但鸿蒙的java虚拟机是华为重写的虚拟机不是Android原有的. 请你搞清楚自己的工作环境再出来科普!

总结一下:

Android = Linux内核+重写的Oracle的java虚拟机+自己写的触摸控制图形系统.

鸿蒙 = 自己写的内核+重写的Android的java虚拟机+自己写的javascript虚拟机+重写的触摸控制图形系统.

其它使用Android手机系统 = Linux内核 + Android的java虚拟机 + 重写的触摸控制图形系统.

所以鸿蒙不是Android套皮! Google官方也承认这点. (参考google官方对鸿蒙的祝贺)

此评论下面的其他子评论也很有营养

通宝推:diamond,游侠骑兵,海中山,chuchong,泉畔人家,huky,
全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河