Mot-clé natif en Java - Comment fonctionne le mot-clé natif? (Exemple)

Table des matières:

Anonim

Introduction au mot-clé natif en Java

Le mot-clé natif agit comme un lien entre le langage JAVA et un morceau de code ou de bibliothèque écrit dans différentes langues, à l'exception de JAVA qui peut dépendre de la machine sur laquelle vous travaillez. Si le mot-clé natif est appliqué à une méthode, cela signifie que la méthode sera implémentée en utilisant du code natif écrit dans un autre langage (comme C ou C ++) via JNI (interface native JAVA).

Syntaxe

La syntaxe du code natif est la même que la définition de fonction normale avec le mot-clé «natif» ajouté au début de la fonction.

Par exemple:

Public class testing
(public native String testMethod (String parameter);)

Ici, le public est un modificateur d'accès. Il doit être public pour qu'un autre fichier puisse l'utiliser. La chaîne est le type de données de retour de la fonction. Il peut être entier, caractère ou booléen selon le mot clé. Le paramètre transmis à cette fonction est également de type chaîne de données. Tout doit être gardé dans la sous-classe.

Après la déclaration de fonction, nous appelons cette fonction via un objet créé et chargé dans la bibliothèque.

public static void main(String() args)
(
System.loadLibrary("testing");
testing testingnew = new testing();
String output = testingnew.stringMethod("NATIVE");
)

La bibliothèque définie ci-dessus doit être chargée en premier et n son objet est créé. À l'aide de cet objet, la fonction native est appelée.

Comment fonctionne le mot-clé natif?

Il devrait y avoir deux fichiers. L'un contenant du code JAVA tandis que l'autre doit avoir du code hérité C / C ++. Le code Java sera utilisé pour appeler le code hérité. Ce code hérité interagira avec le matériel et renverra la sortie attendue.

Lorsque le code hérité interagit avec le matériel, il ne suivra pas les directives définies par JAVA. Ce code effectuera le traitement souhaité pour obtenir la sortie et transmettre les résultats à JNI. L'interface native Java vérifiera ensuite dans son répertoire contenant toutes les règles relatives au code natif (cela vient d'un fichier appelé javah.exe dans le SDK). JNI est conçu dans le cadre de la boîte à outils Java. Après ce traitement, JAVA publiera les résultats dans le langage JAVA lui-même. Lorsque nous créons le programme dans JAVA, nous devons nous assurer qu'il existe un lien variable / flux de données entre le fichier JAVA et le fichier hérité afin qu'il y ait un flux régulier de données entre les deux.

Les étapes expliquant comment utiliser des mots clés natifs sont données ci-dessous:

  1. Écrivez le code JAVA contenant la méthode native, la bibliothèque partagée chargée et enregistrez-le en utilisant «filename.JAVA».
  2. Compilez le code JAVA et convertissez le code en bytecode.
  3. Créez un fichier d'en-tête C / C ++ contenant une signature de fonction native qui doit être appelée.
  4. Le code d'écriture C / C ++ a une implémentation d'une méthode native.
  5. Exécutez le fichier exécutable JAVA pour voir les résultats.

Exemple

Nous devons écrire du code dans Eclipse et exécuter le code pour créer une bibliothèque à l'aide de laquelle le code C sera implémenté.

Code : package com.slackerOne;

public class JPP (
public static native void pAccess();
public static native int pRead();
public static native void pWrite(int port, int output);
static(
System.loadLibrary("JPPlibs");
)
public void jAccess()(
JPP.pAccess();
)
public int jRead()(
return JPP.pRead();
)
public void jWrite(int port, int output)(
JPP.pWrite(port, output);
)
)

Après avoir enregistré ce code dans la nouvelle «classe» du projet java. Nous devons mettre en place un environnement d'exécution pour générer un fichier d'en-tête.

Lorsque nous l'exécuterons, nous devrions générer une bibliothèque.

Production:

Ici, nous avons créé le fichier d'en-tête à partir du code java qui servira de lien entre le code natif et le langage java.

Avantages du mot-clé natif en Java

  1. Il fournit un avantage supplémentaire à JAVA pour interagir avec le code écrit dans d'autres langues et réduire le travail pour avoir le même code écrit en JAVA, réduisant ainsi la redondance du code.
  2. Il améliore les performances globales du code. Comme le code est écrit dans d'autres langues, il peut être plus rapide lorsqu'il fonctionne avec le langage machine par rapport à JAVA. Nous pouvons ensuite utiliser le programme JAVA pour appeler ce code.
  3. En utilisant cette approche, nous pouvons donner directement des appels système. Réduire la probabilité d'interférence externe et améliorer la vitesse d'exécution du code.
  4. Vous pouvez appeler dynamiquement une bibliothèque préchargée (écrite dans une langue autre que JAVA) en utilisant un code de conduite arbitraire écrit en JAVA et toujours obtenir une réponse en JAVA.
  5. Il permet à JAVA d'accéder aux ressources matérielles disponibles pour être utilisées par d'autres langues uniquement.
  6. Dans le cas où vous avez déjà un code dépendant de la plate-forme pour votre application et dont les fonctionnalités ne sont pas prises en charge via JAVA, dans ce cas, nous pouvons avoir du code natif et lier ce code natif à JAVA via un mot-clé natif.

Règles

  1. Le mot-clé natif doit être utilisé avant le nom de la méthode.
  2. La déclaration de méthode native n'a pas de corps et doit se terminer par un point-virgule car ces méthodes ne sont pas définies en JAVA mais sont présentes en langage C / C ++.
  3. Les méthodes natives ne peuvent pas être déclarées comme une méthode abstraite.
  4. Puisqu'il n'y a aucune garantie si l'ancien code précédent est écrit conformément à la norme IEEE 754 (la norme IEEE pour l'arithmétique à virgule flottante est une norme technique pour l'arithmétique à virgule flottante établie en 1985 par l'Institut des ingénieurs électriciens et électroniciens), nous ne pouvons pas déclarer ces méthodes natives comme strictftp.
  5. La spécification Java Native Interface (JNI) est conçue par JAVA pour définir les règles et déclarations pour implémenter des méthodes natives, comme la conversion de types de données entre Java et le code natif.

Conclusion

Le mot-clé natif est celui qui comble le fossé entre les langues natives et JAVA. Cela peut être utilisé comme un lien essentiel si l'interaction de notre logiciel avec le matériel est plus pour obtenir le code efficace en utilisant du code préexistant. Cela rend l'implémentation moins efficace que la conception d'un nouveau code d'application à partir de zéro partout où cela pourrait être évité.

Articles recommandés

Ceci est un guide des mots-clés natifs en Java. Nous discutons ici comment le mot-clé natif fonctionne avec les exemples, ainsi que les avantages et les règles. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. JTabbedPane en Java
  2. Mot-clé protégé en Java
  3. Machine virtuelle Java
  4. Composants Swing en Java
  5. Mots-clés C ++