Есть много способов. Что вам нужно, недостаточно ясно, чтобы узнать, какой из них подходит для ваших нужд.
- Вы можете запустить JVM с флагами отладки, что позволит вам подключить отладчик (получить доступ на чтение и запись к внутренним компонентам вашей программы).
- Вы можете читать и записывать на стандартный вход, стандартный вывод и стандартные потоки ошибок, запуская программу с этими потоками, перенаправленными на другие программы или каналы.
- Вы можете открыть сокет и выполнить сетевую связь между одной программой, действующей как клиент, а другой - сервером (одноранговый сервер - это все клиентские программы, которые также выступают в качестве серверов).
- Вы можете общаться через сторонний элемент, например, очередь сообщений, запись базы данных (плохая идея, но мы все ее видели), файл на диске (опять плохая идея), буфер общей памяти, канал имен, общий семафор и т.д.
К сожалению, детали каждой возможности слишком велики, чтобы публиковать в таком ответе; и, вероятно, будет шум, если они не соответствуют вашим целям в области коммуникации. Я предлагаю вам поочередно читать некоторые из этих технологий и думать о том, какой стиль и требования у вас есть для общения.
java.lang.Process.