2014-08-27 85 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的另一個原因。