2007年11月Android诞生,自诞生之日起Android就引发了手机操作系统的“开源”与“封闭”之争。Android作为后起之秀以其独特的魅力在2年多时间里表现出非凡的成长力和活跃度。然而最近有些言论表示出对Android开源的怀疑及对其平台不兼容性的自我毁灭之说,究竟我们是不是应该继续看好Android?Android的未来发展又将如何兼容用户、开发商和更多方的需求?开发者社区特邀请Android教父高焕堂老师来与大家共同探讨。
高焕堂老师近照
高焕堂老师为我们围绕四个方面进行话题阐述:Android的发展史、客观看待Android发展中问题、中移动如何推动Android良性发展、借Android终端积极发展云计算,现将观点呈现,供广大开发者借鉴。
一、Android的发展史标志全球手机操作系统“开源史”
Android诞生2年多时间,以其迅猛的发展速度,不禁令行业老大Symbian和Windows Mobile瞠目,而从它诞生之日起就引发了手机操作系统的“开源”与“封闭”之争,甚至刮起了全球的“开源风”。
开发者社区:您认为谷歌推出基于Linux平台的Android手机操作系统,其主要原因是什么?
高焕堂:因为Linux容许多样化发展,Google有机会在Linux基础树干上,开花结果。
开发者社区:Android操作系统的最大优势有哪些?
高焕堂:Android的架构非常漂亮,结合Java层、C++服务层与HAL驱动层,形成三层框架的美好架构。基于稳定的框架接口,包容了底层Linux的弹性多变和百花齐放。非常符合软件架构设计的最根本原则:开放/封闭原则(OCP,Open Closed Principle),基于这个原则,才能替底层Linux驱动软件和硬件族群带来“没钱就改版,改版就有钱”的IT产业赚钱原则。
开发者社区:iPhone和Symbian在Android诞生初期是否看好这个操作系统,他们又是如何表现的?
高焕堂:从欧美企业的角度比较难以看出Android的潜在生命力,所以在Android诞生初期,他们并不太在意。iPhone继续发展其崭新独特的商业模式;Symbian也只是开始考虑开放其平台而已。然而,从亚太地区产业就能看出Android诞生带来的特殊意义。这层意义,我在2008年元月份的<<程序员>>杂志(在Android上市刚满月),曾经指出Android将在海峡两岸下起巨大的“幸运草种子”雨,带来全新的产业。
开发者社区:Nokia苦于Symbian的封闭,一直向开源而努力,曾推出Maemo,虽以失败告终,但最近又与Intel共同推出了Meego,这是否表明开源已是大势所趋?
高焕堂:开源只是手段,开放才是目的。要开放给所有人来参与,尤其是提供免费框架(Framework),开放框架的API给应用开发者,才是关键。开源只是必备条件,但并非充分条件。
开发者社区:据今年3月的报导,谷歌和RIM移动互联网流量份额增长iPhone份额下滑,但差距仍很大,分别为苹果64%、Android15%、RIM份额约9%,对此数据您如何来分析?
高焕堂:手机只是Android的应用环境之一,非手机的应用更是Android在亚太地区蓬勃发展的巨大潜在空间。尽管如是,我预估Android的市场占有率将以每个月增加0.5% ~ 1.5%继续成长。成长速度超过iPhone和RIM。
开发者社区:嵌入式操作系统,应该开源还是封闭?这个话题广为热议却始终未有定论,您站在开源立场,能否为我们举出原因?
高焕堂:我常拿桌子来比喻软件架构。桌子包含桌上(的东西)、桌面和桌脚三部分。桌上和桌脚要开放但不一定开源。桌面尽量不开放但要开源。例如,Android/OPhone的应用程序是桌上的东西,开放给所有人去开发。Android/OPhone的应用框架层式桌面宜开源,有限度开放,由Google或中移动主导其稳定性。框架之下的内库(Library)是桌脚,开放但不一定开源。以上是从Android 角度看的。如果从嵌入式操作系统(如Linux)看,Android框架和应用都是桌上的东西,而Linux本身则是桌面,至于驱动软件则是桌脚。所以
Linux本身宜开源而有限度开放;驱动软件则开放而不一定开源。
二、客观看待Android发展中问题龙的传人应识活求变
“善变本是常态,是生命活力,不变是死亡,龙就是变的代表;我是龙的传人,我爱生命活力。”——高焕堂
开发者社区:开源,不一定会成功,封闭,也不一定会失败,近期有人怀疑Android开源的正确性,对此您的看法呢?是开源必胜还是二者并存?
高焕堂:开源而不开放,并无法带来商业利益。开放不一定要开源,也能带来商业利益。所以焦点不在于开源,而在于开放。例如,Android/OPhone虽然开源,但其AP市集的开放程度就有些不同,在手机设备上加载应用软件或底层程序库的开放程度也大不相同。此外,我也鼓励AP开发者大力开发软件框架和底层软件模块,然后打包成共享库(Shared Library),然后封闭起来销售而不开源。这也符合Android的一贯路线。同样地,我也一直建议OPhone要开放给所有人来贡献和充实其应用框架和底层内库,但这些内库可以不开源。
开发者社区:Android发展过快,也引发了版本不兼容导致用户升级受阻和软件开发商要开发多个版本软件的繁冗工作,甚至有分析称Android已成大量不兼容设备的起点,这是杞人忧天还是庸人自扰?对于拥护Android的开发者来说应该如何进行抉择?
高焕堂:开发一个软件系统就如同制造一部汽车。如果我们期待一部完整的汽车(如同一个完整可执行的 Android应用软件)能在沙滩上面跑,也能在街道上面跑,也能在高山雪地里跑,这是非常不务实的愿望。所以,期待一支Android应用软件能跨平台,在所有的Android软硬件平台上跑,也非求实求是的态度。看来,这个问题似乎无解,其实非常容易。将汽车轮胎摘掉,只留下轮盘接口就行了。在计算机硬件上,将许多外围设备(如鼠标、USB碟等)拔掉,留下USB、RS232等接口),就得到主机板(Motherboard)。在计算机软件上,许多应用子类(Subclass)拔掉,留下基类(Base
Class或Super Class),就得到软件框架(Framework)。基于这个理由,自从2008年4月份我出版第一本Android书籍,其书名就是应用框架原理,唯有兼顾应用程序(Application开发和应用框架(Framework)开发的同步进展,才能化解上述的困扰。
开发者社区:对于新投入到Android开发队伍中的新人来说,应该怎样着手开展学习?期待您能够为他们指点迷津!
高焕堂:在亚太地区,目前投入到Android软件开发最多的有三个族群:1)熟悉Linux(驱动)族群、 2)熟悉J2ME族群、3)熟悉iPhone族群。他们已经不是开发和技术的新人,只是Android的新人而已。所以适合从Android的整体架构展开学习,包括:Android的UI架构、进程和IPC通讯机制、线程模式、JNI接口、HAL(驱动)接口等。如此达到知己(已经熟悉的部份)又知彼(Android架构),两者结合后,再仔细浏览Android框架里的各项服务(如蓝牙、电话、SMS、MMS、WebView等)。至于,都没有编程经验的纯粹新人,我建议心理上先有所准备:Java和C/C++都将是必需学习的。既然Android是开放开源平台,Android的上、中和底层一起学习,让自己的未来出路能往上发展做应用(云端)服务,也能往下发展做软硬整合,岂不美哉!