> 教育经验 > 什么是Java本地接口介绍

什么是Java本地接口介绍

什么是Java本地接口介绍

尽管可以完全用Java编写应用程序,但是有时单独用Java不能满足应用程序的需要,程序员使用JNI来编写Java本地方法,可以处理那些不能完全用Java编写应用程序的情况。

以下示例说明了何时需要使用Java本地方法:

l 标准Java类库不支持与平台相关的应用程序所需的功能。

l 已经拥有了一个用另一种语言编写的库,而又希望通过JNI使Java代码能够访问该库。

l 想用低级语言(如汇编语言)实现一小段时限代码。

通过用JNI编程,可以将本地方法用于:

l 创建检查及更新Java对象(包括数组和字符串)。

l 调用Java方法。

l 插捉和抛出异常。

l 加载类和获得类信息。

l 执行运行时类型检查。

也可以与调用API一起使用,以允许任意本地应用程序嵌入到Java虚拟机中,这样使用程序员能够轻易地让已有应用程序支持Java,而不必与虚拟机源代码相链接。

Java本地接口简介

Java本地接口(JNI)是一个编程框架使得运行在Java虚拟机上的Java程序调用或者被调用特定于本机硬件与操作系统的用其它语言(C、C++或汇编语言等)编写的程序。

Java本地接口功用

JNI允许用本地代码来解决纯粹用Java编程不能解决的平台相关的特性。也用于改造已存在的其它语言写的应用程序,供Java程序访问。许多使用了JNI的标准库提供了文件I/O与其它功能。标准库中性能敏感或平台敏感的API实现允许所有Java应用程序安全且平台独立地访问这些功能。

JNI框架使得本地方法可以访问Java对象,就如同Java程序访问这些本地对象。本地方法可以创建Java对象,然后检查、使用这些对象执行任务。本地方法也可以检查并使用由Java程序创建的对象。

Java开发人员称JNI为逃生门(\"escape hatch\"),因为JINI允许增加标准Java API不能提供的功能。也可以用于时间关键的计算或者如解复杂数学方程,因为本地方法的运算比JVM更快。也可以在安卓上重用已存在的C/C++编写的库。

Java本地接口定义

与其他方法相似,你必须声明要用的所有本地方法,并且必须将它们定义在一个类中。

你可将你的本地

HelloWorld

方法定义为如下形式:

publicnativevoidnativeHelloWorld();

这与你所写的其他

publicvoid

方法比较有两个变化:

*

关键字

native

被用作方法修饰符。

*

方法的主体部分(实际实现部分)在这里没有定义,而是代之以一个分号(;)。

你必须把本地方法的声明放到类的定义中。含有这个本地方法的类还包含一个静态代码块,它负责装载带有该方法实现的动态库。这里是为简单的

Java

运行环境在类被装载时执行定义的

static

代码块。

在上例中,

当类

NativeHello

被装载时,

hello1

被装入

应用