Evaluating Adobe AIR and Sencha Touch

In the Comparing Mobile Development Framework Types article, we explored the two main general Mobile Framework types and went through each one's pros and cons. In part 2, we evaluated the Apache Cordova and Appcelerator Titanium frameworks. Now its time to move on to two more heavy hitters: Adobe AIR and Sencha Touch.

Adobe AIR

Like Apache Cordova/PhoneGap, Adobe AIR allows you to develop mobile application using front-end technologies such as HTML and JavaScript as well as Adobe's own technologies like Adobe Flash, Flex, and ActionScript. However, where Adobe AIR differs is that it uses a runtime component to execute the code contained in an .air file. The air runtime facilitates bridging between Javascript and ActionScript engines, so you can call javascript code from an swf or manipulate HTML/DOM via ActionScript. Adobe provides their runtime component for the three mayor operationg systems: Mac OS X, Windows, and Linux, but note that the Linux version is still in beta.

Pros

Right off the top, the addition of Flash to the mix is a highly advantageous one. Not only are the IDEs to develop it firmly entrenched in the developer community, but the quality of flash-based UIs are seriously impressive!

The runtime engine's performance is excellent, and is on par with that of Java or .NET apps. That's probably because ActionScript 3.0 uses a JIT (just-in-time) compiler, just like Java.

Installing an AIR application is quite easy; just put the files in the application directory.

Adobe Air runtime is more than the integration of HTML/JS and Flash technologies. The runtime provides a set of APIs for air applications to interact with OS functionalities such as:

File I/O

Native Window & Menu creation and management

Internet connectivity

The local SQLite database engine to manage data.

Cons

There is a pervasive fear among many mobile developers that AIR's days may in fact be numbered, since Adobe purchased Nitobi and the rights to the PhoneGap name.

The use of Flash has been declining in recent years. There are many potential causes, including lack of support on Apple devices, search engines' inability to crawl over flash content, and security concerns. The title of a recent article on InfoWorld summed it up quite succinctly: Adobe Flash: Insecure, outdated, and here to stay. So maybe it's still a tad premature to be sounding the alarm bells.

Reliance on a runtime environment is seen by some critics as a weakness. I'm not so sure personally. Speaking as a long-time Java developer, that architecture lends itself very well to our modern multi-platform world.

Sencha Touch

Sticking with our current front-end development theme, Sencha Touch is another HTML5 programming platform. A complete framework, it provides a full development toolkit, including built-in composite UI controls and a commercial IDE that features a WYSIWYG interface for getting your apps up-and-running quickly. According to the company, Sencha Touch was the first HTML5 mobile JavaScript framework for web applications that feel native on Android, BlackBerry, and iOS.

Pros

As alluded to above, Sencha Touch's Sleek and responsive UI is as close to native as you can get with a front-end framework. Throw in a nice collection of built-in composite UI controls and you can expect your apps to look great.

Everything is thoroughly documented - including API documentation as well as tutorials. There is plenty of community support on the Sencha site as well. You may think that you don't need no stinkin' instructions, but trust me when I say that I've worked with products that are poorly documented, and it cost me untold hours of frustration and unproductivity.

Class-based programming is also supported, which makes it easier for OO-programmers new to Javascript to use the framework.

User interfaces and data bindings can be defined declaratively.

Sencha Touch applications are distributable via mobile app stores.

The framework is quite mature now and has a large number of showcases and success stories that you can draw upon.

There are a number of free and commercially 3rd-party extensions available for more specialized applications.

Cons

Sencha Touch is not Open Source, so there is the risk of vendor lock-in.

The size and scope of the framework leads to somewhat steep learning curve for anything other than the most trivial application.

There have been performance issues reported on some non-Webkit platforms, notably Blackberry.

To achieve greater compatibility, animations are largely accomplished using Javascript rather than CSS. This can lead to pronounced performance lags.

Some of the framework's layout managers can trigger a lot of reflows and repaints, which can result in sluggish screen updates.

Conclusion

Good luck in choosing between these two mobile development frameworks. Both have many compelling reasons to choose one over their competitors. Nevertheless, I can't help but think that there are still more worthy candidates out there that have yet to be explored. In the interest of thoroughness, let's try a couple more frameworks before making any hard decisions.