JNI—JNIEnv和JavaVM之间的区别
正如我们所知,JNIEnv是指向VM的指针 顾名思义,JavaVM本身就是一个VM 他们之间有什么区别吗 正如我们所知,JNIEnv是指向VM的指针 事实并非如此。JNI—JNIEnv和JavaVM之间的区别,java,java-native-interface,Java,Java Native Interface,正如我们所知,JNIEnv是指向VM的指针 顾名思义,JavaVM本身就是一个VM 他们之间有什么区别吗 正如我们所知,JNIEnv是指向VM的指针 事实并非如此。 JNIEnv是struct\u JNIEnv的别名,它依次包含一个jniationInterface*和一组方法(FindClass,GetMethodID,NewLocalRef等)。 当您通过JNIEnv*调用方法时,该调用被委托给jniativeinterface实例,该实例包含指向运行时提供的实际实现的函数指针 另一方面,J
JNIEnv
是struct\u JNIEnv
的别名,它依次包含一个jniationInterface*
和一组方法(FindClass
,GetMethodID
,NewLocalRef
等)。当您通过
JNIEnv*
调用方法时,该调用被委托给jniativeinterface
实例,该实例包含指向运行时提供的实际实现的函数指针
另一方面,JavaVM
是struct\u JavaVM
的别名,它包含一个JNIInvokeInterface*
。与jniinaveinterface
相比,JNIInvokeInterface
有一组不同的方法(例如GetEnv
,AttachCurrentThread
)
所以他们有不同的目的。
JavaVM*
的主要目的是允许您获得对当前执行线程有效的JNIEnv*
。JNIEnv*
是解析Java类、调用Java方法等所需的
正如我们所知,JNIEnv是指向VM的指针
事实并非如此。JNIEnv
是struct\u JNIEnv
的别名,它依次包含一个jniationInterface*
和一组方法(FindClass
,GetMethodID
,NewLocalRef
等)。当您通过
JNIEnv*
调用方法时,该调用被委托给jniativeinterface
实例,该实例包含指向运行时提供的实际实现的函数指针
另一方面,JavaVM
是struct\u JavaVM
的别名,它包含一个JNIInvokeInterface*
。与jniinaveinterface
相比,JNIInvokeInterface
有一组不同的方法(例如GetEnv
,AttachCurrentThread
)
所以他们有不同的目的。
JavaVM*
的主要目的是允许您获得对当前执行线程有效的JNIEnv*
。JNIEnv*
是解析Java类、调用Java方法等所需的