Java IPC: графический интерфейс и командная строка - PullRequest
1 голос
/ 30 октября 2008

Я хотел бы реализовать интерфейс командной строки для приложения Java. Это не было бы слишком сложно сделать, за исключением того, что я хотел бы, чтобы программа командной строки влияла на состояние другой программы Java GUI. Так, например, я мог бы набрать:

java CliMain arg1 arg2

А другой работающий экземпляр GUI будет выполнять соответствующее действие.

Какой самый простой способ реализовать что-то подобное?

Ответы [ 5 ]

2 голосов
/ 30 октября 2008

Приложение GUI может прослушивать порт TCP (на интерфейсе localhost), и приложение CLI будет подключаться к нему.

Один из способов сделать это - использовать REST поверх HTTP.

0 голосов
/ 30 октября 2008

Самый простой способ - для GUI прослушивать команды через порт TCP. Командная строка будет отправлять команды, а графический интерфейс будет интерпретировать их.

Возможно, вы могли бы сделать это и с именованными каналами, но я не уверен, как бы вы реализовали это в Java.

0 голосов
/ 30 октября 2008

Ваше приложение может управляться через RMI . Приложение реализует интерфейс управления, регистрирует свой сервис на localhost, а приложение командной строки получает прокси-сервер rmi и вызывает нужные методы управления ...

Поначалу кажется сложным, но когда вы попробуете, вы быстро увидите, насколько это легко. И это также поддерживает шифрование через SSL . Таким образом, вы можете обезопасить обмен данными, если в сети были данные, относящиеся к безопасности.

0 голосов
/ 30 октября 2008

вы можете заставить приложение с графическим интерфейсом (например, редактор) слушать

1) событие буфера обмена определенного типа
если событие интересующего вас типа, получите содержимое буфера обмена.

2) сокет сервера на определенном порту
слушать на сокете сервера. при запуске программы CLI она подключается к сокету сервера через известный порт, отправляет информацию и завершает работу.

3) очередь
Вы можете включить из программы CLI и удалить из программы GUI.

Если вы хотите продолжить исследование, многие профессиональные редакторы, такие как emacs, используют тот же механизм. http://www.emacswiki.org/emacs/EmacsClient

0 голосов
/ 30 октября 2008

Другой способ - через JMX. Он дает вам много вещей «бесплатно» (в простом случае вы просто реализуете бин и регистрируете его - очень просто) и особенно хорошо подходит для этой задачи.

...