GTK, Qt, and Swing: A Somewhat Interesting Comparison
Posted by Eitan Wed, 01 Mar 2006 14:21:00 GMT
Since I switched to Linux maybe eight months ago, I've had the pleasure of getting to know a new environment. It's interesting to see the major linux desktop environments, Gnome and KDE, living side by side, in relative harmony. I also discovered how one can write Java applications that use the GTK GUI toolkit, for example.
It's interesting to see how GNOME is based on GTK, KDE is based on Trolltech's Qt library. Each library has a harness, so to speak, in its respective desktop environment. The existence of that harness not only exercises the codebase, but also puts demands on it to provide the building blocks for constructing a complete, rich desktop environment. Each desktop environment in fact has additional widgets that go beyond the basic libraries to fill the gaps. For example, it is standard for graphical file managers (such as Nautilus and Konqueror) to provide multiple views fo a directory listing: 'view as icons', a simple list view, a detailed, tabular view, etc.. You'll find such widgets in KDE and GNOME libraries but not in Qt or GTK proper. Slowly these higher-level widgets get incorporated back to the underlying toolkit library.
I sometimes wish that Swing had a similar harness. That there existed a Java desktop system written entirely in Swing; one that exercised the Swing framework and ensured that it was complete and robust enough to support a heavily used, rich desktop environment. I have to admit this wish is very selfish. In the last couple of years I have been working on building a GUI environment for business applications in Swing, and have had to build my own primitive implementations of widgets which are commonplace in KDE and GNOME. I don't think I picked the wrong framework. I'm sure that using GTK or KDE has its own issues. You'd have to worry about language bindings, type matching issues, and other headaches.
Anyhow, I thought I'd bring this thought to the surface and share it with the community: a java desktop environment written in Swing.
Anyone know of any such projects going on? JDistro appears to be the most active. And it's really cool.