UIEvolutin Inc.
UJML Language Reference
UJML Concepts

UJML is an XML-based language designed for creating applications that run on the UIEvolution UIEngine platform, a cross-platform, dynamic user interface and programming environment.

Because UJML is defined using XML (eXtensible Markup Language), it uses XML functionality (such as tags and entities) as an integral part of the language. In fact, a UJML file is really just an XML file that references the UJML DTD (Document Type Declaration). See Layout of UJML Files. Which version of the UJML language you are using depends on the version number of the DTD you use. 

There are different types of UJML files, each of which has a specific purpose within a UJML application. See Types of UJML Files, Anatomy of a UJML Application.

UJML can run on almost anything

UJML source code compiles to a byte code form which executes on the UIEngine. The UIEngine has already been ported to run on a large range of devices and can easily be ported to more. Basically, if a device has a CPU, it can probably run UJML. 

Because different devices provide a wide range of capabilities, UJML includes functionality which allows you to write applications that adapt to a device at run time. With UJML, it is possible to write an application that will run unchanged on anything from a cell phone to an MP3 player to a PDA to a PC.

UJML can run almost anywhere

UJML is network-aware and provides functionality to load resources and executable code over a network. This functionality works the same on a PC, a PDA with a wireless card, and a GSM cell phone.

UJML is a declarative language

Like HTML, much of UJML consists of declarations. The things you can declare include: data, state transitions, functions, visual elements to display on the device screen, audio elements to play on the device sound system, events, resources used by the application, state machines, and more. 

The things that you declare are defined by their characteristics: those attributes, properties, and child elements which make them unique and useful to the application. Many of these things have names and may be accessed, used, changed, and otherwise manipulated by referring to that name in code. See Identifiers.

UJML is a state-based language

It can be argued that all computer programs are state machines. UJML takes this concept to the next level by introducing state transitions as first-order components of the language. This means you can declare a transition for a state variable and, when that state variable changes value to match the transition, the state transition becomes active and related code is executed. This can include playing audio files, showing visual elements on the device screen, making event handlers active, and executing procedural scripting code.

UJML is a procedural language

Yet, unlike many declarative languages, UJML provides the ability to specify actions using a simple procedural syntax. See Scripting Language. Scripting code may be embedded into the declarations of UJML such that, when the declared thing becomes active, the script is executed. 

UJML provides all the standard procedural syntax elements; including flow control, operators, and statements. The procedural elements in UJML can affect the declarative elements by firing events and changing application state.

UJML is an event-based language

While a UJML application is running it is completely event-driven. These events may be fired in response to user actions, resource availability and more. When an event is fired it can execute procedural scripting elements which change application state.

Topic 
Description 
UJML is an XML-based programming language with a well-defined structure. 
There are several different types of UJML files and other, related, files. 
A UJML application consists of a running application file linking to zero or more partition files. 
Identifiers are names that represent things in your UJML code. 
Data 
Data is the information stored and managed by a UJML application. 
State variables may have associated state transitions. 
Scripting, in UJML, is the addition of procedural steps to the declarative elements. 
UJML allows you to create and call your own functions. 
A UJML event handler consists of an event declaration and scripting code to execute when the event is fired. 
UJML tags that define the graphic objects displayed by a UJML application on a device screen. 
Audio elements are UJML tags that define the audio objects played by a UJML application. 
Resources are files used by an application. 
UJML provides several different ways to capture user input. 
A state machine consolidates related variables, functions, state transitions, and templates into a single source code unit. 
A component consists of related variables, functions, state transitions, and templates which are compiled into a single byte code file. 
UJML includes features that allow programs to adapt at run time to different devices. 
UJML includes features that allow programs to adapt at run time to different locales. 
Compiling is the process of turning UJML source code into UJML byte code. 
Debugging is the process of finding and removing errors in your source code. 
Copyright (c) 2000-2007 UIEvolution, Inc. All rights reserved.
What do you think about this topic? Send feedback!