Java Native Interface (JNI)
Empfohlene Schulungsdauer: 2 Tage, insgesamt 16 Unterrichtsstunden à 45 Minuten
Kursziele
Das ›Java Native Interface‹ (JNI) erlaubt, Daten zwischen Java-Programmen und Nicht-Java-Programmen zu teilen und Funktionen in beiden Richtungen aufzurufen. Die JNI-Schulung zeigt, wie Java in C/C++-geschriebene Funktionen aufruft und aus einer nativen Anwendung heraus eine JVM über das Invocation Interface gestartet und gesteuert wird. Die Teilnehmer lernen alle Aspekte der JNI-Entwicklung anhand von Beispielen kennen und werden für die Probleme bei der Integration sensibilisiert, wie etwa dem Exception-Handling, Threading, Sicherheitsproblemen, der expliziten Deallokation aufgrund fehlender Garbage-Collections für die JNI-Seite bis zur Vermeidung von JVM-Crashs.
Zielgruppe
Software-EntwicklerKursvoraussetzungen
Der Kurs ›Java für Fortgeschrittene‹ oder ›Java für Umsteiger‹ oder vergleichbare Kenntnisse.Seminarinhalte
Das Java Native Interface (JNI)
- Native Methoden am Beispiel der Dateioperationen
- Historie von JNI
- Pro und Kontra JNI; JNI aus Performance-Gründen?
- Deklarieren von nativen Methoden, JNI-Header-Dateien, C-Prototypen,javah
- Native Methode implementieren, compilieren, linken
- Aufruf nativer Methoden, Klassenlader, entladen von nativen Bibliotheken
- Methodenaufrufe, C-Stack
Zugriff auf Java-Objekte und Eigenschaften
- JNI-Typen, Typ-Mapping, primitive Typen und Referenztypen,jvalue
-jclassundjobject
- Java-Strings und native Strings, UTF-8 Strings,jstring, JNI-String-Funktionen
- Internationalisierung
- Zugriffe auf Arrays, JNI-Feld-Funktionen
- Attributzugriffe, statische Attribute und Objektattribute
- Methodenaufrufe,MethodDescriptor, statische Methoden und Objektmethoden
- Konstruktoraufrufe
- Performance-Optimierung durch Cachen von Method-ID und Field-ID
Referenzen
- Lokale und globale Referenzen
- Weak Global Reference
- Reference IDs, Referenzen vergleichen
- Ressourcen freigeben
Fehlerbehandlung
- Ausnahmen auslösen und auffangen
- JVM Exceptions
- Asynchrone Exceptions
Threads
- Threads erzeugen
- Synchronisation mit Monitor Entry und Monitor Exit
- Benachrichtigung mit Monitor Wait und Monitor Notify
-JNIEnvin verschiedenen Threads
Invocation Interface
- Erzeugen einer JVM
- Native Anwendungen mit JVM linken
- Native Threads und die JVM
JNI in der Praxis
- Handlers,The JNI_OnLoad,JNI_OnUnload
- Debugging von Java- und C/C++-Code
- Java Debug Interface (JDI)
- JVM Profiler Interface (JVMPI), JVM Tool Interface (JVMTI) ab Java 5
JNI-Wrapper und JNI-Alternativen
- Java/Win32 Integration, NativeCall
- Zugriff auf DLLs über ›Java Native Access‹ (JNA), JNAerator
- COM-Brücken: Jawin, JACOB, com4j
- Java-DCOM Bridge j-Interop
- J/Invoke
- SWIG (Simplified Wrapper and Interface Generator)
Schulungsunterlagen
Deutschsprachige Unterlagen (Kopien der Folien), Zertifikat.
Eingesetzte Seminar-Software
Als Laufzeitumgebung wird standardmäßig Java SE 7 von Oracle zusammen mit der Entwicklungsumgebung Eclipse 4.2 bzw. Eclipse 3.7.2 eingesetzt (Paket ›Eclipse IDE for Java EE Developers‹). Auf Wunsch auch NetBeans 7 oder andere Entwicklungsumgebungen (IntelliJ IDEA, Oracle JDeveloper).