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

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

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

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
517
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

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

Не забывайте о розетках ...

Ответ принят как подходящий

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

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

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

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