Pular para o conteúdo

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.
Allan kardec Santos Oliveira super-root
Hits: 24.102 Categoria: Java Subcategoria: Avançado
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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:
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
   1. O que é o JNI
   2. Funcionamento
   3. Exemplo de utilização do JNI
   4. Um exemplo mais complexo

Emulando o Internet Explorer no Slackware

Criando classe Java para conectar e manipular dados no MySQL

Construindo uma aplicação JDialog

Introdução ao Mundo Java

Java: Usando JInternalFrame de forma elegante

Jmeter com qualidade e performance

GCJ – Conhecendo o compilador Java Livre

Preparando ambiente de desenvolvimento Android no Debian/Ubuntu

#1 Comentário enviado por asdf2 em 23/09/2011 - 00:42h
artigo bom mas esqueceu de por um simples hello world pra comparação de codigo, mas valeu, nota 8
#2 Comentário enviado por elyssonmr em 23/09/2011 - 10:31h
Muito legal isso, só não entendi uma coisa: você utiliza o Header da lib parted e depois gera o .so compatível com o jni certo?

Se já possuir um .so pronto como eu faria para linkar com o java, porque neste caso o a lib a ser utilizada esta sendo compilada?

Vlw
#3 Comentário enviado por super-root em 23/09/2011 - 17:58h
Elyssonmr, caso você tenha uma lib no padrão do JNI, então será necessário conhecer as funções/declarações desta biblioteca. Desta forma seria necessário criar somente o programa em java com lendo as funções da biblioteca.

Contribuir com comentário

Entre na sua conta para comentar.