Pregunta

Me gustaría implementar una interfaz de línea de comandos para una aplicación Java. Esto no sería demasiado difícil de hacer, excepto que me gustaría que el programa de línea de comandos afecte el estado de otro programa GUI de Java. Así, por ejemplo, podría escribir:

java CliMain arg1 arg2

Y otra instancia de GUI en ejecución realizaría una acción apropiada.

¿Cuál es la forma más fácil de implementar algo como esto?

¿Fue útil?

Solución

Puede hacer que la aplicación GUI escuche en un puerto TCP (en la interfaz localhost ) y la aplicación CLI se conectará a ella.

Una forma de hacer esto sería usar REST a través de HTTP.

Otros consejos

Otra forma es a través de JMX. Te da muchas cosas " gratis " (en el caso simple, simplemente implementa un bean y lo registra, muy simple), y es particularmente adecuado para esta tarea.

puede hacer que la aplicación GUI (como un editor) escuche

1) evento del portapapeles de un determinado tipo
   Si el evento es del tipo que le interesa, obtenga el contenido del portapapeles.

2) zócalo del servidor en un puerto determinado
   escuchar en un servidor de socket. cuando se inicia el programa CLI, se conecta al socket del servidor en un puerto conocido, envía información y se cierra.

3) cola
   puede ingresar desde el programa CLI y eliminar desde el programa GUI.

si desea seguir investigando, muchos editores profesionales como emacs utilizan el mismo mecanismo. http://www.emacswiki.org/emacs/EmacsClient

Su aplicación podría controlarse a través de RMI . La aplicación implementaría una interfaz de control, registraría su servicio en localhost y la línea de comandos obtendría un proxy rmi y llamaría a los métodos de control deseados ...

Parece difícil al principio, pero cuando lo hayas probado, verás rápidamente lo fácil que es. Y también admite el cifrado a través de SSL . Por lo tanto, podría asegurar su intercambio de datos si hubiera datos de seguridad relevantes en línea.

La forma más sencilla sería que la GUI escuche los comandos en un puerto TCP. La línea de comandos enviaría comandos y la GUI los interpretaría.

Puede que también puedas hacerlo con canalizaciones con nombre, pero no estoy seguro de cómo implementarías eso en Java.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top