Utilizando Métodos Nativos (Native Methods) em Java.
Métodos nos quais já foram implementados em C ou C++ e utilizados em aplicativos da mesma linguagem podem ser reutilizados nos aplicativos Java através de Métodos Nativos.
Usando a palavra chave "native" em um método de uma classe ela altera o compilado no qual o método será definido externamente, os métodos nativos como não tendo a implementação suas declarações são similares a métodos abstratos.
Ex:
class OlaMundo{
public native void ola();
}
Primeiramente essa classe deve ser compilado normalmente “javac OlaMundo.java” após deve ser utilizado a classe utilitária "javah" para criar um arquivo de leitura C da classe OlaMundo "javah OlaMundo" que pode ser achada no diretório jdk/bin.
Ex:
#include <jni.h="">
#ifndef _Included_OlaMundo
#define _Included_OlaMundo
Extern “C” {
/*
*Class: OlaMundo
*Method: ola
*Sognature: ()V
*/
JNIEXPORT void JNICALL Java_OlaMundo_ola (JNIRev *, jclass);
#ifdef __cplusplus
}
#endif
#endif
Dentro do arquivo esta a declaração da função Java_OlaMundo_ola, o JNIEXPORT e JNICALL são necessários para a utilização da biblioteca dinâmica.
A seguir a classe C deve ser implementada dessa forma, copiando a leitura do arquivo.
Ex:
#include "OlaMundo.h"
#include <stdio.h="">
JNIEXPORT void JNICALL Java_OlaMundo_ola (JNIRev * env, jclass cl);
{
Print("Ola Mundo em JAVA utilizando o print de C!/n");
}
Deve-se carregar o biblioteca dinâmica porem a linha de comando muda dependendo do SO.
Ex:
Linux compilador Gnu:
-gcc -fPIC -I jdk/include/linux -shered -o libOlaMundo.so OlaMundo.c
Windows compilador Microsoft:
cl -I jdk\include -I jdk\include\win32 –LD OlaMundo.c –FeOlaMundo.dll
Por último deve ser chamado um método System.loadLibrary() para assegurar que a biblioteca será carregada antes do primeiro uso da classe.
Ex:
class TesteOlaMundo{
public static void main (String[] args){
OlaMundo.ola();
}
Static{
System.loadLabrary("OlaMundo");
}
}
Referencia: Livro Core Java Volume II – Advanced Features do autor Gary Cornell
Nenhum comentário:
Postar um comentário