Quelles sont les méthodes natives en Java et où doivent-elles être utilisées?

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 en Java et où doivent-elles être utilisées?

Une fois que vous voyez un petit exemple, il devient clair:

Main.java :

public class Main { public native int intMethod(int i); public static void main(Ssortingng[] args) { System.loadLibrary("Main"); System.out.println(new Main().intMethod(2)); } } 

Main.c :

 #include  #include "Main.h" JNIEXPORT jint JNICALL Java_Main_intMethod( JNIEnv *env, jobject obj, jint i) { return i * i; } 

Comstackr et exécuter :

 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.

Donc, il est clair que cela vous permet de:

  • appeler une bibliothèque compilée chargée dynamicment (ici écrite en C) avec un code d’assemblage arbitraire de Java
  • et obtenir des résultats en Java

Cela pourrait être utilisé pour:

  • écrire du code plus rapide sur une section critique avec de meilleures instructions d’assemblage du processeur (pas de processeur portable)
  • effectuer des appels système directs (pas de système d’exploitation portable)

avec le compromis de la portabilité inférieure.

Il vous est également possible d’appeler Java depuis C, mais vous devez d’abord créer une JVM dans C: Comment appeler les fonctions Java à partir de C ++?

Exemple sur GitHub avec lequel vous pouvez jouer.

La méthode est implémentée dans du code “natif”. C’est-à-dire un 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 interfacer des appels système ou des bibliothèques écrites dans d’autres langages de programmation.

J’aime savoir où nous utilisons les méthodes natives

Idéalement pas du tout. En réalité, certaines fonctionnalités ne sont pas disponibles en Java et vous devez appeler du code C.

Les méthodes sont implémentées en code C.

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 les fonctionnalités dont vous avez besoin. 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 la langue dans laquelle je suis le mieux placé. Cependant, je maîsortingse également C. programme j’ai besoin de calculer une équation vraiment complexe. J’utiliserais une méthode native pour cela, car je connais du C ++ et je sais que C ++ est beaucoup plus rapide que Java, donc si je écrivais ma méthode en C ++, ce serait plus rapide. Dites aussi que je veux interagir avec un autre programme ou appareil. Cela utiliserait également une méthode native, car C ++ a quelque chose appelé pointeurs, ce qui me permettrait de le faire.

Java code nécessaire:

  • h / w access et contrôle.
  • utilisation de s / w et de services système commerciaux [liés à h / w].
  • utilisation de s / w hérité qui ne peut pas ou ne peut pas être porté sur Java.
  • Utilisation du code natif pour effectuer des tâches à durée critique

j’espère que ces points répondent à votre question 🙂