Android JNI开发笔记一:JNI的基本概念和类型

JNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以调用C/C++代码,从Java1.1开始,JNI标准成为java平台的一部分。

最简单的来说,JNI就是一套可以和C/C++相互调用的API,jvm就是通过大量的jni技术使得java能够在不同平台上运行。

使用了JNI的一个标志就是native,如果一个方法被native修饰,那就说明这个方法是jni来实现的,它是通过本地系统api里的方法来实现的。当然这个本地方法可能是c或者C++,当然也可能是别的语言。jni是java跨平台的基础,jvm通过在不同系统上调用不同的本地方法使得jvm可以在不同平台间移植。

如下图所示

1.1 JavaC/C++ 中的基本类型的映射关系:

JNI是接口语言,因而,会有一个中间的转型过程,在这个过程中,有一个非常重要的也是非常关键的类型对接方

式,数据类型的转变,下表给出了相关的java和jni的数据格式对照。

下表中的数据为JNI基本数据类型及对应的长度java类型 jni类型 描述符

java类型

jni类型

描述符

boolean jboolean Z
byte jbyte B
char jchar C
short jshort S
int jint I
long jlong J
float jfloat F
double jdouble D
Class jclass Ljava/lang/Class;
String jstring Ljava/lang/String;
Object jobject Ljava/lang/Object;
byte[] jbyteArray [B

需要注意的是:

boolean型的描述符不是B,而是Z,因为B已经被byte使用

long型的描述符不是L,而是J

引用类型的描述符是 L + 全类名 + 分号

发布了27 篇原创文章 · 获赞 24 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/shving/article/details/102756381