用Delphi开发JNI(Java+Native+Interface)应用
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,它没有参数,也没有返回值,但是希望它能在屏幕上打印出“您好!中国。”字样。这个任务我们打算交给了本地的Delphi来实现。同时,在这个类的静态域中,用System.loadLibrary()方法装载HelloWorldImpl.dll。注意,这里只需要给出文件名而不需要给出扩展名dll。
这时候,如果在我们的Java程序中使用HelloWorld类的displayHelloWorld方法,系统将抛出一个java.lang.UnsatisfiedLinkError的错误,因为我们还没有为它实现本地代码。
下面再看一下在Delphi中的本地代码的实现。新建一个DLL工程,工程名为HelloWorldImpl,输入以下代码:
Uses
JNI;+
procedure+Java_HelloWorld_displayHelloWorld(PEnv:+PJNIEnv;+Obj:+JObject);+stdcall;+
begin
Writeln('您好!中国。');+
end;+
exports
Java_HelloWorld_DisplayHelloWorld;+
end.
这段代码首先导入jni.pas单元。然后实现了一个叫Java_HelloWorld_displayHelloWorld的过程,这个过程的命名
相关文档:
以下对BIG-ENDIAN、LITTLE-ENDIAN的解释正好弄反了!!!!
BIG-ENDIAN(大字节序、高字节序)
LITTLE-ENDIAN(小字节序、低字节序)
主机字节序
网络字节顺序
JAVA字节序
1.BIG-ENDIAN、LITTLE-ENDIAN跟多字节类型的数据有关的比如int,short,long型,而对单字节数据byte却没有影响。BIG- ......
/*
提供zip文件的解压缩接口:
AdapterZipFile:
输入:zipFileName(zip文件的绝对路径),outputDirectory(zip文件解压缩后的存放路径)
输出:
说明:初始化函数
unZipFile:
输入:无
输出:
说明:解压缩zip文件,解压缩 ......
Java Network Launching Protocol (JNLP,java网络加载协议)。
jnlp是什么?是java提供的一种让你可以通过浏览器直接执行java应用程序的途径,它使你可以直接通过一个网页上的url连接打开一个java应用程序.好处就不用说了,如果你的java应用程序以jnlp 的方式发布,如果版本升级后,不需要再向所有用户发布版本,只需要更 ......
/**
* ==号是比较两个基本类型是否相等,或者比较两个对象引用是否相同
*/
public class T {
public static void main(String[] args) {
Integer i1 = 128;
Integer i2 = 128;
int i3 = 128;
int i4 = 128;
Integer i5 = 127;
Integer i6 = 127; ......