Java Native Interface (JNI)
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.
Inhalte des Seminars
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
jclass
undjobject
- 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
JNIEnv
in 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)
JNI-Wrapper und JNI-Alternativen
- Java/Win32 Integration, NativeCall
- Zugriff auf DLLs über ›Java Native Access‹ (JNA), JNAerator
- COM-Brücken
- SWIG (Simplified Wrapper and Interface Generator)
Termine / Kontakt
Jedes Seminar führt tutego als kundenangepasstes Inhouse-Seminar durch.
Alle unsere Seminare können zudem als Live-Online-Seminar besucht werden.
Wir helfen Ihnen gerne bei der Anmeldung und einen passenden Termin zu finden. Kontaktieren Sie uns per E-Mail oder unter 0800/tutegos (kostenlos aus allen Netzen).
Die Fakten
- Empfohlene Schulungsdauer: 2 Tage, insgesamt 16 Unterrichtsstunden à 45 Minuten
- Zielgruppe: Software-Entwickler
- Vorkenntnisse: Der Kurs ›Java für Fortgeschrittene‹ oder ›Java für Umsteiger‹ oder vergleichbare Kenntnisse.
- Schulungsunterlagen: Deutschsprachige Unterlagen (Kopien der Folien), Zertifikat
- Seminar-Software: Java 21 ist die Standardversion, die in Verbindung mit der IntelliJ IDEA (Community-Edition) verwendet wird. Auf Wunsch auch die Eclipse IDE (Paket ›Eclipse IDE for Enterprise Java Developers‹) oder andere Entwicklungsumgebungen (NetBeans, Oracle JDeveloper) und JDK 8.
Verweise
- NativeCall
- Java Native Access (JNA)
- JNAerator
- Jawin
- JACOB (JAva-COM Bridge)
- com4j
- SWIG
- Jawin, An Open Source Interoperability Solution