Entendendo o Tamarin, Adobe e Mozilla

O texto a seguir é parte de um e-mail que eu enviei para o time da DClick explicando sobre o projeto Tamarin, no dia seguinte ao seu lançamento.

A Adobe recentemente liberou a ActionScript Virtual Machine como open source sob o projeto Tamarin da Mozilla. Isso causou uma certa confusão e logo notícias como “Flash Open Source”, “Maior integração entre Flash e Firefox” entre outras começaram a ser divulgadas, inclusive por agências de nome.

Vamos esclarecer o que isso significa. As aplicações feitas com o Flash e Flex no fundo são aplicações em uma linguagem chamada ActionScript, atualmente na versão 3. Aliás, essa versão 3 do ActionScript foi lançada recentemente e é base para o Flex 2. A principal vantagem do ActionScript 3 em relação à versão anterior é a performance, que tem uma ganho estrondoso. Algumas tarefas ficaram 1000% mais velozes.

O ActionScript é baseado em uma especificação chamada ECMAScript, que também é base do JavaScript, linguagem utilizada em aplicações web em conjunto com HTML para dar dinamicidade e interação à aplicativos web tradicionais. Aplicações em AJAX, por exemplo, dependem completamente do JavaScript.

O que a Adobe fez foi liberar como open source um pedaço do Flash Player, a ActionScript Virtual Machine, que é responsável por interpretar código ActionScript e transformar em instruções de máquina (JIT, Just In Time Compiler). E como de certa forma o ActionScript e o JavaScript tem suas semelhanças (ambos baseados no ECMAScript), a Mozilla pode utilizar o Tamarin para melhorar a performance do interpretador de JavaScript de seus produtos, como o Firefox.

Assim, sucintamente, em breve teremos um Firefox muito mais ágil para interpretar códigos JavaScript, ou seja, poderemos ter aplicações em AJAX muito mais velozes que as de hoje em dia. Inclusive partes do Firefox e suas extensões são muito dependentes do JavaScript terão ganhos de performance. A Adobe e Mozilla agora também trabalharão em conjunto para o desenvolvimento da próxima especificação do ECMAScript.