Utilizar el Java Native Interface (JNI)

En este paso se utiliza el programa de utilidad javah para generar un fichero de cabecera (un fichero .h) desde la clase Java HelloWorld. El fichero de cabecera proporciona un prototipo de funcin para la implementacin del mtodo nativo displayHelloWorld() definido en esta clase.

Ejecutamos javah ahora sobre la clase HelloWorld que se cre en los pasos anteriores.

Por defecto, javah sita el nuevo fichero .h en el mismo directorio que el fichero .class. Se utiliza la opcin -d para instruir a javah para que site el fichero de cabecera en un directorio diferente.

El nombre del fichero de cabecera es el nombre de la clase java con extensin .h. Por ejemplo, el comando anterior generar un fichero llamado HelloWorld.h.

.La definicin de Funcin

Mira el fichero de cabecera HelloWorld.h.

#includejava example-1dot1/HelloWorld.h

Java_HelloWorld_displayHelloWorld() Es la funcin que proporciona la implementacin del mtodo nativo de la clase HelloWorld, que se escribir en el Paso 4: Escribir la Implementacin del Mtodo Nativo. Se utiliza la firma de la funcin cuando se escribe la implementacin del mtodo nativo.

Si HelloWorld contuviera otros mtodos nativos, sus firmas de funcin deberan aparecer aqu tambin.

El nombre de la funcin en el lenguaje nativo que implementa el mtodo nativo consiste en el prefijo Java_, el nombre del paquete, el nombre de la clase, y el nombre del mtodo nativo. Entre cada nombre de componnete hay un subrayado"_" como separador. El nombre de paquete se omite cuando el mtodo est en el paquete por defecto.

As, el mtodo nativo displayHelloWorld dentro de la clase HelloWorld se convierte en Java_HelloWorld_displayHelloWorld(). En nuestro ejemplo, no hay nombre de paquete, porque HelloWorld est en el paquete por defecto.

Observa que la implementacin de la funcin en el lenguaje nativo, que aparece en el fichero de cabecera, acepta dos parmetros, aunque en su definicin en lenguaje Java no aceptar ninguno. El JNI requiere que cualquier mtodo nativo tenga estos dos parmetros. El primer parmetro es un puntero a un interface JNIEnv. A travs de este puntero, el cdigo nativo podr acceder a los parmetros y objetos de la aplicacin Java. El parmetro jobject es una referencia al propio objeto. Para un mtodo nativo no-esttico como el mtodo displayHelloWorld de nuestro ejemplo, este argumento es una referencia al objeto. Para mtodos nativos estticos, este argumento sera una referencia al mtodo Java. Para aclararlo un poco, se puede pensar en el parmetro jobject como en la variable "this" de C++. Nuestro ejemplo ignora mbos parmetros.

La siguiente leccin Programacin del Interface Nativo en Java, describe como acceder a los datos utilizando el parmetro env.

COMPARTE ESTE ARTÍCULO

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
ARTÍCULO ANTERIOR

SIGUIENTE ARTÍCULO

¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.