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