Interface java interligado com C/C++ é possivel?

Pessoal, estou querendo fazer o seguinte. Fazer uma aplicativo desktop em Java.
Esse aplicativo, tem os botoes que dao ordem como
andar para frente e para tras. Quero que esse aplicativo possa conectar a uma pequena
maquina por exemplo um robo.
So que o robo foi programado em c ou c++.
É possivel fazer essa ligaçao?

Outra pergunta, estou querendo mexer com sistemas embarcados. Sem ser celulares,
mais microcontroladores. Java tem esse tipo de suporte?

Valeu!

Olá rw!

Sobre a questão de utilização de Java para dispositivos embarcados, dê uma olhada: http://java.sun.com/javase/embedded/

Pelo que ouço falar, a Sun oferece vários recursos nesse aspecto. Aliás, essa era a missão primitiva do Java, embora tenha dado mais certo p/ área de Mobile.

Sobre o fato de você querer se “comunicar” com um dispositivo externo utilizando Java, é preciso, primeiro, esclarecer como você vai estabelecer essa conexão. Possível é.

Você quer que java se comunique com uma aplicação C/C++ que roda no desktop? Ou você quer enviar “comandos” de sua aplicação desktop para uma aplicação em execução no robô?

Para utilizar as bibliotecas existentes em C/C++ utilizadas para operar o “robô”, você pode usar JNI. Assim você vai ter acesso a todos os recursos que a biblioteca em C/C++ nativamente oferece. Eu não sei as implicações de platform-dependence que a utilização de JNI traz, então vale a pena você considerar isso se esse for o caso.

Já pro outro caso, imaginando que o robô estivesse ligado ao computador utilizando TCP/IP, bastaria, neste caso, você ter a especificação do protocolo utilizado pela aplicação do robô para envio de comandos. Sacou? O meio de conexão não faria muita diferença, mas o idioma que as aplicações falariam.

Abraços!

rw: como disse o hiram, o Java oferece um recurso chamado JNI (Java Native Interface) que lhe permite executar código-fonte contido em bibliotecas no formato nativo do sistema operacional (DLL em Windows, SO em Linux e por aí vai). Usar JNI normalmente é trabalhoso, mas há alguns produtos que podem ajudá-lo nessa tarefa:

JNA: https://jna.dev.java.net/
Excelsior xFunction: http://www.excelsior-usa.com/xfunction.html

rw, não só é possível como aquelas sondas da Nasa que foram pra Marte usavam Java. Para eles escolherem o java, com certeza devem ter testado outras alternativas e consideraram que java seria a melhor para o caso deles.

Quanto à comunicação com o Robô, é como falou o hiram, vai depender de como vc vai comunicar, pode ser porta paralela, tcp/ip, wireless, bluetooth, etc…

Pessoal, valeu mesmo!!
Ja ta dando uma luz aqui. Faço eng mecatronica e tava querendo fazer
um carro controlado via gps. Mas primeiro para entender como a coisa funciona,
quero fazer um aplicativo em Java que envie os comandos, atraves de um
wireles para o carrinho. Por exemplo, pego aqueles joyticks e dou o comando
de ir para frente. O aplicativo java, envia os comandos para o wireles e o carrinho
anda para frente. E assim vai. Depois colocar uma camera e atraves do aplicativo Java,
visualizar a web cam para ver aonde o carrinho esta indo pelo web cam.
Depois que o sistema estiver mais maduro, colocar um GPS nele.

Ja mexi com C#, visual studio, C mas oque eu gostei mesmo é Java.
Só uma duvida, o JNI é para executar o codigo fonte do sistema operacional certo? Só que, para programar
microcontroladores como PIC ou AVR, o java tambem tem essa possibilidade?! Ao invez de utilizar o C ou C++?

O que me animou que o roger disse que a nasa utilizou java. Vou dar uma olhada no site deles para ver se
eles falam mais a respeito!

Valeu!

JNI serve pra por exemplo carregar uma biblioteca ( .dll ou .so ) e chamar as funções dessa biblioteca através de código Java.