Flash (and it’s associated development environment Flex) as a cross-platform savior a sentiment in the internet application community, that’s held by more than a few mis-guided souls. It’s easy to understand the feeling, cross-browser development is difficult, especially when broken legacy browsers still account for the vast majority of internet traffic. With the Internet growing as a software deployment model, the idea of using a run-time, such as Flash, and it’s associated languages, such as Flex, have become more popular. After all, if the code runs on the run-time, then it has to work the same everywhere, right? Wrong.
First, this idea was tried before. It was called Java, which was really meant to be a little language running inside of an applet. Java is now primarily used for enterprise software running on servers.
Adobe has created a runtime that’s a lot quicker to load, is better at playing movies, but is equally broken for web-deploment. Adobe’s actions suggest that “cross-platform” is nothing more than a check-mark on the product sheet needed to make the executives happy. This is especially true when it comes to the operating system of choice for many developers: Linux. Flash Player 8 was never released for Linux. The Flex IDE is still not available on Linux, although it is a little more than an Eclipse plugin. As for the player, I recently had to downgrade from the Final to the Release Candidate because the Final maxed out my CPU while watching fullscreen video (the RC had cpu usage around 70%). The final version of Flash 9 also removed support for running within a QT browser, a feature that once again, was present in the release candidate. Normally ‘Final’ versions are supposed to be better than the release candidates.
The end result is that your application is only as cross-platform as Adobe allows it to be. Contrast this with AJAX/DHTML apps, especially the apps written using cross-platform javascript libraries. These apps work in IE, Firefox and Safari, and a lot of them even work in Opera. Firefox and Safari are built on open-source rendering engines which means that if your app does not run on something, somebody, somewhere, is probably up late tonight, working to bring your application to yet another platform.
The silver bullet of cross-platform web-development cannot be based on a solution that barely works on one of the major operating systems. The only silver bullet is with well defined and strictly implement standards. While the teams at Apple, the Mozilla Foundation, and even Microsoft, are working towards that goal, Adobe is busy regressing their Flash player. Cross-platform web development is hard with browsers, but impossible with Flash.