Filed Under (AIR, ActionScript, Flex) by jonr on June-8-2009

A while back I started to put together a list of cases where it might be better to avoid using Flex and/or AIR, but never posted it.  I ended up concluding that most of the issues can be addressed if Flex is a fit otherwise.  I have never been an engineer that believes that any one technology is a fit for all cases.  The other side of that coin is that I don’t believe that any platform is perfect, and you have to accept the pitfalls of whatever you choose.

Anyhow, I decided I should dust it off and put it out there.  If, for no other purpose, than to have a good reason to post the facetious list I wrote up to go with it.

Here is the list of potential issues:

  1. The iPhone:
    If you are building an application that must be available on every platform, including ones that have not been created or released yet, then targeting the Flash platform is not ideal.  That said, the notion of the platform that is portable across all types of devices and form factors comes up frequently, but in most cases it is entirely unrealistic and undesirable to build real applications with this approach.  A better approach is to build applications tailored to each specific device (or at least each genre), such as a native iPhone application with features tailored to a mobile device.

    So, in this case the iPhone is symbolic of platforms that do not support Flash and have no published roadmap for supporting 3rd party runtimes.  If you are building an application that truly has the requirement of being the same application on the desktop and every mobile device (which certainly exist), then using Flash is a no go.  In many of these cases, standard browser technologies are the default option (HTML, CSS, and JavaScript).  RIA features can be added by using frameworks like GWT.
  2. Search:
    In 2008, Adobe announced their collaboration with Google and Yahoo to make Flash content searchable.  The ability for major search engines to craw a SWF file is a nice step forward.  Yet, if you have consumer-facing content that must be searchable, then it may be best to avoid RIA features in general (not just Flex).  The search paradigm is heavily dependant on the page-based model.  It is a major challenge to build rich applications that can be entered from any direction and properly reconstitute their state.
  3. Low Bandwidth Clients:
    If you are building a system that potentially services a large volume of low bandwidth users, then Flex can present some challenges.  The compiled applications are typically quite sizeable.  Flex does allow for breaking up the applications with runtime-shared-libraries (RSL’s).  With that approach, the Flex SDK still has to be downloaded (just not over-and-over).  So, trying to using Flex in this case is a bit of a stretch.

    AIR can actually present some real opportunities with offline clients.  For example, Parleys.com has reported that low-bandwidth clients love their application because it can download videos overnight for viewing offline.
  4. Content Centric Applications
    There is a class of content centric applications that fit the hyperlink paradigm and should never be made into RIAs, such as Wikipedia and Craigslist.  Certainly, there are a number of applications that combine heavy content along with the need for a number of advanced RIA features.  In those cases, Flex / Flash has presented real challenges because of its limited ability to deal with large bodies of text.  Many of these limitations are being addressed with the next version of Flex and the recent release of Flash Player 10.
  5. Local Device Access:
    Adobe AIR makes a compelling case for building desktop applications with web technologies, but if you are building an application that requires local device access then it is worth considering more traditional desktop platforms that offer a greater level of access to machine resources.  The community has responded to this concern with the Merapi project, but for those looking for major vendor support this is still a valid concern.
Now, the facetious list that highlights a number of reasons one might settle on not using the Flex / Flash platform:
  1. You prefer not to have a full featured easily extensible set of components.
  2. You like spending time debugging your Ajax applications in all the different browsers and versions.
  3. You are a Java developer and too afraid to shell out $250 for an IDE.
  4. You believe that you can do anything you ever wanted to do in Perl.
  5. You like working in a 10 year old standard (HTML 4).
  6. You like the term Open Web, and believe it actually exists.
  7. You hate quality applications, your clients, and yourself.

Let me know if you have any additions for either list!

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • DZone
  • Digg
  • del.icio.us
  • Reddit
  • Facebook
  • LinkedIn

Comments:
George Bridgeman on June 8th, 2009 at 8:33 am #

My main reason for not using AIR is that I can’t see the point of using it.

I haven’t looked very hard but I’ve yet to see any AIR app which couldn’t be done in regular HTML, CSS & JS, with Flash for anything that can’t be done using the first three.

George.

Matt Platte on June 8th, 2009 at 9:58 am #

Not sure I agree with the Java/IDE point. Yes, I know it’s humor, but yesterday I noticed something: Flex is becoming Java.

It’s like this, build the ‘hello world’ HTTPService application – Yahoo Weather seems typical. Have Flex generate the form. Run the application. Oops, something’s broken!

Now look inside the service folder. Wow. That’s quite a pantload of code! I understand why it’s there and all but still, maintaining several files per attribute plus Cairngorm adds up rapidly.

Soon a developer’s attention limit is reached, resulting in Cargo Cultism or the addition of more eyes and hands to the project.

Again, it’s not a good/bad thing, just part of the landscape, but an environment where Flex development looks (to me) more and more like Java development.

Maybe it’s always been like that and I just hadn’t noticed until the code generator wizard arrived. After all, I’m not primarily a Flex developer.

Quentin on June 8th, 2009 at 9:30 pm #

George, AIR apps can be built using HTML, JS & CSS, they aren’t all Flex/Flash. That being said, there are plenty of cases where the performance and interactive design are just not feasible in JS, at least not to the same level of interaction. A lot of people tend to focus too much on the “open web” with regards to development, all the while forgetting that they aren’t developing for themselves, but for the end user, and as such, sometimes your personal tastes have to be put aside for something better. There are a lot of apps that utilize flash/flex to handle making the presentation of large amounts of visual content more appealing and easier to use for the user. Sliderocket, Buzzword, numerous games and video apps, etc. While the JS/CSS/HTML competitors of these are impressive and functional, they don’t offer anywhere near the ease of use from a user standpoint as their flash/flex counterparts.

No one technology will ever be able to do everything. At least I hope not, as should you if you enjoy innovation at all. Relying on JS and HTML to do everything is doing a disservice to your customers/users, and is really just a pretty closed minded outlook on the real state of things.

Developers need to stop worrying about “me me me” and start worrying about what is the best experience for their users, JS simply can’t do everything flash can do. If you’re still telling yourself that it can, then you’re just delusional or in denial.

Darren on June 11th, 2009 at 5:06 pm #

Yes, George, it’s impossible to imagine a desktop application – using an almost identical codebase to your web app and works cross-platform with no code changes – that might need to store data in a local database or read and write local files.

Matt, I haven’t written an app using HTTPService for a couple of years and I use Flex every day. If you or your team are also developing the backend, it’s trivial (and much faster/lower-bandwidth) to pass typed objects back and forth from Java/PHP/C# etc. using AMF. It really cuts down on the logic needed both client and server-side.

Darren on June 11th, 2009 at 5:25 pm #

So Jon, to summarize – you can reach 99% of internet-enabled devices in the world by writing a Flash app + an iPhone app. You should only use Flex when writing an RIA (with the emphasis on the A), not a content-centric webiste (totally agree). The low-bandwidth point is contentious – as you allude to, the Flex framework has been automatically cached in the Flash Player across websites/domains since Flash Player 9 release 3. The more popular it becomes, and the more developers that take advantage of the caching, the more attractive it becomes even for low-bandwith use cases. 50-150KB for a whole app (when the Flex SDK is subtracted) compares quite favourably with many (complete) static websites.

[...] jonr added an interesting post on Jon Rose's Blog » Blog Archive » Top 5 Reason's Adobe Flex and AIR …Here’s a small excerptIf, for no other purpose, than to have a good reason to post the facetious list I wrote up to go with it. Here is the list of potential issues: The iPhone: If you are building an application that must be available on every platform, … [...]

Post a comment
Name: 
Email: 
URL: 
Comments: