【问题标题】:Android: Java, C or C++?Android:Java、C 还是 C++?
【发布时间】:2012-01-17 20:43:33
【问题描述】:

我使用 Java 在 Android 中编写了一些简单的应用程序。
但后来我发现了这个:

它提供了允许您构建活动的标头和库, 处理用户输入,使用硬件传感器,访问应用程序资源, 等等,在使用 C 或 C++ 编程时。 (Source)

与此有什么关系:

Android 应用程序是用 Java 编程语言编写的。 (Source)

这三种语言都可能吗?
抱歉这个愚蠢的问题。

【问题讨论】:

    标签: java android c++ c


    【解决方案1】:

    您链接到的文章有很好的信息。它还链接到http://developer.android.com/sdk/ndk/overview.html,上面写着:

    NDK 不会使大多数应用程序受益。作为开发人员,您需要 平衡其利弊;值得注意的是,使用原生 代码不会导致性能自动提高,但总是 增加了应用程序的复杂性。一般来说,你应该只使用 本机代码,如果它对您的应用程序至关重要,而不仅仅是因为 你更喜欢用 C/C++ 编程。

    NDK 的典型候选者是独立的、CPU 密集型的 不分配太多内存的操作,例如信号处理, 物理模拟等等。只需重新编码一个在 C 中运行的方法 通常不会导致性能大幅提升。什么时候 检查您是否应该使用本机代码进行开发,想想 了解您的要求并查看 Android 框架 API 是否提供 您需要的功能。但是,NDK 可以是 重用大量现有 C/C++ 代码的有效方法。

    【讨论】:

    【解决方案2】:

    Android 是底层的 Linux,因此您可以在其上运行任何语言。为了好玩,我在 Android 手机上运行 Perl 脚本。从实用的应用程序开发的角度来看,Google 在Dalvik 上运行的 Java 实现将是典型的路线。

    【讨论】:

      【解决方案3】:

      Java 始终允许您调用“本机代码”组件。但是,您应该尽可能避免使用它们,因为它们会在您的代码中引入细微的错误和平台依赖性。

      我不相信你可以用 C/C++ 编写整个 Android 应用程序 - 你至少必须有一个 Java 包装器。

      【讨论】:

        【解决方案4】:

        这是个好问题,当您真的想编写核心 dalvik 功能而不是使用您指定的 Android API 时,AFAIK、c 或 c++ 就会出现,例如与传感器相关的功能或硬件。

        如果您想使用 API 构建应用程序,它将主要使用 Java/XML。

        【讨论】:

        • Dalvik 主要是用 c++ 编写的,但在 JVM 上工作并不等于为 android 编写应用程序。 c++ api 比 java 更受限制——我什至不确定是否存在用于传感器的本机 API。但显然有一个用于 Java。
        【解决方案5】:

        在 C 中重写其中一个“不分配太多内存的独立、CPU 密集型操作”可能根据@将性能/电池寿命提高 17 倍987654321@。 This article 发现运行 CCTOOLS Fortran 更快。所以替代语言非常值得考虑。

        【讨论】:

          【解决方案6】:

          对于 CPU 密集型应用程序,例如计算机图形应用程序、游戏、模拟、AI/SI、数字图像处理或计算机视觉,请选择 C/C++。如果您正在构建一个仅处理数据(JSON、XML)、数据表示或小型图形应用程序(棋盘游戏、90 年代复古游戏)的小型应用程序,那么 JAVA 就足够了。

          【讨论】:

          • 这个问题已经有多个相关且被接受的答案。我会要求您修改答案并包含以前的答案未涵盖的更多富有成果的信息。顺便说一句,这个问题已经 8 岁了。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-05
          • 1970-01-01
          相关资源
          最近更新 更多