Pergunta

Eu gostaria de implementar uma interface de linha de comando para um aplicativo Java. Isso não seria muito difícil de fazer, só que eu gostaria que o programa de linha de comando para afetar o estado de outro programa Java GUI. Assim, por exemplo, eu poderia digitar:

java CliMain arg1 arg2

E outra instância GUI correndo iria realizar uma ação apropriada.

O que é a maneira mais fácil de implementar algo parecido com isto?

Foi útil?

Solução

Você poderia ter a aplicação GUI escutar uma porta TCP (na interface localhost) ea aplicação CLI se conectar a ele.

Uma maneira de fazer isso seria usar REST sobre HTTP.

Outras dicas

Outra forma é através de JMX. Ele lhe dá um monte de coisas "de graça" (no caso simples, basta implementar um feijão e registrá-lo - muito simples)., E é particularmente adequado para esta tarefa

Você pode ter o aplicativo GUI (como um editor) escutar

1) evento prancheta de um certo tipo
se o evento é de um tipo que você está interessado em, em seguida, obter o conteúdo da área de transferência.
2) Tomada de servidor em uma determinada porta
escuta em um soquete servidor. quando o programa CLI começa, ele se conecta ao soquete do servidor em uma porta conhecida, envia informações e sai.
3) de filas
você pode enque do programa CLI e deque do programa GUI.

Se você quiser investigar mais, muitos editores profissionais como emacs usar o mesmo mecanismo. http://www.emacswiki.org/emacs/EmacsClient

O aplicativo pode ser controlado via RMI . A aplicação seria implementar uma interface de controle, registrar seu serviço no localhost e a aplicação de linha de comando obteria um proxy RMI e chamar os métodos de controle desejados ...

Parece difícil no começo, mas quando você já tentou de fora você vai ver rapidamente como é fácil. E também suporta criptografia via SSL . Assim, você poderá garantir a sua troca de dados se não havia dados relevantes de segurança online.

A maneira mais fácil seria para o GUI para ouvir comandos em uma porta TCP. A linha de comando seria enviar comandos, ea GUI iria interpretá-los.

Talvez você poderia fazê-lo com pipes nomeados, bem como, mas eu não sei como você iria sobre a implementação de que em Java.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top