- 2
- 0
- 约8.2千字
- 约 6页
- 2017-12-07 发布于贵州
- 举报
【精选】JNI 数据类型
Java 1.1 开始,Java Native Interface (JNI)标准成为java 平台的一部分,它允许Java
代码和其他语言写的代码进行交互。JNI 一开始是为了本地已编译语言,尤其是C 和C++
而设计 的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。让我们看一
些使用JNI 的简单例子吧。
使用java 与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做
是可以接受的,甚至是必须的,比如,使用一些旧的库,与硬 、操作系统进行交互,或者
为了提高程序的性能。JNI 标准至少保证本地代码能工作在任何Java 虚拟机实现下。
开始:
如果你习惯了使用JNI,你就不会觉得它难了。既然本地方法是由其他语言实现的,它们在
Java 中没有函数体。但是,所有本地代码必须用本地关键词 声明,成为Java 类的成员。
清单A 演示了一个简单的类,它申明了一个本地的 (native ),静态的(static )方法:sum。
写完了你的Java 类,接下来就要写本地代码。本地方法符号提供一个满足约定的头文 ,
使用Java 工具可以很容易地创建它而不用手动去创建。你对 Java 的class 文 使用javah
命令,就会为你生成一个对应的C/C++头文 。清单B 就是为清单A 的Test1 类创建的头
文 。注意:它创建了 一个C/C++函数:Java_Test1_sum。
执行本地方法:
一旦你有了这个头文 ,你就需要写头文 对应的本地方法,就像我在清单C 做的那样。
注意:所有的本地方法的第一个参数都是指向JNIEnv 结构的。 这个结构是用来调用JNI
函数的,(我会在另一个章节中讨论)。第二个参数jclass 的意义,要看方法是不是静态的
(static)或者实例 (Instance )的。前者,jclass 代表一个类对象的引用,而后者是被调
用的方法所属对象的引用。最后的两个j int 参数表示了Java 方法的 int 参数。
返回值和参数类型根据等价约定映射到本地C/C++类型,如表A 所示。有些类型,如清单
B 里面的两个j int 参数,在本地代码中可直接使用,而其他类型只有通过JNI 调用操作。
表A
Java 类型 本地类型 描述
boolean j boolean C/C++8 位整型
byte j byte C/C++带符号的8 位整型
char jchar C/C++无符号的16 位整型
short jshort C/C++带符号的16 位整型
int ji nt C/C++带符号的32 位整型
long jlong C/C++带符号的64 位整型e
float jfloat C/C++32 位浮点型
double jdouble C/C++64 位浮点型
Object jobject 任何Java 对象,或者没有对应java 类型
的对象
Class jclass Class 对象
String jstring 字符串对象
Object[] jobjectArray 任何对象的数组
boolean[] j booleanArray 布尔型数组
byte[] j byteArray 比特型数组
char[] jcharArray 字符型数组
short[] jshortArray 短整型数组
int[] ji ntArray 整型数组
long[]
您可能关注的文档
- 【精选】IEEE继电保护功能代码中英文对照.pdf
- 【精选】IE基础-21世纪的管理.doc
- 【精选】iDVR大型网络视频管理平台介绍.pdf
- 【精选】IE工业工程应用实战训练.ppt
- 【精选】iec101解析.ppt
- 【精选】IF爱乎补水护肤品产品简介.pdf
- 【精选】IGCSE选科手册.doc
- 【精选】IIA内部审计新定义及其英文翻译.doc
- 【精选】IIS发布dedecms网站教程.pdf
- 【精选】IHUNTER猎头业务流程管理平台方案.pdf
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
原创力文档

文档评论(0)