Introduction à JNI
JNI est l'abréviation de l'interface native Java, qui fournit plusieurs API pour implémenter la communication entre Java et d'autres langues (principalement C & C ++). À partir de Java 1.1, la norme JNI fait partie de la plate-forme Java, qui permet au code Java d'interagir avec le code écrit dans d'autres langues. JNI a été initialement conçu pour les langages compilés natifs, en particulier C et C ++, mais il ne vous empêche pas d'utiliser d'autres langages de programmation, tant que la convention d'appel est prise en charge. L'utilisation de Java pour interagir avec le code compilé localement perd souvent la portabilité de la plate-forme. Cependant, dans certains cas, cela est acceptable, voire nécessaire. Par exemple, utilisez certaines anciennes bibliothèques pour interagir avec le matériel, les systèmes d'exploitation ou pour améliorer les performances du programme. La norme JNI doit au moins s'assurer que le code local peut fonctionner dans n'importe quel environnement de machine virtuelle Java. Autrement dit, JNI est pratique pour Java d'appeler des fonctions dans les langues C et C ++; Java fournit des interfaces (fichiers d'en-tête), C et C ++ pour implémenter ces fonctions pour que Java appelle.
Il n'y a pas d'interface pour effacer l'écran en Java, et tout le système ("CLS") dans le langage C peut être appelé via JNI. Bien sûr, il est limité à la compensation de l'écran CMD et ne prend pas en charge la compensation de la console de la console Eclipse.
étape:
1. Écrivez l'interface native de compensation de l'écran de Java.
classe publique Clear {static {System.LoadLibrary ("Clear"); // Load Clear.dll Dynamic Library} public native static void clscmd (); // écran clair}2. Compiler clear.java et générer clear.class
3. Utilisez Javah pour générer le fichier d'en-tête de langue C correspondant Clear.h
4. Utilisez Visual Studio pour créer des projets Win32 et générer des bibliothèques dynamiques DLL correspondantes
4.1 Créer un projet
4.2 Type d'application: DLL
4.3 Importez le fichier d'en-tête Clear.h généré à l'étape 3 et les deux fichiers d'en-tête JNI.h et jni_md.h qui doivent être invoqués au projet
JNI.h est dans le répertoire inclué du chemin d'installation JDK.
JNI_MD.H est dans le répertoire Win32 dans le répertoire inclué du chemin d'installation JDK.
Copiez et collez ces trois fichiers d'en-tête dans le répertoire du projet:
Ensuite, importez-les dans vs:
Fichier d'en-tête ---> Ajouter ---> Éléments existants ---> Sélectionnez les trois fichiers d'en-tête ci-dessus ---> Ajouter
Modifier #include <jni.h> dans le fichier d'en-tête Clear.h vers #include "Jni.h"
4.4 Ajouter un fichier .cpp et écrire le code C.
Fichier source ---> Ajouter ---> nouvel élément ---> C ++ Fichier: Clear.cpp
#include "clear.h" #include <iostream> jniexport void jnicall java_clear_clscmd (jNienv *, jclass) {System ("CLS"); // C's Screen Clear}}4.5 Configuration de la bibliothèque dynamique DLL 64 bits pour générer
Solution ---> Propriétés
4.6 Générer la DLL
Solution ---> Cliquez avec le bouton droit pour générer
5 test
5.1 Copier Clear.dll dans le répertoire où Clear.Class est situé aux étapes 1 et 2.
5.2 Classes de test d'écriture
classe publique TestJni {public static void main (String [] args) {System.out.println ("Hello Jni"); Clear.clScmd (); // Écran d'effectif}}5.3 Classes de test de compilation
javac testjni.java
5.4 Exécuter la classe de test
java testjni
Écran parfait clair, faites-le! ! !