| Contents | Prev | Next | Java Native Interface Specification |
This chapter discusses how the JNI maps Java types to native C types.
The following definition is provided for convenience.
#define JNI_FALSE 0
#define JNI_TRUE 1
The jsize integer type is used to describe cardinal indices and sizes:
typedef jint jsize;
typedef jobject jclass;In C++, JNI introduces a set of dummy classes to enforce the subtyping relationship. For example:
class _jobject {};
class _jclass : public _jobject {};
...
typedef _jobject *jobject;
typedef _jclass *jclass;
struct _jfieldID; /* opaque structure */
typedef struct _jfieldID *jfieldID; /* field IDs */
struct _jmethodID; /* opaque structure */
typedef struct _jmethodID *jmethodID; /* method IDs */
jvalue union type is used as the element type in argument arrays. It is
declared as follows:
typedef union jvalue {
jboolean z;
jbyte b;
jchar c;
jshort s;
jint i;
jlong j;
jfloat f;
jdouble d;
jobject l;
} jvalue;
long f (int n, String s, int[] arr);has the following type signature:
(ILjava/lang/String;[I)J
\u0001 to \u007F are
represented by a single byte, as follows:
The seven bits of data in the byte give the value of the character that is
represented. The null character (\u000) and characters in the range \u0080
to \u07FF are represented by a pair of bytes, x and y, as follows:
The bytes represent the character with the value ((x&0x1f)<<6)+(y&0x3f).
Characters in the range \u0800 to \uFFFF are represented by three bytes, x, y,
and z:
The character with the value ((x&0xf)<<12)+(y&0x3f)<<6)+(z&0x3f) is
represented by the three bytes.
There are two differences between this format and the "standard" UTF-8
format. First, the null byte (byte)0 is encoded using the two-byte format
rather than the one-byte format. This means that Java VM UTF-8 strings never
have embedded nulls. Second, only the one-byte, two-byte, and three-byte
formats are used. The Java VM does not recognize the longer UTF-8 formats.
Java Native Interface Specification (HTML generated by dkramer on March 15, 1997)
Copyright © 1996, 1997 Sun Microsystems, Inc.
All rights reserved
Please send any comments or corrections to jni@java.sun.com