It sounds good to be open and multi-platform. There are words that always sound good, but will they survive a reality check?
Let's discuss first the most important advantage of Adobe Air:
Adobe Air apps can run untouched in different operating systems (Windows, Mac and Linux). Write once, run everywhere.
This concept was introduced by Sun Microsystems back in 1995 when they introduced Java. The idea was to write an application once and run it on different platforms untouched, on top of the Java Virtual Machine. Yes, a virtual machine.
But, isn't Android native development based on Java? Can I write an application for Android that also runs untouched in Nokia devices, for instance? Well, no. This is because the Android Java implementation uses a different set of libraries, not present in Nokia devices.
So, will my Adobe Air application for Desktop run untouched in a Mobile Device? If Java cannot do it, why will Adobe can? The reasons why they can are two:
- Java is open and Adobe is not. Google has modified java for the phones. The java running in Google phones is not the java running on desktops. In fact Oracle, current owner of Sun, is suing Google because of that. Adobe controls its own platform in the same way that Apple does. So they can do whatever they want.
- Because they can do whatever they want, they will just allow desktop apps to run in Android phones. They will say that because they run in all the environments, Adobe Air is open, but the truth is, they can do it because they are closed.
Does it make sense?
Let's walk in the opposite direction. Mac OS X and iOS are the same thing in the core. However Apple does not allow Mac OS X apps to run on iOS devices and vice versa. Why is that? Because mobile and desktop are absolutely different user experiences.
I will give you an example of a very popular Adobe Air app: TweetDeck. Check out the screenshot below.
You can see two scrollbars, one horizontal scrollbar and another one vertical. Now see this other screenshot:
Do you see any scrollbar in this iPhone screenshot? There is none. This is because there are other types of screen controls, which create a much better user experience in a mobile device. And that is the reason why Mac OS X apps do not run on the iPhone even when they could. Apple wants the best user experience in each device.
It is probable that Adobe will introduce screen controls in Air that will allow a mobile user experience. But would this be write once run everywhere? The answer is no. Developers will have to write a version of their apps for Mobile and a version for Desktop.
Perhaps Adobe will create some kind of automatic conversion of the desktop controls into mobile controls. But would you let a piece of software change the behaviour of your application without your control? I know I wouldn't.
The last option is to do what web developers do in web applications. The app detects when it is running in a mobile environment and it redirect you to the mobile version of the page. Which technically means you have written two apps and you have packed them into one. Which I find not very efficient.
So, if we have to write two apps anyway, what is the advantage of using Adobe Air instead of the native development kit? I can think in only one. You can learn only one development environment and only one programming language and create apps for many platforms. But will Adobe Air give you all the features of the native development kit? There is no way that they can do that. Google have written about four mayor Android releases in the time that Adobe have generated only one.
So, does it make sense to have Adobe Air for Android? Not for me. And for you? Please let me know your comments!