User Interface Description Language

This project aims to create a scriptable, JavaScript based language for expressing complex user interfaces. The aim is to develop a universal client which will display UIDL pages with the same ease with which HTML pages are displayed.

The main features of a UIDL page are the ability to create complex user interfaces (using Swing based widgets) and to communicate asynchronously with server based objects (using the JSON-RPC protocol).

Whilst this may sound similar to AJAX, the implementation is much cleaner thanks to the ability to natively instantiate complex UI components within the browser and the ability to transparently present server based objects via their JavaScript proxies.

The motivation for this project comes from the realisation that the (HTML) browser model was developed for document presentation rather than as a GUI for complex applications. Most web application developers resort to hacks and are required to have knowledge of many different technologies (JavaScript, HTML, ASP, SQL, etc). Web applications are generally less user friendly than a comparable client-server application of the 1980ís and the code is much more difficult to maintain (although web applications are easier to deploy).

On the other hand, the browser (or universal client) model is vastly superior in that it makes it easy to deploy application upgrades in a central location without needing to worry about upgrading clients. The proposal is therefore to extend the browser model to include support for a rich library of UI components and to asynchronously and transparently update client data structures from objects located on the server.

Contact: Dominic Cioccarelli

Try it Out!



Source code is available from GitHub.

Pre-built releases are available from Google Code (archive).