如何判定是否“自主”手机操作系统?

互联网 | 编辑: 潘翔城 2012-10-06 00:00:00转载 一键看全文

如何搭建自主系统

但是,世上无难事只怕有心人。接下来我告诉你如何搭建一个真正的“自主”操作系统。

四、如何开发“自主”操作系统:目的、策略和方法

目的

开发“自主”操作系统的主要目的有两种:一种是想再造一个类似Android、iOS的操作系统,并作为其竞争者;一种仅仅是为了在商务谈判和合作中获得一个比较好的筹码。当然,还有一种目的就是骗取政府的财政支持,对这类不良目的,不属本文讨论范围。

我们先猜度一下国内外这几年出现的一些“自主”操作系统,其目的是什么:

Firefox OS:这是Mozilla公司推出的纯粹基于HTML5/CSS3/JavaScript等网页前端开发技术推出的操作系统,和HP收购自Palm的 webOS有类似的软件架构。HP收购了webOS之后的半年,即宣告放弃webOS,而Mozilla却希望通过类似技术的Firefox OS成为Android的竞争者。一会儿我们分析下为什么Firefox OS要比webOS有更强一些的生命力。

华为提出要开发的“自主”操作系统:作为一个智者,任正非不可能不知道一个真正“自主”的操作系统应该是什么样子的。华为就算再有钱,再有人才,短时间内也是搞不定一个“自主”操作系统的(如前所述,主要是建立对应的生态系统太难了)。这么说来,华为开发“自主”操作系统,其目的其实就是做一个“备胎”,以便在和 Android、Windows Phone等合作时能够有一个可以讨价还价的砝码。也就是说,华为并不是真的要做“自主”的操作系统;或者这么说,支持团队去做,做成Android那样最好,做不成Android那样,如果真有一天打起架来可以凑合用也行。

阿里云OS:马云同志的野心很大,他做阿里OS,就是要复制谷歌在移动互联网的商业模式,进而在移动互联网领域推广阿里体系的服务和内容。可惜的是,马云貌似不太懂技术,也没个明白人给他做参谋,结果花了钱还被人捏住了七寸。最新的消息,阿里云OS独立运行,再投个2亿美金继续搞。马云同志啊,光有钱是不行的,你身边还得有个把技术大牛帮你把关、出谋划策才行啊。

策略

好,面对这两种开发“自主”操作系统的目的,应该有什么样的策略呢?其实策略很简单,不管你是真心还是假意,都应该按照本文第三章给出的“自主”操作系统之特征进行开发,除此之外,别无他法。任何期望找捷径的方法,都不可能获得成功。这里所说的找捷径的方法具体有:

·给Android整容。如OMS、阿里OS。

· 忽略操作系统中生态系统的重要性,在Linux或其他开源操作系统内核、系统库等基础上包裹一个简单的框架而形成的操作系统。这种操作系统,其复杂度和 Linux发行版相当,离本人定义的真正“自主”操作系统还差十万八千里。读者可能会问,这样的系统做备胎不是还行吗?为什么也得按照真做那样开发呢?你要知道的是,对手也不是傻子,人家看你的架势,就知道你不是真做——你起码得拉出真做的架势来,人家才能怕你啊!

顺便谈谈我对基于浏览器技术的web操作系统的看法。

理论上讲,浏览器可以做很多事情,甚至可以替代PC机上的通用操作系统。但是,最新的浏览器技术(HTML5/CSS3等),还存在一些技术上的问题。主要的问题有如下两个:

· 浏览器主要采用的JavaScript编程语言,本质上是一种难于管理(源代码保护、无法进行有效的软件架构设计、难于调试等等)的编程语言,同时内存消耗巨大,性能不佳。最新的说法是,Facebook创始人直言全面采用HTML5的策略是个失误,正在向操作系统的原生应用转移。也就是说,JavaScript语言难以承载一个良性发展的生态系统。

·因为许多原因(主要是利益和政治因素),HTML5相关的标准有分裂的迹象,同时进展缓慢。

HTML5技术作为原生应用的一种补充,可以起到很好的作用,但是,如果要想在浏览器技术上建立一个真正可以和Android等竞争的操作系统,恐怕还需要很长的时间(技术上必须有突破)。要不然,谷歌现在主推的应该是ChromeOS,而不是Android。

现在回答刚才提到的问题:为什么Firefox OS可以比webOS的生命力更长久些?主要的原因是,Firefox OS是开源的,有比较强大的企业在主导其发展,作为一个脱胎于开源基金会的企业(Mozilla公司),也能获得合作伙伴的一些好感;相反,因为 webOS是封闭,HP又没有能力像苹果那样打造一个完全封闭的平台和生态系统,所以最终的命运是被人抛弃了。虽然后来webOS也走上了开源的道路,但大势已去,HP不亲自带头搞,光靠开源社区是搞不成的。

方法

假定你是一名“自主”操作系统项目的技术管理者,你第一步要考虑的问题是什么?许多人的回答可能是:先选操作系统内核、基础库什么的。其实错了,第一步要考虑的应该是你打算选择什么编程语言作为原生应用的编程语言。

世界上的编程语言有很多种,有些语言贴近机器,比如汇编语言、C语言,有些语言贴近人,比如Basic、Java,还有些语言用于特定领域,比如网页服务器端使用的PHP,有些适合做不同软件之间的粘合剂,比如Perl、Python。本文第三章已经解释了编程语言以及围绕编程语言形成的运行环境、框架是将操作系统区隔于其他操作系统的主要技术特征。因此,我们必须慎重选择一种编程语言。而且一旦选定了一种编程语言,“自主”操作系统在开发者看来长什么样,其实就基本上定了。

选择编程语言要考虑如下因素:这种编程语言是否易于学习和掌握?是否有庞大的开发者在使用它?这种编程语言是否具有高级语言的基本特征,比如,支持面向对象编程?这种编程语言是否是编译执行的?这种编程语言是否利于保护开发者的知识产权?这种编程语言是否有完整的工具链支持?这种编程语言是否有集成开发环境的支持?这种编程语言是否易于保护整个操作系统不会被恶意代码轻易破坏?如此等等。

其实很多读者看到这里,都会想到Java语言。是的,Java语言或其派生语言如C#是构架“自主”操作系统的最佳编程语言。可惜,已经被Android和Windows Phone给捷足先登了。

如此一来,你可以考虑重新设计一门类似Java的语言,也可以通过其他手段,让你使用Java语言构建的操作系统有别于其他操作系统。比如,构建自己的虚拟机,如Android使用的Dalvik那样(Dalvik和Oracle的JDK标准虚拟机有很大不同,从而让Oracle还挺难告赢谷歌的);你也可以用Dalvik,但让类库、运行环境和Android不同(这样做的法律风险要大一些)。总之,你需要有自己的创新,全部抄袭是不行的。

确定了编程语言,接下来的工作其实就比较直接了,从上而下设计就是了。主要有:

1、定义和实现提供给原生应用程序的基础API和/或虚拟机。

2、在应用程序基础API、标准C/C++函数库和相关组件(通常都是开源软件)的基础上构建操作系统的运行环境和框架。主要涉及系统服务、模块之间的通讯机制,包括图形界面、浏览器引擎、OpenGL ES支持接口等等。

3、同时选择操作系统内核,通常也就是Linux,要与众不同,用BSD也行。

4、搞定集成开发环境和模拟器,让开发者可以在PC机上为你的操作系统开发应用程序。

5、让你的操作系统运行在真实硬件上,为开发者提供应用样例和文档。

6、持续迭代,让你的“自主”操作系统不停往前发展。

上面的第一点和第二点,是“自主”操作系统有别于其他操作系统,且支撑你可以和其他人竞争的关键点。往下的东西都不是构成“自主”操作系统真正竞争力的东西。

这么看来,其实也挺简单的。不是吗?貌似有钱、有个把技术上的明白人就能做到。技术上没问题了,市场、法律等方面的事情,请专业人员帮忙,中国这类人才还是蛮多的,缺的,其实还是技术人员以及懂系统工程和软件开发的管理人员。

提示:试试键盘 “← →” 可以实现快速翻页 

一键看全文

本文导航

相关阅读

每日精选

点击查看更多

首页 手机 数码相机 笔记本 游戏 DIY硬件 硬件外设 办公中心 数字家电 平板电脑