UIX Developer's Guide
Go to Table of Contents
Contents
Go to previous page
Previous
Go to next page
Next

2. Overview of UIX Features and Technologies

Different parts of UIX can be used to develop different parts of a web application, which means you can take advantage of only those UIX features you need. This chapter provides a brief introduction to the various UIX features and technologies. It contains the following sections:

Development Environments: Java, uiXML, and Java Server Pages

You can develop UIX applications using any of the following development environments.

uiXML and Java examples are provided throughout this manual. For information about using the UIX JSP tag library, see the chapter UIX JSP Tag Library.

Primary Functional Areas of UIX

UIX contains two main areas of functionality: UIX Components, for defining and rendering pages in a user interface, and UIX Controller, for managing events and the interaction among pages in an application.

UIX Components

UIX Components includes a set of user interface components and the means for rendering them:

The Java code and classes supporting UIX Components are in the oracle.cabo.ui package and its subpackages.

UIX also includes utilities for dynamically generating images (see UIX Dynamic Images, below) and cascading style sheets (CSS) (see UIX Styles, below) . These utilities together with the renderers make UIX user interfaces portable across different locales, fonts, and browsers.

UIX Controller

UIX Controller is a J2EE-based servlet that is the central processing module of UIX. It is responsible for receiving, processing, and dispatching web requests (events), and it manages the navigation among the pages in an application. Typically, the controller executes application and business logic in response to an HTTP request and then updates the application state accordingly. As a result of this processing, the controller renders a page in the browser.

UIX Controller standardizes the way applications deal with HTML events and provides built-in services such as error page loops, login support, and file uploading. While it operates independently of the technology used to render individual pages--such as UIX Components, JSPs, or Extensible Stylesheet Transformations (XSLT)--it has built-in support to ease development when technologies like UIX Components are used.

The Java code and classes supporting UIX Controller are in the oracle.cabo.servlet package and its subpackages.

Other UIX Technologies

UIX includes other features, utilities, and supporting classes, which provide further control and flexibility for creating web applications:

UIX Dynamic Images

UIX Dynamic Images provides a means for generating images that contain text, including built-in support for buttons and tabs. It can colorize the images of an application to support color schemes, as well as provide localization and accessibility support and provide caching support for improved performance. UIX Dynamic Images generate images and, for those who need them, image maps.

Because text is processed separately from images, localization with UIX Dynamic Images is easier and more efficient. Translators work only with text and do not have to edit images. The translated text can be stored separately (for example, in resource files) and extracted when needed, to be combined with the image. Separating text and image processing in this way also makes it possible to use different text styles and sizes for special purposes, such as increasing the size of the text for complex characters such as Kanji, or to adjust visual attributes for people with some visual impairment, for example color blindness.

The Java code and classes supporting UIX Dynamic Images are located in the oracle.cabo.image package and its subpackages. UIX Components can use UIX Dynamic Images for their own rendered images.

UIX Styles

UIX Styles provides an architecture for defining and customizing style sheets for different end user environments (for example, locales, browsers, or platforms). Style sheets provide a centralized mechanism for defining and altering the appearance of pages separate from the content they contain.

UIX Styles include a new XML Style Sheet Language (XSS) for defining environment-specific style sheets. XSS is based on Cascading Style Sheets (CSS). UIX Styles also feature server-side APIs for managing style information, including a facility to generate CSS style sheets dynamically at runtime.

The Java code and classes supporting UIX Styles are located in the oracle.cabo.style package and its subpackages. UIX Components and UIX Dynamic Images can use UIX Styles for their own style information.

UIX Share

All UIX projects depend on common utility classes provided UIX Share. The UIX Share classes include functionality that is useful to all UIX web applications, such as configuration support and localization. The Java code and classes supporting UIX Share are located in the oracle.cabo.share package and its subpackages.

More About uiXML

uiXML is an XML language for programming UIX applications. uiXML builds on top of the other UIX technologies, providing an XML language for specifying user interfaces and linking them to data and events. uiXML provides a declarative alternative to creating web applications programmatically with the UIX Java APIs. The pages, events, and any other items defined with uiXML elements are all transformed into Java objects behind the scenes and are thus treated equally by UIX. No compilation is required.

Here is an example of a uiXML element that defines a button:

<button text="Policy"
     destination="http://www.mycompany.com/policy"
     disabled="false"/>

The following uiXML defines an event handler.

<handlers>
  <event name="goto">
    <navigate parameter="value">
      <when value="1" page="first"/>
      <when value="2" page="second"/>
      <when value="3" page="third"/>
    </navigate>
  </event>
</handlers>

The fact that uiXML is an XML language influences aspects of its design:

The Java code and classes supporting uiXML are located in the oracle.cabo.ui.xml and oracle.cabo.servlet.xml packages and their subpackages.

Which Technology Should I Use?

Because the UIX technology stack is open and flexible, you have the choice of using as many of its features as you need. It is important to note, however, that the various UIX technologies are designed to work together. This means that one UIX technology can make it easier to use another. For example, UIX Controller automatically creates and caches the pages specified in uiXML because it has built-in support for this. If you use uiXML without UIX Components, you will need to write some code to load in your uiXML document and display it. Conversely, if you use UIX Components without uiXML, you may have to write some code telling the UIX framework how to display your own pages.

That said, here are some recommendations for which technologies to use:

Which Areas Are Off Limits?

Although nearly all parts of UIX project are accessible to developers, there are a few small areas which should be avoided by those using Java APIs to access the functionality. Specifically, a few classes have compatibility restrictions on them beyond those enforced by the API access level. Compatibility of these classes is not guaranteed in future UIX versions; using them may cause your code to break if you upgrade.

A Note About Names

You may notice that names such as "Cabo," "Baja," and "Marlin" are used as part of some UIX file names, package names, and class names. These are a legacy of the early code names for these projects. They have no inherent significance. However, they are retained to maintain backward compatibility.