Can you give InfoQ readers an overview of the AIR platform?
With Adobe AIR developers can create rich Internet applications (RIAs) for the desktop using Web technologies such as HTML/CSS, Ajax, Flash and Flex. AIR lets companies and developers easily extend Web presence beyond the browser with minimal development, deployment and maintenance costs. Developers can use familiar tools such as Dreamweaver, Flex Builder, Flash CS3, Aptana Studio, and even a simple text editor to build their application and easily deliver a single application installer that works across operating systems.Can you give an overview of AIR’s offline capabilities and what the architecture looks like when using the offline features?
AIR has deep support for Ajax developers that includes transparent HTML windows, drag and drop, and complete access to AIR and Flash APIs. AIR supports Flash within HTML so developers can integrate Flash content within HTML-based AIR applications. AIR also supports H.264 video and Advanced Audio Coding (AAC), and includes an embedded, cross-platform, open source SQLite local database which requires no extra setup while providing large data capacity and full text search. With Adobe AIR, applications can run in the background so applications can run unobtrusively and update users when new data arrives. Adobe AIR also supports automatic runtime updates, similar to how Adobe Flash Player can be updated.
There are certain use cases that are perfect for AIR. For example, an office productivity app that might normally be accessed through browser, such as an SAP-type application, could also be offered in Adobe AIR. It could have an identical user experience in the browser as with Adobe AIR, but could be used while the user is disconnected from the network or moving from one location to another. Also, online applications that are usually only accessible through the browser, can be available on the desktop via Adobe AIR. Plus, since AIR applications are built with same technologies used to make browser-based apps, the time and effort to extend the app to the desktop is minimal.
It's a bit of a misconception that Adobe AIR is just about offline. We're already seeing many great AIR applications that are fundamentally online. Since AIR applications are desktop applications however, they have a number of great features available to them - one just happens to be the ability to run offline.So, where does the business logic belong in the AIR programming model?
When an Adobe AIR application is running offline, developers can use the aforementioned features in any variety of ways that best suits their requirements. The first feature that comes to mind is simply being aware if an application is online or offline via network detection. This might mean the hardware of the machine, or a remote service being accessed for content or data.
In the case that the network or remote data point is unavailable, a developer might choose to use local file access to present alternative data. That data might be previously cached content, or locally stored data in the form of XML or other file formats.
Developers might additionally choose to leverage the embedded SQLite features for relational data storage. SQLite is a file-based relation database that requires no additional installation or configuration for the developer or end-user.
There's no concise answer to how to architect an application to work offline. Applications vary too much in their purpose and functionality for Adobe to say what's best for everybody. The key here is that developers have all the AIR features available at their fingertips to architect what works best for their specific requirements.
Where logic lives is an interesting evolution when it comes to RIAs.Does there end up being redundant logic on the client and the server?
It used to be that with mainframe environments, that everything lived on a remote system. The rise of more processing power and windowing systems on the desktop gave rise to client/server. With client/server we saw logic separated in a two-tier system. Initially the web reversed that entirely putting virtually all the logic back on the server.
As standards and infrastructure have matured, we're seeing a combination of the best of the web with the best of the desktop - RIA. Regardless of the technology used to build an RIA, the decision for where parts of the application logic live, rests entirely with the developer. There is no hard and fast rule here, and every application will differ somewhat.
The eBay Desktop as an example has a high degree of logic on the client to provide an engaging user experience with features such as countdown timers, and system tray notifications. Conversely, there's clearly a very significant amount of logic that resides on their servers for working with the vast amount of items up for auction at any given moment. Leveraging the best of both worlds is core to RIA.
When it comes to Adobe AIR, developers use the Web technologies with which they are most familiar on the client. This might be an Ajax approach using HTML, CSS, and JavaScript or Flash with Flash CS3, ActionScript and Flex. These technologies in unison provide a best of breed experience on the desktop thanks to AIR.
Whenever you develop a rich Internet application, there’s always some degree of redundancy (i.e. validation, business value objects). Sometimes redundancy can be a good thing though. If you build a world-class rich Internet application that you want to extend to the desktop, how do you accomplish that today? If you were targeting just Windows operating systems, perhaps you’d be inclined to use MFC or .NET. If you wanted to extend that to Mac OS, then you’d hire on some Objective C programmers. Supporting Linux would likely involve Tk/Tcl or just good old-fashioned C.What level of native OS integration does AIR give developers?
If you’re an Ajax developer, none of those technologies share any resemblance to the HTML, JavaScript and CSS that you used to create that RIA in the first place. The same holds true if you’re a Flash or Flex developer. To deliver your RIA on the dominant operating systems would require substantial investment in new skills, technologies and tooling, and maybe even infrastructure – essentially no redundancy at all; a completely new undertaking. With Adobe AIR web developers can leverage their existing technologies, tools, skills, workflow and infrastructure to extend their rich Internet applications to the desktop.
Adobe AIR is available for Windows XP, Vista Home Premium, Vista Ultimate, Windows 2K and Mac OS 10.4 and higher, including Leopard machines. The Linux release of Adobe AIR is planned for soon after the first final shipping version is released. There has been some discussion of how AIR could call native OS APIs but we¹re in the very early stages of Adobe AIR and as we roll it out, we aren't focused right now on enabling developers to create native desktop applications. As Adobe AIR matures, we will continue to talk to customers and determine feature and functionality tradeoffs. Developers bringing their rich Internet applications to the desktop want native integration, and Adobe AIR provides numerous integration features such as local file IO, system tray notification, running as a background process, native window control and more. To be clear, enabling that integration from web technologies is at the heart of AIR, and required a substantial development effort. We understand that some applications may require deeper integration with the OS, and we’ll continue to evaluate those requests as we plan the features for future version of AIR.Is there any work being done on an offline data sync framework to help simplify this part of the development paradigm?
Data synchronization frameworks for both Flash and JavaScript have been steadily evolving - even before Adobe AIR.Some have asked if we really need browser applications on the desktops, how large is the need for the AIR platform?
For Flex developers there's the LiveCycle Data Services ES which provides a robust data management library. Far more than just efficient data connectivity, LiveCycle Data Services can be leveraged to track changes in the data model on the client, when the remote endpoint is unavailable. It can then provide those changes to the server when the endpoint has become available once more. There's even conflict resolution hooks on the server.
On the JavaScript side, I like to refer to a project called TrimJunction. The TrimJunction project is modeled closely after Ruby on Rails and provides an extensive web MVC framework. One of the features of TrimJunction is the ability to keep changes to the data model in memory. It can then send those changes back to the server when reconnected.
A potential issue for both LiveCycle Data Services and TrimJunction prior to Adobe AIR is that they had no place but client memory to effectively store the data model and change history (and limited Flash shared objects in the case of Flex). They also had to be deployed via the web first. With AIR, these types of frameworks now have a means of being delivered and run with a connection, and a robust means to store data changes while disconnected.
I expect to see great progress in this area in the near term.
Adobe AIR empowers Web developers to take their RIAs directly to the desktop to make them first-class citizens in the user experience -- and to function with many of the advantages the desktop brings. AIR enables a new type of application. AIR isn't just about browser apps outside the browser. It's about empowering the web developer, the Ajax developer, the Flash developer to bring their creativity in building new types of applications. We hope to spur a new wave of innovation for types of applications we Haven't seen before. Right now, most think creative apps are Web apps they are the most engaging, easiest to use, most intuitive. Adobe AIR gives these developers new real estate to develop. We think the potential for AIR is much bigger than just taking apps out of the browser.How is the AIR platform licensed? What does it cost?
The Adobe AIR application runtime, like Adobe Reader and Adobe Flash Player, is free. The downloadable Adobe AIR SDK is free as well. This is true for the beta version of Adobe AIR and will be the same for the final shipping version. Developers can use the free, open source Flex framework to build RIAs for the browser and extend them to the desktop with AIR. It doesn¹t need to cost anything to create applications on AIR.Are there any commercial AIR applications that our readers can checkout?
At the Adobe MAX 2007 user conference in Chicago, Adobe introduced numerous industry leading companies that are building Adobe AIR applications. There are numerous companies spanning a broad range of industries, such as retail, finance, software, entertainment, and government. eBay, AOL and Finetune have had AIR apps available for months. Go to the Adobe AIR Showcase to see who else is developing and to download apps.What else do InfoQ readers need to know about Adobe AIR?
AIR right now is the shiny new object that's getting a lot of attention, and it deserves it! But it's important for your readers to know that AIR is an integral part of Adobe's technology platform for RIAs, which provides the tools, frameworks, servers, services, and runtimes required to create RIAs that reach across the browser, desktop, and operating systems. Developers can use the free open source Flex to create RIAs that run in the browser with Flash Player which is on 99% of Internet-connected desktops and then extend those same RIAs to the desktop with AIR. And by bringing them to the desktop, they get functionality from the OS. This is a complete RIA solution that enables the richest apps with guaranteed reach, which I think is a huge benefit for developers who want to develop once and know that their app can be used no matter what OS or browser users are on.Read more about the Flex and AIR release at: http://www.infoq.com/news/2008/02/air-flex-release.