CMXtraneous: Flex that Flash

Right on the edge of useful

Flex that Flash

Posted Wednesday, June 28, 2006 4:29:06 AM by Joseph Balderson

Joseph Balderson

Today the Macradobians made history.

For those of you still hiding under a rock (just kidding), the team at Adobe Systems Incorporated just announced the release of a dizzying plethora of software and resources under the umbrella called Flex 2.0, which includes Flex Builder, Flex Data Services, Flash Player 9, the Flex.org resource center and the Flex Developer Center.

After being in development for nearly 2 years, and in public beta for a considerable portion of that time, Flex 2.0 has finally been released, to the accolades and cheers of a great many people in the Flash and RIA (Rich Internet Applications) Development community, including myself.

Some of you may be asking yourself at this point, "what is Flex," and "what does this mean?"

Flex is next step in evolution for the Flash Platform (yes, it's not just a plugin anymore, it's a "platform" now, doncha know?) Flash has gone through a great many changes over the years, and each new version has heralded new capabilities and powers. To list some of these, in Flash 4 (1999) it was, um... bad intros? :P  In Flash 5 (2000) it was Object-Oriented Programming and XML. In Flash 6 (MX) (2002) it was the Drawing API and Components. In Flash 7 (MX 2004) it was ActionScript 2.0, Class Packages and v2 Components. Flash 8 (2005), featured a whole new set of tools around bitmap rendering and effects, as well as a file up/download API.

Now hold on to yer pants folks, it's about to get interesting.

Now we have Flash Player 9. But no Flash 9 IDE (Integrated Development Environment). What we have, instead of the gradual evolution between Flash 7 and Flash 8, or even the big step between Flash 6 and 7, we have a quantum leap. The Flash 9 IDE would be the next step, but in fact the Flash 9 IDE isn't due out until sometime in 2007. So Flex could be called Flash 10. Only it isn't. It's Flex.

The Flash Player 9 capabilities are so radically different from its predecessors, that they have effectively split the Flash Player in two: (Virtual Machine) VM1 and VM2; think two flash plugins-in-one. VM1 is Flash 8 and below. VM2 is Flash 9 and up.

The reason Adobe needed to do this is because ActionScript has not only gotten a facelift, it got rebuilt from the ground up, and is now known as ActionScript 3.0, or as I like to affectionately call it, "Uberskript 3.0" ;). In remaking ActionScript, they eschewed compatibility to a certain extent, but they gained so much more.

Some of the features that excite Flash developers about Flash Player 9 and ActionScript 3.0 are:

  • a Just In Time (JIT) compiler that provides a x10 speed improvement in code execution;
  • Built in raw data socket support using binary sockets, which means that the Flash Player can accept raw binary data, which combined with the 10x faster code execution, leaves the field wide open for some serious mathematical heavy-lifting with custom parsing, cryptography and compression algorithms in Flash;
  • ECMAScript for XML (E4X);
  • regular expressions;
  • a standardized DOM event model, including event bubbling;

Gone are all the inconsistencies, the hacks you needed to make, and more importantly, the timeline architecture centred around the Almighty Movie Clip. That's why Flex is so different: there is no spoon, er, I mean timeline. There is no timeline. ;) Which means that everything is class-based and OOP, by default. Bringing ActionScript development in line with most other mature programming languages out there.

The developer community shouted, "give us a robust coding environment for flash," and they listened. And so we got FlexBuilder 2 as the authoring app, which is actually a 'plugin' built upon the Eclipse environment. In FlexBuilder and with Flex Enterprise, you can author an XML document in a markup language called MXML that greatly accelerates RIA development with rapid prototyping and development capabilities. The Flex Server can dynamically compile an entire application comprised of multiple SWFs from a series of MXML documents, similar to what ColdFusion 7 can do now with Flash forms (the Flex release also includes a ColdFusion 7.0.2 Update). With Flexbuilder you can author Flash applications using only ActionScript 3.0 class files, with or without Flex Components. Or you can develop using MXML. Or even a mixture of both, with ActionScript inside your MXML. The key to all this magic is the Flex Framework, or component architecture.

In summary, Flex is:

  • Flash Player 9
  • ActionScript 3.0
  • MXML
  • MXMLC (standalone compiler)
  • FlexBuilder (Eclipse-based IDE)
  • Flex Data Services (enterprise server)
  • Flex Framework (component architecture)

    (did I forget anything?)

Basically, Flash has arrived. It is all grown up now and ready to take on the big boys like .Net, Java and C++. It is a robust, rapid-prototyping, server-complied, RIA development tool. Combined with other Adobe technologies like Media Server and Remoting, we got a serious rich applications development environment on our hands, of a calibre never before seen. And let's not even get into Apollo, which is set to usher in another revolution if Adobe plays its cards right.

In 2004 we saw the split between Flash Designer and Flash Developer with ActionScript 2.0. Now we will be seeing the birth of a new Flash specialty: The Flex Developer.

The interesting part about Flash now, as is that it's not going to be the designers who will push the envelope for Flash anymore. Not even the designer/developers. That day has passed. It'll be the Java, .Net, C++ programmers who've been stymied for too long, and discover a much more powerful tool for RIA development in ActionScript 3.0. We are seeing that now even.

At this point I must mention, as Ryan Stewart so eloquently pleaded, Flex is not for websites. It is an applications development tool. Which means a component-based architecture. Which means you would not develop a site like this using Flex.

Despite that Flash is already considered by the ubercoders to be a 'legacy' implementation (at least until Flash 9 comes out in 2007), Flash still has a very large place in the scheme of things. In fact many Flex Developers are, even now using both Flash and Flex simultaneously: Flash to create the FLVs and Rich Content, and Flex to build the application framework. Personally, I love Flex and it's very cool to make stuff with it, but Flash will always be my first love. Flash 8 has barely come out, it seems, and we're on to the next thing. Hey, I've been waiting for three product versions for the features in Flash 8! So for me, there's still too many cool things to discover in Flash before I move on to Flex. For now.

I guess, at heart, I'll always be a programmer who loves to design.

Category tags: Dreamweaver, Flash, Macromedia News