Palabra clave nativa en Java

La palabra clave native en Java se aplica a un método para indicar que el método se implementa en código nativo utilizando JNI (interfaz nativa de Java). La palabra clave native es un modificador que solo se aplica a los métodos y no podemos aplicarlo en ningún otro lugar. Los métodos que se implementan en C, C++ se denominan métodos nativos o métodos foráneos.

El modificador nativo indica que un método se implementa en código dependiente de la plataforma, a menudo visto en lenguaje C. El modificador nativo indica que un método se implementa en código dependiente de la plataforma, a menudo en C.

Principales objetivos de la palabra clave nativa

  • Para mejorar el rendimiento del sistema.
  • Para lograr una comunicación a nivel de máquina/nivel de memoria.
  • Para usar código heredado que no sea Java ya existente.

Conclusión: el código de llamada de exploración de la aplicación Java está escrito en C, C++ o ensamblador. 

Los pasos para la creación de métodos nativos son los siguientes:

  1. Escribir código Java
  2. Compile el código java.
  3. Crear encabezado C (archivo .h)
  4. Cree un archivo de resguardos de C (usando la herramienta: Java HEdge)
  5. Escribir código C
  6. Crear una biblioteca de código compartido (DLL)
  7. Ejecutar aplicación

Implementación: palabra clave nativa en Java

Primero tomemos el código Java aleatorio que contiene el método nativo y luego lo compilaremos. Hemos terminado con los dos pasos anteriores. Para los pasos 3 y 4, usaremos el .exe existente conocido como java HEdge” para crear el encabezado C y el archivo auxiliar C. 

Ahora insertaremos (escribiremos) nuestro código C (o usaremos) y luego usaremos DLL, crearemos objetos del mismo dentro de nuestra aplicación (Ejemplo principal 1A) y luego llamaremos a los métodos nativos dentro del programa Java.  

Ejemplo 1-A: Solicitud 

Java

// Java Program to Illustrate Native Keyword
// Inside DLL named: NameOfDLLFile
 
// Main class
// NativeDemo
class GFG {
 
    // Method 1
    public static void main(String[] args)
    {
 
        int var;
 
        // Here we will not be having body of this method
        // in our java code here
        NameOfDLLFile obj = new NameOfDLLFile();
 
        obj.var = null;
 
        System.out.println("Before native method: var = "
                           + var);
 
        obj.test();
 
        System.out.println("After native method: var = "
                           + var);
    }
 
    // Native method
    public native void test()
    {
 
        static
        {
 
            // We will be loading body from DLL file
            // It has to be present in DLL file
            System.loadLibrary("NameOfDLLFile");
 
            // Above C code in loaded in the JVM
        }
    }
}

Para el código C del programa anterior que se comparte en DLL es el siguiente:

Ejemplo 1-B: Compatibilidad con el ejemplo anterior 

C++

// C++ Program to Be Shared In DLL to Illustrate
// Native Method in Java
 
// Importing required libraries
#include <iostream>
 
using namespace std;
// Method 2
// Native
void test(int var)
{
    cout << var;
}
 
// Method 1
// Main driver method
int main()
{
 
    test(10);
 
    return 1;
}

Nota: DLL se nombra como se puede percibir en el programa 1A: NameOfDLLFile

Producción:

Before native method: var = null
After native method: var = 10

Recuerde que hay ciertos puntos importantes sobre las palabras clave nativas , que son los siguientes:

  • Para los métodos nativos, la implementación ya está disponible en lenguajes antiguos como C, C++ y no somos responsables de proporcionar una implementación. Por lo tanto, la declaración del método nativo debe terminar con ; (punto y coma).
  • No podemos declarar un método nativo como abstracto .
  • No podemos declarar un método nativo como strictfp porque no hay garantía de que los lenguajes antiguos (C, C++) sigan el estándar IEEE 754. Por lo tanto, la combinación nativa strictfp es una combinación ilegal para los métodos.
  • La principal ventaja de la palabra clave nativa es la mejora del rendimiento, pero la principal desventaja de la palabra clave nativa es que rompe la naturaleza independiente de la plataforma de Java.

Nota: revise la palabra clave strictfp de Java, ya que es uno de los conceptos que incluso los mejores desarrolladores de Java desconocen.

En esta sección, explicamos cómo declarar un método nativo en Java y cómo generar el prototipo de función C/C++ correspondiente.

Sintaxis: declaración de métodos nativos

private native String getLine(String prompt);

Sintaxis: desde el lado del idioma nativo

javah -jni Prompt
JNIEXPORT jstring JNICALL Java_Prompt_getLine(JNIEnv *, jobject, jstring);

Este artículo es una contribución de Bishal Kumar Dubey . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *