【发布时间】:2012-01-17 20:43:33
【问题描述】:
我使用 Java 在 Android 中编写了一些简单的应用程序。
但后来我发现了这个:
它提供了允许您构建活动的标头和库, 处理用户输入,使用硬件传感器,访问应用程序资源, 等等,在使用 C 或 C++ 编程时。 (Source)
与此有什么关系:
Android 应用程序是用 Java 编程语言编写的。 (Source)
这三种语言都可能吗?
抱歉这个愚蠢的问题。
【问题讨论】:
我使用 Java 在 Android 中编写了一些简单的应用程序。
但后来我发现了这个:
它提供了允许您构建活动的标头和库, 处理用户输入,使用硬件传感器,访问应用程序资源, 等等,在使用 C 或 C++ 编程时。 (Source)
与此有什么关系:
Android 应用程序是用 Java 编程语言编写的。 (Source)
这三种语言都可能吗?
抱歉这个愚蠢的问题。
【问题讨论】:
您链接到的文章有很好的信息。它还链接到http://developer.android.com/sdk/ndk/overview.html,上面写着:
NDK 不会使大多数应用程序受益。作为开发人员,您需要 平衡其利弊;值得注意的是,使用原生 代码不会导致性能自动提高,但总是 增加了应用程序的复杂性。一般来说,你应该只使用 本机代码,如果它对您的应用程序至关重要,而不仅仅是因为 你更喜欢用 C/C++ 编程。
NDK 的典型候选者是独立的、CPU 密集型的 不分配太多内存的操作,例如信号处理, 物理模拟等等。只需重新编码一个在 C 中运行的方法 通常不会导致性能大幅提升。什么时候 检查您是否应该使用本机代码进行开发,想想 了解您的要求并查看 Android 框架 API 是否提供 您需要的功能。但是,NDK 可以是 重用大量现有 C/C++ 代码的有效方法。
【讨论】:
Android 是底层的 Linux,因此您可以在其上运行任何语言。为了好玩,我在 Android 手机上运行 Perl 脚本。从实用的应用程序开发的角度来看,Google 在Dalvik 上运行的 Java 实现将是典型的路线。
【讨论】:
Java 始终允许您调用“本机代码”组件。但是,您应该尽可能避免使用它们,因为它们会在您的代码中引入细微的错误和平台依赖性。
我不相信你可以用 C/C++ 编写整个 Android 应用程序 - 你至少必须有一个 Java 包装器。
【讨论】:
这是个好问题,当您真的想编写核心 dalvik 功能而不是使用您指定的 Android API 时,AFAIK、c 或 c++ 就会出现,例如与传感器相关的功能或硬件。
如果您想使用 API 构建应用程序,它将主要使用 Java/XML。
【讨论】:
在 C 中重写其中一个“不分配太多内存的独立、CPU 密集型操作”可能根据@将性能/电池寿命提高 17 倍987654321@。 This article 发现运行 CCTOOLS Fortran 更快。所以替代语言非常值得考虑。
【讨论】:
对于 CPU 密集型应用程序,例如计算机图形应用程序、游戏、模拟、AI/SI、数字图像处理或计算机视觉,请选择 C/C++。如果您正在构建一个仅处理数据(JSON、XML)、数据表示或小型图形应用程序(棋盘游戏、90 年代复古游戏)的小型应用程序,那么 JAVA 就足够了。
【讨论】: