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




Начиная с Java 1.4, вы можете использовать файлы с отображением памяти для обмена произвольной информацией с другим процессом. См. Подробности в java.nio.MappedByteBuffer.
Это не совсем то, что вы ищете, но тем не менее, вероятно, очень поможет: проект Собственный доступ к Java на java.net.
Не забывайте о розетках ...
Я думаю, что, возможно, вам нужно определить, что для вас означает «доступ». ЕСЛИ вы говорите о простом старом межпроцессном взаимодействии, тогда сокеты или JNI действительно ваш лучший выбор.
Комментарий Гарта об использовании файлов с отображением памяти интересен - я много раз использовал MMF и виртуальные файлы для IPC между приложениями C, но мне никогда не приходило в голову, что реализация MMF в Java может быть совместима с виртуальной файловой системой собственной ОС. Такие виртуальные файлы обычно требуют нетривиальной настройки, поэтому я был бы удивлен, если бы это сработало ...
В целом, если вы не перекачиваете огромные объемы данных между приложениями, использование сокетов, вероятно, является наиболее универсальным и эффективным способом сделать это. Убедитесь, что вы учитываете порядок байтов между ОС хоста и виртуальной машиной Java :-)