Java IPC: графический интерфейс и командная строка

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

java CliMain arg1 arg2

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

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
1 971
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

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

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

Это очень мощная техника. Это также позволяет вам предоставить HTTP-интерфейс для вашей программы, полезный для немедленного предоставления доступа к сети вашего приложения.

Jamie Love 30.10.2008 04:56

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

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

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

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

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

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

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

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

Другие вопросы по теме