| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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) есть еще пайпы и файлы. |