pessoal, como é a performace do java qndo se usa Java Native Interface(JNI)
tipo, perde velocidade?
Performace e Java Native Interface
2 Respostas
Olá
O uso de JNI compõe-se de 3 partes:
1.- O que foi feito em Java
2 - O que foi feito em C (ou qualquer outra linguagem que se pode escrever bibliotecas carregadas dinâmicamente)
3 - Transição entre as 2 linguagens com as conversões de dados e alocações de memória entre elas.
Para executar o passo (3), estão disponíveis uma séria limitada de funções cujo principal objetivo não é a performance. Aqui é que reside o motivo da sua pergunta, já que em (1) ou (2) JNI não tem nada a ver. O Java quando chama classes nativa usa uma gama mais ampla que permite melhor performance, mas estes pacotes não estão documentados e disponíveis para o programador.
Conclusão: usar JNI nem sempre melhora a performance do sistema porque há um pequeno atraso na transição entre as 2 linguagens que as vezes não compensa a adoção de outras linguagens para executar tarefas específicas que o Java também é capaz de fazer. Quase sempre é melhor usar o JNI somente quando o Java não é capaz de fazer como por exemplo acessar uma DLL de uma impressora fiscal.
[]s
Luca
JNI, via de régra, é leeeeento. Estou me referindo ao bridge java -> nativo e não a performance do código nativo ou do java.