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 (www.webkit.org), 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.