Qué es JNI

De ChuWiki

JNI (Java Native Interface) es la forma que tenemos de llamar desde java a funciones que están hechas en otro lenguaje, por ejemplo, funciones hechas en C.

Necesitamos en primer lugar una librería con las funciones de C ya compiladas. En windows dicha librería suele tener extensión .dll y en unix la extensión es .so

El siguiente paso es crear una clase java que tenga métodos native. Estos métodos se dejan sin rellenar y debemos llamarlos cuando queramos que se llama a la .dll. Compilamos dicha clase

Ahora con javah, una utilidad que viene con java, se la pasamos al .class generado. Esto generará un .h con el método native pero en un formato especial.

Escribimos el .c para esa función generada de forma que llame a las funciones que queramos de la .dll

Con nuestro .c y el .h generado por java, compilamos para construir una librería compartida .so (unix) o de enalce dinámico .dll (windows).

Ahora basta meter esa librería en un sitio que se encuentre en el path de busqueda (PATH en windows, LD_LIBRARY_PATH en unix) y ejecutar nuestro programa java.