Sviluppo software

Quale framework per lo sviluppo di Interfacce Utente: WPF, QT o GTK+ ?

Esistono vari framework tra cui scegliere per lo sviluppo di interfacce utente UI in contesto industriale, per questo motivo decidere qual è il più adatto può richiedere diverso tempo.


Partiamo col dire che una classificazione iniziale dei vari framework ci consente di dividerli in due gruppi:

Scegliere un framework Microsoft pone il limite di poter sviluppare interfacce utente esclusivamente per Windows. Vincolarsi a un S.O. particolare in partenza può non essere la scelta giusta. Inoltre, se si esclude il segmento Desktop, i sistemi operativi Microsoft detengono la fetta di mercato minore.

Una bella tabella della distribuzione percentuale dei vari S.O. in base al settore è presente su wikipedia al link Usage share of operating systems - Market share by category .

Scegliere un framework Open Source, invece, permette di realizzare un'applicazione multipiattaforma. Questo vuol dire che è possibile eseguire la stessa applicazione sui principali S.O., siano essi basati su Linux, Unix o Windows. In questo modo si può partire con un S.O. specifico, ma all'occorrenza per i motivi più disparati come efficienza, licenze software, ecc. si può decidere di cambiare S.O. in modo agevolato.

In pratica utilizzando un Framework Open Source si è liberi di scegliere ed eventualmente ritardare la scelta. Per esperienza poter ritardare la scelta o cambiarla in corso d'opera è fondamentale. In passato, per esigenze del cliente e per esigenze tecniche ci è capitato di dover cambiare S.O., alcune volte da Windows a Linux, ma anche il viceversa. Se non avessimo utilizzato un framework Open Source, entrambi i passaggi avrebbero richiesto forti investimenti aggiuntivi.

Ok, e tra i Framework Open Source qual è il più indicato per realizzare un software per un sistema embedded?

Analizziamo i framework QT e GTK+ punto per punto.

Iniziamo con il dire che tutti e due sono framework di sviluppo open source e multi piattaforma.

Team di sviluppo#

Lo sviluppo del framework Qt è portato avanti da una comunità di sviluppatori con il nome di Qt Project . I contributi principali a questo framework sono venuti dalle aziende Trolltech, gli sviluppatore del desktop KDE, Nokia e per ultima Digia che è l'azienda che offre il supporto commerciale per questo framework.

GTK+ è stato originariamente creato per facilitare lo sviluppo dell'applicazione grafia GIMP. Attualmente lo sviluppo del framework è gestito dalla GNOME Foundation.

Documentazione#

Tutti e due i framework sono ben documentati, ma in più la documentazione delle QT è ricca di esempi.

Copertura del framework#

Il framework QT copre tutti gli aspetti di un'applicazione nativa, non solo l'aspetto dell'interfaccia utente. Tale framework infatti fornisce tutta una serie di funzionalità per gestire la rete e i suo protocolli (http, tcp ecc.), i database, l'accelerazione grafica della scheda video (OpenGL), il suono, ecc.

Il framework GTK+ è solo un toolkit per la realizzazione di interfacce, ma comunque può essere affiancato ad altre librerie con cui è facile integrarlo: GLib, GIO, GNet, GStreamer, Poppler, Pango, Cairo e Clutter.

Il framework WxWidgets similmente al framework QT copre vari aspetti oltre alla sola UI.

Portabilità#

Tutti e due i framework possono essere eseguiti sui principali sistemi operativi Windows, Linux e Mac OS X.

Per i dispositivi embedded o i dispositivi mobili però il framework QT ha il vantaggio di poter essere eseguito direttamente sull'hardaware senza la presenza del software X11 o di un Window Manager. In altre parole può accedere direttamente al frame buffer video .

Le GTK+ invece richiedono la presenza di un Window Manager, questo vuol dire che per far girare un'applicazione i processi attivi devono essere come minimo 3: il server X, il Window Manager e l'applicazione stessa. Per sistemi con risorse limitate questo overhead può diventare un problema.

Inoltre le interfaccie QT appaiono e si comportano in modo più nativo rispetto alle GUI GTK+ sulle piattaforme Windows e Mac, questo perché le QT chiamano delle primitive di disegno native in tutti i casi in cui è possibile.

Performance#

Entrambi i framework hanno prestazioni simili.

UI#

Il framework QT fornisce molte più possibilità per la realizzazione di interfacce utente UI rispetto alle GTK. Abbiamo trattato questo argomento più nel dettaglio nell'articolo I tre metodi di creazione delle interfacce con le QT, pregi e difetti per i settori embedded e desktop application

Linguaggio di programmazione#

Il framework QT nativamente è stato sviluppato per il linguaggio di programmazione C++. Esistono però vari binding in: Python, Ruby, PHP, Perl. I più attivi sono i due binding Python: PyQT e PySide .

Il framework GTK nativamente supporta il linguaggio C. Esistono però vari binding in: Python, C++, Java, Perl, Ruby, PHP. Il più maturo è il binding in Python PyGTK .

Licenze#

GTK+ è rilasciato con licenza LGPL, ciò vuol dire che possono essere sviluppati software closed source che utlilizzano le GTK+, ma tale framework deve essere linkato in modo dinamico (.dll o .so).

Le QT sono rilasciate con 3 licenze a scelta dello sviluppatore che le utilizza:

  • LGPL 2.1
  • GPL 3
  • Commerciale. In questa versione viene offerto un supporto di tipo commerciale da Digia.

Conclusioni#

Concludendo, secondo noi, tra le varie scelte, il framework QT è quello da preferire per lo sviluppo di nuovi progetti nel campo embedded o delle desktop application native. Inoltre se non c'è la necessità di spingere al limite le prestazioni, consigliamo fortemente il binding Python delle QT.

Hai qualche domanda a cui non abbiamo dato risposta? Contattaci senza impegno!

Autore: Giovanni Chiodi
Senior software developer con più di 13 anni di esperienza nello sviluppo di soluzioni web based, enterprise, su misura. Dal 2011 socio fondatore di Garda Informatica Snc condivide questa avventura col fratello Lorenzo.

Che soluzione cerchi?#

Read more!

Newsletter

Ti è piaciuto questo articolo? Iscriviti alla newsletter

Di tanto in tanto pubblichiamo nuovi articoli come questo. Se vuoi essere avvisato lascia il tuo indirizzo e-mail di seguito.

Non invieremo mai SPAM e non condivideremo la tua e-mail con altri. Per maggiori informazioni consulta la privacy policy.

Attendere prego...

closeIcona closesearchIcona searchmore vertIcona more vertmenuIcona menushareIcona sharelinkIcona linkarrow upwardIcona arrow upward