android自己卷自己,自己造一个MVI架构模式吗?
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站设计制作、成都网站制作、振兴网络推广、小程序设计、振兴网络营销、振兴企业策划、振兴品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供振兴建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
MVI架构模式是国内android开发者最近一两年造出来的吗?
看了很多MVI的资料,发现都提到cycle.js框架。android的mvi架构就是启发于cycle.js框架。
我们再看看Cycle.js框架是什么时候开始的,又是什么时候开始使用MVI模式的。
Cycle.js框架 第一个预发版本 :
再结合官方文档来看,Cycle.js框架就是为了MVI架构模式而生的。
虽然不知道,Cycle.js框架是不是首个MVI模式框架。
但是从很多资料可以推测,MVI架构模式就是Cycle.js框架推广开来的。
而且早在2014年就已经在前端开发中用得飞起了。
想想2014年,咱们在干嘛?android在用什么架构模式。
正所谓,天下武功出少林啊。
我们android的很多技术,在前端早就用“烂了”。
我们知道MVP和MVVM的爹都是MVC。MVI的爹也是MVC。
MVC的Controller是命令是编程组件,不能直接实现响应式编程思想。
响应式编程范式(Reactive programming):
安卓官方的compose框架、微信小程序、Flutter、React、鸿蒙UI的开发框架,都是使用响应式开发框架。
这里就不拓展开来讲了,上面提到的任何一个开发框架,你只要会一个基本就能理解响应式编程范式。
如果一个都不会也没关系,现在不理解响应式编程也没关系,等你学会MVI就理解了,这种只有实际使用过才能深刻理解。
学不会也没关系,不要焦虑(尤其那些工作不久的小伙伴,学不会属于正常现象~)
MVI,咱第一遍学不会,就等2年,再学一遍~
2年后也没学会,那就再等2年~ 一定要有耐心~
如果还是学不会,那也没关系,因为MVI早晚也会过时~ 等过时了就不用学了~
哈哈哈~ 别笑,正经Android可不会开玩笑的。
就像rxjava,当年有多少人死活学不会,android开发现在谁还学Rxjava?哈哈哈~
用一张图来总结这次升级的核心思想:
新版架构指南在旧版的基础上,做了如下调整和建议:
1. 将LiveData组件改成了StateFlow
对协程的使用更友好。并且更能体现面向数据流开发的思想。
实际上,依然使用LiveData也没毛病。
2. ViewModel传递给View的数据限制为View的UIState
ViewModel从Model层获取数据后,转换为UIState数据,通过StateFlow流向View层。
UIState的数据面向界面组件而定义的,是能直接控制View组件如何显示的数据。
所以我们也可以称UIState为界面的状态或者View的状态。
如下:
3. 单数据流还是多数据流的选择
官方指南并没有强制我们使用单流。
同一个界面应该使用单个StateFlow还是多个StateFlow,需要我们自己判断。
我们应该根据UIStates数据们之间关联程度来决定多流还是单流。
单流优缺点都十分明显:
优点: 数据集中管控,会提高代码的可读性和修改的便利性。
缺点: 当数据非常多且复杂时,会影响效率。因为我们没有diff功能,View层不能只更新有变化的数据,只会根据UIState刷新当前界面。
我们再看下官方新版架构图:
当然不仅仅MVVM可以改造成响应式开发范式,MVP也是可以的。
不信你看 这篇blog :
1. 理解MVC架构模式的思想【MVC是其他架构模式之爹,他的思想是MVP、MVVM、MVI的基础,学会它是关键步骤~】。
3. 学习kotlin的StateFlow组件,的使用:Sequence-Flow-StateFlow。
4. 学习ViewModel组件的使用(虽然不用ViewModel也能实现MVI架构,但是ViewModel还是值得学习)。
5. 理解DRY(Don't Repeat Yourself)原则。
6. 理解MVVM(因为官方的MVI模式是基于MVVM的基础改造的~)。
7. 学习官方架构指南。
8. 实战。
在这里就分享一份由大佬亲自收录整理的 学习PDF+架构视频+面试文档+源码笔记 , 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料
这些都是我现在闲暇时还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效地帮助大家掌握知识、理解原理,帮助大家在未来取得一份不错的答卷。
当然,你也可以拿去查漏补缺,提升自身的竞争力。
真心希望可以帮助到大家,Android路漫漫,共勉!
如果你有需要的话,只需 私信我【进阶】即可获取
凉是不会凉的,毕竟安卓系统的市场占有率还是很大的。别说鸿蒙,一个新系统要发展成熟并形成良性的生态圈还是需要相当的时间的,没那么简单。5G是网络制式,和终端硬件有关,和app又没多大关系。只不过近几年移动端原生开发,不论安卓还是iOS确实需求量小了,工作不好找。外面企业的招聘要求也更高,新手根本没什么竞争力,外面三五年工作经验的大把。建议你可以学一下微信小程序,近年来比较火,市场占有率也比较大。另外,google推出的移动端新兴的开发技术flutter也可以学一下,这东西将来的发展还真没准。Android原生开发技术,java那一套也是需要掌握的,对你有好处。
1 夏天的飞鸟 飞到我的窗前唱歌 又飞去了。
秋天的黄叶 它们没有什么可唱 只叹息一声 飞落在那里。
2 世界对着它的爱人 把它浩瀚的面具揭下了。
它变小了 小如一首歌 小如回永恒的接吻。
3 是”地”的泪点 使她的微笑保持着青春不谢。
4 广漠无垠的沙漠热烈地追求着一叶绿草的爱 但她摇摇头 笑起来 飞了开去。
5 如果错过了太阳时你流了泪 那末你也要错过群星了。
6 跳舞着的流水呀 在你途中的泥沙 要求你的歌声 你的流动呢 你肯夹跛足的泥沙而俱下么?
7 她的热切的脸 如夜雨似的 搅拢着我的梦魂。
8 有一次 我们梦见大家都地不相识的。我们醒了 却知道我们原是相亲爱的。
9 忧思在我的心里平静下去 正如黄昏在寂静的林中。
10 有些看不见的手指 如懒懒的微飔似的 正在我的心上 奏着潺潺的乐声
11 ”海水呀 你说的是什么?”
“是永恒的疑问。”
“天空呀 你回答的话是什么?”
“是永恒的沉默。”
12 静静地听 我的心呀 听那”世界”的低语 这是他对你的爱的表示呀。
13 创造的神秘 有如夜间的黑暗 _____是伟大的 而知识的幻影 不过如晨间之雾。
14 不要因为峭璧是高的 而让你的爱情坐在峭璧上。
15 我今晨坐在窗前 ”世界”如一个过路的人似的 停留了一会 向我点点头又走过去了。
16 这些微飔 是绿叶的簌簌之声呀;他们在我的心里 愉悦地微语着。
17 你看不见你的真相 你所看见的 只是你的影子。
18 我不能选择那最好的 是那最好的选择我。
19 那些把灯背在他们背上的人 把他们的影子投到他们前面去。
20 我存在 乃是所谓生命的一个永久的奇迹。
21 ”我们 萧萧的树叶 都有声响回答那暴风雨 但你是谁呢 那样地沉默着?”
“我不过是一朵花。”
22 休息之隶属于工作 正如眼睑之隶属于眼睛。
23 人是一个初生的孩子 他的力量 就是成长的力量。
24 上帝希望我们酬答他的 在于他送给我们的花朵 而不在于太阳和土地。
25 光如一个裸体的孩子 快快活活地在绿叶当中游戏 他不知道人是会藏族欺诈的。
26 啊 美呀 在爱中找你自己吧 不要到你镜子的谄谀中去找呀。
27 我的心冲激着她的波浪在“世界”的海岸上 蘸着眼泪在上边写着她的题记:“我爱你”。
28 “月儿呀 你等候什么呢?”
“要致敬于我必须给他让路的太阳。”
29 绿树长到了我的窗前 仿佛是喑哑的大地发出的渴望的声音。
30 上帝自己的清晨 在他自己看来也是新奇的。
31 生命因了”世界”的要求 得到了他的资产 因了爱的要求 得到他的价值。
32 干的河床 并不感谢他的过去。
33 鸟儿愿为一朵云 云儿愿为一只鸟。
34 瀑布歌道:”我得到自由时便有歌声了。”
35 我不能说出这心为什么那样默默地颓丧着。
那小小的需要 他是永不要求 永不知道 永不记着的。
36 妇人 你在料理家事的时候 你的手足歌唱着 正如山间的溪水歌唱着在小石中流过。
37 太阳横过西方的海面时 对着东方 致他的最后的敬礼。
38 不要因为你自己没有胃口 而去责备你的食物。
39 你微微笑着 不同我说什么话 而我觉得 为了这个 我已等待得久了。
40 "世界"在踌躇之心的琴弦上跑过去 奏出忧郁的乐声。
41 谢谢上帝 我不是一个权力的轮子 而是被压在这轮下的活人之一。
42 心是尖锐的 不是宽博的 它执着在每一点上 却并不活动。
43 日间的工作完了 于是我像一只拖在海滩上的小船 静静地听着晚潮跳舞的乐声。
45 我们的生命是天赋的 我们惟有献出生命 才能得到生命。
46 麻雀看孔雀负担着它的翎尾 替它担忧。
47 决不害怕刹那___永恒之声这样地唱着。
48 "完全"为了对"不全"的爱 把自己装饰得美丽。
49 上帝对人说道:"我医治你 所以要伤害你 我爱你 所以要惩罚你。"
50 谢谢火焰给你光明 但是不要忘了那执灯的人 他是坚忍地站在黑暗当中呢。
--------------------------------------------------------------------------------
渡口
1 在我必须离去的那天 太阳从云堆里钻出来。
蓝天凝视着大地——-上帝创造的奇境。
我的心是忧伤 因为它有知那召唤来自何方。
和风送来的细语可是来自我离去的世界?那里含泪的歌声融进了一片欢快的静寂。或许和风送来的竟是那小岛的气息?它在遥远的大海里 躺在夏日奇花异草的温馨的怀抱里。
2 收留我吧 我的主人 就在此时此刻 将我收留吧。
让我忘却那没有你的 孤苦的往日。
但愿这短暂的时刻舒展在你的怀抱中 在你的光照上绵绵延长。
我曾到处漂泊 只为追逐那呼唤我 却又不知把我引向何方的声音。
现在 让我静静地坐下 倾听你那回响在我平静的心中的话语。
不要对我心底那黑暗的角落不闻不问 用你的火焰焚烧它们 直到它们发出光和热。
3 远方的暴风雨派来的前哨 已经在天空中支起乌云的帐幕;阳光惨淡 悄无声息的林荫中 凝着泪珠般的水气。
我的心田忧伤而平静 就像乐师拨动琵琶前那深思的岑寂。
我的心中充满了期望的痛苦 期待着你来到我的生活中。
4 我心上的人儿 你干得好呵 你给我送来你痛苦的火焰 你干得好!
因为香篆不燃烧 就不会发出芬芳;灯火不占亮 也不会放射光芒。
我的沉睡着的麻木的心 必须以你的爱的霹雳才能使它警觉;而那紧才会像火炬般熊熊燃烧。
5 我的主呵 把我从自我的阴影笼罩中 从往日的废墟与困惑中解救出来吧。
拉住我的手 因为夜时漆黑的 而你的朝拜者又是盲目的。
把我从绝望中解救出来吧。
我的忧伤像一盏熄灭的灯 用你的火光点亮它吧。
我的力量疲惫地沉睡了 请你将它唤醒吧。
不要让我独自彷徨 哀叹逝去的时光。
每一举步 都让道路向我唱出四海为家之歌吧。
拉住我的手 因为夜是漆黑的 而你的朝拜者又是盲目的。
6 我手中的灯笼 使眼前黑暗的路途与我为敌。
路旁的景物使我恐惧。甚至花草树木也像鬼影憧憧 恶毒地向我蹙额恫吓。我的脚步声也引起隐隐的疑惑的回响。
因此 我乞求你的曙光来临 那时 远与近将互相亲吻拥抱 生与死也将在爱情中溶为一体。
7 当我得到你的拯救时 我会步履轻盈地走进你的世界。
当你涤净我心中的污浊时 它会为你的太阳增添光华。
我生命的蓓蕾如不在美中开放 造物主的心中就会漫布忧伤。
只要从我的心灵上揭去那黑暗的帐幕 它便会为你的笑声带来音乐。
8 你曾把爱赐给我 人世间处处充满你爱的赠礼。
你的爱像甘霖洒在我身上 我并未发觉 因为我的心沉睡着 而夜又是漆黑的。
虽说你的爱失在我的睡梦中 然而我仍感到一阵欣喜的震颤。
我深知 黎明来临 我的心灵觉醒时 你会收到我的一朵小花 它是我的爱 是对你那无价的伟大的世界的回赠。
9 我的眼睛不眠地守望着;即使我没有看见你 而那凝望仍是甜蜜的。
我的心躲在雨季的绿荫中 期待着你的爱情;即使爱情被夺去而希望仍是甜蜜的。
人们纷纷各自走各自的路 将我留在后面;即使我茕茕孑立 而倾听你的脚步声仍是甜蜜的。
大地编织着秋雾 它沉思的面容唤醒我心中的渴望;即使希望落空 而它引起的痛苦仍是甜蜜的。
10 心儿呀 不要沮丧 天将破晓 黎明即将来到。
诺言的种子 深深所扎根土中 终将发芽 破土而出。
睡眠 像花蕾 就要向着光明敞开胸怀 沉默终将发出声响。
负重将得到报偿 苦难将照亮你的路程 这一天即将到来。
玩具
孩子 你真是快活呀 一早晨坐在泥土里 耍着折下来的小树枝儿。
我微笑地看你在那里耍着那根折下来的小树枝儿。
我正忙着算帐 一小时一小时在那里加叠数字。
也许你在看我 想道:”这种好没趣的游戏 竟把你的一早晨的好时间浪费掉了!”
孩子 我忘了聚精会神玩耍树枝与泥饼的方法了。
我寻求贵重的玩具 收集金块与银块。
你呢 无论找到什么便去做你的快乐的游戏 我呢 却把我的时间与力气都浪费在那些我永不能得到的东西上。
我在我的脆薄的独木船里挣扎着要航过欲望之海 竟忘了我也是在那里做游戏了。
金色花
假如我变了一朵金色花 只是为了好玩 长在那棵树的高枝上 笑哈哈地在风中摇摆 又在新生的树叶上跳舞 妈妈 你会认识我么?
你要是叫道:”孩子 你在哪里呀?”我暗暗地在那里匿笑 却一声儿不响。
我要悄悄地开放花瓣儿 看着你工作。
当你沐浴后 湿发披在两肩 穿过金色花的林荫 走到你做祷告的小庭院时 你会嗅到这花的香气 却不知道这香气是从我身上来的。
当你吃过中饭 坐在窗前读罗摩衍那 那棵树的阴影落在你的头发与膝上时 我便要投我的小小影子在你的书页上 正投在你所读的地方。
但是你会猜得出这就是你的小孩子的小影子么?
当你黄昏时拿了灯到牛棚里去 我便要突然地再落到地上来 又成了你的孩子 求你讲个故事给我听。
"你到哪里去了 你这坏孩子?”
“我不告诉你 妈妈。”这就是你同我那时所要说的话了。
第一次的茉莉花
呵 这些茉莉花 这些白的茉莉花!
我仿佛记得我第一次双手满捧着这些茉莉花 这些白的茉莉花的时候。
我喜爱那日光 那天空 那绿色的大地;
我听见那河水淙淙的流声 在黑漆的午夜里传过来;
秋天的夕阳 在荒原上大路转角处迎我 如新妇揭起她的面纱迎接好的爱人。
但我想起孩提时第一次捧在手里的白茉莉 心里充满着甜蜜的回忆。
我生平有过许多快活的日子 在节日宴会的晚上 我曾跟着说笑话的人大笑。
在灰暗的雨天的早晨 我吟哦过许多飘逸的诗篇。
我颈上戴过爱人手织的醉花的花圈 作为晚装。
但我想起孩提时第一次捧在手里的白茉莉 心里充满着甜蜜的回忆。
同情
如果我只是一只不狗 而不是你的小孩 亲爱的妈妈 当我想吃你的盘里的东西时 你要向我说"不"么?
你要赶开我 对我说道:"滚开 你这淘气的小狗"么?
那末 走罢 妈妈 走罢!当你叫唤我的时候 我就永不到你那里去 也永不要你再喂我吃东西了。
如果我只是一只绿色的小鹦鹉 而不是你的小孩 亲爱的妈妈 你要把我紧紧地锁住 怕我飞走么?
你要对我摇你的手 说道:"怎样的一个不知感恩的贱鸟呀!整夜地尽在咬它的链子"么?
那末 走罢 妈妈 走罢!我要跑到树林里去;我就永不再让你抱我在你的臂里了。
赠品
我要送些东西给你 我的孩子 因为我们同是漂泊在世界的溪流中的。
我们的生命将被分开 我们的爱也将被忘记。
但我却没有那样傻 希望能用我的赠品来买你的心。
你的生命正是青春 你的道路也长着呢 你一口气饮尽了我们带给你的爱 便回身离开我们跑了。
你有你的游戏 有你的游伴。如果你没有时间同我们在一起 如果你想不到我们 那有什么害处呢?
我们呢 自然的 在老年时 会有许多闲暇的时间 去计算那过去的日子 把我们手里永久失了的东西 在心里爱抚着。
河流唱着歌很快地流去 冲破所有的堤防。但是山峰却留在那里 忆念着 满怀依依之情。
截止2020年,华为手机是安卓系统。但是不排除华为手机在未来会使用新的操作系统,而且华为手机已经参与了fuchsia OS新操作系统的内测。
华为手机使用的Emotion UI系统(简称EMUI)是华为基于Android(安卓)进行开发的情感化操作系统。拥有简化的用户界面、新的手势导航和HiVision的“AI”功能,新系统在国内已经向部分机型推送更新,采用了自然极简的设计。
参与fuchsia OS新操作系统内测的是首发了GT技术的荣耀play,而内测的系统是谷歌早就已经想要重新开发的新的操作系统:Fuchsia OS系统,它不在基于Linux内核,而是直接基于Zircon微核,采用c语言编写,也就是说,这款新系统或将会通过移植的形式实现直接运行安卓的APP应用,直接解决了新系统APP可用程序欠缺的问题,有利于帮助用户适应新系统。
扩展资料:
Fuchsia系统发展
谷歌自主打造的Fuchsia系统,基于Zircon内核,主打简约流畅高效以及跨平台。2017年11月的时候谷歌曾表示,他们已经将旗下这套系统Fuchsia支持了苹果的Swift语言。
Fuchsia希望能够统一安卓和ChromeOS,其支持多达4个程序同屏同时运行(平板模式下),并且主页以直列的方式显示各种故事卡、应用集、系统组件等,有点类似多任务、多标签页的做法,但更简洁。
2018年11月:Fuchsia OS 被发现支持 Kirin 970处理器,华为 Honor Play 正在测试 Fuchsia OS。
2018年12月5日:Flutter 1.0 正式发布。
参考资料来源:百度百科-EMUI
参考资料来源:百度百科-Fuchsia
随着9月份的临近,一年一度的 科技 春晚又要与我们见面了,届时除了iPhone、iPad这类硬件会准时发布之外,iOS 16及iPadOS 16也会和我们见面。但根据外媒的最新消息称,iPadOS 16的发布日期可能要延期到10月上旬。
图源推特
从WWDC 2019开始,iPad OS无论是大版本还是小版本都是与iOS同步推出,此次推迟不禁让人好奇,到底是设计师基于beta版本又做出了什么大幅度更新还是BUG数量太多,调试难度较大。但不管怎么样,如今大家对于iPad OS必然是较为不满的,尤其是对于iPad Pro 2021以及iPad Air 5的用户,明明都已经用上了M1处理器,但却用不上更具生产力的macOS,确实让人有些失望。
回过头来想想,从iPadOS独立出来已经过去了三年多,虽然其确实与iOS之间有了一定的差异,但为何大家对它还是如此不满意?它到底又该如何改变才能符合我们的需求呢?
根据业界人士的分析,iPadOS 16延迟的最大原因是苹果正在对iPad多任务的处理能力进行大刀阔斧地改革,一旦成功,就能让用户同时在一个屏幕上运行多个任务,而且可以根据用户的需求调整窗口大小等。但由于之前的代码过于混乱,导致不少iPad在运行该功能时出现了闪退、界面混乱或是直接不能使用的状态。
图源苹果官网
另外还有媒体爆料,iPadOS 16中还会加入一个全新的功能,当iPad与外接键盘或触控板连接后就会自动把应用程序进行缩小窗口化,更方便用户进行缩放、移动、关闭、以及多任务处理,简单来说就看起来更符合我们操作电脑的习惯。
再加上iPadOS 16 beta版上已经上线的“台前调度”功能,其允许用户在iPad和高达6K分辨率的外部显示器上同时运行8个应用程序,而且这套交互方式与触控、键鼠都兼容。 尤其是使用鼠标时,App的边界都是可拖动的,这与PC的使用习惯一致,也方便用户无缝衔接到iPad上处理工作,可以说这个功能彻底改变了iPad的交互方式,用户可以根据自己的需求去调节屏幕上的每一个APP大小,生产力确实拉满。
雷 科技 版权图
这些全新加入的新功能无疑是对工程师和iPad性能的一次巨大考验,或许也因此目前台前调度功能仅限用于iPad Pro 2021和iPad Air 5。而此次iPadOS延期或许就是为了让更多的非M1版iPad用上该功能,只不过目前的进展不是那么顺利罢了。
另外我们还可以猜测之后的iPadOS会和macOS同时发布,毕竟从现在的爆料和使用状况来看,iPad和Mac之间的联系越来越紧密,越来越像是Mac用户的第二块屏幕。 其实简单想想也可以理解,给iPad用上macOS显然是不现实的,还不如通过一些新功能增强两者之间的联系,这样既不会让影响到双方的定位,也能变相提升iPad的生产力。
图源苹果官网
差点忘了,此次爆料中还表示今年将会发布一台全新的入门级iPad以及一台搭载M2处理器的iPad Pro,前者将舍弃掉Lighting接口,使得整个iPad产品线都变成USB-C口,更利于用户传输文件等,后者则没什么好说的,一发布那必然是平板界的天花板,这两款产品估计也会延迟到10月左右发布。
一台好的设备不仅仅是包含了优秀的硬件性能,系统层面也尤其重要。更重要的是,苹果最近几年将iPad定位为了生产力工具。 但是现实却是骨感的,即使官方将iPad定位在了生产力工具上面,但是实际上,在消费者层面上来看,iPad则完全沦为了看电影和盖泡面的工具。
自第一代iPad诞生至今,在很多人印象中iPad一直是个不能接打电话的大屏版iPhone,实际上好像也并没有错,毕竟iPad此前一直运行的也是iOS系统,后续就算苹果推出iPad Pro并将其定位为生产力工具,也依然无法让外界打消大屏iPhone的固有印象。
图源苹果官网
直到2019年,苹果宣布iPad OS彻底独立,之后也会与iOS慢慢拉开差距,但作为iPad多年的用户,我依旧感觉不到两者的差异有多大,甚至iPad OS相比iOS还缺少了不少基础功能。当然这也是使用方法的不同,我既不拿它来画画也不拿来工作,纯粹只是把它当成是一台视频播放器和大号 游戏 机来使用。
雷 科技 版权图
可能有读者会说,iPad可以连接键盘来码字,也可以展示PPT、视频等,但这些功能笔记本电脑做得会更好;又或者有读者会说,iPad的性能这么强,也是很多视频剪辑人员的必备工具啊,目前iPad上面最强悍的视频编辑软件无非就是Luma Fusion,这是一款完全仿照Final Cut Pro设计的APP。但它也就仅限于十分相似罢了,当你真的用它去剪辑一个视频的时候,你会发现使用触屏去操作上有多么不舒服,再加上iPad那混乱的文件管理,想导入一些素材简直是噩梦。
iPad真的是生产力工具吗?严格意义上来说确实是,但经不起推敲,它和传统电脑相比,有着较强的局限性,只能完成一些相对简单的工作。 例如你把工作想象成一条20公里的马路,PC会是一辆 汽车 ,iPad顶多就是辆摩托车,虽然都能到达目的地,但你在上面花的时间和精力是要远大于 汽车 的。
图源苹果官网
早在WP时代,微软就在强调平台的统一性,看起来多平台统一似乎是一种未来的趋势。从最主流的框架跨平台(Flutter、Qt等),到Fuchsia和鸿蒙的系统跨平台似乎都在强调多平台的统一性,而苹果作为业界把生态系统玩得最溜的企业,自然不会在这个地方被人甩开一大截。 所以,就目前的情况来看,苹果的操作系统体系是目前最有希望彻底完成跨平台系统统一的系统。
不管是从此次iPadOS 16延期、beta版中的各种新功能还是苹果将iPad全员更换成USB-C口,我们都能看出苹果正在不断地去完善他们的生态系统,让iPad不再是用户手中的大号iPhone,让它能够更好地去完成一些PC设备的任务。正如前文中说的那样,iPad不可能成为第二个“Mac”,但它完全有可能成为Mac的好帮手,对于用户和苹果来说是双赢,而对于竞争对手而言,这或许又是一个值得借鉴和学习的点。
在讨论Harmony OS是否真的让谷歌慌了之前,我们先来对比一下两个操作系统,从架构出发对比一下两个操作系统的设计理念和目标是否是一样的。
HarmonyOS整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 子系统 功能/模块”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块。HarmonyOS技术架构如下所示。
系统服务层是HarmonyOS的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分:
根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。
框架层为HarmonyOS应用开发提供了Java/C/C++/JS等多语言的用户程序框架和Ability框架,两种UI框架(包括适用于Java语言的Java UI框架、适用于JS语言的JS UI框架),以及各种软硬件服务对外开放的多语言框架API。根据系统的组件化裁剪程度,HarmonyOS设备支持的API也会有所不同。
应用层包括系统应用和第三方非系统应用。HarmonyOS的应用由一个或多个FA(Feature Ability)或PA(Particle Ability)组成。其中,FA有UI界面,提供与用户交互的能力;而PA无UI界面,提供后台运行任务的能力以及统一的数据访问抽象。FA在进行用户交互时所需的后台数据访问也需要由对应的PA提供支撑。基于FA/PA开发的应用,能够实现特定的业务功能,支持跨设备调度与分发,为用户提供一致、高效的应用体验。
Fuchsia OS整体也采用分层架构设计,也被分为了4个不同层次。
对于不太了解内核作用的同学简而言之,Zircon之于Fuchsia,恰如Linux之余于Android。Linux内核驱动了多个操作系统,很多操作系统构建在它之上,比如 Ubuntu、Android、Manjaro、ArchLinux、Debian、Red Hat、SUSE 甚至 Chrome OS ,所以我们也可以大胆预测,如果未来Fuchsia OS 发展良好, Zircon 内核也被证明好用,那么很有可能有更多的操作系统采用这一新内核。
系统服务层(Garnet)
也是直接构建在 Zircon 上的一层名叫 Garnet。 Garnet 包含各种操作系统所需的各种底层功能,包括硬件的驱动程序(网络,图形等)和软件安装。这一层最激动人心的事情是 Escher(图形渲染器),Amber(Fuchsia 更新程序)和Xi Core,它是Xi文本和代码编辑器的底层引擎(今年早些时候已经发布了)。
模块管理层(Peridot)
Peridot 是接下来的这一层,主要处理Fuchsia的模块化应用程序设计, Peridot的另外两个主要组件直接用于模块。 Ledger 可以跨设备保存您在应用/模块中的位置,并同步到您的Google帐户。Maxwell 是一个更复杂的主题,需要更多进一步地深入研究,但是 Maxwell 极有可能是让 Fuchsia 充分施展魔力的点睛之笔,可以提前透露的是,Maxwell 的厉害之处包括 Kronk,也是大家熟知的 Google Assistant。
应用层(Topaz)
Topaz,是这个 Layer Cake 蛋糕的顶层,也是对开发者和用户直接影响最大的一层。Topaz 提供 Flutter 支持,而有了Flutter 的支持,各种华丽的应用程序,可以帮助充实地提供日常使用的功能齐全的应用程序。比如,现在最令人印象深刻的当然是 Armadillo UI,它是 Fuchsia 的主要用户界面和主屏幕。
可以做一个类比,Topaz 这一层在 Android 中可以找到一个对照,这将是你的必备应用程序,如联系人,音乐,文件管理器和文本编辑器 Xi(Topaz中的可视前端连接到Garnet的后端)。即使没有你需要的东西,你也可以简单方便地安装。
Harmony OS 与 Fuchsia OS的主要相同点:
Harmony OS 与 Fuchsia OS的主要不同点:
个人认为Harmony OS成功的可能性更大。虽然从生态上来说,谷歌可以利用Android建立的生态伙伴优势推广Fuchsia OS,但也恰恰是Android完善的生态会给Fuchsia OS的推广造成最大障碍。
相反Harmony OS从架构上更符合物联网时代的需求,然后华为作为主导者具备强大的硬件制造能力,Harmony OS在华为很多手机上已经推送,国内很多公司的冰箱、空调等也都在采用华为鸿蒙系统。这些都有利于Harmony OS系统的产业化发展。
当然,从全球大环境来说,Harmony OS可以在国内做成功,但是要想在国际上推广难度是非常大的。美国的 科技 霸权,导致计算机诞生以来底层技术很少在美国之外的公司诞生并发扬光大。Lua、Ruby等编程语言,Intellij IDEA等算是为数不多的例子。