JNI学习笔记
来源:互联网 发布:java web技术架构图 编辑:程序博客网 时间:2024/05/16 06:32
JNI 是 Java Native Interface 的缩写,用以解决 Java 对本地方法的操作问题,而本地方法是以库文件的形式存放的(.dll for windows,.so for Unix)。
分享一些常见的jni方法:
GetStringUTFChars 将jstring转换成为UTF-8格式的char*
GetStringChars 将jstring转换成为Unicode格式的char*
ReleaseStringUTFChars 释放指向UTF-8格式的char*的指针
ReleaseStringChars 释放指向Unicode格式的char*的指针
NewStringUTF 用 char* 创建一个UTF-8格式的 jstring 对象
NewString 用char*创建一个Unicode 格式的 jstring对象
GetStringUTFLengt 获取UTF-8格式的char*的长度
GetStringLength 获取Unicode格式的char*的长度
在JNI中可以通过c语言调用java函数
在JNI里使用java类的某些方法,分为以下几个步骤:
1. 查找该类:
jclass xxx = (*env)->FindClass(env, "Lclass_name;");
2. 查找该类的初始化方法:
jmethodID xxx = (*env)->GetMethodID(env, jclass, "<init>", "(M)N");
3. 查找需要调用的该类的方法:
jmethodID xxx = (*env)->GetMethodID(env, jclass, "(M)N" );
4. 初始化该类的实例:
jobject xxx = (*env)->NewObject(env, jclass, jmethodID );
5. 调用实例的某方法:
(*env)->CallObjectMethod(env, jclass, jmethodID, [parameter1, parameter2,...] );
6. 释放实例:
(*env)->DeleteLocalRef(env, xxx);
需要说明的有两点:
1.调用的java函数分为静态方法和非静态方法,返回的参数有java独有的类型或者c中存在的类型
如java方法为静态方法则调用函数应为CallStaticXXXMethod(xxx为返回类型,可以为Void,Int,Char或者java类型的object)
2."(M)N"是该函数的输入和输出参数的类型签名(Type Signature)。 这里,JNI中对于以下类型定义了类型签名:
Type Signature Java Type
Z boolean
B byte
C char
S short
I int
J long
F float
D double
另外[加类型名表示该类型的数组,L加类名表示参数是java类,如Ljava/lang/Object;(注意“;”是必须的,否则机器不识别)
原文地址:http://fariytale.iteye.com/blog/1420383
- jni学习笔记
- JNI学习笔记
- JNI入门学习笔记
- android JNI 学习笔记
- android JNI 学习笔记
- android jni 学习笔记
- android JNI 学习笔记
- Android JNI 学习笔记
- JNI学习笔记
- JNI学习笔记
- JNI 学习笔记
- JNI学习笔记一
- JNI学习笔记二
- JNI学习笔记三
- JNI学习笔记四
- JNI学习笔记五
- JNI学习笔记六
- JNI学习笔记
- C++术语 - 1
- linux文件系统的系统分析--(九)sysfs下属性文件的读写
- Python_API_Built-in Functions_globals
- 单片机
- vmware配置网络的问题
- JNI学习笔记
- 【通信】一些基本概念
- 计算机体系结构与主要硬件组成
- 数学之美 系列十五 繁与简 自然语言处理的几位精英
- c# toolTip小结
- 牛人与面人的区别
- poj 2823 参考的优先队列
- sinx的绘制
- 浅谈移动LSTP的建设