20

我很想知道是什么让 google 选择在 java VM 上开发 android 的框架。

在为android编写代码近6个月的过程中,我观察到在资源有限的平台上的VM上运行代码真的很慢。涉及很多开销。我知道 java 是可移植的等等,难道根本不可能使用本地语言并获得 VM 提供的性能和功能吗?对于面向性能的应用程序,最终还是要编写本机代码并用 JNI 包装它,

那么为什么谷歌选择这个特定的堆栈:

  1. 基于ARM的内核(可以理解,ARM最适合移动设备)
  2. Linux(开源)
  3. Java VM(我的问题)

编辑:我知道 java - JVM 在我的服务器上与 C++ 应用程序一样运行,但在 android 上却没有。关于 android,情况并非如此-根据我的经验,用 JNI 包装的 C++ 代码比 java 代码运行得快得多(注意,我什至检查了 java 中静态块中完全相同的代码)我会同意你的在任何其他平台上回答。

4

4 回答 4

5

Dalvik VM 使用自己的字节码,而不是 Java 字节码。它的设计速度非常快(相对而言)。我认为其标题中的“VM”部分有点牵强,因为人们倾向于认为无论如何它都会“缓慢”。您自己说过,您正在使用“资源有限的平台”——这可能是您性能缓慢的主要原因,比 Dalvik VM 更严重。

免责声明:我不是任何方式、形状或形式的 Dalvik 或 Android 专家。然而,似乎人们倾向于基于“它使用虚拟机”和“你用 Java 编写应用程序”之类的想法对 Android 做出很多假设,而不需要进一步研究这个平台。

有关Dalvik VM Internals(来自 Google I/O 2008)的更多信息,请参阅此视频。

于 2010-12-20T16:43:25.513 回答
2

1)据我所知,Java 是大学甚至高中/同等学历中最普遍教授的语言。它在专业领域被广泛使用,并拥有大量代码库,可帮助开发人员更快地创建更多质量的应用程序。

2) 与本机代码相比,开销并没有那么大,尤其是设计良好的代码经过 JIT 优化并由设计得更好的 gc 监控。

真的,我认为仅这两个原因就可以证明为什么选择 Java 作为 Android 支持的主要语言是合理的。

于 2010-12-20T17:07:01.513 回答
0

我认为关键是不要以您对 Destkop 或服务器虚拟化的相同意义来考虑 Java VM——它们非常不同。在最基本的层面上,Java VM(在本例中为 Dalvik)只是“编译器”生成的字节码到本地机器码之间的一个翻译层。它一个虚拟机——但它没有与在 VirtualBox 中运行 Ubuntu 相同的开销。

于 2010-12-20T16:57:32.217 回答
0

Java 应用程序已被证明(并非总是)与使用 c、c++ 等语言编写的应用程序一样快速和流畅地运行。请参阅此参考资料,查看 PDF。很多人说 java 和 vm 很慢,实际上没有太多证据或细节——这篇参考资料详细介绍了

Java 是一种广为人知的语言,很容易上手。将 android sdk 和工具交到所有这些了解 Java 的人手中,已经让 android 市场具有为用户提供大量应用程序的巨大潜力。

免责声明:我不是这方面的专家,只是我的 2 美分

于 2010-12-20T16:58:11.753 回答