Declarando Metodos Nativos

En esta seccion se ve como declarar un metodo nativo en Java y como generar el encabezado de la funcion en C.

En el codigo Java: (Prompt.java)

El programa Prompt.java llama a un metodo nativo, el cual espera a que el usuario ingrese algun String y lo retorna.

Prompt.class contiene un metodo main, usado para incar el programa, y un metodo nativo llamado getLine, declarado de la siguiente forma:

   private native String getLine(String prompt);

En el lado nativo

Usted debera declarar e implementar los metodos nativos en un lenguaje nativo (como C o C++) Anted de hacer esto, usted debe generar el Header file que contiene el encabezado para la funcion en C asociada al metodo nativo. Para el caso de nuestro ejemplo el encabezado de getLine() es:

JNIEXPORT jstring JNICALL

     Java_Prompt_getLine(JNIEnv *, jobject, jstring);

En el archivo que implementa este encabezado debe aparacer, por supuesto, identico encabezado. 

El nombre de un metodo nativo es la concatenacion de los siguientes componentes: 

    * el prefijo "Java_"

    * el nombre completo de la Clase a la cual pertenece este metodo.

    * un underscore de separador "_"

    * el nombre del metodo en Java

 

Nota: Para la sobrecarga de nombres se le inserta a lo anterior dos underscores despues del nombre del metodo, seguido de la "signature" de los argumentos. ("signature" se explica despues)

Lado Java Lado Nativo
getLine(String) Java_Prompt2_getLine__Ljava_lang_String_2
getLine(String, int) Java_Prompt2_getLine__Ljava_lang_String_2I

 Ejemplos:

Promedio.java

Promedio.c

HelloWorld.java

HelloWorld.c

CallBacks.java

CallBacks.c