2016-06-27 13 views
3

Sorry, das ist vielleicht eine grundlegende Frage. Was ist der Unterschied zwischen JNA Direct Mapping und Interface Mapping?JNA direkt vs Schnittstelle zuordnen?

ist meine Interpretation richtig:

  • Direkte Abbildung: direkt das Bibliothek-Objekt verwenden (wie statisches Haupt in Java)

  • Interface-Mapping: ein intance der erstellen Bibliotheksobjekt.

Vielen Dank im Voraus!

Antwort

4

Direkte Zuordnung bindet direkt Ihre Java-Methoden (mit dem Modifikator native deklariert) an nativen Code, der versucht, den Aufruf-Stack unverändert zu verwenden. Die direkte Zuordnung ist am effektivsten, wenn Sie Ihre Funktionsargumente einschränken und Werte auf primitive Typen zurückgeben (der Typ Pointer kann als primitiv angesehen werden).

Die Schnittstellenzuordnung verwendet eine Proxy und übersetzt dynamisch Java-Funktionsignaturen in einen generischen nativen Einstiegspunkt mit einer Liste von Argumenten, die anschließend in native Primitive übersetzt werden müssen. Es ist flexibler w/r/t Java-Typen zu und von nativen konvertieren, aber kann aufgrund der Laufzeitübersetzung von Argumenten viel langsamer sein.