Java Native Interface Specification


Contents | Previous | Next

Contents


1. Introduction

Java Native Interface Overview

Background

JDK 1.0 Native Method Interface

Java Runtime Interface

Raw Native Interface and Java/COM Interface

Objectives

Java Native Interface Approach

Programming to the JNI

Changes in JDK 1.1.2

2. Design Overview

JNI Interface Functions and Pointers

Loading and Linking Native Methods

Resolving Native Method Names

Native Method Arguments

Referencing Java Objects

Global and Local References

Implementing Local References

Accessing Java Objects

Accessing Primitive Arrays

Accessing Fields and Methods

Reporting Programming Errors

Java Exceptions

Exceptions and Error Codes

Asynchronous Exceptions

Exception Handling

3. JNI Types and Data Structures

Primitive Types

Reference Types

Field and Method IDs

The Value Type

Type Signatures

UTF-8 Strings

4. JNI Functions

Interface Function Table

Version Information

GetVersion

Class Operations

DefineClass

FindClass

GetSuperclass

IsAssignableFrom

Exceptions

Throw

ThrowNew

ExceptionOccurred

ExceptionDescribe

ExceptionClear

FatalError

Global and Local References

NewGlobalRef

DeleteGlobalRef

DeleteLocalRef

Object Operations

AllocObject

NewObject NewObjectA NewObjectV

GetObjectClass

IsInstanceOf

IsSameObject

Accessing Fields of Objects

GetFieldID

Get<type>Field Routines

Set<type>Field Routines

Calling Instance Methods

GetMethodID

Call<type>Method Routines Call<type>MethodA Routines Call<type>MethodV Routines

CallNonvirtual<type>Method Routines CallNonvirtual<type>MethodA Routines CallNonvirtual<type>MethodV Routines

Accessing Static Fields

GetStaticFieldID

GetStatic<type>Field Routines

SetStatic<type>Field Routines

Calling Static Methods

GetStaticMethodID

CallStatic<type>Method Routines CallStatic<type>MethodA Routines CallStatic<type>MethodV Routines

String Operations

NewString

GetStringLength

GetStringChars

ReleaseStringChars

NewStringUTF

GetStringUTFLength

GetStringUTFChars

ReleaseStringUTFChars

Array Operations

GetArrayLength

NewObjectArray

GetObjectArrayElement

SetObjectArrayElement

New<PrimitiveType>Array Routines

Get<PrimitiveType>ArrayElements Routines

Release<PrimitiveType>ArrayElements Routines

Get<PrimitiveType>ArrayRegion Routines

Set<PrimitiveType>ArrayRegion Routines

Registering Native Methods

RegisterNatives

UnregisterNatives

Monitor Operations

MonitorEnter

MonitorExit

Java VM Interface

GetJavaVM

5. The Invocation API

Overview

Creating the VM

Attaching to the VM

Unloading the VM

Initialization Structures

Invocation API Functions

JNI_GetDefaultJavaVMInitArgs

JNI_GetCreatedJavaVMs

JNI_CreateJavaVM

DestroyJavaVM

AttachCurrentThread

DetachCurrentThread

 


Contents | Previous | Next