调试集成 Java 和 C/C++ 的代码
2010-01-25 00:00:00 来源:WEB开发网什么是 JNI?
Java 语言的设计者认识到创建 100% 纯 Java 应用程序是一个崇高的目标。他们也知道,在现实中,要实现这样的目标通常是非常困难的。当新的 Java 应用程序开发出来时,开发人员往往不愿意丢弃旧的本机代码,这些代码可能写起来非常昂贵或者很困难。
Java 本机接口(Java Native Interface),或者 JNI,提供了从 Java 虚拟机(JVM)进入 JVM 运行所在计算机的本机世界的入口。通过使用这个入口,Java 程序员可以使用十分昂贵或者不可能以 Java 代码重写的旧的本机代码。JNI 允许本机代码调用 JVM、创建并访问对象、调用对象方法以及访问实例变量。开发人员所付出的代价是,这样做失去了 Java 平台“编写一次,到处运行”的优势,因为任何被调用的本机代码将受到特殊平台的约束。
Java 本机接口(JNI)可以将本机程序与 Java 程序集成在一起,并且可以帮助解决这个调试的问题。
JNI 程序的两种方法
使用 JNI 构造应用程序大致有两种方法 ― 标准方法和 调用方法。每种方法反映了 JVM 是如何在一个进程中启动的。我们将详细研究这两种方法,然后使用这两种方法进行调试。
标准 JNI 方法
假设有一个过程,它担负着一些繁重的数学计算工作。您已经将这个过程编写成本机库,并且想要从 Java 应用程序调用它。这就是我所指的通过标准方法使用 JNI;它是 JNI 的关键所在。
对于这种方法,通过运行一个例如 Java myApplication 的命令来启动 JVM,在代码的某处,存在一个本机方法。
标准 JNI 方法样本代码
我已经准备了一些样本代码来演示标准 JNI 方法。下载部分包含了以下七个文件:
jnitest.c
JNITest.class
更多精彩
赞助商链接