序
这四种情况下你会用到本书:
1、 在 Java 程序中复用以前写过的 C/C++代码。
2、 自己实现一个 java 虚拟机
3、 学习不同语言如何进行协作,尤其是如何实现垃圾回收和多线程。
4、 把一个虚拟机实现整合到用 C/C++写的程序中。
本书是写给开发者的。JNI 在 1997 年第一次发布,本书总结了 SUN 工程师和大量开发者两
年来积累的经验。
本书介绍了 JNI 的设计思想,对这种思想的理解是使用 JNI 的各种特性的基础。
本书有一部分是 JAVA2 平台上面的 JNI 特征的规范说明。JNI 程序员可以把这部分用作一
个手册。JVM 开发者在实现虚拟机的时候必须遵守这些规范。
JNI 的部分设计思想来源于 Netscape 的 Java Runtime Interface(JRI)。
第一章 简介
JNI 是 JAVA 平台的一个重要特征,使用它我们可以重用以前用 C/C++写的大量代码。本书
既是一个编程指南也是一个 JNI 手册。本书共包括三部分:
1、 第二章通过一个简单的例子介绍了 JNI。它的对象是对 JNI 不熟悉的初学者。
2、 3~10 章对 JNI 的特征进行了系统的介绍。我们会举大量的例子来说明 JNI 的各个特征,
这些特征都是 JNI 中重要且常用的。
3、 11~13 章是关于 JNI 的技术规范。可以把这两章当作一个手册。
本书尽量去满足各类读者的需要。指南面向初学者,手册面向有经验的人和自己实现 JNI 规
范的人。大部分读者可能是用 JNI 来写程序的开发者。本书会假设你有 JAVA,C/C++基础。
本章的剩余部分介绍了 JNI 的背景,扮演的角色和 JNI 的演化。
1.1 JAVA 平台和系统环境(Host Environment)
系统环境代指本地操作系统环境,它有自己的本地库和 CPU 指令集。本地程序(Native
Applications)使用 C/C++这样的本地语言来编写,被编译成只能在本地系统环境下运行的
二进制代码,并和本地库链接在一起。本地程序和本地库一般地会依赖于一个特定的本地系
统环境。比如,一个系统下编译出来的 C 程序不能在另一个系统中运行。
1.2 JNI 扮演的角色
JNI 的强大特性使我们在使用 JAVA 平台的同时,还可以重用原来的本地代码。作为虚拟机
实现的一部分,JNI 允许 JAVA 和本地代码间的双向交互。