XAP Executive Summary

From MemberWiki

Jump to: navigation, search



This page provides an executive summary of the Apache XAP project from the perspective of OpenAjax.

Links to Apache and other Information Sources on XAP

Here is the main page for XAP at Apache: http://incubator.apache.org/xap and http://incubator.apache.org/projects/xap.html

Executive Summary

Description copied/pasted from XAP web site

"XAP is an XML-based declarative framework for building, deploying and maintaining rich, interactive Ajax powered web applications. It aims to reduce the need for scripting and help solve the development and maintenance challenges associated with large scale JavaScript programming."

Key component technologies

The XAP proposal at Apache has some major components, each of which is potentially a separable module.

"Core XAP"

There isn't an official name at this point, but for the purposes of this discussion the term "Core XAP" represents the low-level features in the XAP proposal that deals with mapping custom XML markup to Ajax toolkit libraries that handle that markup. Thus, Core XAP is very much relevant to topics discussed in the Tibco/Dojo proposal: Tibco Dojo Proposal Toolkit Loading, Markup Mixing.

"Core XAP" enables XAP to support different Ajax toolkits as well as different markup languages. Anybody can plugin any XML compliant markup languages, or any Ajax toolkit, or both.


XAL (Extensible Application Language) is an application markup language that includes data providers, data binding, iterators, formatters, layout managers, and of course widgets. Regarding widgets, XAP wants to leverage widget libraries from other Ajax initiatives. The first delivery of XAP leveraged Kabuki widgets and Dojo support is on the way.

XAL's design center is as a top-level markup language.

Early examples have separate .xal files. Thus, you have an HTML file which refers to the appropriate .xal file(s) and has an empty html:body element. The XAP engine then populates the html:body with the "view" from the "model" that was included in the .xal file.

Managed Client Objects (MCOs)

Being former Java guys and having real Enterprise IT shops as their customers, Nexaweb recognized the need to modularize a JavaScript application into separable pieces. MCOs provide a mechanism for pointing to a particular JavaScript "class" within a particular .js file.

XAP includes its own XML parser and DOM engine

The XML for each XAL document or document fragment is parsed by XAP's own XML parser (written in JavaScript) which creates its own (JavaScript-based) DOM. This allows proper support for W3C standards, such as XML namespaces.

The original XML markup (e.g., XAL markup, Kabuki markup or Dojo markup) can be thought of as a separate document fragment for the application. In MVC terms, this XML markup is the "model" for the application. The XAP engine (the "controller") then produces appropriate HTML elements within the browser's DOM (the "view"). Note that the browser's DOM is different than the XAP's DOM, which is implemented in JavaScript. XAP provides the engine to keep the two DOMs in sync via binding logic built on event listeners.

Personal tools