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:
- Framework Microsoft: MFC , .NET WinForms , .NET WPF (Windows Presentation Foundation) ;
- Framework Open Source: QT , GTK+ ;
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!