C からの Java 関数の呼び出し
探究心のある人は、C アプリケーション内から Java 関数を呼び出す方法を知りたいと考えています。コマンドラインまたは他の同様の方法を使用してこのような呼び出しを行うこともできますが、より直接的なアプローチについて詳しく説明します。
JNI Magic
これの鍵相互運用性は Java Native Interface (JNI) にあります。 Java と C などの他の言語との間のブリッジを提供します。 JNI メソッドを利用すると、C から JVM (Java 仮想マシン) を作成し、プログラムで通信できます。
サンプル プロシージャ
プロセスを説明するには、 「C からの JVM の作成」に示されている例。ここでは、JVM の作成と C からのメソッドの呼び出しに関するステップバイステップのガイドが提供されます。
<code class="cpp">#include <jni.h> #include "jvmti.h" int main() { JavaVM *jvm; JavaVMInitArgs args; JNIEnv* env; const char *prop = "-Djava.class.path=/path/to/your/class/files"; args.version = JNI_VERSION_1_6; args.nOptions = 1; args.options = &opt; args.ignoreUnrecognized = JNI_FALSE; if (JNI_CreateJavaVM(&jvm, &env, &args) != JNI_OK) { // Error handling... } // Invoke Java methods here... jvm->DestroyJavaVM(); return 0; }</code>
キャッシュに関する注意事項
JNIEnv* ポインターをキャッシュしている間、 C/C からの JVM はパフォーマンス上の理由から魅力的ですが、注意することが重要です。いつ、何をキャッシュできるかについては、特定のセマンティクスが関係します。これらのガイドラインに従わないと、予期しない動作が発生する可能性があります。詳細については、公式の JNI リファレンス ドキュメントを参照してください。
前進
この JNI の概要は、さらに詳しく調べるための基礎となります。 JNI を使用すると、Java アプリケーションと C アプリケーション間の対話の可能性は無限大です。
以上がC から Java 関数を呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。