美国断供安卓系统,华为自建操作系统生态有多难?

2019-05-21  本文已影响0人  Worthy

挑战

近日美国政府正式宣布限制华为使用Android系统,虽然华为回应称早已预演到这种情况并准备好了“备胎”操作系统,但外界普遍对此存在担忧。一个已经达成共识的观点是:自建操作系统并不难,难的是建立生态。


image.png

自建操作系统本质上只是一个工程问题,要完成这么大工程绝非易事,但以华为的实力只要投入资源和时间肯定没问题。相比之下,培养生态的难度要比做出操作系统本身高出几个量级,目前能形成自己生态的操作系统也寥寥可数。华为的自主操作系统有没有机会成功呢?

如果放在五年前,相信绝大部分人都会持悲观态度。但是在2019年的今天,随着行业应用开发技术的迅猛发展,答案似乎有点微妙。

首先,我们需要明确操作系统生态是什么。提到生态,我们最容易联系到Windows上的丰富的应用软件:聊天用的QQ,下载用的迅雷,看视频用的播放器,还有各种专业的设计开发软件等等。任何日常事务都能找到好用的应用软件,这样的操作系统才算形成了有活力的生态。

回到华为开发手机操作系统,短期内并不一定要像Windows一样成为全面的生产力工具,只需要满足消费者日常聊天,购物,娱乐场景的需求就已经算是成功了。

但即使要做到这个程度也不容易,我们看到很多因为缺乏生态儿失败的案例,比如三星和英特尔的Tizen,诺基亚的MeeGo。这些行业巨头当年都曾高调宣布自有操作系统,但无一不折戟沉沙,今天的华为会不会重蹈覆辙呢?

唯一搭载MeeGo系统的诺基亚N9

在我们下判断之前,先来回顾一下计算机软件的发展史。

历史

史前时代

最早的计算机没有操作系统,也没有C,JAVA这类高级编程语言。那时的程序员开发软件得对着CPU的指令手册一行行的敲汇编代码,一个简单的批处理任务可能需要耗费几周的时间编写。更糟糕的是,一旦换一种CPU架构,因为指令集不同又得重新编写。

人们受够了这种低效率的工作,于是行业先驱们发明了操作系统和高级语言。操作系统隔离了计算机硬件,而高级语言隔离了操作系统。使用高级语言编写的程序需要重写编译一次,就可以在不同CPU架构,不同操作系统上运行。我们经常能看到程序员对着黑乎乎的框框敲着键盘,他们大部分时候都是在执行这类命令行程序。

命令行程序

不得不说,这是软件开发历史中的一次伟大飞跃,不但告别了低效的代码编写方式,还实现了代码跨平台的理想:已有的程序不需要重写编写就可以移植到新的操作系统上。这意味着,新的操作系统可以完整继承现有系统的软件生态!

命令行程序可以实现跨平台

理论上华为新开发一款操作系统,只要相关开发环境支持到位,就可以继承这些“遗产”,生态的问题不就解决了吗?

很遗憾,故事才刚刚开始。

PC时代

使用高级语言编写的命令行程序虽然可以做到跨平台,但是缺陷也很明显。让普通用户面对着无聊的黑框,记一大堆诡异的命令简直就是个噩梦。

人机交互的革命诞生了。现代人早已习以为常的图形用户界面在当时是一场巨大的颠覆,它极大简化了程序使用的门槛, 也让PC走进了千家万户。

早期的计算机图形界面

但是对于程序员而言,开发带图形用户界面的程序却要麻烦很多。要知道,相比做小学的数学题,画一幅画所需的时间精力显然更多,软件也是如此。大多数软件的核心逻辑编写并不复杂,但要从零画个可交互的图形界面却很麻烦。

于是, 操作系统厂家提供一些现成的系统图形库(例如微软的MFC)简化开发。这些代码库类似已经烧好的砖块,包含了各种写好的按钮,选择框,输入框。只需要简单组合,就可以构建出带图形界面的程序。

程序员在工地搬砖

伟大的里程碑,程序员又可以不用熬夜加班了!

但是仔细一想事情又有一点不对劲。虽然代码是复用了,但是图形界面代码却需要依赖操作系统提供的代码库,这也意味Windows系统上开发的程序无法在mac上运行。程序和操作系统强关联就和传统户籍制度限制人口自然流动一样,限制了程序在不同操作系统的自由移植。

考虑到当时Windows一家独大,总的来说问题不大。

依赖系统图形库的软件无法跨平台

当然,无论那个时代,总还是有人怀着跨平台的理想,毕竟偷懒是人的天性。

首先是以SDL和QT为代表的跨平台图形库。这类库类似简单的跨平台游戏引擎,它们提供了一个中间层负责适配不同操作系统,开发者调用中间层构建图形用户界面。这样的好处是想要移植到新的操作系统,只需要中间层做好适配就可以了。

虽然想法很美好,但同样是因为Windows的统治地位,这类方案一直也没有成为主流。

依赖跨平台图形库的软件可以实现跨平台

另一个方向是基于Web协议的网页应用,由于Web协议从一开始是行业标准,网页应用的发展自然顺风顺水。浏览器作为特殊的应用程序充当了中间层的作用,不论在哪个操作系统上,只要有浏览器就可以运行网页应用(银联除外)。

网页应用可以实现跨平台

客户端程序和网页应用由于各自的特点并不能互相取代,他们都形成了各自稳定的生态。跨平台图形库由于时运不济没有能发展为行业标准,但是他们的精神却一直延续到了下一个时代。

移动时代

2007年乔布斯在那场著名的演讲中宣布了iPhone诞生,也同时宣告了移动互联网的时代到来。随之而来的是iOS和安卓两大操作系统的迅速崛起和应用生态的逐渐完善,HTML5标准的制定也让网页端赢来了蓬勃发展。在PC时代呼风唤雨的Windows转眼间成为了1%,不由让人感叹。

App Store应用生态

一家独大变成了变成了三足鼎立,格局的改变带来的不仅仅是行业的大洗牌还有开发技术的更新。

在移动互联网发展初期,应用开发通常围绕各家系统提供的库,创业者开发一款应用通常需要iOS,Android和网页三个版本。巨大的开发成本让整个行业都急切盼望着有一套可以跨平台的标准。这一次不仅仅是理想,更是实实在在的利益。

上个时代的技术又迎来了新一轮的革新,这也印证了人类的本质是复读机。

开发网页应用的前端开发者们开始了雄心勃勃的“大前端共荣圈”的计划,他们试图用前端技术栈统一所有客户端应用开发。

由于纯网页应用相比原生应用性能体验太差,聪明的开发者又开始在打造新的中间层:前端代码在iOS和Android系统上调用系统图形库绘制,这样既保证了性能又可以实现跨平台。代表的有Facebook的React Native和阿里的Weex。淘宝App在iOS和Android上的大部分实现都是同一套代码,用的就是这类技术。

前端技术构建的微信小程序

跨平台图形库这一脉的发展也没有停滞。谷歌的Flutter继承了先辈的遗志,使用了开发效率更高的Dart语言,同时对移动操作系统的支持更好,甚至还可以生成前端代码。

虽然还没有哪家能发展成为行业的绝对权威,但确是朝着融合的方向发展。反倒是基于系统图形库的原生开发方式越来越受到冷遇,这从iOS/Android开发招聘岗位的锐减就可以一窥端倪。

我们大胆推测未来理想的应用开发标准会是前端和跨平台图形库两种技术融合的产物,一套代码既可以通过浏览器,也可以依赖跨平台图形库在不同操作系统上运行。

理想的跨平台应用架构

基于以上的架构,理论上只需要做好适配工作,原有的应用生态可以无缝移植到新的操作系统。

机遇

回过头看,整个行业的应用开发趋势是朝着跨平台的方向发展的。特别是移动互联网时代,操作系统的格局变化带来了实实在在的代码复用和软件生态移植的需求。

虽然目前跨平台技术还有很多问题,例如还没有形成真正的行业标准、只有部分应用使用了跨平台开发技术、相比原生应用性能上还有差距。但有别于过去的是软件生态的构建的方式不再是从头开始,而是有了明确的方向。

image

如果华为能认准方向并积极推动行业的标准的制定,或许建立操作系统生态将不再是个难题。

上一篇下一篇

猜你喜欢

热点阅读