GUIs, introduction and list

Before starting an application, if we do not target a particular system, we should choose a graphical user interface, and a wide choice is offered to the programmer.

Graphical User Interface - GUI

But above all, for a lambda programmer, unrelated to a particular environment, a fact must be taken into consideration: the future of programming is not Windows (or any other system), it is in mobile devices and Web applications running on a server, so should we use a framework able to run on a server and a mobile.

Classical user interface on the desktop operate on the WIMP model. It is the acronym of Window, Icon, Menu, Pointing device. The principle was developed from 1973 by Xerox and popularized by Apple with the Macintosh and then by Microsoft from Windows 95.

This model is challenged by touch screens. In the case of mobiles, we are facing a considerable fragmentation of environments and graphical interfaces, as discussed in the article Programming a mobile phone, which we can overcome only with HTML 5.

List of toolkits and platforms

Toolkits contain predefined components used directly to create the interface of an application.

Qt

Qt, acquired by Nokia, then by Digia, was originally mainly used by KDE on Linux. It spread to all systems and is now the basis for programming applications for mobiles by Nokia. The toolbox, QtClick, provide a lot of ready to use code.
Since version 5.1 applications run on Android and iOS as well.

Benefits

Disadvantages

JavaFX

The library of the Java programming language includes all components necessary to user interface. JavaFX makes it easier to build user interfaces.
It is possible to use Java classes in a C or PHP application.

Benefits

Disadvantages

WPF and WinRT

WPF is the GUI and devices layer on .NET. The API which provides access to all Windows services. WinRT is the runtime of Windows 8.

Benefits

Disadvantages.

GTK

The graphical framework for Gnome on Linux is ported to Windows. The best-known Windows application using this framework is the Gimp, and it is available on all operating systems.
There is a port of GTK for PHP, but not updated for ages and requires a modified version of the runtime.
GTK is considered as less convenient than Qt, to equal features, and more difficult to program.

Aura

Made by Google to replace GTK to give Chrome and ChromeOS a portable graphical framework, working on Linux and Android.
It is based on OpenGL and opens a context for each window, rather than each tab in order to save resources.
Aura is probably not easy to use for an application as it is designed for the browser, but as the trend is to use the browser as the interface to the system (what ChromeOS essentially does), this framework is indirectly universal.
One can also argue that GTK has been made for Gimp and became universal, Aura could follow the same route.

Tcl/Tk

Tcl is a programming language and Tk a GUI toolkit, working with Tcl and other languages.

Benefits

Disadvantages

FTLK

Toolkit for creating graphical user interfaces in C.

Benefits

Disadvantages

wxWidget

Toolkit for Windows, Linux, Mac based on GTK but using native widgets. It is used with different programming languages. Disadvantages appear at use due to its lack of flexibility.
In November 2013 came the version 3.0, the first update since 1998! This proves that the project is still alive, but it makes the next major release in 2028.

FOX

Toolbox to create interfaces in C. Ported to Windows, Linux and other Unix.
Can help give the look of Windows applications on Linux.

SDL

A library for game programming using all resources (sound, video, devices) of the computer, for any language, any OS. This framework provides access to OpenGL and DirectX.
We can use many programming languages, including PHP, C, Java.
For Windows, Linux.

AIR

Programming applications in Flash. Very portable, but access to hardware is limited.

Basic APIs

There APIs are interfaces to the systems, providing primitives used to create a library of components.

OpenGL

Portable graphics library, an alternative to DirectX, for optimal performance. It interfaces with the graphics card, and user must have a version for his graphics card, if not already installed by the seller.
There is an interface to OpenGL for browsers, WebGL.

To build your own components, you can use a tool box as GLUT, which is not open source, unlike other libraries in this list. This will not approach the simplicity of Qt, but will be much lighter.

Cairo

Named first Xr, the Greek letters are pronounced Chi and Ro, which gave the new name.
Vector graphics API. Compatible with many systems and programming languages.
This is an interface between a toolkit and OpenGL or DirectX.

WebKit

The rendering engine of Chrome and Safari can also be used directly by an application and display HTML 5. There is a WebKit component in Qt.

The project Berkelium allows, like QtWebKit, integrating a browser into an application and use HTML 5  as interface language. The browser will then displayed as an objet in the scenery.

Berkelium, browser as object of interface

Clutter

A library  supported by Intel originally intended for Meego, the system for mobile, so using little space. This is actually an interface to OpenGL which simplifies its use. It has a toolbox, Mx (like QT has QtClick). The programming language is C++ or Python. The projet is now a part of Gnome.

DirectX

Interface to audio and graphic devices on Windows.

Conclusion

We see that when a framework offers the possibility of programming for mobile phones, one enters the circle of specializations, each platform running a system for a single brand.
Otherwise, when programming for the desktop but not specifically for Windows, Qt seems to be the most comprehensive framework while being portable. The license is LGPL.
Remain still the possibility to write his own components with OpenGL or WebKit if you need a very limited interface.

See a list of tools to make graphical user interfaces on the page on EDI and a list of frameworks for mobile devices.

History and documents