Adobe 开放 AVM2 source 加入 Tamarin 计画的新闻已经出来两天,在各大forum与blogs里都引起热烈讨论,毕竟能让 javascrīpt 跑的比现在快 10倍,确实是件大事啊。
但很有趣的是虽然官方已提供了详细的 FAQ 回答常见的问题,但仍然有许多误解存在,也因此我特别针对这些问题请教了 Gordon Smith (from Adobe Flex team) 两人一阵 email 往返后,大概已得出最佳化的答案,下面我试者将学到的资讯整理出来。
*Actionscrīpt 3 与 Javascrīpt 2 的差别
AS3 与 JS2 都是依循 Ecmacript 4 规格所实作出来的语言,它们的 core language 是完全一样的。
Core language 包含: sealed classes, interfaces, namespaces, method closures, exceptions, strong typing, E4X 等,所以像 Array, String, int 等也都包含在内。
但在 core language 之上,就会依它执行的环境不同,而加上不同的 extension。
AS3: 在 flash player 里执行,因此会加上 flash所需的 DOM (Document Object Model) 例如 Sprite, MovieClip, Socket等。
JS2: 在 Browser 里执行,就会加上 Browser 相关的 DOM, 例如 Document, Form等。
*Tamarin 是什么?
Tamarin 是由 AVM2 延伸而来,它只负责执行 Ecmacript 4 core language 的部份。
因此 Mozilla Foundation 拿到 Tamarin engine 后,第一件要做的事就是在上面实作 Browser 相关的 DOM,例如 Form 要怎么生成、Document 物件要如何存取。
Adobe 要做的事则是在上面实作 Flash 相关的 DOM, 例如 Sprite 要如何画出来?Video 要怎么串流与播放?Audio 的载入与音量控制等。(很显然的,这部份工作已经做完,不然你手上的 flash player 9 是打那儿来的?)
*Adobe 与 Tamarin 往后的关系
如果日后,Mozilla 的 developer community 针对 Tamarin 做了某些最佳化,例如有神童出现把 E4X 的执行效率提高了100倍(例如他写了一个 routine/library 可以让 xml 的 processing time 缩短为原本的1/100),这些改变一旦被加入 Tamarin 的 codebase,Adobe 也就可以共享成果。
因此每当 Tamarin 有重大升级或改版时,Flash Player 就可能也跟者推出新版,因为它内部的 core language scrīpt engine 也需要升级才能整合 Tamarin 的改变。
*这代表 Adobe 也将 Flash Player open source了吗?
不。
Flash Player = Tamarin + Flash-specific DOM
而这次开放出去的只有核心的 Tamarin engine,因此跟 open source flash player 完全没关系。
实际上做为一个 universal platform,最好也不要有太多的 branch/fork,所以在可见的将来也不太可能见到官方做这件事。
*将来 Firefox 不再需要 flash player 了吗?
不,从上面可知,Firefox + Tamarin 只是取得了一个快速的 Ecmascrīpt 4 core language engine, 但它并没有内含 flash DOM,所以用 Flash 开发的程式(swf)还是要乖乖在 flash player 里跑。
不然,adobe 还投入人力开发 64bit 与 linux player,难不成是做心酸的吗?
*Tamarin 可以用在其它地方吗?
可以。
以 Dreamweaver 为例,它有内建 javascrīpt engine,可以让user写一些巨集之类的指令,自动化做某些事。
目前它是用 javascrīpt 1.5 语法,底层则是内建了 SpiderMonkey engine,然后在这之上,加入了 Dreamweaver 独有的 DOM, 例如 MenuCommand, EditorWindow,让user可以用 js1.5 去控制 Dreamweaver 的某些行为。
将来,Dreamweaver 可以选择改用 Tamarin 取代掉 SpiderMonkey 做为内建的 scrīpt engine, 这样user就可以写 OO 式的 JS2 巨集。
这就是一个不同的应用实例,而实际上 Fireworks, Flash, Acrobat 等也都有这样的能力,知名的 Red5 目前用 Rhino 将来也可以考虑改用 Tamarin,毕竟有个10倍速的免钱 scrīpt engine,何乐不为呢?
*Tamarin 对 Flex developer 的影响
这部份就很有趣,简单来说,影响都是正面的,只是要把时间放长来看,正面的效应大概要一到两年后才会出现,但最多三年(2009)后就可以看出这步棋下的完全正确,而且可能是决定性的一步。
以上文字来自:http://ria.richtechmedia.com/