Um simples exemplo de JNI (Java Native Interface)
Atualizado em:
[caption id="attachment_772" align="aligncenter" width="630"] Java Native Interfac[/caption]
Java Native Interface (JNI) é um padrão para escrever métodos nativos em Java. Neste exemplo mostro como chamar um método no Java, escrito em C.
Neste exemplo mostro como chamar um método que escreve "Olá Mundo" implementado no C e chamado na Java.
Utilizei o Linux, com o Debian para este exemplo.
Criando a classe em Java
Primeiramente vamos criar a classe em Java: HelloWorld.java
class HelloWorld { private native void print(); public static void main(String[] args) { new HelloWorld().print(); } static { System.loadLibrary("HelloWorld"); } }
Compilando a Classe
Use normalmente o javac para compilar a classe HelloWorld
javac HelloWorld.java
Este comando irá gerar o arquivo HelloWorld.class no mesmo diretório
Gerando o Arquivo de Cabeçalho do método nativo
Aqui usamos o javah para gerar o cabeçalho que será usado em nossa classe em C
javah -jni HelloWorld
Ira gerá o arquivo HelloWorld.h no mesmo diretório. A parte mais importante deste arquivo, é o protótipo de função Java_HelloWorld_print, que indica a função que implementa o método HelloWorld().print();
JNIEXPORT void JNICALL
Java_HelloWorld_print (JNIEnv *, jobject);
Escrevendo a implementação nativa
Crie um arquivo HelloWorld.c:
#include #include #include "HelloWorld.h" JNIEXPORT void JNICALL Java_HelloWorld_print(JNIEnv *env, jobject obj) { printf("Olá Mundo\n"); return; }
A função que você implementa está no padrão do arquivo de cabeçalho gerado Java_HelloWorld_print
Compilando o Código em C e criando uma bibliteca nativa
Em nossa classe em Java é chamada a biblioteca System.loadLibrary("HelloWorld"); geramos ela a partir da implementação em C.
Considerando que sua JDK está instalada em /opt/jdk1.6.0_31/, rode este comando:
gcc -shared -fpic -o libHelloWorld.so -I/opt/jdk1.6.0_31/include -I/opt/jdk1.6.0_31/include/linux HelloWorld.c
Ele irá gerar um arquivo libHelloWorld.so no mesmo diretório, copie para a pasta de bibliotecas do JDK:
sudo cp libHelloWorld.so /opt/jdk1.6.0_31/jre/lib/amd64/
Agora execute normalmente a classe em Java:
java HelloWorld
Se tudo der certo, aparecerá na tela: "Olá Mundo".
Parabens, você fez sua primeira aplicação com JNI.
Fiquem na Paz
Fontes
http://192.9.162.55/docs/books/jni/html/start.html
https://blogs.oracle.com/moonocean/entry/a_simple_example_of_jni
http://patriot.net/~tvalesky/jninative.html
Deixe um comentário