¿Existe una "mejor práctica" para acceder a otro proceso en el sistema operativo a través de java?

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

  •  03-07-2019
  •  | 
  •  

Pregunta

He estado leyendo Skype4Java (java api para skype) y noté que usan jni para acceder al cliente de skype.

intuitivamente, asumo que ya hay una biblioteca estándar en java que tiene una implementación jni sensible al sistema operativo para acceder a otros procesos. Me preparé para buscar uno, pero no pude encontrarlo.

¿Existe tal biblioteca? si no es así, ¿existe una mejor práctica para acceder a otro proceso en el sistema operativo, no necesariamente un cliente de Skype?

¿Fue útil?

Solución

Creo que quizás necesitas definir qué significa para ti el "acceso". Si está hablando de una comunicación entre procesos completamente antigua, los sockets o JNI son realmente su mejor apuesta.

El comentario de Garth sobre el uso de archivos mapeados en memoria es interesante: he usado MMF y archivos virtuales para IPC entre aplicaciones C muchas veces, pero nunca se me ocurrió que la implementación MMF de Java podría ser compatible con el sistema de archivos virtual nativo del sistema operativo. Este tipo de archivos virtuales generalmente requieren una configuración no trivial, por lo que me sorprendería si funcionara ...

Todo esto, a menos que esté bombeando grandes cantidades de datos entre aplicaciones, el uso de sockets es probablemente la forma más universal y efectiva de hacerlo. Asegúrese de tener en cuenta la endianness entre el SO host y Java VM :-)

Otros consejos

Desde Java 1.4 en adelante, puede usar archivos asignados en memoria para intercambiar información arbitraria con otro proceso. Consulte java.nio.MappedByteBuffer para más detalles.

Esto no es exactamente lo que está buscando, pero probablemente ayude mucho a pesar de todo: el Java Proyecto Native Access en java.net.

No olvides los enchufes ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top