Up Top

JNI の処理 : JNI Functions の処理


概要(Summary)

(#Under Construction)

なお, ここでは JNI 仕様の記載に基づいて以下のように分類 (参考: http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html).

備考(Notes)

具体的な関数名の一覧は以下の通り.

    ((cite: hotspot/src/share/vm/prims/jni.cpp))
    // Structure containing all jni functions
    struct JNINativeInterface_ jni_NativeInterface = {
        NULL,
        NULL,
        NULL,

        NULL,

        jni_GetVersion,

        jni_DefineClass,
        jni_FindClass,

        jni_FromReflectedMethod,
        jni_FromReflectedField,

        jni_ToReflectedMethod,

        jni_GetSuperclass,
        jni_IsAssignableFrom,

        jni_ToReflectedField,

        jni_Throw,
        jni_ThrowNew,
        jni_ExceptionOccurred,
        jni_ExceptionDescribe,
        jni_ExceptionClear,
        jni_FatalError,

        jni_PushLocalFrame,
        jni_PopLocalFrame,

        jni_NewGlobalRef,
        jni_DeleteGlobalRef,
        jni_DeleteLocalRef,
        jni_IsSameObject,

        jni_NewLocalRef,
        jni_EnsureLocalCapacity,

        jni_AllocObject,
        jni_NewObject,
        jni_NewObjectV,
        jni_NewObjectA,

        jni_GetObjectClass,
        jni_IsInstanceOf,

        jni_GetMethodID,

        jni_CallObjectMethod,
        jni_CallObjectMethodV,
        jni_CallObjectMethodA,
        jni_CallBooleanMethod,
        jni_CallBooleanMethodV,
        jni_CallBooleanMethodA,
        jni_CallByteMethod,
        jni_CallByteMethodV,
        jni_CallByteMethodA,
        jni_CallCharMethod,
        jni_CallCharMethodV,
        jni_CallCharMethodA,
        jni_CallShortMethod,
        jni_CallShortMethodV,
        jni_CallShortMethodA,
        jni_CallIntMethod,
        jni_CallIntMethodV,
        jni_CallIntMethodA,
        jni_CallLongMethod,
        jni_CallLongMethodV,
        jni_CallLongMethodA,
        jni_CallFloatMethod,
        jni_CallFloatMethodV,
        jni_CallFloatMethodA,
        jni_CallDoubleMethod,
        jni_CallDoubleMethodV,
        jni_CallDoubleMethodA,
        jni_CallVoidMethod,
        jni_CallVoidMethodV,
        jni_CallVoidMethodA,

        jni_CallNonvirtualObjectMethod,
        jni_CallNonvirtualObjectMethodV,
        jni_CallNonvirtualObjectMethodA,
        jni_CallNonvirtualBooleanMethod,
        jni_CallNonvirtualBooleanMethodV,
        jni_CallNonvirtualBooleanMethodA,
        jni_CallNonvirtualByteMethod,
        jni_CallNonvirtualByteMethodV,
        jni_CallNonvirtualByteMethodA,
        jni_CallNonvirtualCharMethod,
        jni_CallNonvirtualCharMethodV,
        jni_CallNonvirtualCharMethodA,
        jni_CallNonvirtualShortMethod,
        jni_CallNonvirtualShortMethodV,
        jni_CallNonvirtualShortMethodA,
        jni_CallNonvirtualIntMethod,
        jni_CallNonvirtualIntMethodV,
        jni_CallNonvirtualIntMethodA,
        jni_CallNonvirtualLongMethod,
        jni_CallNonvirtualLongMethodV,
        jni_CallNonvirtualLongMethodA,
        jni_CallNonvirtualFloatMethod,
        jni_CallNonvirtualFloatMethodV,
        jni_CallNonvirtualFloatMethodA,
        jni_CallNonvirtualDoubleMethod,
        jni_CallNonvirtualDoubleMethodV,
        jni_CallNonvirtualDoubleMethodA,
        jni_CallNonvirtualVoidMethod,
        jni_CallNonvirtualVoidMethodV,
        jni_CallNonvirtualVoidMethodA,

        jni_GetFieldID,

        jni_GetObjectField,
        jni_GetBooleanField,
        jni_GetByteField,
        jni_GetCharField,
        jni_GetShortField,
        jni_GetIntField,
        jni_GetLongField,
        jni_GetFloatField,
        jni_GetDoubleField,

        jni_SetObjectField,
        jni_SetBooleanField,
        jni_SetByteField,
        jni_SetCharField,
        jni_SetShortField,
        jni_SetIntField,
        jni_SetLongField,
        jni_SetFloatField,
        jni_SetDoubleField,

        jni_GetStaticMethodID,

        jni_CallStaticObjectMethod,
        jni_CallStaticObjectMethodV,
        jni_CallStaticObjectMethodA,
        jni_CallStaticBooleanMethod,
        jni_CallStaticBooleanMethodV,
        jni_CallStaticBooleanMethodA,
        jni_CallStaticByteMethod,
        jni_CallStaticByteMethodV,
        jni_CallStaticByteMethodA,
        jni_CallStaticCharMethod,
        jni_CallStaticCharMethodV,
        jni_CallStaticCharMethodA,
        jni_CallStaticShortMethod,
        jni_CallStaticShortMethodV,
        jni_CallStaticShortMethodA,
        jni_CallStaticIntMethod,
        jni_CallStaticIntMethodV,
        jni_CallStaticIntMethodA,
        jni_CallStaticLongMethod,
        jni_CallStaticLongMethodV,
        jni_CallStaticLongMethodA,
        jni_CallStaticFloatMethod,
        jni_CallStaticFloatMethodV,
        jni_CallStaticFloatMethodA,
        jni_CallStaticDoubleMethod,
        jni_CallStaticDoubleMethodV,
        jni_CallStaticDoubleMethodA,
        jni_CallStaticVoidMethod,
        jni_CallStaticVoidMethodV,
        jni_CallStaticVoidMethodA,

        jni_GetStaticFieldID,

        jni_GetStaticObjectField,
        jni_GetStaticBooleanField,
        jni_GetStaticByteField,
        jni_GetStaticCharField,
        jni_GetStaticShortField,
        jni_GetStaticIntField,
        jni_GetStaticLongField,
        jni_GetStaticFloatField,
        jni_GetStaticDoubleField,

        jni_SetStaticObjectField,
        jni_SetStaticBooleanField,
        jni_SetStaticByteField,
        jni_SetStaticCharField,
        jni_SetStaticShortField,
        jni_SetStaticIntField,
        jni_SetStaticLongField,
        jni_SetStaticFloatField,
        jni_SetStaticDoubleField,

        jni_NewString,
        jni_GetStringLength,
        jni_GetStringChars,
        jni_ReleaseStringChars,

        jni_NewStringUTF,
        jni_GetStringUTFLength,
        jni_GetStringUTFChars,
        jni_ReleaseStringUTFChars,

        jni_GetArrayLength,

        jni_NewObjectArray,
        jni_GetObjectArrayElement,
        jni_SetObjectArrayElement,

        jni_NewBooleanArray,
        jni_NewByteArray,
        jni_NewCharArray,
        jni_NewShortArray,
        jni_NewIntArray,
        jni_NewLongArray,
        jni_NewFloatArray,
        jni_NewDoubleArray,

        jni_GetBooleanArrayElements,
        jni_GetByteArrayElements,
        jni_GetCharArrayElements,
        jni_GetShortArrayElements,
        jni_GetIntArrayElements,
        jni_GetLongArrayElements,
        jni_GetFloatArrayElements,
        jni_GetDoubleArrayElements,

        jni_ReleaseBooleanArrayElements,
        jni_ReleaseByteArrayElements,
        jni_ReleaseCharArrayElements,
        jni_ReleaseShortArrayElements,
        jni_ReleaseIntArrayElements,
        jni_ReleaseLongArrayElements,
        jni_ReleaseFloatArrayElements,
        jni_ReleaseDoubleArrayElements,

        jni_GetBooleanArrayRegion,
        jni_GetByteArrayRegion,
        jni_GetCharArrayRegion,
        jni_GetShortArrayRegion,
        jni_GetIntArrayRegion,
        jni_GetLongArrayRegion,
        jni_GetFloatArrayRegion,
        jni_GetDoubleArrayRegion,

        jni_SetBooleanArrayRegion,
        jni_SetByteArrayRegion,
        jni_SetCharArrayRegion,
        jni_SetShortArrayRegion,
        jni_SetIntArrayRegion,
        jni_SetLongArrayRegion,
        jni_SetFloatArrayRegion,
        jni_SetDoubleArrayRegion,

        jni_RegisterNatives,
        jni_UnregisterNatives,

        jni_MonitorEnter,
        jni_MonitorExit,

        jni_GetJavaVM,

        jni_GetStringRegion,
        jni_GetStringUTFRegion,

        jni_GetPrimitiveArrayCritical,
        jni_ReleasePrimitiveArrayCritical,

        jni_GetStringCritical,
        jni_ReleaseStringCritical,

        jni_NewWeakGlobalRef,
        jni_DeleteWeakGlobalRef,

        jni_ExceptionCheck,

        jni_NewDirectByteBuffer,
        jni_GetDirectBufferAddress,
        jni_GetDirectBufferCapacity,

        // New 1_6 features

        jni_GetObjectRefType
    };

(例えば, メソッド呼び出し系の関数をまとめて DEFINE_CALLSTATICMETHOD() 等のマクロで量産していたりする)

Subcategories


This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.