c'è una best practice & # 8221; accedere a un altro processo nel sistema operativo tramite Java?

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

  •  03-07-2019
  •  | 
  •  

Domanda

Ho letto Skype4Java (java api per skype) e ho notato che usano jni per accedere al client skype.

intuitivamente suppongo che ci sia già una libreria standard in Java che ha un'implementazione jni sensibile al sistema operativo per accedere ad altri processi. Mi sono messo a cercarne uno, ma non sono riuscito a trovarlo.

Esiste una libreria del genere? in caso contrario, esiste una procedura ottimale per accedere a un altro processo nel sistema operativo, non necessariamente un client skype?

È stato utile?

Soluzione

Penso che forse devi definire cosa significa 'accesso' per te. Se stai parlando di una semplice comunicazione tra processi, quindi socket o JNI sono davvero la soluzione migliore.

Il commento di Garth sull'uso di file mappati in memoria è interessante: ho usato MMF e file virtuali per IPC tra applicazioni C molte volte, ma non mi è mai venuto in mente che l'implementazione MMF di Java potrebbe essere compatibile con il file system virtuale del sistema operativo nativo. Questi tipi di file virtuali di solito richiedono un'installazione non banale, quindi sarei sorpreso se funzionasse ...

Detto questo, a meno che non si stia pompando enormi quantità di dati tra app, l'utilizzo dei socket è probabilmente il modo più universale ed efficace per farlo. Assicurati di tenere conto dell'endianness tra il sistema operativo host e Java VM :-)

Altri suggerimenti

Da Java 1.4 in poi è possibile utilizzare file mappati in memoria per scambiare informazioni arbitrarie con un altro processo. Vedi java.nio.MappedByteBuffer per i dettagli.

Questo non è proprio quello che stai cercando, ma probabilmente aiuterà molto comunque: il Java Progetto Native Access su java.net.

Non dimenticare i socket ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top