Java Native Interface (JNI)
Das ›Java Native Interface‹ (JNI) ermöglicht die nahtlose Interaktion zwischen Java-Programmen und nativen Anwendungen in C/C++. Mit JNI können Java-Programme native Funktionen aufrufen und umgekehrt kann eine native Anwendung über das Invocation Interface eine Java Virtual Machine (JVM) starten und steuern. In dieser Schulung lernen die Teilnehmer praxisnah, wie JNI-Projekte entwickelt werden und welche Herausforderungen dabei auftreten können –– von Exception-Handling und Multithreading über Sicherheitsaspekte bis zur expliziten Speicherfreigabe auf der nativen Seite und der Vermeidung von JVM-Abstürzen.
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‹).
Verweise
- NativeCall
- Java Native Access (JNA)
- JNAerator
- Jawin
- JACOB (JAva-COM Bridge)
- com4j
- SWIG
- Jawin, An Open Source Interoperability Solution