The recent fight between Apple & Adobe over Flash on the iPad (&
iPhone/iTouch) got me looking into the Flash architecture once again.
You'd think its simple but it is not.
I'm writing this partially to get others to clarify for/with me the
differences between Flash, Actionscript, Javascript, AIR, and so on ..
its not as clear as one would think. Please toss in your
understanding. Here goes my shot:
Macromedia had two stunning technologies, Flash and Shockwave, Flash
being the junior of the two, and mainly used for those not needing the
sophistication of Shockwave. But the simplification became the more
popular of the two .. note SWF media files are ShockWaveFlash.
Flash needed scripting and a variant of Javascript was chosen, called
Actionscript. It, however, is NOT Javascript:
- It uses its own Virtual Machine rather than being source, thus not
being interpreted where used.
- It definitely extends Javascript in areas making it completely
incompatible with existing Javascript interpreters. It has classes
and many Java notions such as "private" and so on.
- It appears to depend on the VM having a lot of platform specific C
libraries which manipulate the devices such as cameras and other
driver level resources.
Adobe bought Macromedia, thus Flash et al, in its desire to be the web
application environment of choice. Note they got Dreamweaver in the
deal.
Thus the fight with Apple is considerably more subtle than it may
seem. Note: Google *has* accepted Flash for Android, via the Adobe
AIR system which very cleverly builds "desktop/phone/tablet"
applications using HTML/XML, Javascript, CSS, and naturally Flash.
The cool idea is that you can use widely understood web tech to build
stand alone applications. A Good Thing, unifying web and desktop
developer communities.
However, I am uncomfortable with where this is going:
- Javascript has been incredibly stable and standard for quite a
while, and the separation of the language from its interpreter a good
thing: it puts it in the same class as HTML/CSS.
- Today's Javascript libraries, like jQuery, Prototype etc, are all
open source and delivered, via URL as well as local files, as
Javascript source. They run in all Javascript environments .. mainly
the browser but also on the desktop or phone.
- Actionscript does not have this open aspect, it uses a VM that needs
to be installed, and cannot use Javascript frameworks.
Adobe is not a "friendly". They are driving a wedge into the
standards world which I find uncomfortable. They are not Javascript
even though they claim to be. And for the vast majority of browser
Flash usage, Apple's HTML5/CSS/Javascript + standard media (part of
HTML5) story seems compelling .. simply make the Flash media formats
open standards.
Adobe is taking some steps towards the open source community with AIR,
an Eclipse based IDE. But the underlying tech is definitely closed
and as far as I know, not on a standards track. So I see Apple having
a reasonable concern.
-- Owen
============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
lectures, archives, unsubscribe, maps at http://www.friam.org