Java:JNA

De WIKI.minetti.org
Révision de 7 avril 2016 à 17:58 par Jp (discussion | contributions) (Page créée avec « == But == Java Native Access (JNA) permet à une application Java d'exécuter du code natif placé dans des bibliothèques chargées dynamiquement (DLL sous Windows et SO... »)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

But

Java Native Access (JNA) permet à une application Java d'exécuter du code natif placé dans des bibliothèques chargées dynamiquement (DLL sous Windows et SO sous Linux).

JNA est bien adapté pour accéder à des bibliothèques tiers. Par contre si l'on doit créer ses propres bibliothèques, JNI est mieux adapté.

Pré-requis

  • Pour intégrer JNA dans un projet, il est impératif d'insérer jna.jar dans le CLASSPATH. Avec Maven, il suffira d'inclure dans le POM:
<dependency>
        <groupId>net.java.dev.jna</groupId>
        <artifactId>jna</artifactId>
        <version>3.4.0</version>
</dependency>
  • Ensuite s'il l'on veut générer les interfaces et classes Java pour l'accès à une bibliothèque, on téléchargera l'outil jnaerator.

Mode opératoire

  • A l'aide du header de la bibliothèque et de l'outil jnaerator, générer les différentes classes et interfaces Java.

Types opaques

On trouve souvent des types opaques dans les headers des bibliothèques. Ils se présentent sous la forme:

struct libusb_device;

Ils permettent de porter des données dont le contenu n'est visible que par la bibliothèque.