Les GUIs, introduction et lequel utiliser

Avant de débuter une application, si l'on ne cible par un système particulier, il convient de choisir une interface graphique utilisateur et un large choix s'offre au programmeur.

Mais avant toute chose, pour le programmeur lambda, non lié à un environnement particulier, un fait doit être pris en considération: l'avenir de la programmation n'est pas sous Windows (ni aucun autre système), elle est dans les applications Web, fonctionnant sur un serveur, aussi devrait-on utiliser un framework pouvant fonctionner sur les serveurs les plus communs, et donc sur Apache.

On peut aussi parler des mobiles, mais l'on a dans ce cas une fragmentation considérable des environnements, traitée dans l'article Programmation d'un téléphone mobile, dont on ne peut s'affranchir qu'avec HTML 5.

WIMP

Les interface utilisateurs classique sur le bureau sont de type WIMP. C'est l'acronyme de Window, Icon, Menu, Pointing device (Window, Icône, Menu, Pointeur). Le principe a été développé à partir de 1973 par Xerox et popularisé par Apple avec le MacIntosh, puis par Microsoft à partir de Windows 95.

Ce modèle est remis en question par les écrans tactiles.

Liste de boites à outils (toolkits) et plateformes

Les boites à outils contiennent des composants prédéfinis utilisables directement pour créer l'interface d'une application.

Qt

Qt, acquis par Nokia, était surtout à l'origine utilisé par l'interface KDE sur Linux. Il s'est étendu à tous les systèmes et est maintenant la base de la programmation des applications pour mobiles par Nokia. La boite à outil, QtClick, fournit une quantité de code prêt à utiliser.

Avantages

Inconvénients

Java

Langage de programmation dont la librairie comprend tous les composants utiles à une interface utilisateur.
Il est possible d'utiliser les classes Java dans une application en C ou PHP.

Avantages

Inconvénients

WPF

C'est la couche d'interface graphique et matériel de .NET, dont l'API permet d'accéder à tous les services de Windows.

Avantages

Inconvénients.

Tcl/Tk

Tcl est un langage de programmation et Tk un toolkit graphique, fonctionnant avec Tcl ou autres langages.

Avantages

Inconvénients

FTLK

Boite à outils pour créer des interfaces graphiques en C++.

Avantages

Inconvénients

GTK

Le framework graphique de Gnome sous Linux, porté sous Windows. L'application Windows la plus connue utilisant ce framework est GIMP, et elle est disponible sur tous les systèmes d'exploitation.
Il existe un port de GTK pour PHP, mais non mise à jour depuis des lustres et nécessitant une version modifiée du runtime.
On considère GTK comme moins pratique que Qt, à possibilités équivalentes et plus difficile à programmer.


wxWidget

Toolkit pour Windows, Linux, Mac. Il s'utilise avec des langages de programmation différents. Des inconvénients apparaissent à l'usage de par son manque de flexibilité.

FOX

Boite à outils pour créer des interfaces en C++. Porté sous Windows, Linux et autres Unix.
Peut aider à donner le look Windows à des applications sous Linux.

SDL

S'utilise surtout pour réaliser des jeux. Ce framework portable donne accès à OpenGL et aux périphériques.
On peut utiliser de nombreux langages de programmation, dont PHP, C++, Java.

AIR

Programmer des applications en Flash. Largement portable, mais l'accès aux ressources matérielles est limité.

APIs de base

Les API de base sont des interfaces au système fournissant des primitives utilisables pour créer une bibliothèque de composants.

OpenGL

Librairie graphique portable, alternative à DirectX, pour des performances optimales. Elle s'interface avec la carte graphique et l'utilisateur doit avoir une version pour sa carte graphique, si non déjà installée par le vendeur.
Il existe une interface à OpenGL pour les navigateurs, WebGL.

Pour réaliser ses propres composants, on peut utiliser une boite à outil comme GLUT, qui n'est pas open-source, contrairement aux autres bibliothèques dans cette liste. Cela n'approchera pas le simplicité de Qt mais sera beaucoup plus léger.

Cairo

Nommé d'abord Xr, les lettres grecques se prononcent Chi et Ro, ce qui a donné le nouveau nom.
API de graphisme vectoriel. Compatible avec de nombreux systèmes et langages de programmation.
C'est une interface entre un toolkit et OpenGL ou DirectX.

Berkelium, navigateur comme objet d'interface

WebKit

Le moteur de rendu de Chrome et Safari peut être utilisé aussi directement par une application et afficher du HTML 5. Il existe un composant WebKit dans Qt.

Le projet Berkelium permet, ainsi que QtWebkit, d'intégrer un navigateur dans une application et d'utiliser HTML 5 comme langage d'interface. Le navivateur sera alors affiché comme un objet dans le décor.

Clutter

Une bibliothèque de fonction soutenue par Intel, à l'origine destinée à Meego, le système pour mobile, donc peu encombrante. C'est en fait une interface à OpenGL qui en simplifie l'usage. Elle dispose d'une boite à outil, Mx (comme QT dispose de QtClick). Le langage de programmation est C++ ou Python.

DirectX

Interface aux périphériques audio et graphique de Windows.

Conclusion

On voit que quand un framework offre la possibilité de programmer pour mobiles, on entre dans le cercle des spécialisations, chaque plateforme fonctionnant sous le système d'une marque seule.
Sinon, lorsque l'on programme pour le bureau mais pas spécifiquement pour Windows, Qt semble être le framework le plus complet tout en étant portable. La licence est LGPL.
Reste encore la possibilité d'écrire ses propres composants avec OpenGL ou WebKit si l'on besoin d'une interface très limitée.

Ressources

Histoire et documents
Technologies de la programmation Ajax - API - Cassandra - CLI - Code HTTP - Cookie - Cover Flow - Dalvik - DFA - .NET - EDI (ou IDE) - Flash - GUI - JavaFX - JNA - JSON - MySQL - NaCl - NoSQL - Protocol Buffers - Qt - REST - Servlet - Web 2.0 - WebGL - Webkit - WinRT - Wysiwyg