“When one door closes another door opens; but we so often look so long and so regretfully upon the closed door, that we do not see the ones which open for us.” – Alexander Graham Bell
With all the busy and loud commotion around the discontinuation of Flash on the mobile browser, another message is not being heard:
Adobe AIR 3 is better than ever for building mobile applications with Flash, Flex, HTML5, PDF, and native code. The major new addition is Adobe Native Extensions. This allows the creation of uncompromising full-featured, fast, and flexible mobile applications.
Before the introduction of Adobe Native Extensions, AIR applications were limited to the sandbox, with no additional capability beyond what was provided by Adobe. The door is now wide open–you can now mix additional functionality within your AIR applications.
Java developers may be familiar with this concept. The Java Virtual Machine allows native code by way of the Java Native Interface (JNI).
In addition to supporting native C or C++ code, an API is available for mixing Java code on the Android platform. This should make it easier for Java developers working on Android.
There are three main scenerios where native code would be beneficial:
1. To access native platform features as soon as they become available, without waiting for Adobe to provide the support. For example: using the new notification API in iOS 5.
2. To extend the AIR runtime. A clear example is spawning multiple threads for long-running tasks.
3. Performance. Native code will almost always run faster than interpreted or byte-code. Custom sound filters and image processing are strong candidates for the use of native code.
Adobe seems committed to this strategy. They are eating their own dog food. The new Adobe touch-based applications are built using AIR and Native Extensions. For an example of this, look for Adobe Photoshop Touch and Adobe Ideas on the Android Market.
The key to moving forward is a vibrant community and catalog of ready-to-use native extensions. There are already a few interesting projects contibuted by the community. I’ll add some links in subsequent posts.
Of course, there are other frameworks such as PhoneGap for creating portable mobile applications. However, they are all limited to some extent. Adobe AIR is heavy duty in comparison. Competition is good. I’d like to see Oracle release a JVM for Android and iOS, but even then it will take a while to mature.
There has never been a better time to create mobile applications. Using AIR or a similar framework will get you there faster.