正如在其他地方提到的,主要问题是Android被设计为一个可移植的操作系统,可以在各种各样的硬件上运行。它还建立在许多现有移动开发人员熟悉的框架和语言之上。
最后,我要说的是,这是对未来的押注--无论存在什么性能问题,随着硬件的改进,都将变得无关紧要--同样,通过让开发人员针对抽象进行编码,Google可以更容易地拆分和更改底层操作系统,而不是开发人员使用POSIX/Unix API编码。
对于大多数应用程序来说,使用基于VM的语言而不是原生语言的开销并不是很大(使用web服务的应用程序的瓶颈,比如Twitter,主要是网络)。Palm也证明了这一点--它使用JavaScript而不是WebOS作为主要语言。
考虑到几乎所有VMs都会向下编译为本机代码,因此原始代码速度通常与本机速度相当。与其他因素(复杂对象运行时、通过边界检查检查内存访问的“安全性”等)相比,许多由高级语言引起的延迟与VM开销关系不大。
还要记住,无论使用哪种语言编写应用程序,许多实际工作都是在较低级别的API中完成的。顶层语言通常只是将API调用链接在一起。
当然,这条规则也有很多例外--游戏、音频和图形应用程序突破了手机硬件的极限。即使在iOS上,开发人员也经常选择C/C++来获得这些方面的速度。