2014-08-27 52 views
-6
C代码

我发现Java成为一个优秀的高层次的语言,但它缺少一些速度和它建立C语言如何在Java中运行

眼看着Android操作系统的灵活性是写在C和Java这两种语言看起来很可能互为恭维。

如何将C代码导入到Java程序中?

PS。奖励积分,如果你知道如何在Android操作系统上做到这一点。

+1

http://developer.android.com/training/articles/perf-jni.html – jdphenix 2014-08-27 23:39:13

回答

1

对于Android,使用的工具是原生开发套件。你可以阅读它(并得到它)here。需要注意的是,他们提出的观点:

你应该明白,NDK的将不利于大多数应用程序

(重点在原来的。)

由于@jdphenix在评论中指出,你需要熟悉Java本地接口规范与Java集成C/C++代码。 NDK是支持在Android应用中使用JNI的工具。使用两种语言,因为您需要使用两种语言(在Android中为Java),而您喜欢另一种语言(C/C++)会使我产生反作用,除非您拥有强大的性能理由是这样做的。正如NDK的文档所言:

[U]在Android上唱本机代码通常不会导致显着(原文如此)的性能改进,但它总会增加您的应用程序复杂性。一般来说,如果它对你的应用程序是必不可少的,那么你应该只使用NDK,而不是因为你只是喜欢用C/C++编程。

NDK的典型优秀候选者是CPU密集型工作负载,如游戏引擎,信号处理,物理仿真等。

此外,使用两种语言会使您的应用程序的维护变得更加困难。 JNI不仅是一项困难的技术,它还需要用两种语言来维护技能。如果您出于性能原因需要使用NDK,我会努力将其限制在最低限度。大多数Java框架都非常高效,特别是Dalvik JIT编译器出现在许多设备上。顺便提一下,如果您对Android游戏开发尤其感兴趣,您可能还需要查看Google Play Games C++ SDK。它是NDK的伴侣。

P.S.从Android 4.4开始,可以选择使用新的Android Runtime(ART)替换Dalvik运行时。 (请阅读here。)这会在应用程序安装时将应用程序的字节码编译为本地代码。结果是,启用ART后,使用JNI的很多性能优势都消失了。我预计未来的Android版本将会默认为ART,一旦谷歌对其进行“无所不在的测试”有信心。“除非你真的需要在你的应用中使用JNI的另一个原因。