Swift难以主导Android平台的四个理由
要找到答案,我们不妨考虑另一个更为具体的问题:谷歌需要投入多大力量才能让Swift成为Android开发者与用户的首选?另外,谷歌为什么要费力选择这样一条坎坷而漫长的道路?
难题:Android部分
从Android转移至Swift就如同我们举家移民一样困难。首先,谷歌需要为Android开发Swift运行时,并保证其功能与现有Java运行时一一对应。谷歌在这方面已经做出了一些尝试——包括将Dalvik VM替换为速度更快的ART运行时,但二者仍以Java为基础。
更困难的是,Swift几乎无法成为Android平台上的首选语言。投入Swift怀抱的工作必须逐步完成——即首先同时使用Swift与Java VM,而后慢慢只保留Swift选项。这种过渡需要耗时数年,特别是在Android这样广泛普及的生态系统当中。
苹果也面临着类似的难题,因为其在过去两年中同样需要在生态系统中同时维护Swift与objective-c。在这一系统当中,苹果拥有着绝对的主导权。但Android相对来说麻烦更多,因为其拥有大量运营商、手机制造商再加上谷歌自身这三股重要力量需要平衡。
最终,这一举措还需要Android开发者的积极加入——而大多数人对Swift并不太感兴趣。
难题:开发者部分
除了谷歌制定决策外,开发者也需要加入进来才能保证Swift顺利过渡至Android。
当初Android之所以选择了Java,是因为其拥有丰富的开发资源以及从业者基础。但更年轻且测试工作还不够完善的Swift则缺少同样的发展动力。
不过Swift确实势头强劲,各开发商的认同已经让其在今年4月的Tiobe编程语言排行中位列前二十(目前为第十五名)。
当然,开发者也需要耗费相当长的时间来了解并彻底掌握新的语言——这意味着Swift将与Java继续共存下去。
由甲骨文转向苹果
就目前来讲,Android计划使用OpenJDK而非甲骨文的Java,这主要是由于后者总是在拿后者的知识产权骚扰谷歌的开发工作。但毫无疑问,甲骨文在未来仍将继续主导Java的发展方向。
同样的,Swift则是苹果的宠儿。即使已经被转为开源,这也只是Swift为了长久发展并在跨平台应用中得到肯定的途径。如果其能够降低平台与运行时对专有技术的高度依赖性,相信谷歌也将不断且积极地推动Swift转型。
但需要再次强调,Swift的前进方向由苹果所掌握。谷歌当然不可能希望自己被关键性竞争对手所控制——即使相关技术方案属于开源项目。从理论角度讲,谷歌确实可以为Swift打造fork并借此取得主动,但对完整语言的维护与管理工作将带来高昂的成本。
按谷歌的思路,转向Go也许更为靠谱
如果谷歌方面真的希望摆脱第三方语言与运行时的束缚,那么由Java转向Swift可能并非最好的选择。内部建立语言、运行时及工作链才是理想途径:Go,或者说Golang,正是谷歌的救世主。
Go目前已经被应用于移动开发领域。其1.5及更高版本能够同时支持Android与iOS,且具备“app”软件包,意味着开发者能够为这两套平台编写全Go应用。当然需要指出,移动设备对Go的支持能力尚处于实验性阶段。