3

就像标题状态一样 - 我想为 Android 编写一个 3D OpenGL ES 2.0 引擎(对制作游戏不感兴趣,只是引擎)。我应该直接使用 NDK 并用 C++ 编写所有内容还是先使用 Java?

大多数关于 Android 性能的链接都来自 2010 年,当时 JIT 和并发垃圾收集器出现之前。Java 的性能仍然如此糟糕(不要使用公共字段,不要使用虚拟方法),我应该期望使用 C++ 获得什么样的加速?

顺便说一句,我对这两种语言都很熟悉,所以不涉及舒适问题。

4

1 回答 1

2

根据 Android 的设计和工作方式,有 1 个专用于 Java/SDK 的单线程和 1 个专用于 NDK/C++ 应用程序的单线程,SDK 和 NDK 都只能生成将在沙箱中运行的应用程序,实际上有点将使用 NDK 创建的应用程序定义为“本地”是不正确的,因为您永远无法使用商业和官方 Android 工具包进行本地化,这两种解决方案都会导致使用 Android 虚拟机。

因此,它们为开发人员提供了大致相同的折衷方案,两种解决方案都需要权限,并且两种解决方案最终都打包在一个 apk 中,许多人选择 C++ 而不是 Java 的主要原因是,你可以很容易地将 C++ 引擎移植到其他平台,你不能用Java做同样的事情。

如果你想要一个跨平台的解决方案,我建议使用 C++,如果你不需要跨平台的解决方案,我建议使用 Java,由于 API 的可达性和不那么繁琐的管道,Java 将更容易处理,尤其是对于“构建和编译”部分。

于 2013-04-02T15:04:45.513 回答