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.

[ Hits: 19.288 ]

Por: Allan kardec Santos Oliveira em 22/09/2011


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:
    Próxima página

Páginas do artigo
   1. O que é o JNI
   2. Funcionamento
   3. Exemplo de utilização do JNI
   4. Um exemplo mais complexo
Outros artigos deste autor

Criando classe Java para conectar e manipular dados no MySQL

Emulando o Internet Explorer no Slackware

Construindo uma aplicação JDialog

Leitura recomendada

Linux com Java 1.7 + JBoss 7

Busca corporativa com Apache Solr - Motivação e conceitos

Testes unitários em Java com JUnit

Redirecionamento de páginas e domínios com Jetty Rewrite Handler

Desenvolvendo aplicações Web 2.0 com Java e AJAX (FrameWork DWR)

  
Comentários
[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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts