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.
- 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.
- 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.
- Local database storage relies on SQLite exclusively. At least it supports encryption now.
- 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.
- 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.
- Sencha Touch supports the popular (Model-View-Controller) MVC architecture.
- 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.
- 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.
- Some of the framework's layout managers can trigger a lot of reflows and repaints, which can result in sluggish screen updates.
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.