You Got Your Flash On My Cocoa?
We’ve had the announcement that Flash CS5 will now natively cross-target the iPhone/iPod Touch. In terms of what it offers for the iPhone OS platform & its eco-system, I’m not entirely sure it’s a good thing.
The process they’ve used, in which the raw Actionscript is compiled down into native ARM code, at least appears to be sound on first glance. The fact that several applications have passed Apple’s approval process also helps validate this.
Whilst this does sound similar to the process employed by the MonoTouch project, the significant difference is that this will not allow Flash developers to take advantage of the iPhone’s rich frameworks (ie. UIKit), instead relying upon developers to design & implement their own UI widgets for serious applications.
Maybe I’m wrong for looking down on them for this, but one of the big advantages in developing for the iPhone (as well as desktop Mac OS X) is that you have a rich palette of UI controls available for use in your own applications. Without these, using Flash to develop serious applications is not going to be a productive endeavour. That of course, is ignoring the lack of UI consistency which native applications offer.
Even more worrying is the low-level technical implementation. Compared to doing development on a desktop platform, mobile development requires significant more skill in managing the limited memory & resources which are available. Looking at the breakdown of one of the available applications (via Jeff LaMarche’s blog), it appears that the final binaries are about 10mb in size, which happens to be about the maximum allowed size for downloading applications over the air, which is likely to impact on the reach your application has to the wider market.
They also appear to not be fully optimised – unlike a normal application, the application binary and all resources are combined into a single executable. On the original iPhone, or the iPhone 3G, this is likely to be a potential to hit the smaller memory limits those devices offer as a result.
At this stage, whilst my curiosity is peaked, I still don’t think it’s an entirely good path to go down. There appears to be a few interesting issues with the platform (which may be related to the early nature of it), but at the moment, I’m not entirely confident that it’s the best way to go, or the results will be worth it.
I can’t help but feel that it’s best to stick with the native Objective-C/Cocoa Touch stack for development, unless you’re specifically doing games development.