Existe-t-il des "meilleures pratiques" & # 8221; accéder à un autre processus dans le système d'exploitation via Java?

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

  •  03-07-2019
  •  | 
  •  

Question

Je lisais Skype4Java (api java pour skype) et remarquais qu'ils utilisaient jni pour accéder au client skype.

intuitivement, je supposerais qu’il existe déjà une bibliothèque standard en Java qui dispose d’une implémentation jni sensible au système d’exploitation pour accéder à d’autres processus. Je me suis préparé à en chercher un, mais je ne l'ai pas trouvé.

Existe-t-il une telle bibliothèque? Si ce n’est pas le cas, existe-t-il une bonne pratique pour accéder à un autre processus du système d’exploitation, pas nécessairement à un client Skype?

Était-ce utile?

La solution

Je pense que vous devez peut-être définir ce que "accès" signifie pour vous. SI vous parlez de vieilles communications inter-processus, alors les sockets ou JNI sont vraiment votre meilleur pari.

Le commentaire de Garth sur l'utilisation de fichiers mappés en mémoire est intéressant. J'ai souvent utilisé des fichiers MMF et des fichiers virtuels pour IPC entre applications C, mais je ne me suis jamais rendu compte que l'implémentation MMF de Java pouvait être compatible avec le système de fichiers virtuel natif du système d'exploitation. Ces types de fichiers virtuels nécessitent généralement une configuration non triviale, donc je serais surpris que cela fonctionne ...

Tout bien dit, à moins de pomper des quantités énormes de données entre les applications, l’utilisation de sockets est probablement le moyen le plus universel et le plus efficace de le faire. Assurez-vous de prendre en compte l’endianité entre le système d’exploitation hôte et la machine virtuelle Java: -)

Autres conseils

À partir de Java 1.4, vous pouvez utiliser des fichiers mappés en mémoire pour échanger des informations arbitraires avec un autre processus. Voir java.nio.MappedByteBuffer pour plus de détails.

Ce n’est pas tout à fait ce que vous recherchiez, mais vous aidera néanmoins beaucoup: le Java Projet Accès natif sur java.net.

N'oubliez pas les prises de courant ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top