说说Android的大师Andy Rubin。
Rubin做Android是在他把Danger OS/Sidekick打包卖给微软之后。这个小众设备由T-mobile运用,有小几百万用户,基于Windows CE,类似魅族。微软历史上的一个天大笑话就是把这些用户的云端数据都搞丢了。
Rubin做Android,在技术层面看最重要的抄袭,并非抄袭苹果,而是抄袭黑莓。黑莓的系统是中规中矩的J2ME框架加了很多扩展。开发上,Java程序员虽然很多,但是J2ME太裸了,很难用,开发者并不喜欢。
Rubin的最重要的设计假设就是他想用完整版本的Java。
第一个设计选择是没得选择的选择,它选择了Apache Harmony的Java基础库实现,这个选择后来给谷歌和甲骨文的世纪官司埋下伏笔,因为这个项目的开发者本来就是在IBM等大公司的一些开发人员,捉急了就拿官方代码先顶上去再慢慢剔除。
第二个设计选择是他需要一个在手持设备上性能尚可的JVM实现,要有一些性能优化但也要兼顾内存和功耗,这就是后来的Dalvik。Dalvik的原始作者是Dan Bornstein,Dalvik是他的家乡冰岛的一个小村庄的名字。
第三个设计选择更加hard。最初没人认为Rubin能做到:1用Java写UI,2让Android成为一个现代操作系统,即有完善的多进程和窗口管理器服务。众所周知Linux的IPC和性能不算很好,图形子系统的性能也很一般,而且对于Java程序员的习惯来说,他们喜欢RPC式的IPC。
能解决这个问题,Rubin是走了狗屎运的。曾经有一家公司做过一个挺niche的操作系统叫BeOS,是和Windows竞争的所以当然失败了,BeOS关门大吉的时候适逢Palm公司如日中天,在资本市场的运作下分拆成两家公司,负责OS软件的部分叫做PalmSource,它收购了BeOS的软件资产。
BeOS最初缔造了一个非常高效、现代、适用于图形系统的RPC框架,实际上不只是RPC,还包含完整的图形库部分。他们最早把这些东西做进了系统内核,实现了可用于图形的、跨进程的、支持权限代理的服务机制。
PalmSource很快就在市场上失败了。之后这套东西被贡献给了社区,就是OpenBinder。整套框架因为脱胎于一个完整的现代操作系统,非常庞大,而且主要编程框架是C++的,所以Rubin的团队只选择了其中在kernel的部分,就是后来大家看到的binder IPC。用户空间的部分,基本上照着Java的逻辑重写了。
binder是Android上最最重要的technical enabler,没有Be的底子,就是微软来也没可能在那么短的时间窗口里让Android up and running,一定会成为滑铁卢。
那么有了binder之后,Android的框架和程序都闷在了vm里,所以他对kernel里非常庞杂的IPC/pthread的依赖性都不强,实际上如果不是早期的很多外部项目需要,Linux很多原生的IPC都可以扔掉。
我有印象看到过文章说Rubin是找到了binder的原始开发者的,但是不确切这个记忆了。
—-
总的来说Android是个奇迹,Rubin不是开发者意义上的guru,但它的60人团队极为了不起,很多组件都是one man team开发的,即使在谷歌收购之后的很长一个时期仍然如此。
在硅谷的所有技术传奇里,Rubin肯定有一个位置,它是最狡猾的一个hunter,在荒野里碰运气,他的每一发子弹都打对了地方,他的danger项目上的经验让他早于同行了解了这个市场、用户、以及开发者。在所有手持设备上给予开发者最多自由和最强悍性能的,是Android,谷歌的加入又给开发者带来了最多的潜在用户。
不能完全说是谷歌拯救了Android,Android也拯救了谷歌,不然它在移动互联网时代会很悲剧。
—-
Eric Schmidt曾经是苹果董事会成员,两家公司有董事会的互锁机制。互相不进入对方市场。
Schmidt曾经参加了苹果的一次秘密会议,知道了iPhone的计划,这个在SUN工作了16年并一路做到CTO的神级领袖立刻知道了iPhone对未来会产生什么样的影响。他的原话是:如果我们不立刻采取行动,未来将只有一家技术公司,就是苹果。
Schmidt力排众议和苹果撕破了脸皮,解开双方董事会互锁,撤销互不进入对方市场的协议,事实上等于宣战。
Schmidt选中了Rubin和他的Android,Rubin成功的完成了任务。
从某种政治意义上说,Rubin是Schmidt的人,Pichai是Page的人,两者不可能在谷歌长期双星闪耀。Rubin离开谷歌是早晚的事,只是故事的结局让人意外,离开的原因是因为不正当的两性关系。