Есть ли "лучшая практика" для доступа к другому процессу в ОС через Java? - PullRequest
3 голосов
/ 02 октября 2008

Я читал Skype4Java (Java-API для Skype) и заметил, что они используют jni для доступа к клиенту Skype.

Интуитивно я бы предположил, что в java уже есть стандартная библиотека, которая имеет чувствительную к ОС реализацию jni для доступа к другим процессам. Я настроился на его поиск, но не смог его найти.

Есть ли такая библиотека? если нет, то есть ли лучший способ получить доступ к другому процессу в ОС, не обязательно к клиенту Skype?

Ответы [ 4 ]

4 голосов
/ 02 октября 2008

Начиная с Java 1.4, вы можете использовать отображенные в памяти файлы для обмена произвольной информацией с другим процессом. См. Java.nio.MappedByteBuffer для деталей.

1 голос
/ 03 октября 2008

Я думаю, что, возможно, вам нужно определить, что для вас означает «доступ». Если вы говорите о простом старом межпроцессном взаимодействии, то сокеты или JNI - действительно ваш лучший выбор.

Комментарий Гарта об использовании файлов, отображаемых в память, интересен - я много раз использовал MMF и виртуальные файлы для IPC между приложениями C, но мне никогда не приходило в голову, что реализация MMF Java может быть совместима с виртуальной файловой системой собственной ОС. Такие виртуальные файлы обычно требуют нетривиальной настройки, поэтому я бы удивился, если бы это сработало ...

В любом случае, если вы не перекачиваете огромные объемы данных между приложениями, использование сокетов, вероятно, является наиболее универсальным и эффективным способом сделать это. Убедитесь, что вы учитываете порядковый номер между хост-ОС и Java VM: -)

1 голос
/ 02 октября 2008

Не забудь розетки ...

1 голос
/ 02 октября 2008

Это не совсем то, что вы ищете, но, тем не менее, вероятно, очень поможет: проект Native Access Java на java.net.

...