鸿蒙OS与忒修斯之船

鸿蒙其实是一个哲学问题

这几天有关鸿蒙的话题基本占据了各大平台,知乎,微博,推特热度很高。除了一小部分专业对口相对pro的人群,大部分吃瓜民众其实并不理解鸿蒙OS是什么。如果只是简单理解为华为手机搭载的操作系统,其实是不充分的。但如果认为是1+8+N中的手机终端、智能IoT设备,智能家具等等搭载的“鸿蒙”系统,也是不恰当的。不清楚是华为宣传部门有意为之。华为把搭载在不同类型设备上的系统统称为“鸿蒙OS”,并大举宣传。这一举动使吃瓜群众很困惑。我也看了好多专业回答,总觉得不够味,或者说有些地方没有说透、说明白。这里我仅以个人角度出发,说一说,搭载在手机终端上的鸿蒙OS到底是什么,以及华为为什么要把手机上的“鸿蒙”和电视、音响等智能家居设备上的鸿蒙os“混淆”概念?

首先,可以明确的是,手机上的鸿蒙OS大部分功能是依托了ASOP,也就是安卓。这其实很好理解,安卓代码是开源的,与其自己实现一个一模一样的安卓系统(因为要兼容原来的app),不如直接使用ASOP的代码。这一点华为相关人员也是承认的。具体实现细节大概是多抽象一层(ablity层),将activity中相关事件与方法接口覆盖掉。这样,暴露出来的就不是Android的activity,其他的组件也是遵循这样的做伐。有人可能会说,这不是脱裤子放屁吗?和MIUI修改源码、继承重写类和方法有什么区别?实际上是没有区别的。所以现在可以明确的是,手机上的鸿蒙OS确实是安卓系统。它可以运行安卓APP,也可以将编写的鸿蒙OS应用翻译成安卓的apk文件安装。实际上目前鸿蒙hap程序内部也是这样做的,通过代理的方式把各种鸿蒙的组件映射到安卓。

那么,可以简单地认为鸿蒙OS并不是一种操作系统,只是EMUI 12.0吗?现在来说是的,未来不确定。现在推出的鸿蒙2.0倒不如说是鸿蒙1.0兼容Android版本。它与其他UI系统不同点在于:使用了一层ablity概念层,把android中组件进行了一次封装,并且在这个基础上,基于RPC协议与蓝牙等通讯协议打造了软总线。通过软总线实现万物互联。实际上,这一点就很令人迷惑。因为鸿蒙的软总线中的总线只是一个概念,它可以基于任何协议。与其说是总线不如说是一种安全的点对点通信协议。和苹果的airdrop,airplay并没有本质区别。如果不把这一种通信协议算在系统里面,那么手机上的鸿蒙OS与其他设备的基于实时操作系统的“鸿蒙OS”完全可以看作两个不同的操作系统。

那么,未来的鸿蒙OS可以统一为一个鸿蒙OS吗?个人认为可能性不大,也没必要。不同设备的使用场景,性能需求完全不同,在智能手表上运行一个可以安装hap程序的需要庞大计算资源的OS也不现实。虽然华为说鸿蒙OS是微内核,但也是使用了这样一个概念,其和真正的微内核还是不同的。至少目前,华为在手机上与手表等智能设备上运行的系统内核是不同的。系统内核不可分割的核心功能,例如系统作业调度系统,存储系统,中断系统等实现是不一致的。其实这也是区分是否是同一个系统的一个方法。(笔者我也没有比较过他们的代码,毕竟搭载在手机上的鸿蒙系统并没有开源)。

那么搭载在手机上的鸿蒙OS是否可以脱离安卓呢?个人认为有一定可行性。目前华为已经将开发使用的所有组件都使用了自己的一层概念进行抽象,那么开发者可以在完全不知道系统下调用的是安卓自己的组件代码,还是华为自己实现的组件情况下,进行开发设计。换句话说,今天的鸿蒙底层还是基于ASOP,那么通过慢慢地迭代,逐步换掉一些底层的组件代码(例如ui库重新实现,使用自己的硬件api进行GPU加速)。那么到达一个阈值之后,它还能被称为基于ASOP的鸿蒙OS吗?这其实是一个名为忒修斯之船的哲学问题。期待华为在未来三年后对这个问题的解答。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!