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:
Java_
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++).(*env)->
Aufrufen deutlich, wie das Interface genutzt
wird, um den Datenaustausch zwischen der Methode und der Java Virtual Machine (JVM) zu
realisieren.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