Interfaçage Java et C : Appel de méthodes Java depuis C
La possibilité d'appeler des fonctions Java depuis au sein d'applications C est en effet possible mais nécessite un approche quelque peu complexe. Ce mécanisme réflexif et non sécurisé implique la création d'une instance de machine virtuelle Java (JVM) à partir du code C.
Création d'une instance JVM
L'extrait de code ci-dessous montre comment configurer une instance JVM :
JavaVM *vm; JNIEnv *env; JavaVMInitArgs vm_args; vm_args.version = JNI_VERSION_1_2; vm_args.nOptions = 0; vm_args.ignoreUnrecognized = 1; // Construct a VM jint res = JNI_CreateJavaVM(&vm, (void **)&env, &vm_args);
Interagir avec les objets Java
Une fois l'instance JVM créée, vous pouvez interagir avec les objets Java. Voici un exemple de création d'un objet Java String :
jstring jstr = env->NewStringUTF("Hello World");
Accès aux méthodes Java
Pour accéder à une méthode Java, vous devez d'abord obtenir la classe qui contient le method:
jclass clazz = env->FindClass("java/lang/String");
Ensuite, obtenez l'ID de la méthode:
jmethodID to_lower = env->GetMethodID(clazz, "toLowerCase", "()Ljava/lang/String;");
Appel de la méthode Java
Enfin, appelez la méthode sur le object:
jobject result = env->CallObjectMethod(jstr, to_lower);
Compilation
Sur Ubuntu, compilez le code en utilisant :
g++ -I/usr/lib/jvm/java-6-sun/include \ -I/usr/lib/jvm/java-6-sun/include/linux \ -L/usr/lib/jvm/java-6-sun/jre/lib/i386/server/ -ljvm jnitest.cc
Conclusion
Cette approche permet d'accéder aux méthodes Java à partir d'applications C, permettant l'interopérabilité entre les deux langages. Cependant, il est crucial de mettre en œuvre une gestion appropriée des erreurs pour plus de robustesse.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!