| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/12/2009 15:07:22
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline
|
Luca wrote:Nada disto. Já participei de um monte de projetos java que usavam um monte de linguagens usando pontes via JNI. É muito mais fácil escrever 20 ou 30 linhas em C para acessar outras coisas do que escrever tudo em C++.
E a ponte citada pelo ralphsilver faz a mesma coisa.
Pois é, isso quer dizer que o bytecode não pode ser acessado. Esse é o x da questão. O que é acessado é código nativo.
E a alternativa do raphsilver parece ser bem diferente, já que ele só usa bytecode.
This message was edited 1 time. Last update was at 09/12/2009 15:12:26
|
www.citrox.com.br |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/12/2009 16:25:20
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
juliocbq wrote:Pois é, isso quer dizer que o bytecode não pode ser acessado. Esse é o x da questão. O que é acessado é código nativo.
E a alternativa do raphsilver parece ser bem diferente, já que ele só usa bytecode.
Procure saber o que é JNI e o que se pode fazer com ele. A ponte citada não usa JNI porque se baseia em XML. Portanto acessa menos código nativo do JNI que acessa Java e faz parte do Java.
E juro a você, que de 1982 para cá, não me lembro do último projeto que fiz usando uma única linguagem. O sistema que tenho de engenharia feito em Fortran tem pequenas partes em C. Tudo que fiz na vida em Clipper até 1996 tinha partes em C e em Assembler. Todos os projetos web que participei usavam no mínimo umas 4 linguagens. E todos os projetos Java feitos em Swing que participei, tinham sempre alguma coisa acessada via JNI.
[]s
Luca
This message was edited 1 time. Last update was at 09/12/2009 16:29:35
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/12/2009 08:48:52
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline
|
Luca wrote:Olá
juliocbq wrote:Pois é, isso quer dizer que o bytecode não pode ser acessado. Esse é o x da questão. O que é acessado é código nativo.
E a alternativa do raphsilver parece ser bem diferente, já que ele só usa bytecode.
Procure saber o que é JNI e o que se pode fazer com ele. A ponte citada não usa JNI porque se baseia em XML. Portanto acessa menos código nativo do JNI que acessa Java e faz parte do Java.
E juro a você, que de 1982 para cá, não me lembro do último projeto que fiz usando uma única linguagem. O sistema que tenho de engenharia feito em Fortran tem pequenas partes em C. Tudo que fiz na vida em Clipper até 1996 tinha partes em C e em Assembler. Todos os projetos web que participei usavam no mínimo umas 4 linguagens. E todos os projetos Java feitos em Swing que participei, tinham sempre alguma coisa acessada via JNI.
[]s
Luca
Trabalho com isso a um bom tempo também. Desenvolvemos hardware aqui, e estamos constantemente usando jni para poder utilizar os drivers dos dispositivos desenvolvidos. Usamos várias linguagens, inclusive a maioria dos nossos projetos é escrita em pascal e assembly.
Usar jni significa usar c++ e não usar java. JNI permite java acessar interfaces nativas e não o contrário, como o autor do tópico perguntou. Uma ponte na verdade seria um assemblly nativo, com seus métodos distribuidos, podendo ser acessados por bytecodes(no caso do java), por assemblyes nativos, ou outro tipo de pseudo código.
Eu não sou dono da verdade, e realmente não sei se bytecode pode ser acessado por assemblyes nativos. Mas ainda não vi nenhum uso disso. Se realmente houver possibilidade, gostaria que pudessem me esclarecer.
|
www.citrox.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/12/2009 08:53:50
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Julio
Com JNI você pode também chamar Java. É só criar uma thread no Java e manter aberto um canal de comunicação com o Java. Mas como escrevi antes, neste caso eu faria via web services ou XML-RPC.
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/12/2009 09:22:17
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline
|
Luca wrote:Olá
Julio
Com JNI você pode também chamar Java. É só criar uma thread no Java e manter aberto um canal de comunicação com o Java. Mas como escrevi antes, neste caso eu faria via web services ou XML-RPC.
[]s
Luca
O que eu não estou entendendo é o seguinte: Quem controla toda cominicação é o método nativo, não? Se precisar passar um parâmetro para a dll tem que ser por meio do método nativo e vice-versa, certo?
Ou existe como um método da interface nativa(c++) chamar um método de uma classe java(bytecode)?
|
www.citrox.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/12/2009 11:47:37
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Júlio o nosso diálogo é só se é possível ou não um programa chamar o Java via uma DLL. É isto que digo ser possível. Basta o Java iniciar a comunicação (no início do dia), chamar a DLL e em uma thread separada, ficar esperando a resposta. O tal programa chama a DLL que responde ao Java passando na resposta justamente os parâmetros que o Java precisa. O Java então processa e chama de novo a DLL, passando como parãmetros, as respostas.
Possível é. É bom? Não. Mas em alguns casos de escutar eventos de hardware é a solução.
Normalmente quando a gente precisa chamar ooutras linguagens e não sujar as mãos com DLLs (que geralmente são coisas porcas), o mais fácil é escrever em um determinado diretório que o Java fica monitorando. Já usei isto entre VB e Java em aplicação de captura de cartão de crédito e funciona perfeitamente.
Outro meio é usar sockets que também já usei entre linguagens diferente e também funciona.
Mas estas duas mas o JNI só funcionam na mesma máquina (JNI) ou na mesma rede local. Para ter uma solução que funcione em qualquer lugar, o caminho passa por troca de mensagens usando Web services, xml-rpc, o tal java-bridge ou assemelhados.
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/12/2009 12:00:22
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline
|
Luca wrote:Olá Júlio o nosso diálogo é só se é possível ou não um programa chamar o Java via uma DLL. É isto que digo ser possível. Basta o Java iniciar a comunicação (no início do dia), chamar a DLL e em uma thread separada, ficar esperando a resposta. O tal programa chama a DLL que responde ao Java passando na resposta justamente os parâmetros que o Java precisa. O Java então processa e chama de novo a DLL, passando como parãmetros, as respostas. Possível é. É bom? Não. Mas em alguns casos de escutar eventos de hardware é a solução. Normalmente quando a gente precisa chamar ooutras linguagens e não sujar as mãos com DLLs (que geralmente são coisas porcas), o mais fácil é escrever em um determinado diretório que o Java fica monitorando. Já usei isto entre VB e Java em aplicação de captura de cartão de crédito e funciona perfeitamente. Outro meio é usar sockets que também já usei entre linguagens diferente e também funciona.
Entendi.... ok. É possível com um mapeamento.
This message was edited 1 time. Last update was at 10/12/2009 12:04:42
|
www.citrox.com.br |
|
|
 |
|
|