Marco wrote:
> 
> Oi Jobson,
> meu problema é que tenho uma DLL de terceiros, preciso instacia-la dentro de
> um servlet. Como sou iniciante em java estive pesquisando alguma coisa, mas
> todo material me diz que:
> 
>  -preciso compilar meu .java,
>  -usar o javah para gerar um header (.h)
>  -colocar o header no meu código DLL
>  -e recompilar.
> 
> O problema é que não posso recompilar a DLL pq não tenho o código.
> A sugestão é que essa DLL fosse encapsulada em outra.
> 
> Então minhas dúvidas:
>  Não existe mesmo nenhuma maneira de usar a DLL sem recompilar certo?
> (Tomara que não eh eh)

Seria possivel se a DLL original ja estivesse com os headers, o que
eh totalmente improvavel. Nao existe outra forma.

> 
>  Encapsulando em outra DLL não vai haver queda de performance?? Pois a
> performance é exatamente o problema que estou tentando resolver.

Lembre-se que o que voce estara fazendo eh simplesmente algo como:

JNIEXPORT void JNICALL 
Java_SuaClasse_seuMetodo(JNIEnv *env, jobject obj) 
   {
       return chamadaDeFuncaoQueEstaNaOutraDLL(/* parametros */);
   }

Ou seja, o codigo nativo que voce estara chamando nao fara nada. A
sua perda de permformance estara associada com uma chamada de funcao
a mais. Se o problema que voce esta tentande resolver eh de
performance, estou assumindo que essa sua DLL faz algo que seja
computacionalmente intensivo, e portanto o "custo" da chamada de
funcao sera neglegivel. Se nao for o caso (ou seja, sua funcao
nao seja computacionalmente cara) e o custo da chamada de funcao
eh relativamente alto, entao voce provavelmente tera resultados 
melhores se voce escrever seu codigo em Java.

Aproveitando, eu gostaria de fazer um alerta para todos em relacao
a performance. Muita gente assume que Java sera muito lento
para o que voce quer fazer, sem nunca ter experimentado (nao estou
dizendo que eh esse o caso). Isso acontece muito com programadores C.
Hoje em dia, em especial com as novas tecnologias como o HotSpot,
voce deve considerar com muito cuidado essa decisao. Aconselho
o uso de codigo nativo em casos onde o codigo nativo JA EXISTA,
(e portanto voce nao vai precisar debuga-lo, porta-lo, etc) ou 
em casos onde os testes da sua aplicacao mostram um gargalo de
performance em algum ponto o codigo nativo se encaixaria bem.
Se a coisa for mal feita, voce pode nao conseguir o ganho de
performace que voce espera, e no final, gastar muito mais tempo
para descobrir porque eh que em casos de pico o seu servlet faz
a maquina rebootar (ah! foi porque em casos de pico o array que
guarda o nao sei o que em uma rotina secundaria do meu codigo
nativo estoura e um ponteiro errado eh enviado para a rotina
XYZ que escreve na.... Isso pode levar semanas so para voce
identificar...)

Abracos,

Bruno.

> 
> Obrigado desde já por qq ajuda...
> 
> Abraço,
> 
> Marco
> Microsoft Certified Professional
> Politec - Anatel
> http://www.tbanet.com.br/pages/marcon
> 
> > -----Mensagem original-----
> > De: Jobson Silva [mailto:[EMAIL PROTECTED]]
> > Enviada em: Quinta-feira, 10 de Fevereiro de 2000 00:05
> > Para: [EMAIL PROTECTED]
> > Assunto: Re: [SouJava-J] JNI II
> >
> >
> > Marco
> >
> > Escrevi uma DLL para utilizacao com java usando o Borland C+
> > 5.02.  Essa DLL
> > contem uma serie de rotinas basicas para manipulacao de
> > interface texto tipo:
> > limpar a tela, salvar e restaurar uma area da tela,
> > posicionar o cursor em
> > determinado lugar, imprimir uma string com determinado
> > atributo de cor,
> > alterar a cor de uma parte da tela sem alterar os caracteres,
> > entrada de
> > caracteres estendidos (F1, F2,...), etc...  Já utilizei essa
> > DLL com jdk 1.1
> > e 1.2 sem problemas.
> >
> > Voce nao disse exatamente qual a sua duvida, mas se voce
> > enviar mais detalhes
> > posso tentar ajudar, ok?
> >
> > Um abraco
> > Jobson
> >
> > Marco escreveu:
> >
> > > Senhores,
> > > ninguém da lista já trabalhou com JNI que possa me dar uma ajuda?
> > >
> > > Marco
> > > Microsoft Certified Professional
> > > Politec - Anatel
> > > http://www.tbanet.com.br/pages/marcon
> > >
> > >     --------------------------- LISTA SOUJAVA
> > ---------------------------
> > >     http://www.soujava.org.br  -  Sociedade de Usuários
> > Java da Sucesu-SP
> > >     [dúvidas mais comuns: http://www.soujava.org.br/faq.htm]
> > >     [para sair da lista:
> > http://www.soujava.org.br/forum/cadastrados.htm]
> > >
> > ---------------------------------------------------------------------
> >
> >
> >
> >     --------------------------- LISTA SOUJAVA
> > ---------------------------
> >     http://www.soujava.org.br  -  Sociedade de Usuários Java
> > da Sucesu-SP
> >     [dúvidas mais comuns: http://www.soujava.org.br/faq.htm]
> >     [para sair da lista:
> > http://www.soujava.org.br/forum/cadastrados.htm]
> >
> > ---------------------------------------------------------------------
> >
> >
> 
>     --------------------------- LISTA SOUJAVA ---------------------------
>     http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
>     [dúvidas mais comuns: http://www.soujava.org.br/faq.htm]
>     [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
>     ---------------------------------------------------------------------

-- 


Bruno.
______________________________________________________________________
Bruno Peres Ferreira de Souza                         Sun Microsystems
System Engineer - Java Technologist         [EMAIL PROTECTED]
        if I fail, if I succeed, at least I live as I believe

    --------------------------- LISTA SOUJAVA ---------------------------
    http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
    [dúvidas mais comuns: http://www.soujava.org.br/faq.htm]
    [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
    ---------------------------------------------------------------------

Responder a