“善变本是常态,是生命活力,不变是死亡,龙就是变的代表;我是龙的传人,我爱生命活力。”——高焕堂
开发者社区:开源,不一定会成功,封闭,也不一定会失败,近期有人怀疑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的上、中和底层一起学习,让自己的未来出路能往上发展做应用(云端)服务,也能往下发展做软硬整合,岂不美哉!