新一代智能终端系统平台Moblin发展探讨
2010-06-11魏颖琪杨少龙陈立辉
魏颖琪,杨少龙,陈立辉
(中国电信股份有限公司广东研究院 广州 510630)
1 移动终端系统平台的发展趋势
移动通信网和互联网的结合引发了整个移动终端产业生态链的变革,传统的手机生产厂家将行业的主导地位让给了软件厂家。面对移动互联网智能终端的巨大市场,传统的操作系统厂家苹果和微软以及互联网搜索引擎企业Google,携带其在应用软件开发领域的巨大优势,凭借其垄断的系统平台,开始重新划分智能终端操作系统的势力范围。
这种转变的标志是iPhone的问世,其基础是手机和互联网的广泛互动。通过GPRS、CDMA 1x、Wi-Fi/WAPI以及3G数据接入,手机对应用软件的需求不再局限于通信,互联网应用和本地应用软件的巨大市场促使了软件厂家地位的提升。
1.1 跨平台的开发环境
原来,手机终端的应用开发环境都较为封闭,应用的提供方通常都是手机厂家,运营商对手机进行定制,例如要求为运营商的某个业务品牌定制某个应用,需要不同手机厂家分别进行开发。手机应用开发者面临的最大问题是对不同厂家不同型号不同操作系统的手机进行适配,这使得开发者无法将精力全部集中到上层的应用开发,为了底层的适配疲于奔命。因此,通过中间件兼容底层的软硬件,提供一个通用的开发环境,是很多开发团队以及运营商的共同期望。
J2ME是目前手机上常看到的KJava提供的有效解决途径,出现了很多J2ME的应用,其中发展最好的是Opera,这家挪威公司提供的浏览器是目前手机上主流的浏览器之一,是J2ME最为成功的例子,但是J2ME有几个无法避免的问题。
(1)J2ME对开发者的普及率比较低
开发人员,尤其是大学校园中未来的程序员对J2ME开发环境不熟悉,造成人才基础薄弱,导致有能力的开发者相对较少。
(2)J2ME应用程序积累的数目不足
与Windows、Linux的应用项目相比,数目显然太少,缺乏可以从PC移植的海量应用。
(3)J2ME背后的官方支持力度不够
SUN公司(现在已经被甲骨文收购)对J2ME的修订和升级可以说很负责任,但是它并不主导J2ME应用的开发。对于应用开发者来讲,背后缺乏一个强大的官方支持。
(4)J2ME的发展缺乏手机厂家的推动
很多手机确实支持J2ME,但只作为能力之一,并非基本的开发环境,在兼容性和运行效率的改进方面缺乏手机厂家的推动。
J2ME碰到的主要问题是非技术的,这些方面却正是大型软件厂商的优势。
1.2 软件巨头在手机系统的兴起
Google的Andriod技术路线和J2ME相似,底层通过Linux对不同硬件进行适配,中间件采用Andriod Dalvik虚拟机,即Google自己开发的Java虚拟机。它的巨大商业成功在于它既是Andriod的提供者,也是Andriod应用开发社区的倡导者、推动者以及不遗余力的推广者。
Apple、微软和Google在软件行业的垄断优势是J2ME无法比拟的。对应用开发的垄断能力,使得手机终端行业的主导权正从手机厂家手中慢慢转向这些软件巨头。它们有以下共同的特点。
(1)开放的开发环境
它们的系统平台可能是免费也可能是收费,例如免费的Windows CE和收费的Windows Mobile,它们的硬件适配可能只针对一款手机,例如iPhone,可能欢迎更多的手机厂家来适配,如Andriod。无论哪种情况,无论它们提供的系统平台为了垄断有多么的封闭,但其开发环境都是开放的。
(2)开发环境的普及
开发者可以很容易获得开发教程和演示例子,可以和其他开发者进行交流探讨,可以容易地无需经过专门培训搭建自己的开发环境。手机和互联网的集合促使消费者对丰富应用的需求,而普及开发率则是提供更多应用的基础。这种相互促进如滚雪球般推动行业的壮大。
1.3 来自Linux力量的Moblin
Linux是开发者除了Windows外最熟悉的操作系统。虽然各项市场调研数据显示差异很大,而且 Linux在PC操作系统中所占比例远低于微软的视窗操作系统,估计在1%~5%,但是它在服务器领域和嵌入式领域却占有相当大的比例。高校的嵌入式操作系统和编程课程都以Linux为范例,市面上有很多相关的专业书籍,网络论坛也非常活跃,因此Linux用于手机操作系统在开发普及方面具有很好的群众基础。
Linux内核兼容绝大多数的CPU类型,包括ARM、MIPS、x86等,囊括了几乎所有的用于手机生产的CPU架构。它是通过操作系统而不是中间件来隐藏不同硬件平台的差异。
Linux的开源开放,吸引众多开发者在上面开发各种应用,这些应用覆盖了我们生活和工作的各个方面。
Linux具备成为一个优秀手机系统平台的潜力,它缺乏的仅是一个强有力的推动。在这个背景下,由Linux基金会支持,以Intel公司为技术主导的Moblin社区推出了基于开源Linux的新一代智能终端操作系统,即Moblin操作系统,适用于上网本、移动互联网设备以及车载设备。Moblin继承了Linux的开源开放思想,与三大软件巨头相比,更具有草根性,准入门槛低,因此一出现就引起了行业的极大关注。
在对Moblin作进一步介绍和分析前,我们先看看手机终端的应用发展趋势。
2 移动终端应用的发展趋势
衡量移动终端系统平台优劣的重要指标是它能否提供良好的开发环境便于开发人员在上面开发各种应用,因此,我们需要分析移动终端应用的发展趋势。
近年来,云计算这个词不仅出现在专业技术中,也频频出现在普通媒体中。维基百科这样定义:云计算是一种基于互联网的计算新方式,通过互联网上异构、自治的服务为个人和企业用户提供按需即取的计算。云计算重点在网络侧提供服务,如软件即服务(SaaS),用户侧尽可能简单,尽可能不因网络侧服务器的改变而更换或者升级。因此,用户侧最理想的终端是浏览器,业务的提供为浏览器/服务器模式,即B/S模式。对于手持移动设备,是WAP浏览器,随着手机终端CPU能力的增强,目前的发展趋势是提供同时支持WWW/WAP的全浏览器,如Opera和UCWeb。采用这种方式的网站有搜狐、新浪以及各类社区网站(SNS)等,它们向用户提供各类信息的阅读(如新闻)和存储及分享(如博客、相册)。采用B/S方式的有众多非IT行业,如银行、网购等,它们通过提供的服务来盈利或者提升自身的价值。它们都是一些大型的公司或企业,通过服务或内容来获利,因此用户使用的便捷性和傻瓜化非常重要,尽可能减少软件的下载和安装,在新功能增加时尽可能不要求用户升级软件,同时一定要简单易用。基于这些需求,浏览器是最合适的载体,只要用户会上网就会使用,所以B/S模式是目前互联网业务的主流方式。
Apple带来的应用软件商店(App store)对B/S模式形成了挑战,这种软件开发模式和商业模式导致了传统客户端方式的强烈回归。在B/S模式中,提供方一般都是中大型的公司和企业,重点是服务而不是功能。用户不需要购买也不需要安装软件,而是通过浏览器直接使用服务。开发方向服务提供方销售的软件安装在服务器中,服务提供方利用这些服务器所提供的云计算,向用户提供服务。软件商店的模式是开发方直接面向用户提供软件、销售软件的功能,直接从用户收取费用。这种商业模式不适合无需安装客户端的B/S方式。应用软件商店通过软件买卖回馈开发者,吸引了更多中小软件开发公司和开发个人。它的开发平民化将应用推向了生活的各个方面,包括原来软件公司忽略的小功能以及IT行业不熟悉的专业领域。软件应用商店通过提供软件销售渠道,极大地促进终端应用的繁荣,在可预见的未来仍然是重要的软件供应方式之一。开发方提供客户端,用户通过软件商店购买、下载、安装和使用。软件商店这种商业模式,使得客户端方式,即本地客户端和客户端/服务器(C/S)方式重新流行。
最近非常热的微件(Widget)技术从某种意义上是B/S和C/S这两种方式的结合。从技术层面上看,与B/S相似;从用户使用方式看,与客户端方式相似。微件有两种:一种是位于浏览器,一种是位于桌面,对于移动手持设备,微件通常指后者,本文只对后者进行讲述。
微件引擎和浏览器引擎有相似的结构,同样具有JavaScript引擎、XML解析器、排版引擎等,这些内部模块可以共享。微件在互联网/移动互联网环境下,运行在微件引擎的应用程序,可以从本地或互联网更新并显示数据,协助用户享用各种应用程序和网络服务,它的服务提供可以依赖于云计算或者网络的服务提供商。微件提供独立的UI(用户界面),形式上和客户端相似,可通过应用软件商店下载。
微件采用脚本编写方式(HTML、JS)开发应用,降低了应用开发门槛,加快了应用开发速度。虽然微件的标准仍不统一,但国家工业和信息化部正在推动这一标准的制定。在标准规范后,微件可以作为不同手机跨平台的技术。
应用软件商店的产生影响了手机终端应用的产业生态链,移动终端应用的发展趋势如图1所示。B/S、C/S和微件并不互相排斥,各有各的商业模式。
开源浏览器,无论是Mozilla的Fennce,还是webkit家族的浏览器,都支持Linux。Webkit同时也是目前手机微件引擎的主流核心。在应用软件上,媒体播放、媒体编辑、文件阅读和编辑、游戏等PC上常见的软件功能在Linux上均有。Moblin借助Linux社区,可适配海量的应用,支持B/S、C/S和微件的发展方向。
3 来自开源Linux的Moblin
在智能终端系统平台中,谁能提供大量的应用,谁能主导开发工具和开发环境,谁就能主导产业生态链,占据主动权。
3.1 Moblin的特点和潜力
秉承Linux开源开发的思想,Moblin有以下特点。
· 和Windows一样,作为PC的主流操作系统之一,它有着极其广泛的程序员开发队伍,它的开发环境、开发语言和开发工具是广为熟悉的。
·有海量的Linux应用,只要满足Moblin的兼容要求,即满足Linux开发rpm包的版本需求,都可以在Moblin平台上安装运行,只需进行UI改造,适应手持终端小尺寸屏幕需求即可。
· 具有大量的开源代码。如Webkit,可以在上面开发微件引擎或者浏览器;又如即时通信,提供支持MSN、QQ等方式的终端开源代码。这些开源代码不仅可以提供即时通信服务,还可以与用户电话号码簿结合,在号码簿中及时呈现好友的MSN或者QQ状态,可以围绕号码簿将好友的各种社会关系统一结合起来。
·Moblin提供强大的开发工具,集成了Linux的开发工具和开发环境,包括C、C++、轻载数据库等,这些开发工具绝大部分都是免费的。
3.2 Moblin与三大巨头系统平台的差异
Moblin与Google、苹果和微软提供的手机系统平台的本源差异是操作系统的开源开放,这是本质上的区别。任何应用软件都可以分为上中下三个层面,最低层是系统平台,中间层包括中间件、数据库、开发语音等,上层是应用。这三大国外软件巨头垄断了系统平台和中间层,也就控制了产业生态链的源头,获取了手持终端软件行业最大的利润。
以Google Andriod为例,它的系统平台基于经过修改的Linux内核,中间件采用Java虚拟机,与闭源的Apple和微软操作系统相比,Andriod起步来源于开源社区,但是时机一旦成熟,Google就通过技术上的一些手脚进行垄断。Andriod提供的工具包没有遵守现有的Java标准制订过程,采用了Google自己的方法,这将导致不兼容的Java的出现,这种分裂不符合广大开发人员的利益,但符合垄断的需求。
这种思想与Linux的开源开放思想难以相容。2010年2月2日,Linux内核开发者Greg Kroah-Hartman表示已经将Andriod提供的代码从Linux kernel中拿走,现在最新的linux版本(2.6.33)中将不含有 Andriod的代码。引发Android与Linux开发主流分道扬镳的原因在于为Andriod提供的驱动需要依赖于只存在Google的内核树(Google’s kernel tree)的代码,从而无法合并到主流的内核树(main kernel tree)中。当Andriod的代码仍在状态树(staging tree)时,一些Linux的内核开发人员检查了Andriod提供的代码并指出了需要修改或者删除的地方,这些涉及内核/用户空间边界等重要问题,如对Andriod用户空间逻辑的修改需要对内核也进行相应的修改,这导致了除Google外其他人无法进行修订。Linux社区鼓励各厂家将他们的代码整合到主流的内核树中,这样他们可以获得安全补丁、自动处理所依赖的内核API修改等的好处。这些年来,Linux就是这样在众多的厂家和个人贡献者中不断成长和发展,但是Google破坏了游戏规则。这些技术上的壁垒都表明Google并没有兴趣和Linux社区共同发展,他们要的是技术上的垄断。
Moblin不一样,Moblin社区提供的快速启动等多项技术都进入了Linux的主流内核树。世界各地的开发者都可以为Moblin/Linux做贡献并从中获益。它可以提供更底层的,基于系统层面的开发,如内核模块开发,这是Apple/微软/Google所不会开放的系统内核层。开发者对系统有更大的控制权。开发者可以调用更多的硬件功能,如通过硬件编解码提供强大的多媒体处理能力等。Moblin保持了Linux开源开放的精神,它是草根的,不是任何软件巨头的垄断系统。
3.3 Moblin的架构
图2是Moblin的系统架构。
Moblin的框架结构符合Linux的标准框架。从下至上,第一层基于Intel Atom架构硬件平台,第二层是Linux内核和设备驱动层,第三层是应用服务基础层,第四层是界面服务基础层,最上一层是桌面UI和应用层。
最底层是基于Intel Atom(凌动系列)CPU的硬件架构。Intel凌动系列处理器向小型设备产品线扩展,包括上网本、车载设备、MID(移动互联网设备)以及手机。目前,推出商用的是前3种,适应手机凌动芯片的型号有Moorestown和Medfield,将在2010年和2011年发布。Intel CPU是x86架构,是PC的主流方式,Linux的任何版本都最先在x86架构上验证。PC上有大量的x86兼容程序,也可以在Moblin上加载。x86芯片的特点是处理能力强,一些ARM的MID设备,可以利用硬件图形处理实现很好的视频播放效果,但是对Office的处理速度和我们平时在PC上的使用习惯相差太远,这是芯片处理能力不足导致的。Intel的芯片在小型化后能达到怎样的效果,需要发布后才能验证,但我们对此抱有很大的期望。
Moblin是否只能在x86架构上运行?Moblin由Intel公司主导,目前只能支持x86架构,但是它仍处于发展的前期,整条生态链还没有铺开。Linux是对各类CPU兼容得最好的操作系统,常见的CPU都能兼容,嵌入式操作系统一般都是Linux,只要Moblin在手持终端领域上发展得好,兼容性不是问题。
第二层是Linux内核和设备驱动层。Moblin同步Linux的最新官方内核版本,将它对Linux内核的补丁都反馈给Linux的官方,努力进入官方版本Linux,成为里面的开源代码。这使得Linux的后续版本将兼容Moblin所提交的修订,不会因为版本的升级产生系统兼容的问题。Moblin对Linux的最大贡献有两个方面:快速启动和电源管理。这是Moblin用于手持移动设备的基础,涉及的技术不是Moblin首创,但是Moblin将它们整体地运用在Linux上,对脚本的先后顺序以及代码进行优化。
设备的启动时间由三部分构成:BIOS/BSP的系统时间,系统平台或操作系统的启动时间,桌面UI以及关键应用的初始化时间。对于智能手机,关键应用包括2G/3G通信、电话本、短信、天气微件等。其中,最为关键的是系统平台的启动时间长,需要尽可能地缩短。Moblin从kernel到X(X Window System,Linux的图形基础,简称为X或者X11)都进行了大量的优化,细致安排并行异步加载驱动,并行启动后台服务,同时采用了Sreadahead技术进行磁盘预读取来提高启动速度。
Moblin电源管理实现CPU的低功耗,其基本原理是在一个唤醒时期中尽可能地完成更多的工作,以便尽可能延长休眠的时间或者进入更深层次的休眠;多个事件一起唤醒,降低唤醒频率。简而言之,就是少干高效。Linux内核根据过往历史记录判断当前进入哪个级别的C State,尽量地同步各个模块、组件、进程的事件触发时间,采用全局Timer技术,合并/同步中断时钟,减少唤醒CPU的频率,多个事件同时唤醒CPU,CPU在这一次唤醒周期中处理更多的任务,可以有效延长休眠时间。
第三层是应用服务基础层,提供了对硬件设备的管理。在下面详细探讨。
第四层是界面服务基础层,实现对整个设备的UI管理,提供GTK+,QT等图形界面工具。Moblin还支持具备优秀3D效果的clutter开发工具,为在手持设备中提供绚丽的UI效果提供基础,将clutter作为backend加入微件引擎,可以为微件提供缩放、直线/曲线移动、淡入淡出、三维旋转等组合效果。
最高一层是桌面UI和应用层。具体的UI设计和应用需求与终端的工业设计和产品定位以及销售卖点相关。
3.4 Moblin对智能终端业务的支持
Moblin通过第三层,即应用服务基础层,来实现对业务能力的支持,包含以下功能集。
(1)设备管理服务
不同终端可以在Moblin的设备管理基础上针对智能终端优化和扩展,完善其功能和要求。对于设备的安全性,通过电源管理等具体的策略和方案,实现应用程序对硬件资源使用、运行状态、生命周期等的管理。支持蓝牙设备、触摸屏、摄像头、麦克风、扬声器等设备管理,可以加入设备特有的硬件管理、定位服务以及各类传感器,包括重力传感器、指南针传感器、温度传感器等。
(2)多媒体服务
这是所有智能手机不可缺少的部分。Moblin可利用芯片的硬件音频/视频的编解码能力,在Intel凌动芯片架构上,支持720/1080p的高清视频。
(3)图形服务
支持X、OpenGL、显卡2D/3D加速。
(4)互联网服务
提供浏览器、SNS和IM等常见的互联网服务。我们需要看到,Moblin集成了Linux的很多优势,但是在移动通信领域的服务有所欠缺。它可以很好地支持上网本、移动互联网终端,实现智能手机的智能方面,但对手机移动通信支持能力不足,需要补充以下几个服务集。
·移动通信服务集,包括2G/3G通信模块,它是手机的基础服务,具体包括SIM卡服务、2G通信、3G通信。
·用户个人信息服务集,也就是常见的用户电话号码簿。
· 微件引擎服务器,支持微件。
移动通信服务集的具体实现通常都是由操作系统供应商(OSV)提供,但是Moblin应当逐步规范这套 API,并作为Moblin的兼容标准之一。使得开发者在Moblin上的开发无需考虑底层服务的实现,应用程序可以在所有的Moblin手机上运行。这是Moblin进入手机市场的一个关键,可以联合几大手机厂商以及运营商共同规范接口标准。
在第三代移动通信网络中,除了传统的语音业务和智能网业务外,还会不断出现大量新的数据增值业务,使得业务呈现多样性的特点,应用软件商店有大量的应用下载;另一方面,手持设备因其屏幕的尺寸很难在一个桌面上同时显示多个应用的界面,如何能够快速打开应用的方式,避免多层菜单的进入是提供良好用户感知的基础。通过电话号码簿作为应用的入口,从人与人之间的社会关系进入,而不是通过多层菜单的应用图标进入,更符合人类社会关系学。
用户个人信息服务集可以作为智能手机各应用程序的交互点。Linux的一大特色是具有大量的开源代码应用,因此可以针对这些应用进行改造以适应新的要求,使得包括即时通信、邮件、社区网络等以人为关联的互联网应用,统一到用户个人信息的服务集上,通过电话号码簿进行扩展,可以实时同步好友的状态,在收到信息和邮件时,如同接收新短信一样通知用户。例如可以在符合GPL或者LGPL的基础上增加dBUS接口,以实现各应用程序之间的通信,只要符合这套规范,应用就可以将其状态、事件实时同步到用户个人信息服务上,用户个人信息服务可以通过这个接口调用应用程序,阅读某一邮件,打开与某个好友的即时通信窗口,查阅好友的最新博客等。这套机制实现了用户个人信息服务和应用程序之间的互动,将独立的应用程序串联成一体。
微件是目前手机终端的一个发展趋势,Moblin如果能够统一浏览器和微件引擎、共享基础模块、节省系统资源,将能极大地增强其在手机系统平台领域的实力。目前,微件的标准仍不统一,国家工业和信息化部正在推动这一标准的制定。
4 结束语
Moblin在智能手机上有巨大的潜力,但仍需要进一步发展,需规范移动通信服务的相关接口,确保上层应用开发的兼容性。
在应用开发上,Linux和Windows一样,为广大程序员熟悉的操作系统,有广泛的基础。Moblin社区有开发指引和Mail List,但目前Moblin社区的重点仍在完善系统,修订BUG的过程,对于开发者论坛,开发教程和开发例子的指引力度有待系统完善后进一步加强,鼓励现有Linux应用的移植,进一步提供应用软件商店,吸引更多的开发人员。
Moblin仍然不成熟,有很多需要改进的地方。但是基于非垄断操作系统的开源Linux,在解决了关键的快速启动和电源低功耗优化技术后,Moblin在开发领域的优势非常显著,是一个充满活力的系统平台。
[后记]2010年2月中旬,在笔者刚刚完成本文的时候,业界传来新的消息,在世界移动通信大会(MWC2010)上英特尔公司与诺基亚公司宣布Maemo和Moblin合并成新的Linux终端软件平台——MeeGo,MeeGo将同时支持英特尔公司硬件芯片以及ARM芯片,应用于上网本、智能手机、车辆、电视上网等场合,并将于2010年第二季度发布第一个版本。
1 http://zh.wikipedia.org/zh-cn/云端计算
2 http://moblin.org/
3 http://marketshare.hitslink.com/operating-system-market-share.aspx?qprid=8
4 http://blog.linuxtoday.com/blog/2009/05/1-linux-market.html
5 http://www.wangchao.net.cn/bbsdetail_1631543.html
6 http://www.kroah.com/log/linux/android-kernel-problems.html