Tuesday, April 25, 2006

Kaffe AWT news

I spent the past weeks in the effort to remove some cruft out of the Xlib peerles AWT implementation in kaffe.
Why? I would find it very interesting to be able to run at least simple swing programs without the need of the weight of QT4 or the GTK2 bloat.

As you can see in the screenshot, the effort paid off! Simple swing programs start and simple events like the JButtons do work! The JTree is fully functional and scrolling of the pane works too.
You can also see that AWT still works as I opened a locale properties program I am developing, you can notice the awt drawn toolkit buttons and file panel.

My work was tries to leverage as much as possible from classpath, which kaffe has anyway. Thus I totally removed some classes from the kaffe awt so that the classpath ones are used (copying the files over as was done in the past is a lot of work and also means that with the time those classes will get out of sync with classpath again).
I also refactored some AWT classes so that the fields and methods are more compatible with classpath and JDK serialization.

A lot of work remains to be done though and I'd appreciate any help.
Roman Kennke from classpath was very precious in helping me out of some pitfalls and he is himself working on an pure X awt, but his one has peers and accesses X directly through java using escher. I think that too is a promising project and I hope in a future collaboration.