Tuesday, October 26, 2004

XML Everywhere

With a renewed interest in rich clients and the popularity of XML, it is no surprise that so many engines for building user interfaces using XML are available. JellySwing has been around for quite some time which allows declaring Swing UIs using XML. It is implemented as a tag library for apache project, Jelly.

Creating a user interface using XML actually represents a convergence of two good ideas -
1. Seperation of the view and model - The presentation layer is cleanly seperated from the application logic.
2. Cross platform GUI - The GUI can run on any platform and device as long as the GUI engine is present.

The problem now is to have a specification that is implemented by a lot of engines running on many different platforms, just like the ubiquitous browser. Microsoft promised to bring XAML (XML Application Markup Language) but due to a juggling of internal resources, XAML, and its parent, Longhorn, have been pushed to a release date sometime after 2006.

Meanwhile one of the alternatives is XUL, spearheaded by the Mozilla. It already boasts of a few implemented engines, which is a big advantage. Luxor is an implementation of XUL which uses Python for implementing script actions. SwiXML uses XUL to create Swing applications and applets. MyXaml is a XUL engine for building .NET applications. Codeproject shows an example.

The XForms specification, which is now a W3C recommendation is also projected as a method for building device independent user interfaces using XML. It has a lot of implementations but it is designed for creating web applications rather than smart clients. Hence it has fewer user controls which can only be used to build simple clients. XForms places more emphasis on submitting XML data from the forms instead of the HTTP name and value pairs.

Flash is also a good choice for creating rich clients since it is supported on large number of browsers. You can even write Flash clients using the Macromedia XML. The Flex engine used by Macromedia is available for the J2EE platform and a .NET version will be released in the near future.

Serverside reports that the Laszlo Presentation Server has been open sourced. This is another platform for delivering SWF files targeted for the Flash player. Laszlo applications are written in LZX, a standards-driven XML and JavaScript description language. (The thing to remember is that the rich clients in Flash/LZX do not have the full power of a client application)

There are many engines with their own XML specification for creating UIs. javasource.net has a list of these implementations. Java Gui builder , JEasy, JAXFront are some more Java engines I found through googling. Here is an article that shows how to develop an XML-based GUI language parser for .NET.