[October 2002] "UIML is an XML-compliant language, so it looks a lot like HTML. UIML is designed to serve as a single language which permits creation of user interfaces for any device, any target language (e.g., Java, C, WML), and any operating system on the device. However, UIML is not a silver bullet: The UI designer must still design separate UIs for each device, and then represent those designs in UIML. UIML does not magically create multiple UIs from a single description; instead it is a language in which those multiple UIs can be recorded... UIML is designed to be a relatively simple markup language. In contrast to Dynamic HTML (HTML 4) or XSL, which have so many tags that few people in the work know all the tags, UIML has a little over two dozen tags. UIML is also independent of any user interface metaphor, such as graphical user interfaces or voice-response. UIML is designed to permit efficient compilation from UIML to any target language (e.g., Java, C, HTML, WML, VoiceXML). UIML describes three things:
- The 'appearance' of a UI. For example, should the UI have buttons to allow selection of pizza toppings? If so, what colors or icons should be shown on buttons? What fonts should be used? Where should the buttons be located?
- The user interaction with the UI. What happens when a user clicks on a button? Note that this behavioral description is what normally goes in an event handler in a language like Java or Visual Basic, or in scripting in HTML.
- How is the UI connected to the application logic? For example, when a user clicks a button to order the pizza, how is the order transmitted to a pizza server? The one description might be mapped to Java RMI on a desktop PC running Java, or to an HTTP PUT on a desktop phone running a Web brower UI." [from User Interface Markup Language (UIML): A Quick Introduction", Virginia Tech]
 The XML User Interface Markup Language (UIML) "is used for defining the actual interface elements. This means the buttons, menus, lists and other controls that allow a program to function in a graphical interface like Windows or Motif. UIML is used to define the location, and design of controls. It also defines actions to take when certain events take place." UIML thus "allows designers to describe the user interface in generic terms, and then use a style description to map the interface to various operating systems (OSs) and appliances. Thus, the universality of UIML makes it possible to describe a rich set of interfaces and reduces the work in porting the user interface to another platform (e.g., from a graphical windowing system to a hand-held appliance) to changing the style description."
"A solution is to build interfaces with a single, universal language free of assumptions about appliances and interface technology. This paper introduces such a language, the User Interface Markup Language (UIML), an XML-compliant language. UIML insulates the interface designer from the peculiarities of different appliances through style sheets. A measure of the power of UIML is that it can replace hand-coding of Java AWT or Swing user interfaces."
UIML 3.0 specification. February 12, 2002. "A modest refinement of the UIML 2.0 specification."
UIML 2.0 specification:
"UIML: An Appliance-Independent XML User Interface Language." Paper presented at WWW8. By Marc Abrams, Constantinos Phanouriou, Alan L. Batongbacal, Stephen M. Williams, and Jonathan E. Shuster. A related version. PDF format. [local archive copy]
UIML2 Java Rendering Engine, preview release version 0.5d ["A 'rendering engine' is a program that interprets or compiles a UIML file to create the user interface using a particular programming language and user interface toolkit. The rendering engines provided on this site use Java AWT and Swing."]
- Harmonia Home Page