En esta seccion se ve como declarar un metodo nativo en Java y como generar el encabezado de la funcion en C.
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);
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: