Should I use Flash or Flex?

I would suggest writing this application using Flex. Mainly because the Flex toolchain is a lot better than Flash Professional in my opinion. While there's nothing in your question that really seem to require the Flex framework, you would probably benefit from using it. Not only for its superior development environment but also because there's a few things in the Flex framework that just makes working with data a whole lot easier.

Regardless, there seems to be a lot of confusion regarding terminology here, so I'll try to clear a few things up:

DISCLAIMER: This is by no means a comprehensive list of everything flash. While I've tried my best to be factual I quite possibly have left out some important details for the sake of brevity (hey, at least I tried) and in other cases I may simply be wrong. The usual caveats about considering the source apply.

  • Flash player, provides the ability to render vector and raster graphics as well as run user code in a virtual machine. The player is the core of the flash platform, enabling content to run on multiple platforms (generally without any platform specific modifications.) There are quite a few APIs in the player that are actually native code but can be called from ActionScript.

  • ActionScript is the high level language of choice for the Flash Platform. There are others, most notably Haxe, but they aren't supported by Adobe's tools. There are three versions of the language: ActionScript 1, 2 and 3. The first two were used prior to Flash 9, which introduced a completely rewritten virtual machine (AVM2) and thus also introduced AS3. The former languages run in an older virtual machine called AVM1. Older content produced for AVM1 can run in newer AVM2 enabled players. They will still run in AVM1 mode however, in order to retain backwards compatibility. Flash actually handles backwards compatibility remarkably well.

  • Flash Professional, also known as the Flash IDE, is the name of a tool to produce flash content. It started out as a way to just create animations, but as the flash movie format got scripting capabilities, so did the tool. However, the scripting have long been a bastard child of this tool. While the past couple of versions have seen improvements in this area it still pales in comparison with other more developer centric environments. This tool only compiles pure ActionScript projects, is not used to develop Flex applications and is generally considered to be more designer friendly than developer friendly.

  • Flex is the name of Adobe's enterprise application framework. There are a few key technologies to Flex and it's more than just a core library of functionality. I'll try to concisely explain the key technologies of the framework below. The Flex SDK is actually open source and can be used freely to develop applications. However, while it contains anything needed to build Flex applications, it doesn't actually include an IDE.

    • MXML is a declarative language. It is generally used to declaratively define views, but can be used for many things. For instance, the swiz framework leverage MXML to declaratively define dependencies using IoC. There's of course a lot more to swiz, but that's beyond the scope of this answer.

    • MXMLC & COMPC are two compilers used to compile flex projects. The former is used to compile swf applications, the latter is used to compile swc libraries.

    • The core library among other things includes two standard component sets: MX and Spark; the former often referred to as Halo. MX is an older component set and while still supported, is considered deprecated and will likely be phased out once Spark reaches feature parity with MX. The two component sets are largely compatible with each other however and can co-exist quite well in the same application. Other notable functionality provided is quite comprehensive data access and management functionality, both for text based data such as XML or JSON as well as binary data (AMF.)

      The library is commonly referred to as just Flex or the Flex framework.

  • Flash Builder is Adobe's IDE for the development of Flex applications. While it is certainly possible to use it to develop pure AS3 applications it's most commonly used to develop Flex applications. It's a decent IDE with most of the features available in a modern development environment, but there are popular alternatives such as PowerFlasher's FDT. While the Flex SDK is free and open source, Flash Builder is both proprietary and commercial software.


This is not entirely true. You may use Flash Professional to develop and write code in native Actionscript 3 while also being able to develop at the Designer level creating images/animations and so on.

To answer your question, if you wish to code in MXML, then you need to use Flash Builder. If you want to write in native AS3 you may use either of the two. Both will work, however, from personal experience you have more freedom using native AS3. Also, for the type of application that you wish to make, performance would probably be of great priority, thus having full control using AS3 is recommended.

EDIT: Also, if you are familiar with C++ or Java, or any other object oriented, I believe programming in ActionScript3 will feel very much like home.


IMO that says it all: Flash Professional is for Designers and Flash Builder (Flex) is for programmers.

With Flash Builder you have to learn both, MXML and ActionScript. MXML is for the declarative layout of the GUI and ActionScript is the programming language.