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