Integração Java e C++ com JNI
JNI (Java Native Interface)
Java Native Interface
A Java Native Interface JNI define um padrão de nomes e convenções de funções que só a Máquina Virtual Java pode localizar e invocar nos métodos nativos de uma DLL gerada em C/C++ ou Assemble.
O JNI habilita programadores a escrever métodos nativos para tratar situações em que uma aplicação não pode ser escrita inteiramente na linguagem Java. A Java Native Interface define um padrão de nomes e convenções de funções que só a Máquina Virtual Java pode localizar e invocar nos métodos nativos.
Através do uso do padrão JNI podemos integrar nossos projetos Java com DLLs geradas e compiladas em C++

O Aplicativo javah
O aplicativo javah essencial para a criação da interface nativa é fornecido pela JDK. Utilizamos este aplicativo para gerar um arquivo .h que define os protótipos dos métodos de uma classe Java em forma de interface C/C++. Esta interface contém as declarações necessárias para compilarmos corretamente os módulos nativos que interagem com a JNI.
O aplicativo javah tem como vantagem reduzir os erros de programação na hora de integração de módulos nativos com a nossa JNI.
Para gerar um arquivo .h com o aplicativo javah devemos seguir com os seguintes passos:
1 – Compilação da Classe Java
javac MinhaClasse.java
2 – Criação da Interface Nativa JNI
javah -jni MinhaClass
Após a criação da Interface Nativa será gerado um arquivo uma estrutura semelhante a:
#include <jni.h>
#ifndef _Included_nomeClasse
#define _Included_nomeClasse
#ifdef __cplusplus
extern "C" {
#endif
/*
* Comentários sobre o método nativo aqui...
*/
JNIEXPORT tipoRetorno JNICALL Java_nomeClasse_nomeMétodo
(JNIEnv *, jobject[, tipo-parâmetro[...]]);
...
#ifdef __cplusplus
}
#endif
#endif
Last updated
Was this helpful?