Como executar dll escrita em C, usando Java

Ola pessoal, o cenario eh seguinte, temos um tipo de criptografia que eh feita atraves de uma dll escrita em C, agora precisamos chama-la usando JAVA, a principio a solicitacao era em javascript, entao se alguem puder dar uma ajuda em qualquer um dos casos ou ambos, eu agradeço muito.
Fiz algumas pesquisas e encontrei exemplos em JNI, mas nao sei se entendi direito, mas eu precisaria criar um aquivo header para mapeamento das funcoes, e tb mexer na declaracao das funcoes dentro da dll? o que esta meio que fora de questao, pois trabalho no banco entao, e essa dll eh um legado que ninguem quer mexer e nem poderia.

cara,

da uma olhada no google sobre JNA, ele 'e mais traquilo de se trabalhar.

t+

Que eu saiba vc nao altera nada na dll mas tem q mapear as funções nos header’s .

O JNA parece facilitar a vida de quem tem q usar lib’s nativas no java , dê uma pesquisada.

http://jna.java.net/
http://www.urubatan.com.br/chamando-metodos-nativos-dllso-em-java-sem-jni/

Na verdade, com JNI, você deveria fazer um conjunto de classes em C++ que usam a sua dll de legado.
Essas classes tem que ser em conformidade com a especificação do JNI.

Ou seja, elas é que fazem a conversa entre sua dll comum e o java (você poderia entende-la como uma espécie de controller, onde a VM seria a “view” requisitando coisas e a dll legado seria o “model” fornecendo dados).

Entretanto, se possível use o JNA. Ele torna o trabalho de fazer esse mapeamento muito mais simples, praticamente trivial.

Eu recomendaria que alguém fosse contratado para converter essa DLL de C para Java - chamar DLLs escritas em C a partir do Java torna o programa muito instável e sujeito a problemas inesperados.

Se essa pessoa conhecer minimamente um pouco de criptografia, poderia fazer algo muito mais seguro que essa DLL escrita em C.

Não aconselho o uso de JNI para chamar algo que não foi escrito especificamente para ser chamado via JNI. A probabilidade de dar problemas é muito grande.

Obrigado pelas respostas, acredito que terei que usar o JNA, vou estudar mais sobre esta api. Quanto a solucao de contratar um cara pra converter o codigo C em java, eu mesmo ate poderia fazer isso, mas sabe como eh o esquema de Hds, lotacao, horas gastas, orcamento limitado para o projeto e tal, enfim, li um pouco da dll, tem muito deslocamento de bits e um monte de coisas q da preguica soh de olhar, eu ja tive que implementar uma criptografia 3des pra ca, pois os caras tem 500 processos e esquemas pra passar os dados pra entao fazer a criptografia e tal, resumindo eh isso hehe.
Mas mais uma vez muito obrigado. Ahh e quanto a chamar esta dll num javascript sem condicoes ne?

[quote=entanglement]Eu recomendaria que alguém fosse contratado para converter essa DLL de C para Java - chamar DLLs escritas em C a partir do Java torna o programa muito instável e sujeito a problemas inesperados.

Se essa pessoa conhecer minimamente um pouco de criptografia, poderia fazer algo muito mais seguro que essa DLL escrita em C.

Não aconselho o uso de JNI para chamar algo que não foi escrito especificamente para ser chamado via JNI. A probabilidade de dar problemas é muito grande. [/quote]

Apoiado.

Eu utilizei JNA num projeto para leitura de equipamento clinicos e funcionava perfeitamente e sem nenhum problema.

t+

como eu disse, tambem apoiaria integra e totalmente a sugestao do nosso amigo “entanglement”, inclusive foi a nossa primeira sugestao pro gerente de projeto, mas…
Bom vou tentar estudar sobre o JNA, e ver no q da, mas muito obrigado pessoal, se eu conseguir eu volto aqui e coloco o topico como resolvido