- Vocabulary
- Web and Java and More
- Your Own Experiments
- Other Contestants
- Importance of Tools
Web and Java and More
The most universal and in many ways easiest GUI model is an outlier: the web application. Web applications are severely limited in their statelessness and in the poverty of their widget sets. However, if an application on which you're working is sufficiently simple to fit the form-based data-entry dialogue that web applications handle best, web programming is likely to give you the quickest time to market. C++ certainly can generate CGI-based pages. Even when you've decided on a more sophisticated widget set, web applications sometimes make for useful prototypes that give your clients a feel for how the final result will operate.
Another toolkit that emphasizes universality is Java's Swing library. While web applications achieve their range by being as simple as possible, Swing goes to the other extreme, making all its parts highly customizable. I regard Swing as demanding: far less portable than advertised, difficult in development, fragile in deployment, and often gluttonous with resources such as CPU time and memory space. Unless I have a specific need for the accessibility and internationalized text management that Java has pioneered, or am leveraging a specialized Java-coded GUI library, I avoid Swing work.
Apart from web pages, the visual appearance that end users most expect is "the Microsoft look," a rather fuzzy notion associated with several different technical implementations, including Microsoft Foundation Classes (MFC), .NET, and Visual Studio. Market share is the main advantage of this choice, but it generally demands a lot in the way of hardware and is poorly portablein many cases, even to older versions of Windows.
If a web application can't meet your requirements, and you want more portability than Microsoft solutions provide, I think the most natural candidate for C++ coding is Qt. Trolltech AS's proprietary C++ application framework offers polished libraries not only for Windows and Linux, but for Mac OS X, most other UNIX variants, and even several embedded platforms, including Sharp's Zaurus.
Documentation has always been a particular strength of Qt. This and other Qt advantages have led to an impressive collection of successful projects based on Qt, including the KDE graphical desktop environment standard that comes with several UNIX distributions, and showcase mission monitors for the European Space Agency.