Adobe, Mobile Flash Player, JavaScript, etc.

Before you click over this because you know me as a Flash hater, give me two seconds.  That's not what this post is about.  It's about a larger issue.  It's about how awesome it is to be a web developer these days.

Ten years ago, being a web developer sucked.  Deployment was easy (rsync to production and done), but the tooling available to us was dismal.  And I mean crying-naked-in-a-snowstorm dismal.  Browsers were inconsistent, their built-in programming environment (read JavaScript) was reasonably functional but horridly slow, and hardware wasn't beefy enough to deal with scripting languages for hard-core number crunching.

But we had the Flash Player.  Flash provided an environment that beat all three of those problems, and beat them soundly.  It was consistent across browsers and operating systems, used a similar language to what we were used to (both JavaScript and ActionScript are ECMAScript implementations), and it let the developer compile the script into something a little lower level to run in a dedicated VM on the user's machine which meant it was faster.  Of course, Flash is an animation toolkit, but we figured out how to bastardize it with the single-frame movie with a include-and-stop script in it so we could build applications entirely with script (like we wanted), but leverage the Flash player to actually run them.  Not to mention the rich support for visual stuff.  All this led to the concept of a RIA (Rich Internet Application).  Something similar to what we had on the desktop, but deployed to the web with all the benefits (and some drawbacks) that has.

Then browsers got their act together.  We started seeing a unifying focus on application development with the browser as the environment.  People got serious about fast JavaScript runtimes.  Standards were written (e.g., CSS2/3, Canvas) and largely adhered to.  And hardware got faster.  JavaScript application frameworks (EXT, YUI, GWT, etc.) showed up to leverage all that, and now it was possible to build RIAs using standards supported by a wide array of vendors.

In order to compete with this, Adobe released Flex, which is an application development framework for deploying to Flash Player.  It was horridly expensive, difficult to work with, had all kinds of implementation problems, but was better than what you got with JavaScript.  For a while.  Unfortunately a single software company, even one of the largest in the world, couldn't hope to compete with the widespread interest and momentum around browser-native RIA development.  Flex died as a web application framework pretty much before it was released.  Which isn't to say it wasn't used (it was and still is), but the browser RIA juggernaut crushed it like a bug.

Then we saw the huge surge in mobile devices.  It started with smartphones and now includes tablets and e-readers of various form factors.  Fortunately for both consumers and manufacturers, the web wasn't new, so they were able to jump right on top of all the standards and browser capabilities which had been created for the desktop.  A huge market segment opened up for web application developers and browser-native was reasonable right out of the box.

Adobe again tried to compete by creating Mobile Flash Player, but the benefits of Flash Player are small on new mobile devices, especially considering that so much of a mobile device experience is through web-connected native applications, not traditional web applications.  And here we have Adobe's smartest move yet around Flash Player: killing it for the mobile market in favor of restructuring the ecosystem around using it as a development environment for native applications.

Unfortunately, I don't think it's going to matter because Flash is still really slow and heavy and it's not really that much better to develop with than the truly native dev kits.  Yes, it offers the promise of cross-platform deploy, but just as Java demonstrated 10-15 years ago, that isn't much of a selling point for a single application.  People expect not just native execution, they expect native idioms, which means you have to develop for a specific platform, even if you're using a cross-platform toolkit.

So where does that leave us?  As consumers it leaves us in a great spot: there are lots of ways developers can deliver engaging applications to us, on all our devices.  As developers it leaves us in a weird spot: we're stuck with being either web or native developers, with Flash now trying to occupy a sort of middle ground (develop web-style, deploy native).  On the desktop I think Flash (via AIR) holds some promise, but ultimately I don't think it'll last.  The platform just isn't compelling enough to justify the dedication it requires to use it.  Java was designed for very much the same purpose as AIR, and virtually no one uses it.  Java moved almost entirely server side, something which Flash isn't likely to do.

Most interesting is the PhoneGap/Titanium/etc. movement which is very much paralleling the browser resurgence I talked about earlier.  Huge communities of people are working to take all the skills we have as web application developers and give us a build process to take web-ish apps and compile them into native applications, in much the same way Adobe has use AIR to compile Flash into native apps.  However, I think Flash is going to lose in exactly the same way, and for exactly the same reasons, as it lost in the browser.

Bottom line, if you use the web or a web-connected device (read: everybody) the world is going to be glorious in a couple years and only get better.  If you're a developer trying to work in that space, you need to learn browser technologies.  It's the way of the future.  Flash had it's run, but it's been on the way out for a long while.  It'll stick around, just like COBOL and Fortran have, but without an alternative path like Java ended up taking it isn't going to stay relevant to mainstream developers.

9 responses to “Adobe, Mobile Flash Player, JavaScript, etc.”

  1. Rob Brooks-Bilson

    Barney,

    This pretty much echoes my thoughts on the subject as well.

    -Rob

  2. Devin

    "Flex died as a web application framework pretty much before it was released. Which isn't to say it wasn't used (it was and still is), but the browser RIA juggernaut crushed it like a bug."

    Really? Flex died that long ago? I've been nothing but a Flex contractor for the last 6 years, and it's done nothing but grow and pop up in more and more places each year. I come across more Flex positions and offers in a single year than I ever did during my entire 8 year CF developer run combined. Heck, as I look through Dice for my metro area, there's probably 5 Flex positions for every 1 HTML5 position.

  3. Victor M.

    I read until the "Flex died…" sentence.

    You have no clue.

  4. Joshua Frankamp

    Wow!

    I thought the comments would be a bunch of boring amen's but here we have two people who actually choked on the idea that Flex is dead?

    A rudimentary search shows 325 jobs with html and 49 with flex on Portland's craigslist. Now you must understand that most of those flex's don't count due to the words "flex pay, flexible, flex your muscles" etc. The HTML results all do count due to its wonderful uniqueness.

    There are a few positions left with real Flex among them as requirements, most are optional with HTML as an alternative.

    I believe Barney meant Flex is dead like IE 6 is dead. It was dead, and then died a very slow and painful death. It doesn't mean it isn't still taking up market share http://micgadget.com/11633/why-the-chinese-still-favour-internet-explorer-6/.

    Adobe has no qualms about jumping ship, it is smart business; don't be the last on board.

  5. Devin

    um, I don't think I've ever seen a web development posting that didn't mention HTML regardless of what the primary technology was. Way to be smart Josh.

    But seriously… CF developers talking about "other" languages as dead? That's hilarious!

  6. Alexander

    I am a web developer working with JavaScript and Flex. What I don't get really is why the people not working with Flash/Flex are so afraid of it, hate it and want it so badly to be dead :]. Even Jobs was afraid of flash getting on iOS devices because maybe the plugins can give similar user experience and people wont buy apps and he wont get his 30 %.
    It is sad that people are afraid and unite to kill a technology just because it is better then what they have now :\. I don't see any problem in keeping flash as the cutting edge tool to make stuff which will be available in HTML after 2-3 years.

  7. Alexander

    Well more or less in the long term your arguments are valid even if JavaScript is inferior language to ActionScript it will triumph in browsers. Because it gets support from companies like Google constantly building better JavaScript engines. If Google decide that JavaScript is inferior then it will be in trouble. Or maybe they already have decided it (Dart).

    About Apple I think they want to have control over app store at any coast ! They want people buying apps not using web apps :]. I hope one day they wont be able to control the apps users are using. But I am sure they definitely wont like people using web apps versus app store apps and they will do something about it when time arrives :].