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... »)
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.