Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Взаимодействие процессов


Автор: jecl 24.6.2008, 18:54
Приветствую!
Есть задача организации механизма общения между процессами.
Процессами я называю здесь обычное приложения - будь то java,c/c++, python etc.
Суть такова - все приложения изначально запущенны, но при работе с одним из приложений (допустим приложение А) может появиться необходимость быстрого перехода в другое приложение - в приложение Б (с передачей данных из приложения А).
К примеру пользователь просматривает список маршруток, и хочет посмотреть их маршрут на карте. Список маршрутов и карта - 2 независимых приложения.
Один из вариантов - RMI. Но данная технология применима только к java(ну есть вроде для плюсов реализация, но не в связке с разными языками).  Почему применима, потому что на данный момент предпологается писать приложения на java, но очень хотелось бы независимости от языка. 
Но даже в предположении того, что все приложения будут на java, минусом данного варианта является то что RMI - сетевая технология для распределенных систем, в текущей же задаче, взаимодействие процессов следует осуществить только для локальной машины.
Я бы хотел услышать возможные варианты взаимодействия java-процессов.
Такое взаимодействие я вижу или через посредника(который будет висеть на определенном порту), или в качестве одноранговой модели, - все это сокеты.
А если не через сокеты, ведь все локально?
Возможен вариант через Runtime.exec(), с последующим гетом инпут/оутпут стримов. Этот вариант тоже интересен, даже в доке про Process написано 
The ProcessBuilder.start() and Runtime.exec  methods create a native process and return an instance of a subclass of Process that can be used to control the process...
Так вот этот самый control the process я вижу через придумывание своего протокола общения, с парсингом стримов(в принципе с сокетами тоже самое) - вариант.
Итак, если имеем только java программы, возможен ли вызов методов разных java-процессов. Что-то типа Local Method Invocation.
Если же программы написаны на разных языках, единственный способ общения - сокеты и свой протокол.
Очень интерестны ваши мнения.



Автор: LSD 25.6.2008, 11:46
В принципе тема уже обсуждалась, и кроме тех способов что ты назвал (сеть и stdin/stdout) есть еще пайпы и файлы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)