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-Entwickler

Kursvoraussetzungen

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
    - jclass und jobject
    - 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) 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).

Schlagwörter

5
142