[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]
[2001] 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."
[Background to UIML]: "Today's Internet appliances feature user interface technologies almost unknown a few years ago: touch screens, styli, handwriting and voice recognition, speech synthesis, tiny screens, and more. This richness creates problems. First, different appliances use different languages: WML for cell phones; SpeechML, JSML, and VoxML for voice enabled devices such as phones; HTML and XUL for desktop computers, and so on. Thus, developers must maintain multiple source code families to deploy interfaces to one information system on multiple appliances. Second, user interfaces differ dramatically in complexity (e.g., PC versus cell phone interfaces). Thus, developers must also manage interface content. Third, developers risk writing appliance-specific interfaces for an appliance that might not be on the market tomorrow. There has been an explosion of ways to create user interfaces (UIs) for Web and network applications. First, there are markup languages: Dynamic HTML, or DHTML (the interaction of HTML, CSS and XSL style sheets, the Document Object Model, and scripting), XwingML, and XML-based User Interface Language (XUL) for traditional desktop applications; the Wireless Markup Language (WML) for mobile devices like cell phones with displays; and SpeechML, Voice Markup Language (VoxML), and Java Speech Markup Language (JSML), for voice-enabled devices like conventional telephones. The growing popularity of the Extensible Markup Language (XML) promises more languages. In addition, there are traditional programming and scripting languages (e.g., Java, JavaScript, and Visual Basic and C++ through Active-X). Fueling this trend is an explosion in the variety of appliances that could be used for Internet access. At least five Internet appliance categories are popular today. This has created a Tower of Babel for user interface designers and software developers. . ."
"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."
Links:
UIML 3.0 specification. February 12, 2002. "A modest refinement of the UIML 2.0 specification."
- UIML 3.0 PDF [cache]
- UIML v3.0 DTD and XSD. Cache DTD and XSD.
- Vocabularies
UIML 2.0 specification:
- Draft specification - version 2.0a of 17 Jan 2000 [cache]
- XML DTD - UIML 2.0b specification, HTML format [cache]
- Examples
The UIML Vision: 'explains the "big picture" of how UIML will change the way everyone builds user interfaces.' July 14, 1998. [local archive copy]
"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."]
Contact: info@uiml.org
- Harmonia Home Page