-6

私は Java が優れた高水準言語であることを発見しましたが、その基礎となる言語である C の速度と柔軟性がいくらか欠けています。

Android OS が C と Java で書かれていることを考えると、これら 2 つの言語は互いにうまく補完し合っているように思われます。

CコードをJavaプログラムにインポートするにはどうすればよいですか?

PS。Android OS でこれを行う方法を知っていればボーナス ポイントです。

4

2 に答える 2

1

Android の場合、使用するツールは Native Development Kit です。あなたはそれについて読むことができます(そしてそれを得ることができます)here . 彼らがポイントを作ることに注意してください:

ほとんどのアプリでは NDK が役に立たないことを理解しておく必要があります。

(原文強調。)

@jdphenix がコメントで指摘しているように、C/C++ コードを Java と統合するには、Java Native Interface 仕様に精通している必要があります。NDK は、Android アプリでの JNI の使用をサポートするツールです。

編集(コメントへの返信): 1 つ (Android の場合は Java) を使用する必要があり、もう 1 つの言語 (C/C++) を使用する必要があるため、2 つの言語を使用することは、強力なパフォーマンス上の理由がない限り、逆効果であると私は思います。NDKのドキュメントが言うように:

[U]Android でネイティブ コードを使用しても、一般にパフォーマンスが大幅に向上することはありませんが、常にアプリの複雑さが増します。一般に、アプリに不可欠な場合にのみ NDK を使用する必要があります。単に C/C++ でプログラミングすることを好むからではありません。

NDK の典型的な候補は、ゲーム エンジン、信号処理、物理シミュレーションなど、CPU を集中的に使用するワークロードです。

さらに、2 つの言語を使用すると、アプリのメンテナンスが非常に難しくなります。JNI は難しい技術であるだけでなく、アプリは 2 つの言語でのスキルを維持する必要があります。パフォーマンス上の理由で NDK を使用する必要がある場合は、最小限に制限するように努めます。ほとんどの Java フレームワークは非常に効率的であり、特に Dalvik JIT コンパイラが多くのデバイスに登場しています。

ちなみに、特に Android ゲームの開発に興味がある場合は、Google Play Games C++ SDKもご覧ください。これは NDK のコンパニオンです。

PS Android 4.4 の時点で、Dalvik ランタイムを新しい Android ランタイム (ART) に置き換えるオプションがあります。(詳細はこちらをご覧ください。) これにより、アプリのインストール時にアプリのバイトコードがネイティブ コードにコンパイルされます。その結果、ART を有効にすると、JNI を使用することによるパフォーマンス上の利点の多くが失われます。Android の将来のバージョンでは、Google が「実際に」テストしてある程度の自信が持てるようになったら、ART がデフォルトになると思います。本当に必要でない限り、アプリで JNI を使用しないもう 1 つの理由です。

于 2014-08-27T23:55:01.417 に答える
0

Javaのnativeキーワードは、Java Native Interface を使用して、別の言語で記述されたコードを使用できます。ここでもっと読む:

https://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html

于 2014-08-27T23:44:16.023 に答える