(Please ignore the absurdity of the title–I couldn't help myself!)

A little over a week ago, Adobe officially released Adobe Integrated Runtime (AIR) 1.0 along with Flex 3 .  While I've looked into a AIR a bit in conjunction with Flex apps, I've not really gone beyond that.  

However, with the official release, I decided to take another look.

What is AIR?  As the full name explicates, it is a runtime that can be used to, um, run programs on your computer, mobile device, etc.  So as with Microsoft's .NET framework, AIR allows developers to create programs that can be packaged up and installed on these devices.

However, unlike Windows-only or Mac-Only (or Linux-Only) programs, AIR is ambivalent about the OS.  As long as the client machine has the runtime installed, any application developed in AIR can run on it.  This in itself is really cool, and takes the bite off the exclusivity of OS platforms.

But the coolest part about AIR is that you can leverage different technologies when building applications.  For example, a while ago I built an extremely simple Countdown application using Flex 3.  Easy enough.  

But what if I don't want to use ActionScript 3?  No problem!  Using the HTML, CSS and Javascript skills I already have, I can create an app using ONLY THESE TECHNOLOGIES without any need to learn a whole new language.

Although I really like Flex 3 (and hope to get into a lot more in the future), being able to use regular web technologies to create desktop apps is extremely sexy to me, and will take half the time to develop an application than it would if I were to wrestle what is a still foreign language like ActionScript 3.0.  

But Wait!  That's not all!  AIR platform overcomes some of the weaknesses of standard web-based technology.  For example, in all of my SPRY javascript examples, I generally build datasets from xml data returned from ColdFusion.  Why do I do this?  For one, sometimes the data I need is in a database, and ColdFusion is my means to grab it out.  But most importantly, I use ColdFusion because if I need to return xml data from a remote data source (such as another website), javascript alone cannot do this because the browser security model will not allow client browser cross-scripting.  While this is not a problem for a web-based application (because I can use CF to grab the data, parse it, and pass it back to SPRY), it cannot be transferred to the desktop because not everyone has ColdFusion installed on their computer (although they should…), among other things.

To overcome this, AIR incorporates the concept of "sandboxes."  There are two forms, the Application and Non-Application sandboxes.

The Application sandbox is where the heart of AIR lives, and is tightly restricted because of the level of contact that AIR's

APIs have with the client machine, such as memory resources, file systems, etc.  So trying to do remote scripting in the Application sandbox will be met with angry AIR error messages.

To get around this, you can use the Non-Application sandbox.  Here, remote calls can be easily made, and even functions defined in the Application sandbox can be exposed to use in the Non-Application sandbox.  In short, whereas in the past I could not build a Spry data-set directly from a remote RSS feed, now I can.  So there.

What's that, you say?  You want some more awesome features?  You got it!  AIR comes bundled with a native database–SQL Lite.  

You know what that means–yes, now you can use AIR's javascript-esque API's to create and manage databases and database content.  To me, this is one of best features of AIR, for it removes entirely the need for an external, addon application framework just to interact with a database.  Rather, I can simply gather form data (or Cookie data, or whatever), parse it out with javascript, and use AIR's APIs to create SQL Lite databases that will store the data on the client's machine.  That's pretty flippin' cool, and opens up a huge world of possibilities in my mind for what I'd like to do with AIR in conjunction with my web-based apps.

So yeah, anyway, I'm finding that AIR is extremely cool.  Over the last week, I began development on a little test project (a blog manager) that is, if nothing else, a good training ground for exploring what AIR can do in conjunction with simple HTML, CSS and Javascript.  When I am at a stopping point, I will post it here so that everyone can let me know what they think of it.