Introducción a la palabra clave nativa:
La palabra clave nativa actúa como un enlace entre el lenguaje JAVA y un trozo de código o librería escrito en diferentes lenguajes excepto JAVA que puede depender de la máquina en la que se esté operando. Si la palabra clave nativa se aplica a un método, entonces eso significa que el método se implementará utilizando código nativo escrito en algún otro lenguaje (como C o C++) a través de JNI (interfaz nativa de JAVA).
Sintaxis:
La sintaxis del código nativo es la misma que la definición de la función normal con la palabra clave «nativo» añadido en el inicio de la función.
Por ejemplo:
Public class testing
{public native String testMethod (String parameter);}
Aquí public es un modificador de acceso. Debe ser público para que otro archivo pueda utilizarlo. String es el tipo de datos de retorno de la función. Puede ser un entero, un carácter o un booleano dependiendo de la palabra clave. El parámetro pasado a esta función es de tipo de datos string también. Todo debe mantenerse bajo la clase.
Después de la declaración de la función llamamos a esta función a través del objeto creado y la biblioteca cargada.
public static void main(String args)
{
System.loadLibrary(«testing»);
testing testingnew = new testing();
String output = testingnew.stringMethod(«NATIVE»);
}
Se debe cargar primero la biblioteca definida anteriormente y luego se crea su objeto. Con la ayuda de este objeto , la función nativa es llamada.
¿Cómo funciona la palabra clave nativa?
Debe haber dos archivos. Uno que contenga código JAVA mientras que el otro debe tener código heredado C/C++. El código Java se utilizará para llamar al código heredado. Este código heredado interactuará con el hardware y devolverá la salida esperada.
Cuando el código heredado interactúa con el hardware entonces no seguirá las directrices establecidas por JAVA. Este código hará el procesamiento deseado para obtener la salida y pasar los resultados a JNI. La interfaz nativa de Java comprobará entonces en su directorio que contiene todas las reglas relativas al código nativo (Esto viene en el archivo llamado javah.exe en el SDK). JNI está diseñado como parte del conjunto de herramientas de Java. Después de este procesamiento el JAVA publicará las salidas en el propio lenguaje JAVA. Cuando estamos creando el programa en JAVA entonces debemos asegurarnos de que hay una variable / enlace de flujo de datos entre el archivo JAVA y el archivo de legado para que haya flujo de datos sin problemas entre ambos.
Pasos que explican cómo hacer uso de palabras clave nativas se dan a continuación:
- Escribir el código JAVA que contiene método nativo, biblioteca compartida cargado y guardarlo usando «nombre de archivo.JAVA».
- Compilar el código JAVA y convertir el código a bytecode.
- Crear el archivo de cabecera C/C++ que contiene la firma de la función nativa que debe ser llamada.
- Escribir el código C/C++ que tiene la implementación del método nativo.
- Ejecutar el archivo ejecutable JAVA para ver los resultados.
Ejemplos para mostrar la implementación de la palabra clave nativa:
Deberíamos escribir código en Eclipse y ejecutar el código para crear una librería usando la cual luego se implementará el código C.
Código: paquete 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);
}
}
Después de guardar este código en la nueva «clase» del proyecto java. Tenemos que configurar el entorno de ejecución para generar el archivo de cabecera.
Cuando ejecutemos esto deberíamos obtener una biblioteca generada.
Salida:
Aquí creamos el archivo de cabecera del código java que actuará como enlace entre el código nativo y el lenguaje java.