Java 本机接口是 Java 平台中一种设计良好和良好集成的 API。它被设计成用来使您能将本机代码合并到 Java 程序中,也为您提供了一种在用其它编程语言编写的程序中使用 Java 代码的方式。html
使用 JNI 总会破坏 Java 代码的可移植性。当从 Java 程序调用本机方法时,须要为每一个您打算运行程序的平台分发本机共享库文件。另外一方面,从本机程序调用 Java 代码实际上能够改进应用程序的可移植性。java
JNI 使用几种映射到 Java 类型的本机定义的 C 类型。这些类型能够分红两类:原始类型和伪类(pseudo-classes)。在 C 中,伪类做为结构实现,而在 C++ 中它们是真正的类。程序员
Java 原始类型直接映射到 C 依赖于平台的类型,以下所示:算法
C 类型 jarray
表示通用数组。在 C 中,全部的数组类型实际上只是 jobject
的同义类型。可是,在 C++ 中,全部的数组类型都继承了 jarray
,jarray
又依次继承了 jobject
。下列表显示了 Java 数组类型是如何映射到 JNI C 数组类型的。shell
这里是一棵对象树,它显示了 JNI 伪类是如何相关的。编程
用下表指定的编码将本机 Java 方法参数类型表示或转换成本机代码。数组
注:安全
boolean print(String[] parms, int n) |
([Ljava/lang/Sting;I)Z |
下载 数据结构
cc
来编译 C/C++ 代码。固然,GCC 是一个一样可行的开放源码编译器。文章和教程 数据结构和算法
推荐书籍
Scott Stricker 是 IBM Global Services 下属的 Business Innovation Services 的企业应用程序开发人员。他的专长是面向对象技术,尤为是 Java 和 C++ 编程。
Scott 拥有美国辛辛那提大学计算机科学理学学士学位。他是“Sun 认证的 Java 2 程序员与开发者(Sun Certified Java 2 Programmer and Developer)”。 可经过 sstricke@us.ibm.com 联系 Scott。