существует ли «лучшая практика» для доступа к другому процессу в ОС через Java?

StackOverflow https://stackoverflow.com/questions/161529

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

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

Это не совсем то, что вы ищете, но, тем не менее, это, вероятно, очень поможет:тот Собственный доступ к Java проект на java.net.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top