Archive for November, 2006

Adobe Open Sources Flash ActionScript VM

Adobe today announced that we have contributed the source code to the ActionScript Virtual Machine, a key component of Flash Player, to a new project Tamarin hosted by the Mozilla Foundation, that will make both future browser JavaScript and Flash ActionScript compatible with the forthcoming 4th generation of the ECMAScript standard. This is a fantastic move for Adobe and the developer community, as well as a positive development for Publishing 2.0.
For publishers, the standardization of a capable scripting language and associated open-source runtime should provide increased confidence in embedding interactivity into next-generation content experiences. There are still issues to be dealt with, including API standardization for archivable interactivity: Flash and the browser still utilize separate DOM interfaces and have other API and capability differences. But there’s no doubt that this is a major advance. It also marks a major step forwards in Adobe’s engagement with the open source and open standards communities. This is not the first and certainly not the last open source contribution by Adobe, but it is definitely the most fundamental so far, and opens the door to other win-win engagements in the future.
The bigger picture is that Tamarin will deliver significantly improved performance and capabilities for JavaScript (aka ECMAScript) support within Firefox, as well as enhanced standards-compliance for the ecosystem of Flash developers. Adobe has been breaking ground with ActionScript 3, which supports key features planned for the forthcoming 4th edition of ECMAScript standard, including name spaces, classes, and strong types, as well as a high-performance JIT (Just-In-Time) compiler that delivers performance many times faster than traditional JavaScript interpreters.
“Least common denominator” browser-based JavaScript is very limited in capabilities and performance. The Tamarin activity should raise this bar considerably. Microsoft’s JavaScript interpreter in Internet Explorer already has been beefed up in various proprietary ways, and hopefully Tamarin and associated standardization within ECMA will push them towards standards compliance. Flash developers who’ve begun using ActionScript 3 and Flex 2 have already realized that the new ECMAScript-4 language is far more suitable for complex component development, supporting strong architectural design patterns and team development, while still being far more approachable than Java or C++.
In many respects, the future JavaScript standard embodied in ActionScript 3 could be viewed as a “Java Lite” – the inheritance model and core syntax is now quite similar, but ActionScript/JavaScript loses threads and other complexity-inducing language features, and the large-scale class library that greatly steepens the Java learning curve. And, of course, Java suffers from the JVM client bloat and adoption issues – whereas Flash Player 9 packages both ActionScript 3 and strong multimedia capabilities into a svelte 1.3 MB download that’s being rapidly.proliferated across the world. Adopters of Flex 2 today can be confident that their new skills will be in demand down the road: for Flash development, future AJAX development ,and no doubt additional server and client systems.
More on the announcement here from Emmy Huang, Flash Player product manager.
On an unofficial and strictly personal note, I really wish we could unify the confusing names “ActionScript”, “ECMAScript”, and “JavaScript”. As I understand it, this all stemmed from James Gosling’s about-face and subsequent stubborn resistance to the name “JavaScript”, which Sun originally OKed Netscape using. Much as I admire James and appreciate Java, it’s just too confusing. Especially so now that we layer in numeric confusion – “ActionScript 3” = “ECMAScript 4”, and is in some ways more closely akin to “J2ME minus” than browser JavaScript of yore. I’m not sure if there’s a good answer – or even what Adobe’s public position is on this issue – I just think it’s a mess. Can’t we just pick one name and move on? “JavaScript 4” gets my vote but really I’d settle for anything (even, holding my nose, ECMAScript). Let’s call it JavaLite if it makes Sun happy, heck let’s just call it something, rather than having three different names like a character in a Tolstoy novel.