Channels ▼

Web Development

Adobe AIR: Desktop/Web Convergence

Adobe AIR

Core to Adobe AIR is its facilitation of deploying and executing Adobe AIR applications built using HTML, AJAX, Flash, and PDF. Like the C, Java, and .NET runtimes, Adobe AIR is a set of libraries and services that enable the execution of applications. The runtime mediates between the application and the underlying operating system. It handles initialization and finalization tasks as the application starts up and shuts down, and provides the application with an API to call underlying operating system services.

Adobe AIR is designed to provide a cross-platform abstraction wherever possible. For example, it provides a filesystem API that already runs on multiple platforms. Applications can be written to this API such that their code is entirely portable.

At the same time, an API that only contains cross-platform abstractions can be unreasonably limiting. Thus, Adobe AIR APIs contain platform-specific capabilities where warranted, which are simply stubbed-out on platforms that don't support them. For example, applications have an API for accessing the Mac OS Dock, but calling it won't have any effect when running on Windows. (Applications can also query to determine which platform they are running on.)

The runtime contains an embedded instance of the Flash player. This instance supports all of the capabilities of the browser plug-in version of Flash. It has been extended with new APIs for the additional functionality offered by Adobe AIR, such as filesystem access.

The runtime also contains an embedded HTML rendering engine based on the open-source WebKit project (, which also serves as the HTML engine for Apple's Safari browser. Adobe AIR strives to keep the greatest possible compatibility between the embedded instance of WebKit and the version available in Safari. Adobe AIR is not attempting to introduce yet another browser to test against, but rather to leverage the existing browser behavior of WebKit.

The Flash and HTML environments are bridged so that code in either environment can call into the other. For example, ActionScript code in Flash content can traverse the DOM of an HTML document it has loaded. Similarly, HTML content can invoke Flash APIs.

HTML content can be displayed in the Flash display tree using a new HTML object, and Flash can be embedded in the HTML as well. Applications can consist solely of HTML, solely of SWF, or a mix of both types of content.

The runtime does not include embedded PDF rendering support, but instead bridges to an installed copy of Reader (or Acrobat). Thus, PDF rendering in Adobe AIR operates much the same way that PDF rendering does in a browser today. PDF can be embedded in either SWF or HTML content, but an Adobe AIR application cannot consist solely of PDF content. Script bridging to PDF is also implemented: In Adobe AIR, a single line of code can involve execution across all three (Flash, HTML, and PDF) scripting engines.

The runtime is available as a free download from Adobe and is redistributable. The target download size for the runtime is 5-9 MB.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.