62
Introdução Recursos Aplicações Fronteiras Conclusão JavaScript Recursos, aplicações e fronteiras Paulo Matias, Carlos Doro Neto Instituto de Física de São Carlos Universidade de São Paulo Seminários de Programação Voltada à Internet

JavaScript - Recursos, aplica[Please insert ...hal9k.ifsc.usp.br/~smaira/Graduação/8º Semestre/PVI/PM/slides... · JavaScript 2.0 Tamarin. Introdução Recursos Aplicações Fronteiras

  • Upload
    vandan

  • View
    245

  • Download
    0

Embed Size (px)

Citation preview

Introdução Recursos Aplicações Fronteiras Conclusão

JavaScriptRecursos, aplicações e fronteiras

Paulo Matias, Carlos Doro Neto

Instituto de Física de São CarlosUniversidade de São Paulo

Seminários de Programação Voltada à Internet

Introdução Recursos Aplicações Fronteiras Conclusão

Conteúdo

1 IntroduçãoHistórico

2 RecursosMultiparadigmaModelo de orientação a objetosManipulação de XML integrada

3 AplicaçõesProgramação Web do lado do clienteProgramação Web do lado do servidorJavaScript fora da Web

4 FronteirasJavaScript 2.0Tamarin

Introdução Recursos Aplicações Fronteiras Conclusão

Histórico

Origem da linguagem

Desenvolvida sob os codinomes Mocha e LiveScript.Lançada no Netscape 2.0B3, em Dezembro de 1995.Nome JavaScript adotado devido a acordo de marketingcom a Sun Microsystems.

Introdução Recursos Aplicações Fronteiras Conclusão

Histórico

Origem da linguagem

Desenvolvida sob os codinomes Mocha e LiveScript.Lançada no Netscape 2.0B3, em Dezembro de 1995.Nome JavaScript adotado devido a acordo de marketingcom a Sun Microsystems.

Introdução Recursos Aplicações Fronteiras Conclusão

Histórico

Origem da linguagem

Desenvolvida sob os codinomes Mocha e LiveScript.Lançada no Netscape 2.0B3, em Dezembro de 1995.Nome JavaScript adotado devido a acordo de marketingcom a Sun Microsystems.

Introdução Recursos Aplicações Fronteiras Conclusão

Histórico

Padronização da linguagem

Linguagem JScript adotada pela Microsoft em Agosto de1996.Processo de padronização pela ECMA iniciado emNovembro de 1996.Primeiro padrão ECMAScript publicado em Junho de1997.

Introdução Recursos Aplicações Fronteiras Conclusão

Histórico

Padronização da linguagem

Linguagem JScript adotada pela Microsoft em Agosto de1996.Processo de padronização pela ECMA iniciado emNovembro de 1996.Primeiro padrão ECMAScript publicado em Junho de1997.

Introdução Recursos Aplicações Fronteiras Conclusão

Histórico

Padronização da linguagem

Linguagem JScript adotada pela Microsoft em Agosto de1996.Processo de padronização pela ECMA iniciado emNovembro de 1996.Primeiro padrão ECMAScript publicado em Junho de1997.

Introdução Recursos Aplicações Fronteiras Conclusão

Multiparadigma

Imperativa

var e = 0.0 , fac = 1 . 0 ;

for ( var i = 1 ; i < 100; i ++) {fac *= i ;e += 1 . 0 / fac ;

}

p r i n t ( e ) ;

Introdução Recursos Aplicações Fronteiras Conclusão

Multiparadigma

Orientada a objetos

function Body ( x , y , z , vx , vy , vz , mass ) {th is . x = x ;th is . y = y ;th is . z = z ;th is . vx = vx ;th is . vy = vy ;th is . vz = vz ;th is . mass = mass ;

}

var SOLAR_MASS = 4.0 * Math . pow( Math . PI , 2 ) ;var Sun = new Body ( 0 . 0 , 0 .0 , 0 .0 , 0 .0 , 0 .0 , 0 .0 ,

SOLAR_MASS) ;

Introdução Recursos Aplicações Fronteiras Conclusão

Multiparadigma

Funcional

function Y( l e ) {return function ( f ) {

return f ( f ) ;} ( function ( f ) {

return l e ( function ( x ) {return f ( f ) ( x ) ;

} ) ;} ) ;

}function F( f a c t o r i a l ) {

return function ( n ) {return n <= 2 ? n : n * f a c t o r i a l ( n − 1 ) ;

} ;}var f a c t o r i a l = Y(F ) ;

Introdução Recursos Aplicações Fronteiras Conclusão

Modelo de orientação a objetos

Tudo é um objeto dinâmico

function f ( ) {p r i n t ( th is .msg ) ;

}f .msg = " He l lo wor ld " ;f . h e l l o = f ;

var i = new Number ( 1 0 ) ;i .msg = " I ’m a number " ;i . t a l k = f ;

f . h e l l o ( ) ; / / mostra " He l lo wor ld "i . t a l k ( ) ; / / mostra " I ’m a number "

Introdução Recursos Aplicações Fronteiras Conclusão

Modelo de orientação a objetos

Objeto e dicionário são a mesma coisa

function f ( ) {p r i n t ( th is [ ’msg ’ ] ) ;

}f [ ’msg ’ ] = " He l lo wor ld " ;f [ ’ h e l l o ’ ] = f ;

var i = new Number ( 1 0 ) ;i [ ’msg ’ ] = " I ’m a number " ;i [ ’ t a l k ’ ] = f ;

f [ ’ h e l l o ’ ] ( ) ; / / mostra " He l lo wor ld "i [ ’ t a l k ’ ] ( ) ; / / mostra " I ’m a number "

Introdução Recursos Aplicações Fronteiras Conclusão

Modelo de orientação a objetos

Objetos apontam para protótipos

numero__proto__

Number.prototype__proto__toString

toLocaleStringtoFixed

toExponentialtoPrecision

Object.prototype__proto__toString

toLocaleStringvalueOf

hasOwnPropertyisPrototypeOf

propertyIsEnumerable

null

Introdução Recursos Aplicações Fronteiras Conclusão

Modelo de orientação a objetos

Objetos apontam para protótipos

numero__proto__numero

__proto__

Number.prototype__proto__toString

toLocaleStringtoFixed

toExponentialtoPrecision

Object.prototype__proto__toString

toLocaleStringvalueOf

hasOwnPropertyisPrototypeOf

propertyIsEnumerable

null

Introdução Recursos Aplicações Fronteiras Conclusão

Modelo de orientação a objetos

Objetos apontam para protótipos

numero__proto__numero

__proto__

Number.prototype__proto__toString

toLocaleStringtoFixed

toExponentialtoPrecision

Object.prototype__proto__toString

toLocaleStringvalueOf

hasOwnPropertyisPrototypeOf

propertyIsEnumerable

null

Introdução Recursos Aplicações Fronteiras Conclusão

Modelo de orientação a objetos

Processo de criação de um objeto

function Tipo ( parametro ) { / / c o n s t r u t o rth is . membro = parametro ;

}Tipo . p ro to type = new Object ( ) ; / / t i p o pa iTipo . p ro to type . mostrar = function ( ) {

p r i n t ( th is . membro ) ;} ;

/ / Processo geralmente u t i l i z a d o .ob je to = new Tipo ( ’ t es te ’ ) ;/ / Processo equ iva len te .ob je to = new Object ( ) ;Tipo . c a l l ( ob jeto , ’ t es t e ’ ) ;ob je to . __proto__ = Tipo . p ro to type ;

Introdução Recursos Aplicações Fronteiras Conclusão

Modelo de orientação a objetos

Protótipos também são objetos dinâmicos

t ry {( 1 ) . upto (10 , function ( i ) { p r i n t ( i ) ; } ) ;

}catch ( e ) {

p r i n t ( ’ e r ro ’ ) ; / / ocorre er ro}

Number . p ro to type . upto = function (N, f ) {for ( var i = th is ; i <= N; i ++) {

f ( i ) ;}

} ;/ / agora func iona( 1 ) . upto (10 , function ( i ) { p r i n t ( i ) ; } ) ;

Introdução Recursos Aplicações Fronteiras Conclusão

Manipulação de XML integrada

Criando objetos XML

/ / Criando a p a r t i r de uma S t r i n g .var A = new XML( ’<root > \

<items > \< i i d ="1" > tes t </ i > \

</ i tems > \</ root > ’ ) ;

/ / Criando ob je tos XML l i t e r a i s .var A = <root >

<items >< i i d = " 1 "> tes t </ i >

</ items ></ root >;

Introdução Recursos Aplicações Fronteiras Conclusão

Manipulação de XML integrada

Manipulando objetos XML

/ / Adicionando i tems .A. i tems . i += < i i d = " 2 ">he l lo </ i > ;

/ / Obtendo dados .p r i n t (A . i tems . i [ 1 ] ) ; / / mostra " h e l l o " .p r i n t (A . i tems . i [ 1 ] . @id ) ; / / mostra " 2 " .

/ / L is tando i tems .for each ( i in A. i tems . i ) {

p r i n t ( i . @id + ’ : ’ + i ) ;}

Introdução Recursos Aplicações Fronteiras Conclusão

Programação Web do lado do cliente

HTML Document Object Model

Primeiro padrão de DOM da W3C em Agosto de 1998.Adotado a partir do Netscape 6, Internet Explorer 5 eOpera 7.

Exemplo

window . onload = function ( ) {var elem = document . getElementById ( " l i n k " ) ;elem . o n c l i c k = function ( ) {

th is . s t y l e . co l o r = " blue " ;th is . s t y l e . f on tS i ze = " 18 pt " ;

} ;} ;

Introdução Recursos Aplicações Fronteiras Conclusão

Programação Web do lado do cliente

HTML Document Object Model

Primeiro padrão de DOM da W3C em Agosto de 1998.Adotado a partir do Netscape 6, Internet Explorer 5 eOpera 7.

Exemplo

window . onload = function ( ) {var elem = document . getElementById ( " l i n k " ) ;elem . o n c l i c k = function ( ) {

th is . s t y l e . co l o r = " blue " ;th is . s t y l e . f on tS i ze = " 18 pt " ;

} ;} ;

Introdução Recursos Aplicações Fronteiras Conclusão

Programação Web do lado do cliente

HTML Document Object Model

Primeiro padrão de DOM da W3C em Agosto de 1998.Adotado a partir do Netscape 6, Internet Explorer 5 eOpera 7.

Exemplo

window . onload = function ( ) {var elem = document . getElementById ( " l i n k " ) ;elem . o n c l i c k = function ( ) {

th is . s t y l e . co l o r = " blue " ;th is . s t y l e . f on tS i ze = " 18 pt " ;

} ;} ;

Introdução Recursos Aplicações Fronteiras Conclusão

Programação Web do lado do cliente

Framework jQuery

Suporte aos navegadores Mozilla, Internet Explorer,Safari, Konqueror e Opera.Fácil manipulação simultânea de conjuntos de elementos.Rotinas prontas para AJAX e para efeitos visuais simples.

Exemplo

$ ( function ( ) {$ ( " # l i n k " ) . c l i c k ( function ( ) {

$ ( th is ) . css ( { " co l o r " : " b lue " ," fon t−s ize " : " 18 p t " } ) ;

} ) ;} ) ;

Introdução Recursos Aplicações Fronteiras Conclusão

Programação Web do lado do cliente

Framework jQuery

Suporte aos navegadores Mozilla, Internet Explorer,Safari, Konqueror e Opera.Fácil manipulação simultânea de conjuntos de elementos.Rotinas prontas para AJAX e para efeitos visuais simples.

Exemplo

$ ( function ( ) {$ ( " # l i n k " ) . c l i c k ( function ( ) {

$ ( th is ) . css ( { " co l o r " : " b lue " ," fon t−s ize " : " 18 p t " } ) ;

} ) ;} ) ;

Introdução Recursos Aplicações Fronteiras Conclusão

Programação Web do lado do cliente

Framework jQuery

Suporte aos navegadores Mozilla, Internet Explorer,Safari, Konqueror e Opera.Fácil manipulação simultânea de conjuntos de elementos.Rotinas prontas para AJAX e para efeitos visuais simples.

Exemplo

$ ( function ( ) {$ ( " # l i n k " ) . c l i c k ( function ( ) {

$ ( th is ) . css ( { " co l o r " : " b lue " ," fon t−s ize " : " 18 p t " } ) ;

} ) ;} ) ;

Introdução Recursos Aplicações Fronteiras Conclusão

Programação Web do lado do cliente

Framework jQuery

Suporte aos navegadores Mozilla, Internet Explorer,Safari, Konqueror e Opera.Fácil manipulação simultânea de conjuntos de elementos.Rotinas prontas para AJAX e para efeitos visuais simples.

Exemplo

$ ( function ( ) {$ ( " # l i n k " ) . c l i c k ( function ( ) {

$ ( th is ) . css ( { " co l o r " : " b lue " ," fon t−s ize " : " 18 p t " } ) ;

} ) ;} ) ;

Introdução Recursos Aplicações Fronteiras Conclusão

Programação Web do lado do cliente

Flash & ActionScript

ActionScript é o nome dado à implementação deECMAScript do Flash.É exportado um DOM específico para animaçõesmultimídia.

Exemplo

_root . c rea teTex tF ie ld ( "campo" ,1 ,0 ,0 ,100 ,25) ;_ roo t . campo . html = true ;_ roo t . campo . htmlText = "<b>Hel lo world </b>" ;

Introdução Recursos Aplicações Fronteiras Conclusão

Programação Web do lado do cliente

Flash & ActionScript

ActionScript é o nome dado à implementação deECMAScript do Flash.É exportado um DOM específico para animaçõesmultimídia.

Exemplo

_root . c rea teTex tF ie ld ( "campo" ,1 ,0 ,0 ,100 ,25) ;_ roo t . campo . html = true ;_ roo t . campo . htmlText = "<b>Hel lo world </b>" ;

Introdução Recursos Aplicações Fronteiras Conclusão

Programação Web do lado do cliente

Flash & ActionScript

ActionScript é o nome dado à implementação deECMAScript do Flash.É exportado um DOM específico para animaçõesmultimídia.

Exemplo

_root . c rea teTex tF ie ld ( "campo" ,1 ,0 ,0 ,100 ,25) ;_ roo t . campo . html = true ;_ roo t . campo . htmlText = "<b>Hel lo world </b>" ;

Introdução Recursos Aplicações Fronteiras Conclusão

Programação Web do lado do servidor

Netscape LiveWire

Primeira implementação de JavaScript do lado do servidor.Lançada com o Netscape Enterprise Server em 1996.

Exemplo

p r o j e c t . lock ( ) ;i f ( ! p r o j e c t . mensagens )

p r o j e c t . mensagens = " " ;p r o j e c t . mensagens += " [ "+ c l i e n t . nome+" ] "+

request . mensagem ;w r i t e ( p r o j e c t . mensagens ) ;p r o j e c t . unlock ( ) ;

Introdução Recursos Aplicações Fronteiras Conclusão

Programação Web do lado do servidor

Netscape LiveWire

Primeira implementação de JavaScript do lado do servidor.Lançada com o Netscape Enterprise Server em 1996.

Exemplo

p r o j e c t . lock ( ) ;i f ( ! p r o j e c t . mensagens )

p r o j e c t . mensagens = " " ;p r o j e c t . mensagens += " [ "+ c l i e n t . nome+" ] "+

request . mensagem ;w r i t e ( p r o j e c t . mensagens ) ;p r o j e c t . unlock ( ) ;

Introdução Recursos Aplicações Fronteiras Conclusão

Programação Web do lado do servidor

Netscape LiveWire

Primeira implementação de JavaScript do lado do servidor.Lançada com o Netscape Enterprise Server em 1996.

Exemplo

p r o j e c t . lock ( ) ;i f ( ! p r o j e c t . mensagens )

p r o j e c t . mensagens = " " ;p r o j e c t . mensagens += " [ "+ c l i e n t . nome+" ] "+

request . mensagem ;w r i t e ( p r o j e c t . mensagens ) ;p r o j e c t . unlock ( ) ;

Introdução Recursos Aplicações Fronteiras Conclusão

Programação Web do lado do servidor

Phobos

Projeto de software livre da Sun Microsystems.Funciona sobre a plataforma Java™, com servidorGlassFish.Utiliza o compilador Rhino, do projeto Mozilla.Totalmente integrado à IDE do NetBeans.Utiliza padrão de arquitetura Model-View-Controller.

Introdução Recursos Aplicações Fronteiras Conclusão

Programação Web do lado do servidor

Phobos

Projeto de software livre da Sun Microsystems.Funciona sobre a plataforma Java™, com servidorGlassFish.Utiliza o compilador Rhino, do projeto Mozilla.Totalmente integrado à IDE do NetBeans.Utiliza padrão de arquitetura Model-View-Controller.

Introdução Recursos Aplicações Fronteiras Conclusão

Programação Web do lado do servidor

Phobos

Projeto de software livre da Sun Microsystems.Funciona sobre a plataforma Java™, com servidorGlassFish.Utiliza o compilador Rhino, do projeto Mozilla.Totalmente integrado à IDE do NetBeans.Utiliza padrão de arquitetura Model-View-Controller.

Introdução Recursos Aplicações Fronteiras Conclusão

Programação Web do lado do servidor

Phobos

Projeto de software livre da Sun Microsystems.Funciona sobre a plataforma Java™, com servidorGlassFish.Utiliza o compilador Rhino, do projeto Mozilla.Totalmente integrado à IDE do NetBeans.Utiliza padrão de arquitetura Model-View-Controller.

Introdução Recursos Aplicações Fronteiras Conclusão

Programação Web do lado do servidor

Phobos

Projeto de software livre da Sun Microsystems.Funciona sobre a plataforma Java™, com servidorGlassFish.Utiliza o compilador Rhino, do projeto Mozilla.Totalmente integrado à IDE do NetBeans.Utiliza padrão de arquitetura Model-View-Controller.

Introdução Recursos Aplicações Fronteiras Conclusão

Programação Web do lado do servidor

Exemplo de controlador com Phobos

l i b r a r y .common. de f ine ( c o n t r o l l e r , " main " ,function ( ) {

function Main ( ) {}Main . p ro to type . show = function ( ) {

model = { } ;l i b r a r y . view . render ( " main . e j s " ) ;

} ;Main . p ro to type . onRequest = function ( ) {

l i b r a r y . h t t p s e r v e r . sendNotFound ( ) ;} ;th is . Main = Main ;

} ) ;

Introdução Recursos Aplicações Fronteiras Conclusão

JavaScript fora da Web

Aplicações de JavaScript fora da Web

Aplicações JavaScript standalone com interface em XUL,executadas pelo XULRunner.Aplicações JavaScript standalone utilizando a API doJava™ por meio do Rhino.Aplicações mistas JavaScript e C++ com o QtScript.

Introdução Recursos Aplicações Fronteiras Conclusão

JavaScript fora da Web

Aplicações de JavaScript fora da Web

Aplicações JavaScript standalone com interface em XUL,executadas pelo XULRunner.Aplicações JavaScript standalone utilizando a API doJava™ por meio do Rhino.Aplicações mistas JavaScript e C++ com o QtScript.

Introdução Recursos Aplicações Fronteiras Conclusão

JavaScript fora da Web

Aplicações de JavaScript fora da Web

Aplicações JavaScript standalone com interface em XUL,executadas pelo XULRunner.Aplicações JavaScript standalone utilizando a API doJava™ por meio do Rhino.Aplicações mistas JavaScript e C++ com o QtScript.

Introdução Recursos Aplicações Fronteiras Conclusão

JavaScript 2.0

Motivação para o ECMAScript 4

Melhorar o suporte a programming in the large.Programas escritos por mais de uma pessoa.Programas constituídos de vários componentes.Programas de longa vida que evoluem com o tempo.

Permitir o sacrifício de características dinâmicas em trocade performance.

Introdução Recursos Aplicações Fronteiras Conclusão

JavaScript 2.0

Motivação para o ECMAScript 4

Melhorar o suporte a programming in the large.Programas escritos por mais de uma pessoa.Programas constituídos de vários componentes.Programas de longa vida que evoluem com o tempo.

Permitir o sacrifício de características dinâmicas em trocade performance.

Introdução Recursos Aplicações Fronteiras Conclusão

JavaScript 2.0

Motivação para o ECMAScript 4

Melhorar o suporte a programming in the large.Programas escritos por mais de uma pessoa.Programas constituídos de vários componentes.Programas de longa vida que evoluem com o tempo.

Permitir o sacrifício de características dinâmicas em trocade performance.

Introdução Recursos Aplicações Fronteiras Conclusão

JavaScript 2.0

Tipos estáticos e escopo de bloco

function dot_product ( x : Vector . <double > ,y : Vector . <double > ) : double {

l e t r e s u l t : double = 0d ;

for ( l e t i : i n t =0 , N: i n t =x . leng th ; i <N; i ++) {r e s u l t += x [ i ] * y [ i ] ;

}

return r e s u l t ;}

Introdução Recursos Aplicações Fronteiras Conclusão

JavaScript 2.0

Orientação a objetos por classes

class C {var v a r i a v e l ;s t a t i c var e s t a t i c o = " t es te " ;function f ( n ) { return 2*n ; }

}class NovoC extends C {

const constante = 1234;override function f ( n ) {

return Math . pow( n , 2 ) ;}

}

p r i n t (C. e s t a t i c o ) ; / / mostra " t es te " .

Introdução Recursos Aplicações Fronteiras Conclusão

JavaScript 2.0

Separação de componentes por pacotes

package br . usp . i f s c . experiment {in te rna l var i n t e r n a = 2;public function f ( x ) {

return Math . pow( in te rna , x ) ;}

}

import br . usp . i f s c . experiment . * ;p r i n t ( f ( 3 ) ) ; / / mostra " 8 " .

Introdução Recursos Aplicações Fronteiras Conclusão

JavaScript 2.0

Sobrecarga de operadores

class Complex { . . . }

generic i n t r i n s i c function +(a : Complex , b : Complex )new Complex ( a . r e a l + b . rea l , a . imag + b . imag ) ;

generic i n t r i n s i c function +(a : Complex , b :Number )a + Complex ( b ) ;

Introdução Recursos Aplicações Fronteiras Conclusão

JavaScript 2.0

Recursos herdados do Python

/ / Array comprehensionsvar A = [ i * i for each ( i in [ 1 , 3 , 5 , 7 , 9 ] ) ] ;

/ / Des t ruc tu r i ng assignments[ a , b ] = [1 , 1 ] ;[ a , b ] = [ b , a+b ] ;

/ / Generatorsfunction f ( a ) {

for each ( var i in a )yie ld i + 1 ;

}for ( var i in f ( [ 1 , 3 , 5 ] ) )

p r i n t i ;

Introdução Recursos Aplicações Fronteiras Conclusão

Tamarin

Tamarin

Código do interpretador ActionScript 3 doado pela Adobeao projeto Mozilla.Provavelmente será incluído a partir do Firefox 4.Suporte a recursos do ECMAScript 4.

Tipos estáticos.Orientação a objetos por classes.Pacotes.

Alta performance. Compilador JIT.

Introdução Recursos Aplicações Fronteiras Conclusão

Tamarin

Tamarin

Código do interpretador ActionScript 3 doado pela Adobeao projeto Mozilla.Provavelmente será incluído a partir do Firefox 4.Suporte a recursos do ECMAScript 4.

Tipos estáticos.Orientação a objetos por classes.Pacotes.

Alta performance. Compilador JIT.

Introdução Recursos Aplicações Fronteiras Conclusão

Tamarin

Tamarin

Código do interpretador ActionScript 3 doado pela Adobeao projeto Mozilla.Provavelmente será incluído a partir do Firefox 4.Suporte a recursos do ECMAScript 4.

Tipos estáticos.Orientação a objetos por classes.Pacotes.

Alta performance. Compilador JIT.

Introdução Recursos Aplicações Fronteiras Conclusão

Tamarin

Tamarin

Código do interpretador ActionScript 3 doado pela Adobeao projeto Mozilla.Provavelmente será incluído a partir do Firefox 4.Suporte a recursos do ECMAScript 4.

Tipos estáticos.Orientação a objetos por classes.Pacotes.

Alta performance. Compilador JIT.

Introdução Recursos Aplicações Fronteiras Conclusão

Tamarin

Benchmark: Binary Trees

0

1

2

3

4

5

6

Tem

pode

exec

ução

(s)

Compilador / Interpretador

gcc

g++

java

python+jit

lua

python

tamarin-js2

tamarin-js1

ruby

perl

php

spidermonkey

Introdução Recursos Aplicações Fronteiras Conclusão

Tamarin

Benchmark: Fannkuch

0

1

2

3

4

5

6

7

8

Tem

pode

exec

ução

(s)

Compilador / Interpretador

gcc

g++

java

tamarin-js2

python+jit

lua

tamarin-js1

python perl

spidermonkey

php

ruby

Introdução Recursos Aplicações Fronteiras Conclusão

Tamarin

Benchmark: N-Body

0

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

Tem

pode

exec

ução

(s)

Compilador / Interpretador

gcc

g++

gfortran

tamarin-js2

python+jit

lua

java

perl

python

tamarin-js1

php

spidermonkey

ruby

Introdução Recursos Aplicações Fronteiras Conclusão

Tamarin

Benchmark: Nsieve

0

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

1.8

Tem

pode

exec

ução

(s)

Compilador / Interpretador

gcc

g++

python+jit

java

python

tamarin-js2

lua

tamarin-js1

php

perl

spidermonkey

ruby

Introdução Recursos Aplicações Fronteiras Conclusão

Tamarin

Benchmark: Nsieve-Bits

0

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5

Tem

pode

exec

ução

(s)

Compilador / Interpretador

gcc

g++

python+jit

java

tamarin-js2

tamarin-js1

lua

php

perl

python

spidermonkey

ruby

Introdução Recursos Aplicações Fronteiras Conclusão

Tamarin

Benchmark: Spectral

0

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

1.8

Tem

pode

exec

ução

(s)

Compilador / Interpretador

gcc

g++

lua

java

tamarin-js2

tamarin-js1

python+jit

python

php

spidermonkey

perl

ruby

Introdução Recursos Aplicações Fronteiras Conclusão

Tamarin

Benchmark: String Concat

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Tem

pode

exec

ução

(s)

Compilador / Interpretador

gcc

lua

g++

python+jit

tamarin-js2

php

tamarin-js1

java python

perl

spidermonkey

ruby

Introdução Recursos Aplicações Fronteiras Conclusão

Conclusão

JavaScript é uma linguagem dinâmica e poderosa.O Tamarin é uma implementação de JavaScript bastanteveloz e promissora.