posted by Kyleslab 2012. 11. 13. 15:24

JNIEnv*

JNI 인터페이스 포인터는 자바 메쏘드와 매핑되는 각 네이티브 함수(i.e., c/c++ 함수)를 위한 매개 변수로 전달된다. 이 포인터(매개변수)는 JNI환경에 있는 함수들과 상호작용하도록 해 준다. JNI 인터페이스 포인터는 저장될 수 있으나 오로지 현재의 쓰레드(동작 중인 쓰레드)에서 유효한 상태(사용 가능한 상태)로 유지된다. 다른 쓰레드들(정지 혹은 휴면 상태로 된 쓰레드들)은 먼저 반드시 AttachCurrentThread() 메소드를 호출하여 VM에 자신을 연결하고 JNI 인터페이스 포인터를 획득해야 한다. 일단 연결이 되고 나면 네이티브 쓰레드는 네이티브 메쏘드에서 동작하는 정상적인 자바쓰레드처럼 동작한다. 이 네이티브 쓰레드는 자신이 연결 해제하기 위해 DetachCurrentThread()를 호출하기 전까지는 VM에 연결된 상태로 유지된다.

현재의 쓰레드에 연결하고 JNI 인터페이스 포인터를 획득하기 위해서는:

 

JNIEnv *env;
(*g_vm)->AttachCurrentThread (g_vm, (void **) &env, NULL);

To detach from the current thread:

(*g_vm)->DetachCurrentThread (g_vm);
최종 결론:
JNIEnv *env는 자바와 네이티브 메소드를 연결하는 인터페이스 포인터
출처 : http://blog.naver.com/PostView.nhn?blogId=ethyo&logNo=80137761570

jclass

jclass 객체는 자바 클래스에 대한 정보를 나타냄. Class 오브젝트와 비슷