[kaffe] Planning for 1.1.2 release - XAWT obsolete?

Jim Pick jim@kaffe.org
Tue Sep 23 11:36:02 2003


On Tue, 23 Sep 2003 18:47:28 +0200
Clemens Eisserer <linuxhippy@web.de> wrote:

> Hi there!
>=20
> >Nope. GNU Classpath AWT integrating should happen for the 1.1.3.
> >
> Does this mean the current kaffe-xawt implementation will be thrown away?

Not at all.  We already support multiple AWTs -- this would just be
another one, I imagine.

> This was the best awt implemenation I=B4ve every seen, and I dont=20
> understand why gnu-classpath isnt based on this awt.

I think it comes down to ownership/licensing dynamics (eg. Transvirtual
never transferred copyrights to the FSF for the AWT).

> The only problem are the ugly widget L&F=B4s, but  should be possible to=
=20
> make this whole thing skinable without big troubles.

Yeah, the L&F is definitely ugly.  :-)

I haven't done too much AWT stuff myself, but I think we could serve as
a useful place to experiment with AWT integration since we have somewhat
looser licensing constraints than other projects.  Here's what I'd like
to see:

 1) Multiple AWT implementations

     a) Some using "lightweight widgets", where the widgets are drawn in
        Java.  eg:
=20
        - our current X AWT
        - Swing (we can run Sun's old AWT based one, and should be able
                 to run their newer Java2D based one if we get a Java2D
                 implementation)
        - others, eg. Rudolph (from Wonka)

        The Transvirtual version of Kaffe had a lot of additional AWT
        work done on it.  The big thing was it had a lightweight AWT that
        could render to a "no-native-wm" backend, which provided a pluggable
	backend for the core graphics primitives on a number of platforms
        (X, Linux framebuffer (using the fgl library), Wind River's UGL,
        GRX, MGL, Allegro).  The "no-native-wm" backend sounds similar in
        concept in many ways to what Java2D does - it might make sense
        to move that stuff into a Java2D implementation.  There is probably
        additional window-manager functionality that Java2D doesn't cover.
       =20
        Transvirtual's AWT and Swing both provide support for skins / L&F's.

        As far as backends go, I think it would be cool to experiment with
        even more extreme Java-only solutions, eg. driving a framebuffer as
        a Java byte array, or writing a xlib completely in Java!

        Graphics backends are really interesting, because the challenges
        involved in utilizing modern graphics acceleration hardware are
        interesting.  Things like Cairo and DirectFB on Linux, DirectX on
        Windows, and Quartz on Mac OS X provide use ways to get access to
        accelerated hardware.

        If we had a really good Java2D implementation, it might even be
        feasible to use something like WeirdX as a more flexible
	replacement for XFree86 to support legacy apps.  :-)

    b) Some using "native widgets".  These provide tighter integration
       on some platforms.

        - Gtk - nice for Gnome desktops.  There's a version of Gtk which wi=
ll
           render to the framebuffer too.
        - Qt and Qt/Embedded
        - Win32 (for Windows)
        - there was a MicroWindows AWT for Kaffe based on the Win32 widgets,
          I think.
        - a Carbon based AWT for Mac OS X would be nice
        - Motif/Lesstif would be interesting, just because it's what Sun us=
ed
          in their original AWT
        - SWT apparently works, which works with Win32, Motif, and Gtk.  It
          would be cool to do a SWT backend that used lightweight widgets.

       Note that some of these widget sets are themeable themselves, and
       can use multiple backends as well.  eg. Qt is essentially a lightwei=
ght
       widget set that renders it's own widgets on the platforms it support=
s.
       Conceivably, it could even be made to use a Java2D backend.  :-)

  2) Compile-time switching of AWTs

     All these AWTs should be configurable at "configure" time.  For
     embedded platforms, it's nice to be able to select only one specific
     AWT tuned to the target platform.  Transvirtual took this to extremes
     with fgl, where even the color depth was chosen at configure time.

  3) Run-time switching of AWTs

     It would be nice to be able to configure Kaffe with multiple AWTs,
     and have them selectable at runtime using a property.

     If somebody wanted to do something even more extreme, I imagine that
     it would be possible to create and API to enable applications to use
     multiple AWT implementations simultaneously.  :-)

Sascha Brawer is organizing a free Java AWT BOF at Linux Kongress - that
should be interesting:

  http://www.linux-kongress.org/2003/bofs/index.html

Anyways, I don't think there is a "one-size-fits-all" solution for
graphics on Java - I'd like to keep an open mind, and hope some really
nice interfaces and implementations evolve.

Cheers,

 - Jim