[kaffe] AWT based on QT or GTK(2)?

Dalibor Topic robilad at yahoo.com
Mon Mar 31 09:31:01 PST 2003

Hallo Hans Peter,

--- Hans Peter <javafriend at gmx.net> wrote:

> I try to develop a native swing replacement based on
> qt or gtk2.  

That's a noble goal. I wish you the best of luck on
rallying other developers to support your cause.

But you might find it easier to start off with a pure
java Swing implementation, and add native pieces
if/when they are necessary. That also avoids the
native widget kit issue until it becomes really
relevant, i.e. you have some code that definitely
needs to be implemented using a native widget kit.
Beside, you can start implementing Swing *right now*
by using the skeletal implementation from GNU
classpath ;)

> These swing-replacement should be useable by nearly
> any free jvm, kaffe 
> and gcj included.  
> But I need to have a awt which also is based on the
> same widget-set, so 
> that there are no problems when mixing awt and
> swing.  

Common wisdom seems to be that you're bound to have
problems when you mix AWT and Swing. See
for a few guidelines how to get it to work. But in
general, mixing of heavyweight (awt) and lightweight
(swing) components leads to more trouble than it's

If you want it to be useable by any free VM, write it
in pure java, like Sun's implementation, and license
it in some liberal way [2]. Otherwise, you're
depending on how well their implementation of the
particular native toolkit you've chosen works.
Additionally, people using a different native toolkit
as the basis of their AWT toolkit might have a hard
time using your Swing implementation. Kaffe currently
offers two [1] different AWT toolkits, with more to
come. Having a free swing implementation that's
useable only on one of them would be unfortunate.

> Some time ago I heard that there is a qt/awt port
> running on kaffe and 
> made using jni. I found a link at the kaffe
> main-site but the archive I 
> found only contained some cpp-files.  
> Where can I find the complete port including
> everything I need to compile 
> and run?  
> And how complete is it, whats missing?  

It's fairly complete,AFAIK, but it's somewhat buggy.
Jim Huang is working on a port to Zaurus, and working
on getting the issues fixed. I can get you in touch
with him, if you want to help out.

If you want to try it out yourself, it has been merged
into the current CVS tree. Check out the code from the
CVS tree, read FAQ/FAQ.awt and then configure kaffe to
use the Qt-based awt implementation.
> Another question: I also want to use gcj and this
> means the compiled code 
> will be linked against qt not only interpreted and
> abstracted from the 
> real code. This could lead to license-problems, I
> want to license my code 
> the same way classpath does.  

You should ask the gcj and the qt developers, not us

I hope this averts yet another "what does GPL really
mean for Java programs" flamefest from this mailing
list. AFAIK the next one is due in August, if we are
going with a yearly schedule :)

> So maybe GTK2 would be a fine alternative, does
> anybody know an 
> awt-implementation based on GTK(2)?  

Several, in fact. There is some code in
, then there is some code in the PocketLinux CVS tree
and finally, there is an implementation in the GCJ CVS
tree, AFAIK. I haven't played with any if them, so I
can't make any comments on the quality of the

dalibor topic

[1] Three if we include the win32 implementation, but
I'm not sure if it works.
[2] for kaffe, anything GPL compatible goes. For
gcj/classpath, you should need to talk with the
developers there to see what they can accept.

Do you Yahoo!?
Yahoo! Platinum - Watch CBS' NCAA March Madness, live on your desktop!

More information about the kaffe mailing list