what is the state of awt in lingcj?
Rolf W. Rasmussen
Fri Jul 13 06:07:00 GMT 2001
On Thu, Jul 12, 2001 at 05:49:53PM -0700, Per Bothner wrote:
> There are advantages in doing xlib peers (first):
> * More compatible with the Swing model, using light-weight components
> where most of the code including look-and-feel are written in Java.
This was my original motivation for creating the Xlib peer. I wanted to
create a lightweight implementation of the core of AWT so that a clean room
Swing implementation could be built on top of it.
Pure Xlib doesn't have any native widgets, so I planned to "loop back" the
Swing component implementations to separate sub-windows to create the
traditional heavyweight AWT components. The screenshots of simple
buttons and labels on my website shows an early implementation of this.
The problem arose when I tried to implement more complex components such
as text fields. First then I realized what a terrible state Swing APIs was
in. Swing is horribly underspecified. The documentation of a large
portion of classes is practically non-existant, and while the design of
Swing on the surface may look sound, the further you dig into the details,
the more messy it gets. The chances of creating a proper clean room Swing
implementation without seems pretty bleak.
In order to make the Xlib usable, we need either to create something
resembling Swing, or create a set of simpler component implementations
based on the AWT primitives, but as you said...
> There are also advantages in concentrating on Gnome first:
> * Higher level abstracting means lot of the work is already done.
> Re-inventing the wheel is not my idea of fun.
I agree. Without a proper Swing implementation, some of the
merit of the Xlib peers have disappeared.
I haven't had much time to work on libgcj lately, but I hope that
will change soon. When that happens I might consider concentrating my
efforts on getting get a set of GTK/Gnome peers up and running instead.
> Rolf, any comments? Do you have any recent work you haven't
> checked in? Is there anything we need besides what's in CVS
> to try it out?
The old JCNIX libraries has some code that I never merged, including some
optimized renderers for the Java2d stuff.
Of newer code not in CVS, I have parts of a Swing implementation. You can
find the source code at
I'm sorry that I don't have more time to devote to this at the moment.
Rolf W. Rasmussen
More information about the Java