我很想知道google选择在java VM上开发android框架的原因.
在为Android编写代码近6个月的过程中,我观察到在资源有限的平台上运行VM的代码非常慢.涉及很多开销.我知道java是可移植的等等,是不是可以使用本地语言并获得VM提供的性能和功能?对于面向性能的应用程序,人们仍然最终编写本机代码并用JNI包装它,
那么谷歌为什么选择这个特定的堆栈:
编辑:我知道java - JVM与我服务器上的C++应用程序相同,但不是在android上运行.关于android并非如此 - 根据我的经验,用JNI包装的C++代码运行速度远远快于java代码(注意我甚至用java中的静态块完全相同的代码检查)我同意你的意见在任何其他平台上回答.
Dalvik VM使用自己的字节码,而不是Java字节码.它设计得非常快(相对而言).我认为它的标题中的"VM"部分是一个红色的鲱鱼,因为人们倾向于认为无论如何它都会"慢".你自己说过,你正在使用一个"资源有限的平台" - 这可能是导致性能下降的主要原因,远比Dalvik VM更重要.
免责声明:我不是任何方式,形状或形式的Dalvik或Android专家.然而,看起来人们可能倾向于根据诸如"它使用虚拟机"和"你用Java编写应用程序"之类的想法对Android做出很多假设,而不是进一步研究平台.
有关您在Dalvik VM Internals上可能想知道的更多信息,请参阅此视频(来自Google I/O 2008).