Java Native Interface
Surgiu a necessidade de usar o JNI (Java Native Interface) e tive muita dificuldade para encontrar informações sobre o assunto. Então resolvi compartilhar o que aprendi sobre este assunto.
O que é o JNI
É um recurso do Java que permite integrar a plataforma Java com outras linguagens, ferramentas e APIs do sistema operacional.
Podemos por exemplo escrever algum código em C/C++ ou Assembler e usar dentro de um programa Java. Também é possível que outras linguagens acessem funções feitas em Java. Neste artigo estarei abortando somente o Java acessando funções escritas em C/C++.
Mas qual a real necessidade deste recurso já que o Java é uma linguagem muito poderosa?
Este recurso seria uma alternativa a alguma limitação da linguagem em algum tipo de tarefa. Também seria útil no reaproveitamento de código existente em alguma biblioteca.
No meu caso eu precisava obter informações das partições de HDs, e estas funções já estão prontas na biblioteca libparted.so. Desta forma achei que seria conveniente usar as funções prontas que criá-las no Java.
A grande desvantagem em usar este recurso é a questão da portabilidade. Fazendo o uso do recurso o seu programa vai ficar dependente do código nativo e se for necessário executar o programa em outro sistema operacional você terá que escrever o código novamente para o outro sistema operacional, ficando assim a critério do programador em usar ou não o recurso. Provavelmente existirá alguma situação que o uso do JNI será inevitável, pois sabemos que todas as linguagens de programação tem seus limites.
Um exemplo que usa o JNI é o projeto java-gnome, que implementa a interface gráfica GTK para o Java, sendo possível criar aplicações em Java usando os objetos do GTK.
Mais informações podem ser obtidas em:
Podemos por exemplo escrever algum código em C/C++ ou Assembler e usar dentro de um programa Java. Também é possível que outras linguagens acessem funções feitas em Java. Neste artigo estarei abortando somente o Java acessando funções escritas em C/C++.
Mas qual a real necessidade deste recurso já que o Java é uma linguagem muito poderosa?
Este recurso seria uma alternativa a alguma limitação da linguagem em algum tipo de tarefa. Também seria útil no reaproveitamento de código existente em alguma biblioteca.
No meu caso eu precisava obter informações das partições de HDs, e estas funções já estão prontas na biblioteca libparted.so. Desta forma achei que seria conveniente usar as funções prontas que criá-las no Java.
A grande desvantagem em usar este recurso é a questão da portabilidade. Fazendo o uso do recurso o seu programa vai ficar dependente do código nativo e se for necessário executar o programa em outro sistema operacional você terá que escrever o código novamente para o outro sistema operacional, ficando assim a critério do programador em usar ou não o recurso. Provavelmente existirá alguma situação que o uso do JNI será inevitável, pois sabemos que todas as linguagens de programação tem seus limites.
Um exemplo que usa o JNI é o projeto java-gnome, que implementa a interface gráfica GTK para o Java, sendo possível criar aplicações em Java usando os objetos do GTK.
Mais informações podem ser obtidas em: