Summary
When it comes to Flash, there are a number of different versions to be concerned with:
- Flash Player versions
- ActionScript versions
- Virtual machine versions
- Content versions
- Content creation tool versions
Flash Player Versions
As new features are added to Flash Player, new versions of the Flash Player runtime that support these features are distributed to users throughout the world. As users view content using their version of the player, as long as they have the most recent version, they should be ok to view any content available. As new content is created targeting newer versions of the player, people using older versions will need to upgrade.
This site covers Flash Player versions starting from Flash Player 4 to the most recent:
- Flash Player 4
- Flash Player 5
- Flash Player 6
- Flash Player 7
- Flash Player 8
- Flash Player 9
- Flash Player 10
ActionScript Versions
Different versions of ActionScript evolved as Flash Player evolved. Newer versions of ActionScript require newer versions of Flash Player to be able to function. Additionally, certain features of each version of ActionScript are specific to newer player versions. So whereas Flash Player 4 supports ActionScript 1.0, it does not support the same features Flash Player 5 supports; it is entirely possible to write ActionScript 1.0 formatted code that would only work in Flash Player 5 or greater.
There are currently 3 different versions of ActionScript:
ActionScript 2.0 wasn't so much a change in ActionScript as it was a general enhancement to syntax and compile-time capabilities. This makes ActionScript 1.0 and ActionScript 2.0 interoperable. ActionScript 3.0, on the other hand, was a drastic change that separates if from the prior versions of ActionScript. A new virtual machine is required to execute ActionScript 3.0 code keeping it from being interoperable with ActionScript 1.0 or ActionScript 2.0. In other words, ActionScript 1.0 or ActionScript 2.0 code cannot directly communicate with ActionScript 3.0 code (ActionScript 1.0 and ActionScript 2.0 can communicate with each other).
Virtual Machine Versions
The Flash Player virtual machine is the portion of the player application responsible for interpreting and executing ActionScript code. Up until Flash Player 9, there was only one virtual machine in the player. This virtual machine, AVM1, executes ActionScript 1.0 and ActionScript 2.0 code. Both of these versions of ActionScript produce the same kind of bytecode in which AVM1 is capable of handling. When ActionScript 3.0 was developed, enough changed that an entirely new virtual machine was required. This virtual machine was originally known as AVM+ but is now simply known as AVM2. When ActionScript 3.0 is compiled into a SWF, it creates bytecode different from that of ActionScript 1.0 and ActionScript 2.0. This bytecode must be executed by AMV2 since AVM1 in incabable of understanding it (hence the lack of interoperability between ActionScript 1.0/ActionScript 2.0 and ActionScript 3.0).
At present, Flash Player contains only these two virtual machines for executing ActionScript.
Content Versions
When developers work with Flash, they need to decide what features they need to determine what version of Flash Player users are required to have in order to view their content. This determines the content version. Content versions are tied to Flash Player versions. For any content to play correctly with a version of Flash Player, it's version must be equal to or less than the version of Flash Player being used to view it. Because ActionScript versions are supported in different versions of Flash Player, content versions also dictate which versions of ActionScript can be used. A Flash Player SWF published to target Flash Player 8 (it's content version) can be played in Flash Player 8, Flash Player 9, or any other later version of the player. However, if being played in Flash Player 9, that content would not be able to use ActionScript 3.0 because its content version is set to target a version of Flash Player which does not support ActionScript 3.0 (Flash Player 8; ActionScript 3.0 support started with Flash Player 9).
Content Creation Tool Versions
Content creation tools allow developers to produce Flash content (SWF files). The most popular tools targeting Flash content are Flash (the authoring tool, also known as Flash Professional or Flash Authoring), and Flex. Typically these tools are released with or around the release of a new version of Flash Player. This allows the content creation tools to support new features added to the player.
For the most part, this is straightforward. However, there are a few discrepancies that are worth pointing out:
- After Flash Player 5, the primary authoring tool for creating Flash Player content, Macromedia (at the time) Flash changed its versioning scheme to use a character combination rather than a version number. For Flash Player 6, Flash was named Macromedia Flash MX. The following release of Flash, released with Flash Player 7 was named Macromedia Flash MX 2004. Conversely, the following release reverted back to standard numbering with Macromedia Flash 8 which released with Flash Player 8. Following that release, Adobe acquired Macromedia. When Adobe released the next version of Flash, it again strayed from numeric versioning this time coming under the Adobe naming scheme as Adobe Flash CS3, released within the Flash Player 9 timeframe.
- Though ActionScript 2.0 was released with Flash MX 2004 and Flash Player 7, developers were still able to target ActionScript 2.0-developed content for Flash Player 6. This relates to the nature of ActionScript 2 being only a syntactical change, not one affecting the core behavior, or final bytecode, of compiled ActionScript. This is contrary to ActionScript 3.0 which is completely incompatible with ActionScript 1.0 and 2.0, requiring a new virtual machine be added to the player for it to function.
- Flex 2.0 was released with Flash Player 9, some time before Flash CS3 was released. When Flash CS3 released, it was released with an updated version of Flash Player (9,0,28,0) that was required for much of the content it produced. Prior to Flash CS3, Flash had always been released along with the first release of a major version of Flash Player.
