is supported in part by

July 06, 2006

Flash Player 9, Flex 2, ActionScript 3.0: A Survey of the New Landscape

If you're an ActionScript devotee, you already know that Flash Player 9 was released last week, and you're already coding in ActionScript 3.0. If, on the other hand, you're just trying to keep up with your daily work, and you still don't know whether you should even learn ActionScript *2.0* yet let alone ActionScript 3.0, allow me to brief you on the latest ActionScript landscape...

In September 2003, Macromedia released Flash Player 7. Flash Player 7 introduced a new version of ActionScript, known as ActionScript 2.0. ActionScript 2.0 gave the language a new, formal syntax for object-oriented programming, but left most of the Flash Player API unchanged. (The Flash Player API is the set of classes, objects, functions, and properties that come built into Flash Player...stuff like MovieClip, TextField, Sound, getURL(), and loadMovie().)

Two years later, in September 2005, Macromedia released Flash Player 8. Flash Player 8 introduced some new Flash Player API features, but the core ActionScript language was not significantly changed. ActionScript in Flash Player 8 was still called ActionScript 2.0 because it had the same core language syntax that it had in Flash Player 7, even though the Flash Player API was expanded in Flash Player 8.

Meanwhile, a few months before Flash Player 8 shipped, Macromedia announced that it intended to groom Flash as a formal platform for application development. Macromedia also revealed that, to support the new platform vision, it had long been working on a successor to ActionScript 2.0, known as ActionScript 3.0. Macromedia promised that ActionScript 3.0 would be a full rewrite of the ActionScript engine.

Then, last week, Adobe (who acquired Macromedia in December 2005) fulfilled that promise by releasing Flash Player 9. Flash Player 9's main new feature is full support for ActionScript 3.0 (but older versions of the language are still supported for backwards compatibility). ActionScript 3.0 expands only modestly on the core object-oriented programming syntax of ActionScript 2.0, but fundamentally overhauls the built-in Flash Player API. ActionScript 3.0 purges the programming "quirkiness" that has long been part of Flash's heritage, presenting a brand new, logical, clean set of built-in classes, objects, functions, and properties. ActionScript 3.0 also provides much greater performance than ActionScript 2.0. Some tests show that ActionScript 3.0 is in excess of 10 times faster than ActionScript 2.0. All this adds up to a more powerful, feature-rich programming language for large-scale application development.

In addition to Flash Player 9 and ActionScript 3.0, Adobe has also just released a brand-new .swf authoring tool known as Flex Builder 2.0. Flex Builder 2.0 is part of the Adobe Flex product family, and is intended for programmers, not for animators or motion-graphic designers. Based on the open-source Eclipse IDE, Flex Builder 2.0 offers traditional programmers a familiar environment in which to produce .swf content from either pure ActionScript 3.0 or an XML-based markup language known as MXML. Flex Builder 2 also includes a development framework known as the Flex framework, which provides an extensive set of programming utilities, tools for connecting to server-side data sources, and a library of skinnable, styleable, rich user-interface controls (or "SSRUIC"s, pronounced "sir-yukes"). Flex Builder 2 can be used in either hand-coding mode or in a visual-development mode similar to Microsoft's Visual Basic.

But wait there's more. Last week, as part of its move to groom Flash as a platform, Adobe released a free (yes, free) SDK for creating .swf content, known as the "Flex 2 SDK". The Flex 2 SDK includes:

* a standalone compiler for ActionScript 3.0 and MXML
* the Flex framework class library

Let me re-iterate this, because it's big news: Flex 2 SDK includes a free, command-line compiler that can generate .swf files from pure ActionScript classes. Cool.

The Flex product family also includes Flex Charting 2 (a set of charting components) and Flex Data Services 2 (a server-side framework for dynamic .swf generation, data connectivity and syncronization, collaboration, record pagination, and lots of other back-endish stuff).

Finally, in order to let users of the Flash authoring tool try ActionScript 3.0 in Flash, Adobe has posted a preview version of Flash Professional 9. This new preview release can be thought of as "Flash Professional 8 with ActionScript 3.0 support."

For the record: Flex Builder 2 does not replace the Flash authoring tool. The two products are complementary, not competitive. The Flash authoring tool provides an environment for creating and compositing artwork and scripted motion graphics. Flex builder provides an environment for coding and laying out rich Internet applications.

Okay. To review, here's what Adobe released on June 28, 2006:

>> Flash Player 9 - The Flash platform runtime.

>> ActionScript 3.0 - The latest version of Flash Player's programming language.

>> Free Flex 2 SDK - A standalone .swf compiler plus the Flex framework.

>> Flex framework - A library of UI components and classes for application development.

>> Flex Builder 2 - An Eclipse-based ActionScript 3.0 and MXML IDE.

>> Flex Charting - A library of charting and graphing components.

>> Flex Data Services 2 - A server-side framework for .swf-format application development.

>> Flash Professional 9 ActionScript 3.0 Preview - Basically, Flash Professional 8 with ActionScript 3.0 support.

Ok, that's a lot of new stuff. So...what should you do now? Here are some suggestions:

ActionScript 2.0 Developers
If you spend most of your day coding ActionScript 2.0, you should start learning ActionScript 3.0 as soon as possible. Compared to ActionScript 2.0, ActionScript 3.0 is faster, cleaner, more powerful, easier to debug, and more feature rich. Pick up a copy of Flex Builder 2 or the free Flex 2 SDK and get compiling!

Timeline Scripters
If you are part designer/part coder, and you mostly program by adding code to frames on a timeline, you probably don't need to worry too much about the core language aspects of ActionScript 3.0 (or even ActionScript 2.0 for that matter). In ActionScript 3.0, you can keep making your functions, variables, loops, and conditions the way you always have. All three official versions of ActionScript have supported timeline scripting in pretty much the same way. Your timeline-scripting skills will continue to be useful for many versions of Flash to come. That said, when you decide to start creating Flash Player 9-format .swf files, you'll need to learn the new Flash Player API. When you learn the new API, you'll say goodbye to lots of old friends (enemies?). For example, to load a .jpg, you'll no longer use loadMovie(); instead, you'll use Loader.load(). That said, some of the new API will be familiar. For example, you'll still use MovieClip.gotoAndPlay() and TextField.text. Some of the transition to the new API will be irritating for you because you're used to working with the old API, quirks and all. The benefits of ActionScript 3.0 might not be as evident to you as they are to the large-application-development crowd. If you want to pull the bandage off slowly, start playing with the Flash Professional 9 ActionScript 3.0 Preview now.

Flash Designers
Buy Flash 9 when it comes out. Be happy the developers on your team now have some real tools to work with. Once you've got Flash 9 and they're using ActionScript 3.0 and Flex Builder 2, you'll probably have an easier time working with them. If the developers on your team want to move to ActionScript 3.0 before Flash 9 ships, you should install the Flash Professional 9 ActionScript 3.0 Preview so your content is 100% compatible with your developers' code.

Aspiring Flash Programmers
If you're a total non-programmer and you want to learn ActionScript, start by learning some timeline scripting. Don't worry about learning "ActionScript 3.0". Just start with variables, loops, conditions, and functions. Start programming in Flash rather than Flex Builder 2 unless you really want to dive deep into programming. If you *do* want to dive in deep, consider taking a general programming course on object-oriented programming. Any introductory-level course that covers Java, C#, .NET, Visual Basic, or Flex Builder 2 will also be useful. So would a comp-sci degree. ;)

ActionScript 1.0 Developers
Wow, you still use __proto__? Keep doin your thing man.

Okay, back to writing Essential ActionScript 3.0...

(and, yes, "SSRUIC"s is a joke...)

Posted by moock at July 6, 2006 05:35 AM