What Tamarin really means ?

In General   November 9, 2006 - 12:35 am

Adobe 開放 AVM2 source 加入 Tamarin 計畫的新聞已經出來兩天,在各大forum與blogs裏都引起熱烈討論,畢竟能讓 javascript 跑的比現在快 10倍,確實是件大事啊。

但很有趣的是雖然官方已提供了詳細的 FAQ 回答常見的問題,但仍然有許多誤解存在,也因此我特別針對這些問題請教了 Gordon Smith (from Adobe Flex team) 兩人一陣 email 往返後,大概已得出最佳化的答案,下面我試者將學到的資訊整理出來。

*Actionscript 3 與 JavaScript 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 script 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 只是取得了一個快速的 Ecmascript 4 core language engine, 但它並沒有內含 flash DOM,所以用 Flash 開發的程式(swf)還是要乖乖在 flash player 裏跑。

不然,adobe 還投入人力開發 64bit 與 linux player,難不成是做心酸的嗎?

*Tamarin 可以用在其它地方嗎?

可以。

以 Dreamweaver 為例,它有內建 javascript engine,可以讓user寫一些巨集之類的指令,自動化做某些事。

目前它是用 javascript 1.5 語法,底層則是內建了 SpiderMonkey engine,然後在這之上,加入了 Dreamweaver 獨有的 DOM, 例如 MenuCommand, EditorWindow,讓user可以用 js1.5 去控制 Dreamweaver 的某些行為。

將來,Dreamweaver 可以選擇改用 Tamarin 取代掉 SpiderMonkey 做為內建的 script engine, 這樣user就可以寫 OO 式的 JS2 巨集。

這就是一個不同的應用實例,而實際上 Fireworks, Flash, Acrobat 等也都有這樣的能力,知名的 Red5 目前用 Rhino 將來也可以考慮改用 Tamarin,畢竟有個10倍速的免錢 script engine,何樂不為呢?

*Tamarin 對 Flex developer 的影響

這部份就很有趣,簡單來說,影響都是正面的,只是要把時間放長來看,正面的效應大概要一到兩年後才會出現,但最多三年(2009)後就可以看出這步棋下的完全正確,而且可能是決定性的一步。

by admin

10 Comments Add your own

  • 1. deng&hellip  |  November 9th, 2006 at 1:51 am

    好文,谢谢!转载到Flex2.org了
    注明了出处

  • 2. 黑羽翔天 § Kingda's&hellip  |  November 9th, 2006 at 9:51 am

    另一篇介绍AVM2开源和Tamarin相关信息的好文!…

    推荐:D.cat博客上的一篇好文!What Tamarin really means ? 写的好,技术细节讲的比我上篇文章 惊喜!!Flash开源时代降临! 更加清楚。 特加以转载。……

  • 3. Adobe 開放 ActionScript&hellip  |  November 9th, 2006 at 6:16 pm

    [...] 想了解更多的話,請看 d.CAT 的這兩篇文章 What Tamarin really means ? 和 adobe team up with firefox – tamarin project。 Filed under 程式設計 and 網際網路.  | var blogTool = “WordPress”; var blogURL = “http://ihower.idv.tw/blog”; var blogTitle = “{|ihower.idv.tw| blog }”; var postURL = “http://ihower.idv.tw/blog/archives/1525″; var postTitle = “Adobe 開放 ActionScript VM engine”; var commentAuthorFieldName = “author”; var commentAuthorLoggedIn = false; var commentFormID = “commentform”; var commentTextFieldName = “comment”; var commentButtonName = “submit”; [...]

  • 4. b6s&hellip  |  November 9th, 2006 at 8:48 pm

    其實我是覺得,變快是一定的,但十倍有點太樂觀了。

  • 5. jeremy&hellip  |  November 9th, 2006 at 10:02 pm

    10x 是從 As2 升級到 As3 的過程中觀察出來的,而且這還是最保守的數字,有的profiling 還跑到 30x-50x之間。

    不過換不同單位實作後得出來的效能確實是要試過才知道啊~

  • 6. b6s&hellip  |  November 9th, 2006 at 11:09 pm

    VM 自身的升級是很有可能變快,但 JavaScript 的 DOM parser 得面對 HTML 不是全部下載完成才開始處理的問題,也就是 interpreter 的天性,能派上用場的地方會少一點點。
    這就跟 JSP 頁面仍然沒有變得「很快」是一樣的。

  • 7. jeremy&hellip  |  November 9th, 2006 at 11:43 pm

    哈 我做完事正想回來加這一句:vm本身會變快沒錯,但加上 browser-DOM 後會被拖慢多少就天知道了 Orz

  • 8. ryyo's Blog&hellip  |  November 10th, 2006 at 12:58 am

    Adobe 的 AVM2 source…

    Adobe 把 AVM2 open source 了[separator],將它捐給了 Mozilla 的 Tamtrin Project,Mozilla 同時間也發佈了,AVM2 source code (遵循 MPL/GPL/LGPL)…..

  • 9. 闪无忧&hellip  |  November 10th, 2006 at 12:32 pm

    作为一个FLASH爱好者,看到这个消息真是太高兴了

  • 10. E4X in Actionscript 3.0 @&hellip  |  September 20th, 2009 at 2:32 am

    [...] player你的程式就會變快 詳細可以參考 What Tamarin really means ? – d.CAT – the RIA blog (中文) Adobe, Mozilla, and Tamarin – Frank Hecker [...]

留言回應

hidden

您的留言會先經過站長認証後才刊登在網站上。
your comments will be approved by Administrator before appearing on the page.

Trackback this post  |  Subscribe to the comments via RSS Feed

mobile phone