“自主”手机操作系统:如何判定及怎么做
2012-09-22 10:10:34 来源:Chinaz 评论:0 点击:
策略
好,面对这两种开发“自主”操作系统的目的,应该有什么样的策略呢?其实策略很简单,不管你是真心还是假意,都应该按照本文第三章给出的“自主”操作系统之特征进行开发,除此之外,别无他法。任何期望找捷径的方法,都不可能获得成功。这里所说的找捷径的方法具体有:
·给Android整容。如OMS、阿里OS。
·忽略操作系统中生态系统的重要性,在Linux或其他开源操作系统内核、系统库等基础上包裹一个简单的框架而形成的操作系统。这种操作系统,其复杂度和Linux发行版相当,离本人定义的真正“自主”操作系统还差十万八千里。读者可能会问,这样的系统做备胎不是还行吗?为什么也得按照真做那样开发呢?你要知道的是,对手也不是傻子,人家看你的架势,就知道你不是真做——你起码得拉出真做的架势来,人家才能怕你啊!
顺便谈谈我对基于浏览器技术的web操作系统的看法。
理论上讲,浏览器可以做很多事情,甚至可以替代PC机上的通用操作系统。但是,最新的浏览器技术(HTML5/CSS3等),还存在一些技术上的问题。主要的问题有如下两个:
·浏览器主要采用的JavaScript编程语言,本质上是一种难于管理(源代码保护、无法进行有效的软件架构设计、难于调试等等)的编程语言,同时内存消耗巨大,性能不佳。最新的说法是,Facebook创始人直言全面采用HTML5的策略是个失误,正在向操作系统的原生应用转移。也就是说,JavaScript语言难以承载一个良性发展的生态系统。
·因为许多原因(主要是利益和政治因素),HTML5相关的标准有分裂的迹象,同时进展缓慢。
HTML5技术作为原生应用的一种补充,可以起到很好的作用,但是,如果要想在浏览器技术上建立一个真正可以和Android等竞争的操作系统,恐怕还需要很长的时间(技术上必须有突破)。要不然,谷歌现在主推的应该是ChromeOS,而不是Android。
现在回答刚才提到的问题:为什么FirefoxOS可以比webOS的生命力更长久些?主要的原因是,FirefoxOS是开源的,有比较强大的企业在主导其发展,作为一个脱胎于开源基金会的企业(Mozilla公司),也能获得合作伙伴的一些好感;相反,因为webOS是封闭,HP又没有能力像苹果那样打造一个完全封闭的平台和生态系统,所以最终的命运是被人抛弃了。虽然后来webOS也走上了开源的道路,但大势已去,HP不亲自带头搞,光靠开源社区是搞不成的。
方法
假定你是一名“自主”操作系统项目的技术管理者,你第一步要考虑的问题是什么?许多人的回答可能是:先选操作系统内核、基础库什么的。其实错了,第一步要考虑的应该是你打算选择什么编程语言作为原生应用的编程语言。
世界上的编程语言有很多种,有些语言贴近机器,比如汇编语言、C语言,有些语言贴近人,比如Basic、Java,还有些语言用于特定领域,比如网页服务器端使用的PHP,有些适合做不同软件之间的粘合剂,比如Perl、Python。本文第三章已经解释了编程语言以及围绕编程语言形成的运行环境、框架是将操作系统区隔于其他操作系统的主要技术特征。因此,我们必须慎重选择一种编程语言。而且一旦选定了一种编程语言,“自主”操作系统在开发者看来长什么样,其实就基本上定了。
选择编程语言要考虑如下因素:这种编程语言是否易于学习和掌握?是否有庞大的开发者在使用它?这种编程语言是否具有高级语言的基本特征,比如,支持面向对象编程?这种编程语言是否是编译执行的?这种编程语言是否利于保护开发者的知识产权?这种编程语言是否有完整的工具链支持?这种编程语言是否有集成开发环境的支持?这种编程语言是否易于保护整个操作系统不会被恶意代码轻易破坏?如此等等。
其实很多读者看到这里,都会想到Java语言。是的,Java语言或其派生语言如C#是构架“自主”操作系统的最佳编程语言。可惜,已经被Android和WindowsPhone给捷足先登了。
如此一来,你可以考虑重新设计一门类似Java的语言,也可以通过其他手段,让你使用Java语言构建的操作系统有别于其他操作系统。比如,构建自己的虚拟机,如Android使用的Dalvik那样(Dalvik和Oracle的JDK标准虚拟机有很大不同,从而让Oracle还挺难告赢谷歌的);你也可以用Dalvik,但让类库、运行环境和Android不同(这样做的法律风险要大一些)。总之,你需要有自己的创新,全部抄袭是不行的。
确定了编程语言,接下来的工作其实就比较直接了,从上而下设计就是了。主要有:
1、定义和实现提供给原生应用程序的基础API和/或虚拟机。
2、在应用程序基础API、标准C/C++函数库和相关组件(通常都是开源软件)的基础上构建操作系统的运行环境和框架。主要涉及系统服务、模块之间的通讯机制,包括图形界面、浏览器引擎、OpenGLES支持接口等等。
3、同时选择操作系统内核,通常也就是Linux,要与众不同,用BSD也行。
4、搞定集成开发环境和模拟器,让开发者可以在PC机上为你的操作系统开发应用程序。
5、让你的操作系统运行在真实硬件上,为开发者提供应用样例和文档。
6、持续迭代,让你的“自主”操作系统不停往前发展。
上面的第一点和第二点,是“自主”操作系统有别于其他操作系统,且支撑你可以和其他人竞争的关键点。往下的东西都不是构成“自主”操作系统真正竞争力的东西。
这么看来,其实也挺简单的。不是吗?貌似有钱、有个把技术上的明白人就能做到。技术上没问题了,市场、法律等方面的事情,请专业人员帮忙,中国这类人才还是蛮多的,缺的,其实还是技术人员以及懂系统工程和软件开发的管理人员。
案例
这里给大家介绍笔者早先和美国一家公司合作,尝试搭建的一个操作系统,其实在当年这些东西的基础上,搭建出来一个有别于Android的开源“自主”操作系统还是非常快的。
这个系统使用了Linux内核和标准的C/C++函数库,以及一些和Android体系结构类似的C/C++运行库,使用了笔者公司的开源软件MiniGUI、WebKit浏览器核心引擎等等。基础的东西就这些。之上是开源的KaffeJVM(后来改成了CacaoJVM),和符合J2SE规范的类库实现,再往上就是运行环境和框架了。见下图:
可惜的是,真正具有核心价值的运行环境和框架,是美国合作方自己开发的,我手里没有源代码。相信读者也能明白,美国合作方掌握的才是精华。
如果要在这套系统基础之上快速开发一个“自主”的操作系统,我们需要:
·重新定义类库,也就是基础API,让我们的系统从灵魂上有别于其他系统。必要的话,优化或替代开源的虚拟机(淘宝最近开源了一个JDK虚拟机,不过是针对J2EE的)。
·全新设计和实现适合于智能手机的运行环境、框架。
·全新设计基本的智能手机应用软件。
·开发模拟器,并集成到Eclipse集成开发环境中。
·还有,这个系统是2006年开发的,我们还需要将底层的内核、基础函数库等更新到比较新的版本。
要做的工作还是蛮多的,但这个系统在2007年的时候,就已经可以运行在主频在200MHz左右的手机上了。
当然,这个系统离本人定义的真正“自主”的操作系统还有很大的距离。但是,起码技术上的方向是基本正确的,要知道,这个系统几乎是和Android同时发起的。后来在2007年,谷歌宣布开源Android后,美国合作方敏锐感觉到了Android将是未来的趋势,就直接转向了Android平台,项目也就终止了。
五、给相关人员的建议
1、给政策制定者:“自主”切忌急功近利
这里所说“政策制定者”主要指的是“核高基”等政府资助项目的决策人。其实前面已经说过了,这里重申一下:
政府需要在更长的周期内(至少五年),考核受资助企业的市场份额是否有扩大,是否建立了良好的生态系统,让使用者、开发者欲罢不能,而不是简单的著作权证书和专利数量,或者是否达到了一个给定的出货量(因为出货量是可以作假的)。也就是说,我们应该重新定义“自主”这两个字,从“自有知识产权”向“有效知识产权保护下的自己主导”转移;在知识产权方面,要强调有效专利数量,而不是著作权;甚至应该要求受资助企业按某种许可证条款开放源代码。
政策制定者甚至可以参照本文第三章给出的“自主”操作系统之定义,将整个“自主”操作系统的研发和推广分为三个部分:
·科研类,两到三年为周期,以研究新的编程语言及其相关设施(如虚拟机及其优化技术)为主。
·工程类,两到三年为周期,围绕指定的编程语言发展外围工具链(编译器、调试器)、开发工具、运行环境、框架等。
·法律类,半年到一年为周期,研究和分析采纳已有编程语言面临的知识产权风险,如何规避等等。
政策制定者切忌急功近利,要按照客观规律办事,将科研类的课题交给研究机构,将工程类以及市场推广等方面的课题交给企业,将法律类的课题交给大专院校。只有这样,才能首先让方法正确,方法上正确,加上合理的考核制度,才能让钱产生真正的效益。
在花钱方面,在一盘大棋下的统一部署下,初期让多一些的企业或机构参与,一年一验收,逐步淘汰那些不合格的,最后剩下来一、两个企业就好。十亿美金,外加企业自筹部分,我看基本够了。
2、给大型企业决策者:“自主”大不易
有意开发“自主”操作系统的大型企业决策者首先要明白,开发“自主”操作系统是一个长期、艰巨的系统工程。甚至,你需要准备一大笔钱来和已有的巨头打官司(微软赔付给Sun几十亿美金之后,才让自己的C#和.Net平台成为“干净”的语言和平台)。
另外,如前所述,不管是真心还是假意,都要拿出十足的架势来真做,而且,对内、对外都要强调这点。要知道,你期望得100分,下属大多数情况下只能给你80分;你期望得1000分,下属也许就可以给你500分。这样才能超出决策者自己的预期,才能收到更好的效果。
3、给技术负责人:难度不亚于“两弹一星”
这事儿如果恰好让你负责,那简直是,怎么说呢,是个“扬名立万”的机会啊!你要知道的是,这事儿和制造“两弹一星”差不多。
首先你要掂量掂量,你有没有这个本事。所谓“没有金刚钻,不揽瓷器活”,说的就是这个道理。有兴趣的也别来找我,我做点小项目可以,真要我负责,我没这个本事。
另外一方面,你要是违背知识分子的良知,帮助一些不良人员骗取国家的资助款项,就更不应该了。这可是要被人戳脊梁骨的;有没有钱拿永远是小事,昧了自己的良心可是大事。
4、工程上的建议
在具体的研发实施过程当中,开发负责人必须特别注意工程方面的问题:
先做什么、后做什么,或者那些可以并行做。
不同的软件模块,应采取不同的软件开发管理模型。API设计、框架等的开发,适合采用瀑布法模型;应用软件或者小型模块的开发,适合采用敏捷开发模型。但整个系统,应要不停迭代,所以版本控制非常重要。
特别要注意代码的质量控制以及文档的全面、完备、简洁和逻辑性。
作者魏永明(飞漫软件CEO)授权《创事记》发表,较原文略有改动,转载请注明作者出处。
上一篇:用户自愈能力越来越高
下一篇:红鲱鱼大骗局:“创业大赛”大忽悠
分享到:
收藏