James Strachan's Radio Weblog
Ramblings on Open Source, Java, XML and other geeky malarkey

Building rich user interfaces with XML

Its becoming increasingly common to learn from web technologies and apply them to older computing problems we faced before. For example SOAP and XML-RPC is changing the way we implement distributed systems instead of distributed object technologies like CORBA, DCOM and EJB.

The area of rich user interfaces (fat clients) is also benefiting from lessons we've learnt building web based user interfaces. There's a bunch of markup languages for creating rich client interfaces using XML markup. Here's a rundown...


XUL is the XML markup used inside Mozilla and offers rich markup for widgets such as frames, tabbed panes, trees, tables etc.  There are a collection of XUL related projects.


Luxor is a GPL'd Java project which implements XUL in Java which looks promising. Shame its GPL though :-)


Its very eary days in the xulux project but its aim is to provide a XUL implementation for Swing, SWT and HTML maybe reusing Jelly - so that XUL could hopefully be the standard markup language that can then be transformed to all of the other XML markup languages mentioned on this page, as well as for HTML/DHTML/JavaScript UIs as well. JellySwing


XForms certainly deserves a mention. It focusses mostly on forms and so doesn't really offer any richier widgets that basic HTML forms, its more of an improved XML-ercized way of doing forms. So it uses XML for the data and XPath to bind the form instance data to the controls. It also supplies a form event model. Certainly worth tracking though, especially if it ever offers richer controls like trees or tables.


JellySwing is part of a larger Jelly framework for creating executable XML using Java. That is plugging together a Velocity-like expression language with custom XML tag languages, allowing new declarative and procedural XML languages to be created easily.

So JellySwing alllows XML markup to be used to define Swing user interfaces, directly binding the Swing controls with your user interface models etc.


thinlets provide a simple XML markup for developing rich Java applets and applications. Its a small, compact download though not open source and no source code is distributed.


This is another markup thats quite Swing specific, like JellySwing but is a small self contained markup a little like thinlets. I've gotta confess to not liking the upper case element and attribute names used in the samples but Ezequiel informs me that its case insensitive - so I'd use lowercase if I were you.

On the plus side you get full source code. Though unfortunately its GPL licenced. I only tend to deal with Apache style ASF or BSD style licenses (or MPL at a push) as they work nicely with commericial and open source development projects. GPL tends to scare me off.


koaLaGML is another XML markup, based on JSP and (unfortunately) scriplets for implementing forms on Swing. Apparently other widgets are planned for later on. The koaLaGML folks could benefit from taking a look at JSTL and the use of an expression language to remove the need for scriptlets. Or better still try using Jelly :-)

© Copyright 2003 James Strachan. Click here to send an email to the editor of this weblog.
Last update: 08/03/2003; 09:10:22.