jni.h頭文件詳解一

1.jni.h頭文件路徑:

  /usr/lib/jvm/jdk_1.6.0_43/include/jni.hjava

2.jni.h頭文件組成分析圖:

 

 

3.下面經過上圖進行分析講解jni.h頭文件.

  一. jni規範中定義的基本數據類型.數組

 

[cpp]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. #define JNIEXPORT  
  2. #define JNIIMPORT  
  3. #define JNICALL  
  4.   
  5. typedef int              jint;  
  6. #ifdef _LP64 /* 64-bit Solaris */  
  7. typedef long             jlong;  
  8. #else  
  9. typedef long long        jlong;  
  10. #endif  
  11. typedef signed char    jbyte;  
  12. typedef unsigned char    jboolean;  
  13. typedef unsigned short   jchar;  
  14. typedef short       jshort;  
  15. typedef float           jfloat;  
  16. typedef double          jdouble;  
  17. typedef jint             jsize;</span>  

 

 

4.jni標準定義的數組類型。

 

[cpp]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. struct _jobject;  
  2. typedef struct _jobject *jobject;  
  3. typedef jobject jclass;  
  4. typedef jobject jthrowable;  
  5. typedef jobject jstring;  
  6. typedef jobject jarray;  
  7. typedef jarray jbooleanArray;  
  8. typedef jarray jbyteArray;  
  9. typedef jarray jcharArray;  
  10. typedef jarray jshortArray;  
  11. typedef jarray jintArray;  
  12. typedef jarray jlongArray;  
  13. typedef jarray jfloatArray;  
  14. typedef jarray jdoubleArray;  
  15. typedef jarray jobjectArray;  

 

 

5.方法簽名時用到的公共體類型。

 

[cpp]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. typedef union jvalue {      
  2.     jboolean z;  
  3.     jbyte    b;  
  4.     jchar    c;  
  5.     jshort   s;  
  6.     jint     i;  
  7.     jlong    j;  
  8.     jfloat   f;  
  9.     jdouble  d;  
  10.     jobject  l;  
  11. } jvalue;</span>  

 

 

6.屬性Id的定義。

 

[cpp]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. struct _jfieldID;  
  2. typedef struct _jfieldID *jfieldID;   //字段ID類型的  

 

 

7.方法Id的定義。

 

[cpp]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. struct _jmethodID;  
  2. typedef struct _jmethodID *jmethodID; //方法ID類型的定義。  

 

 

8.幾種不一樣類型引用的定義。

 

[cpp]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. Return values from jobjectRefType  
  2. typedef enum _jobjectType {  
  3.      JNIInvalidRefType    = 0,  
  4.      JNILocalRefType      = 1,  
  5.      JNIGlobalRefType     = 2,  
  6.      JNIWeakGlobalRefType = 3  
  7. } jobjectRefType;</span>  

 

 

9.錯誤類型定義。

 

[cpp]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. /* 
  2.  * jboolean constants 
  3.  */  
  4. #define JNI_FALSE 0  
  5. #define JNI_TRUE 1  
  6.   
  7. /* 
  8.  * possible return values for JNI functions. 
  9.  */  
  10.   
  11. #define JNI_OK           0                 /* success */  
  12. #define JNI_ERR          (-1)              /* unknown error */  
  13. #define JNI_EDETACHED    (-2)              /* thread detached from the VM */  
  14. #define JNI_EVERSION     (-3)              /* JNI version error */  
  15. #define JNI_ENOMEM       (-4)              /* not enough memory */  
  16. #define JNI_EEXIST       (-5)              /* VM already created */  
  17. #define JNI_EINVAL       (-6)              /* invalid arguments */  
  18.   
  19. /* 
  20.  * used in ReleaseScalarArrayElements 
  21.  */  
  22.   
  23. #define JNI_COMMIT 1  
  24. #define JNI_ABORT 2  

 

 

10 .JNI Native Method Interface.(java本地方法接口定義)

 

[cpp]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. struct JNINativeInterface_;  
  2. struct JNIEnv_;  
  3. #ifdef __cplusplus     
  4. typedef JNIEnv_ JNIEnv;  
  5. #else  
  6. typedef const struct JNINativeInterface_ *JNIEnv;       //咱們使用的是這個定義.  
  7. #endif  

 

 

11. JNI Invocation Interface. (java虛擬機接口)

 

[cpp]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
    1. struct JNIInvokeInterface_;  
    2. struct JavaVM_;  
    3. #ifdef __cplusplus  
    4. typedef JavaVM_ JavaVM;  
    5. #else  
    6. typedef const struct JNIInvokeInterface_ *JavaVM;  
    7. #endif  
相關文章
相關標籤/搜索