OpenJDK Swing in Gtk clothing: getting there? June 2, 2008Posted by claudio in Uncategorized.
Tags: Desktop, GNU/Linux, Java, Linux, swing
Sun has a golden opportunity to make the dream of Desktop java reality. Although java is predominant for enterprise applications and on the server room, java on the Deskop – whatever Sun claims – is not a reality.
Things have changed since the days of over-hyped applets. Java SE 6 is nice and getting better and swing – and java in general – have made huge speed improvement (hotspot and co.). More important, java is now free.
The new door of opportunity of Desktop java is on GNU/Linux. Ubuntu and Fedora, clearly the leaders distributions of Desktop Linux, include OpenJDK 6 in their repositories. This take care of the biggest obstacle in java desktop adoption: the installation and update of the JVM by regular users. With Netbeans on Linux it’s easy to write Swing applications in no time. “Write Once, Run Everywhere” can bring new applications and developers to Linux, and successful applications will eventually find their way to Windows, the biggest player on the Desktop market.
Swing in Windows looks pretty native, this is not the case in Linux however. Swing picks out the right colours and themes and windows behave like a normal GTK (Gnome) application. Nevertheless, own Swing dialogues (e.g. open-save) and differences in widgets make Swing application look a little odd (look at the space between the buttons in the screenshot).
I am however optimist on the future progress of the GTK look. The combobox is extremely problematic on Java SE 6 with the GTK look (I think it’s a regression from previous version). It looks like a box with a broken (absent) right margin. Terrible. With the open source OpenJDK 6 version of the runtime, things look a lot better. Not native yet, but at least acceptable and not broken.
Will Sun seize this opportunity?
As a reference, I wrote a small toy GTK window (perl with gtk-bindings) is included in the screenshot. In the back the application launched with Java SE 6 update 6, in the middle with OpenJDK6 and in front the native application.