http://java.sun.com/docs/books/jni/html/jniTOC.html
Part One: Introduction and Tutorial
1 Introduction
1.1 The Java Platform and Host Environment
1.2 Role of the JNI
1.3 Implications of Using the JNI
1.4 When to Use the JNI
1.5 Evolution of the JNI
1.6 Example Programs
2 Getting Started
2.1 Overview
2.2 Declare the Native Method
2.3 Compile the
HelloWorld
Class2.4 Create the Native Method Header File
2.5 Write the Native Method Implementation
2.6 Compile the C Source and Create a Native Library
2.7 Run the Program
Part Two: Programmer's Guide
3 Basic Types, Strings, and Arrays
3.1 A Simple Native Method
C Prototype for Implementing the Native MethodNative Method ArgumentsMapping of Types3.2 Accessing Strings
Converting to Native StringsFreeing Native String ResourcesConstructing New StringsOther JNI String FunctionsNew JNI String Functions in Java 2 SDK Release 1.2Summary of JNI String FunctionsChoosing among the String Functions3.3 Accessing Arrays
Accessing Arrays in CAccessing Arrays of Primitive TypesSummary of JNI Primitvie Array FunctionsChoosing among the Primitive Array FunctionsAcessing Arrays of Objects
4 Fields and Methods
4.1 Accessing Fields
Procedure for Accessing an Instance FieldField DescriptorsAccessing Static Fields4.2 Calling Methods
Calling Instance MethodsForming the Method DescriptorCalling Static MethodsCalling Instance Methods of a Superclass4.3 Invoking Constructors
4.4 Caching Field and Method IDs
Caching at the Point of UseCaching in the Defining Class's InitializerComparison between the Two Approaches to Caching IDs4.5 Performance of JNI Field and Method Operations
5 Local and Global References
5.1 Local and Global References
Local ReferencesGlobal ReferencesWeak Global ReferencesComparing References5.2 Freeing References
Freeing Local ReferencesManaging Local References in Java 2 SDK Release 1.2Freeing Gloabl References5.3 Rules for Managing References
6 Exceptions
6.1 Overview
Caching and Throwing Exceptions in Native CodeA Utility Function6.2 Proper Exception Handling
Checking for ExceptionsHandling ExceptionsExceptions in Utility Functions
7 The Invocation Interface
7.1 Creating the Java Virtual Machine
7.2 Linking Native Applications with the Java Virtual Machine
Linking with a Known Java Virtual MachineLinking with Unknown Java Virtual Machine7.3 Attaching Native Threads
8 Additional JNI Features
8.1 JNI and Threads
ContraintsMonitor Entry and ExitMonitor Wait and NotifyObtaining aJNIEnv
Pointer in Arbitrary ContextsMatching the Thread Models8.2 Writing Internationalized Code
Creatingjstring
s from Native StringsTranslatingjstring
s to Native Strings8.3 Registering Native Methods
8.4 Load and Unload Handlers
TheJNI_OnLoad
HandlerTheJNI_OnUnload
Handler8.5 Reflection Support
8.6 JNI Programming in C++
9 Leveraging Existing Native Libraries
9.1 One-to-One Mapping
9.2 Shared Stubs
9.3 One-to-One Mapping versus Shared Stubs
9.4 Implementation of Shared Stubs