Passare dati da un applicazione esterna.

di
Anonimizzato12964
il
2 risposte

Passare dati da un applicazione esterna.

Salve, sto facendo un piccolo programma java che deve ricevere dei dati da un periferica di input. Questa periferica ha un suo SDK solo in C, e ho fatto un piccolo programmino C che semplicemente legge i dati che mi servono. Ora devo passare i dati alla mia applicazione java e mi vengono in mente tre modi:
1) Creare una socket TCP tra il mio programmino C e la mia applicazione java per mandare i dati.
2) Usare JNI e fare del mio programmino una libreria dll e mandare i dati con una chiamata JNI.
3) Far mandare dal mio programmino i dati sullo standard output, poi avviarlo come applicazione esterna da java (ProcessBuilder o simili) e leggere i dati dall'output del mio programmino con un InputStreamReader.

I dati non sono molti, ma mi interessa che vengano passati nel minor tempo possibile, quale dei 3 modi che ho elencato prima pensate che sia il più performante?

PS: per ora mi serve su Windows, ma poi dovrò anche fare il porting su Linux, quindi mi servirebbe una soluzione possibilmente multipiattaforma.

2 Risposte

  • Re: Passare dati da un applicazione esterna.

    Nessuna delle precedenti, ma, ovviamente, la soluzione n. 4

    4) Usa JNA (che NON E' JNI!)
    https://github.com/java-native-access/jn
  • Re: Passare dati da un applicazione esterna.

    Grazie mille @migliorabile per la risposta. Tuttavia provando con il JNA ho capito per alcune funzioni particolati mi serve che il mio programma C esegua il main(), mi serve per la gestione di alcuni eventi. Quindi JNI e JNA non penso che possano essere usati.
    Penso che mi rimangono quindi solo due strade, socket TCP o ProcessBuilder InputStreamReader, quale pensate che sia il più preformante tra questi?
Devi accedere o registrarti per scrivere nel forum
2 risposte