há uma “melhor prática” para acessar outro processo no sistema operacional através de java?

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

  •  03-07-2019
  •  | 
  •  

Pergunta

Estive lendo Skype4Java (api java para skype) e notei que eles usam JNI para acessar o cliente skype.

intuitivamente eu assumir que já existe uma biblioteca padrão em java que tem uma implementação jni sensível ao sistema operacional para acessar outros processos. I criado para olhar para um, mas não conseguiu encontrá-lo.

Existe uma biblioteca? Se não, há uma prática recomendada para acessar outro processo no sistema operacional, não necessariamente um cliente skype?

Foi útil?

Solução

Eu acho que talvez você precisa definir o que significa 'acesso' para você. Se você está falando sobre comunicação inter-processo velho liso, então soquetes ou JNI são realmente a sua melhor aposta.

O comentário de Garth sobre como usar arquivos de memória mapeada é interessante - eu usei FMM e arquivos virtuais para IPC entre aplicativos C muitas vezes, mas nunca me ocorreu que a implementação MMF de Java pode ser compatível com o sistema de arquivos virtual OS nativo. Esses tipos de arquivos virtuais geralmente requerem configuração não-trivial, então eu ficaria surpreso se ele iria trabalhar ...

Tudo dito, a menos que você está bombeando quantidades maciças de dados entre aplicativos, usando sockets é provavelmente a maneira mais universal e eficaz de fazê-lo. Certifique-se que você conta para endianness entre o sistema operacional hospedeiro e Java VM: -)

Outras dicas

De Java 1.4 em diante você pode usar arquivos de memória mapeada para trocar informações arbitrária com outro processo. Veja java.nio.MappedByteBuffer para mais detalhes.

Esta não é bem o que você está procurando, mas provavelmente vai ajudar muito no entanto: o Java projeto Native Acesso em java.net.

Não se esqueça soquetes ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top