Java >> Tutoriel Java >  >> Java

Tutoriel JNA pour charger une DLL C/C++ avec un exemple de programme Java

Bonjour chers lecteurs, nous allons aujourd'hui vous parler du concept JNA (Java Native Access) utilisé dans les applications Java. Dans ce didacticiel JNA, vous trouverez des conseils de codage utiles pour appeler les fonctions de la bibliothèque "C" ou l'API à l'aide de JNA à partir du code Java.

Vous pouvez appliquer le concept JNA dans diverses applications, telles qu'un framework d'automatisation des tests, où vous pouvez utiliser JNA pour intégrer votre code C au framework d'automatisation.

Et si vous créez des extensions de navigateur Web dans lesquelles vous devez interagir avec le système de fichiers, vous pouvez utiliser JNA pour appeler les API du système afin de répondre à vos besoins.

Dans ce didacticiel JNA, nous vous donnerons une idée de base de JNA via un exemple de code. Vous pouvez directement réutiliser le code de cet exemple JNA dans votre projet.

Tutoriel JNA – Apprendre étape par étape

Qu'est-ce que JNA (Java Native Access) ?

JNA est une technologie indépendante de la plate-forme permettant d'appeler des API C natives à partir du code Java. Il prend en charge plusieurs plates-formes et les types de bibliothèques C suivants.

1- DLL (Dynamic Link Library) sur les plates-formes Windows.

2- SO (objet partagé) sur les plates-formes Linux.

Il existe une méthode alternative connue sous le nom de JNI qui peut également charger une DLL C/C++. Il est également très populaire mais nécessite l'écriture de code wrapper Java supplémentaire pour gérer les types de données et les méthodes de la bibliothèque C/C++ sous-jacente.

Nous couvrirons la méthode JNI en détail un peu plus tard. Pour l'instant, concentrons-nous sur l'apprentissage du concept JNA et de son application.

JNA , si vous le comparez avec JNI est beaucoup plus facile à utiliser et à mettre en œuvre. Cela augmentera votre vitesse de codage si vous travaillez sur un projet Java utilisant des bibliothèques C.

Créer un exemple de projet JNA

Étape 1) Télécharger les fichiers JNA

La première étape consiste à télécharger et importer JNA (Accès Java Natif).

Après cela, vous devez créer un projet Java et importer les fichiers jar JNA.

Étape 2) Créer une classe Java pour charger la bibliothèque C

Ensuite, créez un fichier de classe Java qui charge la bibliothèque C comme mentionné ci-dessous-

C'est le fichier d'interface qui contient la définition des fonctions JNA définies dans la bibliothèque "C".

package JNAApiInterface;
import com.sun.jna.Library;

public interface JNAApiInterface extends Library {
    JNAApiInterface INSTANCE = (JNAApiInterface) Native.loadLibrary((Platform.isWindows() ? "msvcrt" : "c"), JNAApiInterface.class);
    void printf(String format, Object... args);
    int sprintf(byte[] buffer, String format, Object... args);
    int scanf(String format, Object... args);
}

Étape 3) Créez une autre classe Java pour appeler l'API C

Le deuxième fichier Java est le fichier d'implémentation qui importe la classe Interface et appelle son API pour validation.

package JNABucket;
import JNAApiInterface;
import com.sun.jna.Native;

public class JNABucket {
    public static void main(String args[]) {
        JNAApiInterface jnaLib = JNAApiInterface.INSTANCE;
        jnaLib.printf("Hello World");
        String testName = null;

        for (int i = 0; i < args.length; i++) {
            jnaLib.printf("\nArgument %d : %s", i, args[i]);
        }

        jnaLib.printf("\Please Enter Your Name:\n");
        jnaLib.scanf("%s", testName);
        jnaLib.printf("\nYour name is %s", testName);
    }
}

Doit lire - Questions d'entretien sur la collection Java

Note de bas de page - Tutoriel JNA

Nous espérons que ce didacticiel JNA vous aura apporté la solution souhaitée à votre problème. Si tel est le cas, veuillez nous laisser vos commentaires dans la section des commentaires.

Vos commentaires encourageront notre équipe à fournir un meilleur contenu chaque fois que nous décidons de publier.

En fin de compte, si vous trouvez ce didacticiel JNA utile, ne manquez pas de partager ce message avec vos amis et sur les réseaux sociaux de votre choix.

Meilleur,

TechBeamers


Balise Java