Tuesday, January 10, 2012

Flash is not dead (yet)

So I fell into the trap. The trap of thinking that Flash was dead. It started, for me with the war between Jobs and Adobe. I wondered, when the iPhone and iTouch first came out without flash support how long the war could last. Flash had a huge developer/user base but Apple had huge market share in the mobile market. Not on a per device basis, but on sheer volume of Internet throughput (still no excuse for AT&T).

Then came what I thought was the final nail in the coffin. Adobe cut the Flash player out of mobile development. I thought they had basically given up. Here's the thing that few people are talking about. Adobe had a solution months ago: Adobe Air. The ability to build native iOS Apps from within Flash, or Flash Builder, or Flex. Boom. iOS done right? But last April Apple went out of their way to shut them down.

Now it's back. Here's a screen capture of an app I built in Flash CS 5.0 (old school I know) during faculty senate in about 20 minutes. I wanted to make sure the integration was meaningful so I experimented with connecting to the GPS data received by the phone. It works. And presumably the same functions would work on an android or a blackberry.

What took considerably more time was setting up the certificate and provisioning profile so that apple could know who was writing code, what device they were writing for, and have a record of what the app name was. Keep in mind that all of this was purely for testing purposes--not for distribution either at an enterprise level or in the app store.

My takeaway from this experience is that apple is a much bigger barrier (did I mention it costs $99/year to even get on the testing ride?) to app development on iOS than Flash is but time will tell if that continues to be the case.

Note that the flash player is still dead dead dead, and that means no seamless integration with web browsers. No flash video players as the ubiquitous media wrappers. But as someone who uses an iPhone religiously I generally prefer native apps anyway.

I am now officially astounded at how long Flash has persisted. I've been teaching it for 9 years. It remains in my mind one of the best IDEs for people with no programming background, because you can engage in so much GUI development. I'll be curious to see when someone finally sticks a fork in it.


Justin said...
This comment has been removed by the author.
Justin said...

Love this post!

I'm curious for what the future holds for flash.

At my work, we are currently developing a lot of Instructional modules for the Marine Corps Institute using FLASH. However, we have moved to other tools for development for Android and iOS.

Just curious, how did you like working with Adobe Air to publish? Did you find any hangups with it?
What about memory management?


Andrew Walker said...

Haven't had to deal with memory management, since I only did the one "kit" project. I know that's something that Flash air is disparaged for, although I wonder how much iOS plays a role in that too. Like every mobile OS I've dealt with, the idea of closing an app is nebulous at best in part to support rapid switching. So when do you garbage collect? If you've done that with xcode or other native tools I'd love to hear more or get a link to something that discusses the issues.

One nice thing (in theory) is that the same actionscript code would work for android as well. Haven't tested it--but would allow for an abstraction layer that is quite useful. Big obvious downside is innovation. Flash will always be behind any OS release and unlike HTML5/CSS3 you have to wait for an OS update as opposed to a browser update. THEN wait for flash to do a new release on top of that.

Andrew Walker said...

Oh and I didn't answer your question about air. Air was a snap. For CS5 at least, it's just part of the publication options. About the only headache was figuring out how to package external libraries as part of the file--flash as a default will depend on a web connection and on the high probability that a given machine has already downloaded an external library.