+1 Swing

If I had my druthers I would go with QtJambi, but since Nokia dropped
development for that it has not been able to keep pace with Qt. So
that would be immediately out of sync. Plus the need for platform
native compiled code is a minus. Fine for the main three (Linux, Mac,
Windows) with precompiled libs, but separate compile for anything else
equals ongoing maintenance effort. This defeats the point of having a
cross-platform language. Java and Clojure will work (.e.g, on FreeBSD,
OpenSolaris, AIX), but the GUI won't unless you make extra C/C++
coding effort?

SWT is a minus due to native code needs, too much XML configuration,
and the fact that it does not look nearly as good as some people think
when used cross-platform. Looks fine on Windows, the Mac side is
getting better now that they are starting to use Cocoa underneath,
Linux side is questionable with varying appearance across different
window managers. Other OS? This is the same as for QtJambi, extra C/C+
+ coding effort needed to be really cross-platform.

No reason to go with AWT exclusively. A lot of Swing wraps parts of or
needs AWT anyway. You can't really get away from it and will be
cutting off a limb, so to speak, if you go with it rather than Swing
first.

A lot of the misgivings about Swing look and feel across platform
boils down to bad GUI development efforts. I have seen this many
times. Many developers just do not understand the specific interface
needs across different platforms and just leave parameters at the
default settings, which only by luck will be near optimal. I have
developed a number of Swing applications that look pretty close to
native (at least on Linux, Mac, Windows, Solaris) so I can say that it
takes some attention to platform specific details to make this happen
(and access to multiple OS).  That is what it takes to develop a
serious professional cross-platform desktop application, no way around
it (you would even have to do this if going with QtJambi or SWT).

Overall, I would go with Swing. The main reason is that it will
already be cross-platform on any Java compliant OS that can run
Clojure. I think that is the most important thing if you want a GUI to
go along with the language. Nothing additional is needed to complicate
matters, besides the GUI layer/framework on top of Clojure.

Nonetheless, the best idea would be to ensure you have enough
abstraction in your implementation so that other GUI toolkits could be
"almost" dropped in place later on. That is, it should not close out
other toolkits, but going with what will work now or sooner than later
is better. Going with Swing is a way to get something out soon without
having to spend additional effort worrying about C/C++ libraries,
packaging and so on. Get something to work, then the additional
toolkits can come.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to