JNI学习

原创 2013年12月03日 21:42:11

1、JNI概述

JNI机制。

Java Native Interface 的缩写,实现了Java调用其他语言(如C/C++)的功能。

通过这种技术可以:

1)Java调用Native语言(C/C++)的函数

2)Native程序(C/C++)的函数可以调用Java层的函数

2、JNI的语法规则

1)将Java语言的数据类型转换成C/C++语言函数或方法。

Java 类型 本地 C 类型
实际表示的 C 类型
(Win32)
说明
boolean jboolean unsigned char 无符号,8 位
byte jbyte signed char 有符号,8 位
char jchar unsigned short 无符号,16 位
short jshort short 有符号,16 位
int jint long 有符号,32 位
long jlong __int64 有符号,64 位
float jfloat float 32 位
double jdouble double 64 位
void void N/A N/A

2)将Java语言的方法调用,转换为调用底层语言函数或方法。

函数签名。

具体的对应关系见下面两张图:

  

数组则以”["开始,用两个字符表示


2)函数对应关系的前面

项目 说明
Java函数格式 返回值  func(参数1,参数2,参数3)
函数签名格式 (参数1参数2参数3)返回值
注意 1、函数名,在JNI中没有体现出来
2、参数列表相互挨着,中间没有逗号,没有空格,返回值后面没有分号
3、返回值出现在()后面
4、如果参数是引用类型,那么参数应该为:

1、boolean isLenOn(void)

()Z

2、void setLedOn(int lenNo)

(I)

3、String substr(String str, int idx, int count);

(Ljava/lang/String;II)Ljava/lang/String


3、JNI的实现步骤

Java代码加载JNI的库

1)如果Java要调用native函数,就必须通过一个位于JNI层的动态库来实现。

2)通常的做法是在类的static语句中加载,调用System.loadlibrary的方法加载动态库。

3)Native函数需要在Java中用关键字native的形式声明

注册JNI函数签名

1)静态注册

2)动态注册














JNI学习笔记.doc

  • 2013年08月19日 13:34
  • 400KB
  • 下载

JNI学习笔记

  • 2013年02月25日 14:53
  • 9.56MB
  • 下载

JNI学习(3)(我是菜鸟)-jstring介绍

所有内容为记录学习过程,不是大牛敬请谅解。所有分析都参考深入理解Android 卷一 Java中的String 也是引用类型,不过由于它的使用频率有点高,所以再JNI 规范中,单独创建了一个 j...

JNI学习三-简单类型数组访问

  • 2012年03月30日 20:54
  • 11KB
  • 下载

JNI学习积累之二 ---- 数据类型映射、域描述符说明

本文原创,转载请注明出处:http://blog.csdn.net/qinjuning     在Java存在两种数据类型: 基本类型 和 引用类型 ,大家都懂的 。 ...

android JNI学习四实例

  • 2014年03月06日 09:46
  • 1.21MB
  • 下载

android_JNI学习一实例

  • 2014年03月04日 17:35
  • 1.18MB
  • 下载

Android JNI学习笔记(四)-数据类型映射以及native调用java

1. 前言前几篇学习了jni开发的基本流程、动态注册native函数以及相关编译文件的编写,咱们也算是知道了jni开发,但是还不够,今天咱们来学习下,java和jni的数据类型映射(说白了就是对应关系...

android_JNI学习二

  • 2014年03月05日 16:07
  • 1.18MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JNI学习
举报原因:
原因补充:

(最多只允许输入30个字)