Unless you’ve been under a rock for the last year, you know that Macromedia has been trying to reposition flash as a tool for developing “Rich Internet Applications”. A rich internet application is basically an application that runs in a browser, but has enough intelligence running on the client side so that it doesn’t have to continually go back to the server to get the next screen, the way an html-based web application does.
If this sounds familiar, it should. This was what applets were supposed to be doing for us in the mid-90s. The SUN effort to provide an RIA platform failed spectacularly for too numerous to list here, including browser penetration, overly complex UI toolkits, and shockingly bad performance.
Flash has some things in its favor that Java did not have. For example
*A 92.5% browser penetration (for version 6, which is the version RIAs will probably require).
*Works in all major browsers without modification
*Excellent tools for doing designing attractive UIs.
However, Flash also has a lot of problems as an RIA platform. These include
*Animation-oriented tools that developers will never be able to learn how to use
*Source files that are in binary format, a serious violation of software development best practices.
*A reputation for lousy usability
*A reputation for being an animation tool rather than a general purpose UI platform.
Macromedia has been throwing money at each of these problems for the last couple years. They’ve been
*“convincing” usability gurus to change their positions on the subject,
*Writing expensive XML to SWF compilers,
*Building tons of components that connect UI components to remote data sources.
However, one feature in their latest version of the Flash IDE is solves what is arguably the single biggest impediment to Flash adoption by developers: the use of animation metaphors in the development environment.
Animation is hard, and it’s a completely different abstraction from the one that software engineers are used to. Engineers have very specific expectations for what abstractions a IDE will use: they expect a text editor / form designer that lets them hook up form behavior to client side code. Software engineers often start out enthusiastic about the potential for Flash, but when they open the IDE the first thing they see is an interface that is quite complex and is obviously still oriented towards animation (everything is driven by the “player head” the “timeline”, and “layers”). After futzing around for half an hour, they have a strong tendency to quit and not come back.
Flash MX 2004 Professional, however, provides an alternative metaphor for designing your RIAs, one that is much closer to Visual Basic than to an animation tool. The maturation of ActionScript into a proper OO language means that you can hook this form-based interface up to arbitrary code that does whatever you want. Up till now Macromedia has really done a piss-poor job of marketing this functionality, and it is still buggy and unintuitive. But the potential is huge.
My next few blog entries will be a quick tutorial in making an RIA UI using Flash MX 2004 that covers all of the initial “gotchas”. They’ll follow the path that my own learning recently took as I became familiar with the Flash development environment: I’m a veteran Java programmer, but I’m new to the Flash world.
The results won’t look particularly impressive (what do you think we are, designers?). It’ll simply be a set of forms with hyperlinking between them (much like hypercard, the apple multimedia authoring tool from 10 years ago). But given that all of the form elements have hooks that can be associated with ActionScript code, this should be enough to get engineers started building RIAs in flash. From there on it’s a question of learning APIs and language syntax: i.e. the usual.