Over the last year, many observers have wondered when Apple would deliver Adobe Flash support on the iPhone. At the company's shareholder meeting on Tuesday, Steve Jobs made comments that indicate that support isn't coming anytime soon, thanks to architectural limitations in Flash itself. A full explanation of those limitations follow.Why Flash?
The iPhone's mobile Safari browser delivers such a desktop-like experience that the main remaining element missing for most users has related to Flash, software commonly used by web designers to add interactive applets to their websites. Adobe's Flash acts as a self contained environment for presenting interactive, animated elements on web pages.
The most common use of Flash is in banner ads that goad users to click the moving monkey or fight an opponent in order to draw attention to an advertised product. Flash has also become the lowest common denominator for embedding video clips into webpages, making it easier for web developers to present video clips that works on any system without forcing users to install a plugin.
Flash just works because most web users have the required plugin already installed; Adobe has bundling agreements with both Microsoft's Windows and Apple's Mac OS X. Users who don't have Flash pre-installed can download it for free, and Adobe now even offers a Linux version of the plugin.
Flash on the iPhone
Less technically inclined pundits have expected Apple to release a Flash plugin for the iPhone that works identically to the plugin used on desktop computers, similar to how the iPhone supports viewing PDF documents or Microsoft Word and Excel files. The problem is that the Flash runtime has never been designed to work on anything outside of a desktop computer, which has almost unlimited access to processing power and few constraints on battery use, available RAM, or heat dissipation.
The iPhone is a very different product. It's a fraction of the size of a laptop battery and uses a low power, embedded ARM processor that works unlike the Intel Core or PowerPC processors used in Macs and PCs that can run Flash. In order to develop a Flash plugin for the iPhone, Adobe's proprietary software would need to be recompiled and optimized for the ARM architecture, which isn't something Apple could easily do independent of Adobe.
More Problems for Flash
There are other problems that are even more significant, however. While desktop computers can typically afford to run any process at full bore, the iPhone's processor is not only smaller and slower, but also designed to use power far more efficiently, cycling down when not needed in order to both conserve power and to limit the heat that a fully running processor would produce.
The iPhone's OS X environment is also designed to run from a relatively small disk image stored in NVRAM; Adobe's Flash is designed to run on a desktop machine with few limitations on the amount of disk space consumed or RAM used; it can easily leak memory and gobble up more RAM than svelte iPhone apps are ever intended to use.
Even if Adobe could deliver its own Flash plugin for the iPhone that cleanly ported the aging Flash environment to ARM, the work required to optimize power and memory consumption and manage heat dissipation would result in a plugin that could not run the majority of Flash web applets that have been designed to work on desktop computers. This would be like a Windows emulator that only runs software specifically designed for Vista; the majority of users would want a version of Flash that runs all the old code out there on the web, not just a subset of newly developed applets that aren't available yet.
A Big Maybe
None of this should be any surprise to developers who have been keeping tabs on Apple's guidelines for iPhone development. Last January, Jobs said the iPhone would not ship with support for Sun's Java, but left a question mark hanging on the subject of Flash support, using the word "maybe."
Between then and the arrival of the iPhone in late June, Apple began work with Google to migrate the YouTube video library from a Flash-based player designed to run from a web page to a custom iPhone interface that downloads ISO standard, MPEG 4 H.264 videos from Google's servers. H.264 is the same standard video format being used by everything from Sony's Blu-Ray discs to Apple's iTunes and open source libraries such as x264.
That move was clearly an effort to greatly reduce the iPhone's need for Flash as a container for distributing web videos. Once the iPhone was delivered, the appearance of its H.264 YouTube player and the lack of Flash support dropped a big hint about the likelihood of Flash ever arriving, but the evidence against Flash support on the iPhone continued to mount.
Dear Developers: Don't Use Flash
As noted in Gone in a Flash: More on Appleâs iPhone Web Plans, an Apple developer document published in June entitled "Optimizing Web Applications and Content for iPhone" presented a number of recommendations to iPhone web developers that did not exactly convey optimism about the speedy arrival of a Flash plugin. It made four curious references to Flash on the iPhone:
- "Donât bring up JavaScript alerts that ask users to download Flash. Flash isnât supported and neither are downloads."
- "Safari on iPhone does not support⦠Java applets, Flash, Plug-in installation"
- Under the section "Unsupported Technologies," Apple listed one technology: Flash.
- "Youâll want to avoid using Flash and Java for iPhone content. Youâll also want to avoid encouraging users to download the latest Flash on their iPhone, because neither Flash nor downloads are supported by Safari on iPhone."
The guidelines didnât just tell developers to "deal with the existing omission of Flash," but instead suggested they begin using more open alternatives. It actively encouraged developers to "Stick With Standards," recommending CSS, JavaScript, and Ajax on the iPhone. "The web is always evolving, and as it does, so will Safari," the report noted. "Youâll want to keep informed of the evolving standards emanating from WHATWG and W3C standards bodies."
The WHATWG, of which Apple is member, is a standards Working Group specifically developing Web Hypertext Application Technologies, quite specifically alternatives to using Adobe's proprietary Flash, Flex or AIR, or Microsoft's competing Silverlight, which is targeted directly at Flash as well.
Other limitations Apple lists for developers building iPhone web apps forbid the use of polling in JavaScript; the use of any non-streaming media, images, HTML or script downloads over 10MB; any JavaScript executions that last longer than five seconds; the use of mouse-over events (a limitation posed by using a touch screen rather than a click or hover mouse); and user interaction involving file uploads and downloads.
All of these limitations would also apply to a hypothetical Adobe Flash iPhone environment, making Adobe's task of porting its environment to the iPhone extremely difficult; the practical requirement of running existing Flash applets, which make heavy use of mouse-overs, downloads, and event loops, would simply render a usable Flash on the iPhone impossible.
The Flash Lite at the End of the Tunnel
It's noteworthy that Adobe has moved away from attempting to port the full Flash runtime to other mobile phones. Instead, the company developed Flash Lite, a simplified scripting runtime designed to provide a user interface layer of interactivity that could be used to design basic phone interfaces. Flash Lite doesn't run any of the Flash content found on websites, rendering it worthless to iPhone users.
Apple's phone already has a far more sophisticated development environment for building real desktop-style applications called Cocoa; Flash Lite is really only useful to mobile service providers who want to add a standardized layer of graphics on the handsets they sell to make them all look cohesively branded.
That's why Jobs said at Tuesday's shareholders meeting that Flash Lite "is not capable of being used with the web." It simply is not a web plugin technology and only bears fleeting relation to the desktop computer Flash, which Jobs said "performs too slow to be useful" on the iPhone.
The Missing Product in the Middle.
"There's this missing product in the middle," Jobs continued, but based on the developer documentation Apple provides for the iPhone, it's clear Apple isn't holding its breath waiting for Adobe to develop this missing product.
That missing product is unlikely to ever exist, because compatibility with existing desktop Flash applets simply isn't a good fit in a mobile device, particularly an aggressively battery efficient ARM unit like the iPhone. That's not really a problem because, while Flash makes a convenient way to develop web applets for desktop users who have the Flash plugin already installed, it really doesn't offer much for iPhone users apart from the ability to access Flash web video clips, view flashing ad banners, and see Flash applets sites on sites that use them.
Apple insists there are better alternatives to all three. The company is pushing the use of standard H.264 video, advocating the future development of standards-based web applications with WHATWG and HTML 5.0 along with partners Firefox and Opera (and increasingly Microsoft), and using Ajax technologies centered on open standards including JavaScript and CSS right now. In fact, Apple has removed nearly every vestige of Flash from its corporate website.
Apple has done so much to present open alternatives to Flash that it seems to make it pretty clear that the company is not only betting against Adobe ever porting an acceptable Flash runtime for the iPhone, but also seems to suggest that Apple would rather the iPhone's web browser be entirely free of any dependence upon Adobe at all.