更新时间:2022-10-24 20:21
尽管可以完全用Java编写应用程序,但是有时单独用Java不能满足应用程序的需要,程序员使用JNI来编写Java本地方法,可以处理那些不能完全用Java编写应用程序的情况。
Java本地接口(JNI)是一个编程框架使得运行在Java虚拟机上的Java程序调用或者被调用特定于本机硬件与操作系统的用其它语言(C、C++或汇编语言等)编写的程序。
JNI允许用本地代码来解决纯粹用Java编程不能解决的平台相关的特性。也用于改造已存在的其它语言写的应用程序,供Java程序访问。许多使用了JNI的标准库提供了文件I/O与其它功能。标准库中性能敏感或平台敏感的API实现允许所有Java应用程序安全且平台独立地访问这些功能。
JNI框架使得本地方法可以访问Java对象,就如同Java程序访问这些本地对象。本地方法可以创建Java对象,然后检查、使用这些对象执行任务。本地方法也可以检查并使用由Java程序创建的对象。
与其他方法相似,你必须声明要用的所有本地方法,并且必须将它们定义在一个类中。
你可将你的本地
HelloWorld
方法定义为如下形式:
publicnativevoidnativeHelloWorld();
这与你所写的其他
publicvoid
方法比较有两个变化:
*
关键字
native
被用作方法修饰符。
*
方法的主体部分(实际实现部分)在这里没有定义,而是代之以一个分号(;)。
你必须把本地方法的声明放到类的定义中。含有这个本地方法的类还包含一个静态代码块,它负责装载带有该方法实现的动态库。这里是为简单的
Java
运行环境在类被装载时执行定义的
static
代码块。
在上例中,
当类
NativeHello
被装载时,
库
hello1
被装入
应用