Une méthode native a la même syntaxe qu'une méthode abstraite, mais où est-elle implémentée?
Quelles sont les méthodes natives dans Java et où doivent-elles être utilisées?
Une fois que vous voyez un petit exemple, cela devient clair:
Main.Java :
public class Main {
public native int intMethod(int i);
public static void main(String[] args) {
System.loadLibrary("Main");
System.out.println(new Main().intMethod(2));
}
}
Main.c :
#include <jni.h>
#include "Main.h"
JNIEXPORT jint JNICALL Java_Main_intMethod(
JNIEnv *env, jobject obj, jint i) {
return i * i;
}
Compilez et exécutez :
javac Main.Java
javah -jni Main
gcc -shared -fpic -o libMain.so -I${Java_HOME}/include \
-I${Java_HOME}/include/linux Main.c
Java -Djava.library.path=. Main
Sortie :
4
Testé sur Ubuntu 14.04 avec Oracle JDK 1.8.0_45.
Il est donc clair que cela vous permet de:
Cela pourrait être utilisé pour:
avec le compromis de la portabilité inférieure.
Vous pouvez également appeler Java à partir de C, mais vous devez d'abord créer une machine virtuelle Java dans C: Comment appeler Java C++?
Exemple sur GitHub pour vous permettre de jouer.
La méthode est implémentée en code "natif". C'est-à-dire du code qui ne s'exécute pas dans la machine virtuelle Java. Il est généralement écrit en C ou C++.
Les méthodes natives sont généralement utilisées pour établir une interface avec des appels système ou des bibliothèques écrites dans d'autres langages de programmation.
J'aime savoir où utilisons-nous les méthodes natives
Idéalement pas du tout. En réalité, certaines fonctionnalités ne sont pas disponibles dans Java et vous devez appeler du code C.).
Les méthodes sont implémentées en code C.
Nécessité du code natif Java:
espérons que ces points répondent à votre question :)
Les méthodes natives vous permettent d’utiliser du code provenant d’autres langages tels que C ou C++ dans votre code Java. Vous les utilisez lorsque Java ne fournit pas la fonctionnalité Par exemple, si j’écrivais un programme pour calculer une équation et en créer un graphique linéaire, j’utiliserais Java, car c’est le langage dans lequel je maîtrise le mieux. Cependant, je maîtrise également C. Say in Une partie de mon programme nécessite de calculer une équation très complexe et d’utiliser une méthode native, car je connais un peu le C++ et je sais que C++ est beaucoup plus rapide que Java, donc si j’écrivais ma méthode en C++, ce serait plus rapide. En outre, disons que je souhaite interagir avec un autre programme ou un autre périphérique, ce qui utiliserait également une méthode native, car C++ possède un pointeur, qui me permettrait de le faire.