Friday, January 29, 2010

Why isn't it ActionScript10?

One of the things that's obvious when you start building applications with Flash Builder 4 is that there's a new component architecture. One of the other things that's obvious is that the ActionScript language and the Flash foundation class library have both been changed for version 10 of the Player. For example the new version of ActionScript includes a new strongly-typed Vector datatype and the Flash foundation class library includes support for 3D transforms etc.. That's progress I guess. However applications written in the "new version" of AS3 supported by Player 10 won't work in Player 9. It's always like that with new releases of the Player and it's no different from in Java and .NET with one key difference. When Sun releases a new version of the JRE which supports a new language features or additions to the Java foundation class library they increment the version of Java. JRE5 runs Java 5, JRE6 runs Java 6 and so on. It's obvious that code written in Java 6 won't run in the JRE5. That's software release management 101, right?

It seems Adobe doesn't want to play by the same rules. The reality is that the version of the ActionScript language is closely coupled to the version of the Player. Player 10 includes a Flash VM that runs applications written in "AS10" and "AS9" and a Flash interpreter that runs applications written in "AS8" and earlier versions of the language. So why doesn't Adobe come clean and call the new version of the language "ActionSctript 10". Better still, since ActionScript's not a "scripting" language and hasn't been one for a long time now, why not just call it "Flash 10"?

5 comments:

TJ said...

I don't necessarily agree with he assessment. Just because new libraries where added to the runtime doesn't mean the language has changed at all. AS3, at it's core, hasn't changed since it was released, to my knowledge. Are you seeing core language changes with each release of the runtime? If so, can you provide references to these core language changes? If there are indeed changes to the core language then i would be in agreement with your analysis.

Graeme Harker said...

Don't you think the new Vector type constitutes a "language change"?

Pavel said...

I think, you have a point. If one thing doesn't worth of change for language version, what exactly does? 10 changes? 100 changes? But on other hand, Flash Player is not java or C#. Those langugaes are not "runtime" languages so most affected by their changes are companies not directly users. Also lifecycle of one version is slower than in Flash Player. Can you imagine somebody saying "yeah, I'm Actionscript 15 developer"...well I can't:)

TJ said...

Hey Graeme,

I do not think that constitutes a language change at all. New functionality is not a change to the core language or syntax. Java, in my opinion, is a poor example. You don't see many languages that have versions. C++, Ruby, Scala, Python... they are all the base language. What changes are the frameworks, runtimes or compilers used. These tools add functionality to the language but do not change the core language itself.

Graeme Harker said...

@TJ I take your point but the difference between Java and the other languages you mention is that with Java the compiler, the class library (what you call the 'framework') and the runtime are all released together. (C# is versioned just like Java too). I think that's a strength of Java. In reality ActionScript is versioned like Java and C# also it's just that Adobe's still behaves as if they're still shipping a scripting language. Hence I think the comparison with Java relevant.