Rich Java GUIs

If you are going to create a new application – would you choose a fat client? Normally not.

This time I started to look into some of the swing based client gui frameworks that exist in Java. Just because my last experience with web frameworks. Mainly because of smartgwt. Hoping that swing based frameworks are more mature and less buggy than these new and shiny web frameworks.

This is a current state of my investigations, correct me if I’m wrong or add stuff thats missing.

JGoodies

If you are looking for nice swing based guis, you come across JGoodies. The look&feels are one of the best. But JGoodies consists of more than that, there are a few nice open source projects.

More information under www.jgoodies.com.

JGoodies Forms

A layout manager for forms. Very powerful but with a somewhat steep learning curve.

JGoodies Binding

A binding framework for connecting your domain model with the layout widgets. If you do not have a very small app, you should use one. The binding unfortunately needs some changes in your domain classes (for registering PropertyChangeListeners) which is something I personally disliked very much. I want to keep my domain objects clean of framework code, except some annotations I really need there (JPA / JAXP). It also seems that the binding cannot handle inner objects properties (e.g. a Customer having an Address object inside)

Since there is not much documentation out there for the binding, its very hard to learn.

Article about binding: http://www.javalobby.org/java/forums/t17672

Another tutorial: http://jnb.ociweb.com/jnb/jnbJun2005.html

JGoodies Validation

Did not try that one out, but it looked very promising. Input validation.

Conclusion

Promising. If you want to pay for the example source code and more documentation, the learning curve could be ok. If not, its very hard to learn.

Open Swing

Another swing based framework with the focus not only on the gui, but also on binding it to all layers down to the database.

There are apparently no maven artifacts.

Other RCPs

Eclipse is normally a good way to go for a client platform. But it is less platform independent as java / swing. AFAIK does this prevent it from being distributed with java web start.

Netbeans also can be used as client platform. You just have to use netbeans as an editor then. Since I use normally eclipse, thats a kind of no-go. And forget maven and CI also.

JavaFX looks promising, too. But documention for the 2.x version is rare and it seems to focus more on graphics than on forms.

Links

Overview over JDesktop projects: http://wiki.java.net/twiki/bin/view/Javadesktop/