我很想知道google选择在java VM上开发android框架的原因。
在为Android编写代码近6个月的过程中,我发现在资源有限的平台上运行VM的代码非常慢。涉及很多开销。我知道java是可移植的等等,是不是可以使用本机语言并获得VM提供的性能和功能?对于面向性能的应用程序,人们仍然最终编写本机代码并用JNI包装它,
那么谷歌为什么选择这个特定的堆栈:
答案 0 :(得分:5)
Dalvik VM使用自己的字节码,而不是Java字节码。它设计得非常快(相对而言)。我认为它的标题中的“VM”部分是一个红色的鲱鱼,因为人们倾向于认为无论如何它都会“慢”。你自己说过,你正在使用“资源有限的平台” - 这可能是导致性能下降的主要原因,远远超过Dalvik VM。
免责声明:我不是Dalvik或Android的专家,无论是形式还是形式。然而,看起来人们可能倾向于根据诸如“它使用虚拟机”和“你用Java编写应用程序”之类的想法对Android做出很多假设,而不是进一步研究平台。
请参阅this video,了解有关您在Dalvik VM Internals上可能想知道的更多信息(来自Google I / O 2008)。
答案 1 :(得分:2)
1)就我所知,Java是大学中最普遍教授的语言,甚至是高中/同等学历。它在专业领域得到广泛应用,并且拥有大量代码库,可帮助开发人员更快地创建更高质量的应用程序。
2)与本机代码相比,开销并不是那么好,特别是设计良好的代码经过JIT优化并且被更精心设计的gc监控。
真的,我认为仅凭这两个原因就可以证明为什么选择Java作为Android支持的主要语言。
答案 2 :(得分:0)
我认为关键是,不考虑Java VM与您对Destkop或服务器虚拟化的想法相同 - 它们是非常不同的。在最基本的层面上,Java VM(在这种情况下为Dalvik)只是由“编译器”生成的本地机器代码中的字节码之间的转换层。它是虚拟机 - 但它没有与VirtualBox中运行Ubuntu相同的开销。
答案 3 :(得分:0)
Java应用程序已被证明(并非总是)与使用c,c ++等语言编写的应用程序一样快速,流畅地运行。请参阅此reference,查看PDF文件。许多人说java和vm很慢而没有实际的证据或细节 - 这个引用进入了一些细节
Java是一种广为人知的语言,很容易上手。将android sdk和工具交给所有知道Java的人已经允许Android市场具有为其用户提供大量应用程序的巨大潜力。
免责声明:我不是这方面的专家,只是我的2美分