PDA

View Full Version : [Java and C] Sviluppare una GUI e realizzare comunicazione


fastmagister
07-07-2007, 13:51
Ciao a tutti

Ho sviluppato una piccola applicazione C che, presi in input dei dati dall'utente tramite banali chiamate ad scanf() (alcuni numeri reali ed una stringa), elabora tali dati e produce dell'output a video tramite chiamate a printf().

Ora, mi sono stati richiesti due diversi sviluppi da apportare alla mia applicazione:

1) fornire una GUI a tale applicazione (richiesta espressamente in Java) per l'inserimento dei dati e per la visualizzazione dell'input: si badi bene, NON riscrivere in Java tutto il programma, ma fornire un interfaccia Java al programma C;

2) rendere possibile l'utilizzo dell'applicazione direttamente da una pagina web: praticamente, dividerla in una parte client (l'interfaccia) caricabile in una pagina web, ed una parte server (la parte che esegue l'elaborazione).

Ora, mentre in C ho una certa esperienza, di Java sono quasi a digiuno (sulle GUI totalmente a digiuno...) pertanto vorrei chiedervi inizialmente qualcosa di generico, del tipo:
secondo voi è fattibile?
come impostereste il lavoro?
per essere caricata in una pagina web deve necessariamente trattarsi di un applet?
può comunicare con la parte in C?
quali librerie usare (ho letto sia di awt che di swing...)?

Una volta intrapresa una strada, poi probabilmente avrò altre domande da porre....

Grazie a tutti comunque

PGI-Bis
07-07-2007, 17:30
Si può fare ed è piuttosto facile.

Per essere parte di una pagina web l'applicazione Java deve essere inserita in un'applet. Usando Java Web Start puoi eseguire il programma in remoto. Java Web Start permette, tramite un collegamento web iniziale, di scaricare sul computer client un collegamento all'applicazione Java residente su un web server. L'avvio successivo del programma, che apparirà come una qualsiasi altra applicazione desktop, provvederà a collegarsi al server per scaricare l'ultima versione disponibile prima dell'esecuzione. E' un modello che ha una marea di vantaggi ma è poco diffuso per via di una strana passione per le pagine CaccaTML e il protocollo CaccaTTP. Inspiegabili bizzarrie.

Sia l'applicazione applet che l'applicazione Java Web Start richiedono l'applicazione di una firma digitale per permettere l'esecuzione di talune operazioni sensibili. L'esecuzione di un programma nativo rientra tra queste.

La firma digitale può essere frutto di un'autocertificazione. Anzichè prendere un certificato da Verisign e altro lo crei tu. Naturalmente quel certificato agli occhi di un utente di passaggio risulterà più che sospetto. A seconda dei destinatari del programma dovrai decidere se gli utenti si fideranno o se dovrai fatturare anche l'acquisto del certificato :D.

Per la creazione di interfacce grafiche in Java SE hai la favolosa opportunità di sfruttare Swing, un framework di ineguagliate caratteristiche. AWT è antiquato (risale ai tempi di Java 1.0), SWT è un suo pessimo fork, tutto il resto fa quasi sorridere.

Si nota che sono innamorato di Swing? :D

Per il dialogo puoi decidere se creare un wrapper JNI delle funzioni presenti nel programma C, avendone i sorgenti, oppure eseguire il programma nativo in un processo separato e dialogare con quest'ultimo attraverso i flussi standard.

Se il tuo programma raccoglie i dati dallo standard input e sputa i risultati sullo standard output probabilmente la seconda opzione è la più semplice.