next up previous contents index
Next: Mapping zwischen Java und Up: Deklaration rechnerspezifischer Methoden Previous: Deklaration auf der Java-Seite

Deklaration auf der proprietären Seite

Die Realisierung der Methode auf proprietärer Seite muß einmal im Header-File und in einer Implementierung geschehen. Das Header-File wird unter Zuhilfenahme des Java Development Kit erzeugt. Einmal wird das .java File mit dem javac Compiler übersetzt und schließlich das .h File mit javah -jni <Dateiname> erzeugt. Die Struktur und die Einträge, welche in dem .h File gemacht werden sind exemplarisch in Abbildung 6.20 abgebildet. Im wesentlichen ist darauf zu achten, wie der Prototyp der Methoden deklariert wird. Es ist darauf zu achten, daß JNICALL und JNIEXPORT immer dann in den Methodenprototyp eingebunden werden sollen, wenn der Code auf Plattformen wie Win32 übersetzt wird. Diese Bezeichner stellen den Export und Import spezieller Schlüsselwörter oder Funktionen zwischen DLL's zur Verfügung. Der Bezeichner setzt sich im wesentlichen aus 4 Elementen zusammen:

Zusätzlich zu den benutzerspezifischen Parametern werden zwei zusätzliche Parameter bei der Übergabe benötigt. Der erste Parameter JNIEnv* stellt den JNI Interface Pointer dar. Der Pointer verwaltet eine Funktionstabelle, in welcher die rechnerspezifischen Methoden als ein jeweiliger Eintrag aufgeführt sind. Der andere Parameter jobject stellt die Referenz auf das Objekt selbst dar (ähnlich dem this Pointer unter C++).
In Abbildung 6.20 ist die Implementierung einer rechnerspezifischen Methode zu finden. Dort wird bei den (*env)-> Aufrufen deutlich, wie das Interface genutzt wird, um den Datenaustausch zwischen der Methode und der Java Virtual Machine (JVM) zu realisieren.
Innerhalb der Header-Datei, welche für eine proprietäre Schnittstelle benötigt wird, werden für den späteren Gebrauch die Typ-Signaturen der übergebenen Parameter angegeben. Die Elemente, aus denen die Signaturen aufgebaut werden sind in Tabelle 6.1 aufgeführt.

Signatur Java Datentyp
Z boolean
B byte
C char
S short
I int
J long
F float
D double
L <Klassenbezeichner>; <Klassenbezeichner>
[ <Datentyp> <Datentyp >[]
( Argumenttypen ) Rückgabetypen Methodenstruktur


[Die Typ-Signaturen des Java Native Interface] Die Typ-Signaturen des Java Native Interface 


next up previous contents index
Next: Mapping zwischen Java und Up: Deklaration rechnerspezifischer Methoden Previous: Deklaration auf der Java-Seite

Beispielbenutzer SuSE Linux 6.0
Sun May 9 21:16:36 MEST 1999