程序的魔法

  :: 首页 :: 博问 :: 闪存 :: :: 联系 :: :: 管理 ::

JNI 概述

Java本地接口(JNI)是JDK Java本地编程接口的一部分。通过使用JNI编程,可以保证你的代码在所有平台上完全可移植。

JNI允许在Java虚拟机中运行的Java代码使用其它语言写的库和应用,这些引用API可以让你的Java虚拟机嵌入到本地应用去。

在一些情况下,应用程序不能完全通过Java语言编写的时候,程序员可以使用JNI来编写本地方法。例如,你可能在下列情况下需要使用本地方法了JNI:

           ·   Java标准类库可能不支持一些你的程序所需要的平台相关的特性。

·   你可能已经拥有了一个使用其它编程语言编写的程序库或者应用,而且你也想在Java应用中使用它。

·   你可能需要执行一小部分对实时性要求极高的低级程序语言,例如汇编,可以让你的Java应用调用函数。

你可以通过JNI框架编程使用本地方法做很多操作。本地方法可能是遗留下来的最好的应用,或者问题最好是使用Java以外的编程环境才能得到最好的解决。

JNI框架可以让你使用让你的本地方法使用Java对象,这就和Java代码使用这些对象是一样的。一个本地方法可以创建Java对象,包括数组合字符串,然后可以检查和使用这些对象来执行它的任务。本地方法同样可以检查和使用Java代码创建的对象。一个本地方法甚至能够更新Java对象,这些对象是它创建的或者是它过去创建的,这些更新过的对象在Java中也是可见的。因此,本地语言和Java语言两者都能够创建,更新和访问Java对象,它们能够共享这些对象。


本地方法同样能够很轻松的调用Java方法。常常你已经开发好了一个Java方法的库。

如果已经存在的Java方法已经包含了一些可以执行方法,那么在你的本地方法中就不需要“重新构建”。

JNI通过你的本地方法来使用Java编程语言的优势。特别的是,你可以捕获和抛出本地方法中的异常,并且在Java应用中处理这些异常。本地方法同样可以得到Java类的信息。通过调用特殊的JNI方法,本地方法能够加载Java类并且得到类信息。最终,本地方法可以使用JNI来进行运行期类型检查。

例如,下面的图片C程序是怎么通过JNI来连接Java库德,调用Java方法,使用Java类,等。

 





下一个图片说明了从Java应用程序中调用本地语言函数。这个图显示了通过Java程序使用JNI的多种可能性,包括调用C例行程序,使用C++类,调用汇编例程,还有Z等。
 

 



 

可以很简单的把JNI看作是Java和本地应用程序的粘合剂。下面的图显示了JNI怎样把C程序和Java程序连绑定在一起。

                                      

 

 

posted on 2005-05-01 15:56  BlueMagic  阅读(1881)  评论(0编辑  收藏  举报