Interesting, JDNC is now open source.
Rich client development is an enigma in computing. It never ceases to amaze me how complex and ugly GUI code can get once you start doing serious app. dev. I have played with patterns like MVC, languages like Smalltalk, Python, Java, C++ etc. and never been happy with the code I've written for any of them to drive GUIs.
My latest theory is that GUI design lends itself to complexity because it combines an exploding state space with an exploding namespace.
The state space problem come from the need to handle modeless dialogs and the freedome they give users to trigger events in combinatoric orders. The name space problem comes from the fact that every event, every widget, every method, every callback, every include file, every bitmap, every mask, every state variable has a *NAME*.
Keeping GUI code from suffering entropy death involves constant, care and feeding of *NAMES* and that is very laborious and error prone in my experience.
THe more open source projects we have to do with rich GUIs the better. Doing it well, with the flexibility for change required in business-oriented applications, is a far-from-solved problem.
My own favourite cross-platform GUI (surprise, surprise) is wxpython. It does a very good job of alleviating the cruft attack of GUI-dev whilst leaving you access to the power of the "metal" underneath. Combined with py2exe, it is a powerful way to create Windows executables for distribution that do not require separate Python installs.
Hmmm, jython + JDNC = wxjython for Jave GUI App. Dev?