JNI(Java Native Interface,Java本地接口)技术大家都不陌生,它可以帮助解决Java访问底层硬件的局限和执行效率的提高。关于JNI的开发,大多数资料讨论的都是如何用C/C++语言开发JNI,甚至于JDK也提供了一个javah工具来自动生成C语言程序框架。但是,对于广大的Delphi程序员来说,难道就不能用自己喜爱的Delphi与Java互通消息了吗?
通过对javah生成的C程序框架和JDK中的jni.h文件的分析,我们发现,Java利用JNI访问本地代码的关键在于jni.h中定义的JNINativeInterface_这个结构(Struct),如果用Delhpi语言改写它的定义,应该也可以开发JNI的本地代码。幸运的是,在网上有现成的代码可以帮助你完成这个繁杂的工作,在http://delphi-jedi.org上提供了一个jni.pas文件,就是用Delphi语言重写的jni.h。我们只需在自己的Delphi工程中加入jni.pas就可以方便地开发出基于Delphi语言的JNI本地代码。
本文将利用jni.pas,讨论用Delphi语言开发JNI本地代码的基本方法。
先来看一个经典的HelloWorld例子。编写以下Java代码:
class HelloWorld { public native void displayHelloWorld(); static { System.loadLibrary("HelloWorldImpl"); } } |
这段代码声明了一个本地方法displayHelloWorld