21.7 Invocation-API
Bisher haben wir JNI nur als Einbahnstraße gesehen (nicht im negativen Sinne). Doch anstatt nur aus Java heraus ein C(++)-Programm anzubinden, bietet JNI auch den anderen Weg: Ein C(++)-Programm kann die gesamte JVM einbetten. Das ist über die Invocation API möglich. Im Prinzip recht Folgendes aus:
#include <jni.h>
int main()
{
JavaVM *jvm;
JNIEnv *env;
JavaVMInitArgs jvmargs;
jint r;
jvmargs.nOptions = 0;
jvmargs.version = JNI_VERSION_1_7;
r = JNI_CreateJavaVM( &jvm, (void**)&env, &jvmargs );
if ( r < 0 )
return –1;
// Ab hier ist über env alles möglich wie vorher
(*jvm)->DestroyJavaVM( jvm );
}
Wer das Programm übersetzt, der sollte daran denken, die dynamische Bibliothek jvm.dll im Suchpfad zu haben; die Datei befindet sich im Java-Verzeichnis unter jre7\bin\client.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.