O que substitui o JNI?

14 respostas
rodolfogs8

galera ja procurei mas alguem pode me dar uma dica do que posso usar para não usar o vovô JNI?

So escuto falarem mau do JNI e estou tendo alguns problemas com este tipo de aplicação alguem pode me dar uma dica de como mudar meu codigo para que funcione e com melhor performace??

Obrigado

14 Respostas

davidbuzatto

Poderia usar o google de vez em quando né?

http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=4&t=000017

http://forum.java.sun.com/thread.jspa?threadID=490256&messageID=2304335

Até mais!

cassio

Substituir o JNI?
O JNI é uma interface entre código Java e código nativo do sistema operacional. Até onde eu sei, se você precisar fazer algo que via Java não tem como acessar (tipo acessar certos dispositivos de hardware, etc), tiver que usar a API do sistema operacional, etc, terá que usar JNI. Se sua aplicacão precisa desse tipo de funcionalidade, acho que voce nao tera muita opcao…

Luca

Olá

Já usei bastante JNI e nunca tive problemas. Os tutoriais disponíveis na web são mais do que suficientes para fazer tudo funcionar direitinho.

Quanto à performance é preciso entender o que acontece quando a gente junta 2 linguagens diferentes para saber o quanto é aceitável em termos de perda de performance.

[]s
Luca

fabim

Luca:

Já usei bastante JNI e nunca tive problemas. Os tutoriais disponíveis na web são mais do que suficientes para fazer tudo funcionar direitinho.

[]s
Luca

Luca++

T

JNI não serve para:

  • Adaptar código que já foi feito para uma aplicação em C (ou pior, C++ ou Delphi), como um monte de telas e interfaces visuais já prontas, dentro de uma aplicação Java;
  • Adaptar código que funciona perfeitamente em C, C++ ou Delphi, mas nunca foi testado (ou sabidamente não funciona) em ambiente multithread ou como uma DLL;
  • Chamar diretamente COM ou COM+ (isso é difícil de fazer, mesmo em C++). Para tanto, você pode tentar usar a biblioteca Jacob (http://danadler.com/jacob ), que é uma biblioteca JNI que já toma conta desses detalhes sangrentos e obscenos.

JNI serve para chamar código pensado e projetado para ser chamado via JNI. Por exemplo:

  • Interfacear APIs do sistema operacional (usualmente em C)

  • Interfacear com periféricos não suportados (ou mal-suportados) pelo Java. Um exemplo clássico é tentar usar a interface serial ou paralela; existe a biblioteca JavaComm (que é uma coleção de classes, algumas delas JNI) mas para certas coisas ela não é adequada (por exemplo, setar um mísero bit na porta paralela).

rodolfogs8

Deixa eu ver se entendi?

Existe uma dll na qual foi feita em c eu me comunico com ela por java e e possivel chamar um metodo que esta dentro dela para a linguagem java?

Luca

Olá

rodolfogs8:
Deixa eu ver se entendi?

Existe uma dll na qual foi feita em c eu me comunico com ela por java e e possivel chamar um metodo que esta dentro dela para a linguagem java?

Não.

O mais fácil é você fazer um programinha em C (ou Delphi, VB só para quem gosta de emoções fortes), de acordo com as regras do JNI, que chame a tal DLL. Este programinha em C serve apenas de interface entre os dados Java e os dados da DLL.

[]s
Luca

rodolfogs8

E se eu enao manjo nada de C, VB ou mesmo delphi e manjo muito mas muito mesmo de java? meu projeto não sai?

rodolfogs8

Vcs conhecem algum programa que eu consigo abrir uma Dll???

T

Pergunta: por que é que você precisa tanto usar JNI? Se precisar, use uma das seguintes bibliotecas, que fazem a parte “suja” do JNI:

jacob (http://danadler.com/jacob ) - Se seu código nativo é COM ou COM+ (exemplo: DLL ActiveX escrita em VB 6.0, ou então código VB.NET ou C# registrado no COM+)
Jenie (por favor, procure na Internet) - Se seu código nativo está numa DLL que não precisa ser registrada (e em VB 6.0 você usaria declarando-a com “Declare Function”.

Luca

Olá

Eu não manjo quase nada de medicina e não morro por causa disto.

Simplesmente contrato alguém que saiba. Sai muito mais barato do que esperar aprender todo o conhecimento do mundo.

[]s
Luca

mchiareli

mas se vc nem abe oq eh jni, por que diabos vc quer usar isso?? :shock:

P

Matou a pau, hein ?!! :stuck_out_tongue:

Também fiquei com esta impressão de que o rodolfogs8 precisa conhecer mais o JNI para saber se realmente precisa dele.

Kknd

Você quer usar uma biblioteca “nativa”?

Faz uma biblioteca mapeando as funções que você quer usar e usa o Swig para fazer a “cola” entre a biblioteca e o Java.

Criado 17 de julho de 2007
Ultima resposta 17 de jul. de 2007
Respostas 14
Participantes 9