UIML (User Interface Markup Language) is a descriptive language that lets you create a Web page that can be sent to any kind of interface device - for example, to a PC with a large display and a keyboard or to a "smart phone" with a tiny display and no keyboard. The advantage of UIML is that Web content can be created once without understanding the existing and future device types to which the content will be sent. A content developer uses the markup language (sometimes referred to as a set of tags) to describe user interface elements such as input boxes, text messages, menus, and buttons. A programmer can then write applications that use the UIML page to generate a page appropriate to each device type, such as a PC, smart phone, or voice output device, to which the content may need to be sent.
UIML is an application of the Extensible Markup Language (XML). One can think of it as the XML description that describes the data structure (names of fields or elements) of a user interface. A given UIML file also describes the specific content (text, names of images, and so forth) in those fields or elements. UIML also allows you to describe possible user input events and resulting actions. The markup is described in the UIML Specification, which also includes the formal XML document type definition (DTD) for UIML. Since UIML requires the specification of user interface elements (often called widgets) in terms of names used by specific language development tool kits (for example, Java AWT or Microsoft Foundation Classes - MFCL), you need to identify the specific toolkit and know the names for various elements and their properties that are used by the toolkit.
Harmonia, the software company where UIML was developed, has published it as an open source language and plans to submit it to a standards organization after comments have been received on version 2.0.