JavaScript por debaixo dos panos

Preview:

DESCRIPTION

ecossistema e linguagem na perspectiva da JVM

Citation preview

JavaScriptpor debaixo dos panosecossistema e linguagem na perspectiva da JVM

@qmxhttp://blog.qmx.me/

Saturday, May 14, 2011

quê?

Saturday, May 14, 2011

O DesenvolvedorSaturday, May 14, 2011

O ClienteSaturday, May 14, 2011

O processo de deploySaturday, May 14, 2011

HomologaçãoSaturday, May 14, 2011

Sem pacote RPM?Saturday, May 14, 2011

Pacotes fáceis de Fazer

Saturday, May 14, 2011

Deploy Simples

Saturday, May 14, 2011

Um ZipãoSaturday, May 14, 2011

à prova de sobrinho

Saturday, May 14, 2011

Java!Saturday, May 14, 2011

Java?Saturday, May 14, 2011

porquê?

Saturday, May 14, 2011

não é node.jsSaturday, May 14, 2011

node.js

Saturday, May 14, 2011

Saturday, May 14, 2011

node.js tem potencial

Saturday, May 14, 2011

MAS

Saturday, May 14, 2011

node.js não ébala de prata

Saturday, May 14, 2011

100% async não é pra qualquer um

Saturday, May 14, 2011

“mais de um jeito de fazer”

Consultor Sênior

Saturday, May 14, 2011

ringojsSaturday, May 14, 2011

10 anos de idade!Saturday, May 14, 2011

“Ringo takes a pragmatical and non-dogmatic stance on things like I/O paradigms.”

Saturday, May 14, 2011

DTSTTCPWFaça a coisa mais simples possível com potencial de

funcionar

Saturday, May 14, 2011

(QUASE) NADA

Saturday, May 14, 2011

como?

Saturday, May 14, 2011

reutilizando a roda Saturday, May 14, 2011

➜ rhino1_7R3 java -jar js.jar

Rhino 1.7 release 3 2011 05 10

js> date = new java.util.Date();

Thu May 12 11:12:24 BRT 2011

Saturday, May 14, 2011

Qualquer biblioteca java já existente

Saturday, May 14, 2011

in-process cache?distributed cache?

roll your own?

Saturday, May 14, 2011

EHCACHE

Saturday, May 14, 2011

Agendamento de Tarefas?

Saturday, May 14, 2011

QuartzSaturday, May 14, 2011

Busca textual?

Saturday, May 14, 2011

Lucene / SolrSaturday, May 14, 2011

E muito mais!

Saturday, May 14, 2011

um problema

Saturday, May 14, 2011

Rhino é lento

Saturday, May 14, 2011

porquê?

Saturday, May 14, 2011

Saturday, May 14, 2011

Saturday, May 14, 2011

Não é V8Saturday, May 14, 2011

mehSaturday, May 14, 2011

VM

Saturday, May 14, 2011

Vantagense

Desvantagens

Saturday, May 14, 2011

poor’s man computer?

Saturday, May 14, 2011

KISS

Saturday, May 14, 2011

e o JavaScript?

Saturday, May 14, 2011

como otimizar?

Saturday, May 14, 2011

1 function Carro(nome, cor) { 2 this.nome = nome; 3 this.cor = cor; 4 this.anda = function(){ 5 print("andando"); 6 } 7 } 8 9 var x = new Carro("trovão azul", "azul (duh)");10 x.anda();

Saturday, May 14, 2011

1 function Carro(nome, cor) { 2 this.nome = nome; 3 this.cor = cor; 4 this.anda = function(){ 5 print("andando"); 6 } 7 } 8 9 var x = new Carro("trovão azul", "azul (duh)");10 x.anda();

Saturday, May 14, 2011

1 function MotorV8(){ 2 this.liga = function(){ 3 print("ligando..."); 4 } 5 }

Saturday, May 14, 2011

7 function Carro(nome, cor) { 8 this.nome = nome; 9 this.cor = cor;10 this.motor = new MotorV8();11 this.anda = function(){12 print("andando");13 }14 this.liga = function(){15 this.motor.liga();16 }17 }

Saturday, May 14, 2011

19 var x = new Carro("trovão azul", "azul (duh)");20 21 for(var i = 0; i< 10000; i++){22 x.liga();23 }

Saturday, May 14, 2011

19 var x = new Carro("trovão azul", "azul (duh)");20 21 for(var i = 0; i< 10000; i++){22 x.liga();23 }

Saturday, May 14, 2011

inline de métodos

Saturday, May 14, 2011

19 var x = new Carro("trovão azul", "azul (duh)");20 21 for(var i = 0; i< 10000; i++){

22 print(“ligando...”);23 }

Saturday, May 14, 2011

Replay

Saturday, May 14, 2011

1 function MotorV8(){ 2 this.liga = function(){ 3 print("ligando..."); 4 } 5 }

Saturday, May 14, 2011

7 function Carro(nome, cor) { 8 this.nome = nome; 9 this.cor = cor;10 this.motor = new MotorV8();11 this.anda = function(){12 print("andando");13 }14 this.liga = function(){15 this.motor.liga();16 }17 }

Saturday, May 14, 2011

19 var x = new Carro("trovão azul", "azul (duh)");20 21 for(var i = 0; i< 10000; i++){

22 print(“ligando...”);23 }

Saturday, May 14, 2011

problemas?

Saturday, May 14, 2011

#fail

Saturday, May 14, 2011

JVM

Saturday, May 14, 2011

feita pensando em uma linguagem

(começa com J)

Saturday, May 14, 2011

precisa de classes

Saturday, May 14, 2011

function Carro ===

class Carro

Saturday, May 14, 2011

JVMno máximo 256 opcodes

Saturday, May 14, 2011

simples

Saturday, May 14, 2011

Saturday, May 14, 2011

ldc

Saturday, May 14, 2011

ldc #9

Saturday, May 14, 2011

ldc #9 // “Hello World”

Saturday, May 14, 2011

ldc

getstatic

#9 // “Hello World”

Saturday, May 14, 2011

ldc

getstatic #15

#9 // “Hello World”

Saturday, May 14, 2011

ldc

getstatic #15

#9 // “Hello World”

// System.out

Saturday, May 14, 2011

ldc

getstatic

swap

#15

#9 // “Hello World”

// System.out

Saturday, May 14, 2011

ldc

getstatic

swap

invokevirtual

#15

#9 // “Hello World”

// System.out

Saturday, May 14, 2011

ldc

getstatic

swap

invokevirtual #21

#15

#9 // “Hello World”

// System.out

Saturday, May 14, 2011

ldc

getstatic

swap

invokevirtual #21

#15

#9 // “Hello World”

// System.out

// PrintWriter.println()

Saturday, May 14, 2011

ldc

getstatic

swap

invokevirtual

return

#21

#15

#9 // “Hello World”

// System.out

// PrintWriter.println()

Saturday, May 14, 2011

ZOMG

Saturday, May 14, 2011

Estrutura de Invocaçãoinvokestatic

Saturday, May 14, 2011

A

Estrutura de Invocaçãoinvokestatic

Saturday, May 14, 2011

A

Estrutura de Invocaçãoinvokestatic

Saturday, May 14, 2011

A B

Estrutura de Invocaçãoinvokestatic

Saturday, May 14, 2011

Estrutura de Invocaçãoinvokevirtual

Saturday, May 14, 2011

A

Estrutura de Invocaçãoinvokevirtual

Saturday, May 14, 2011

A

Estrutura de Invocaçãoinvokevirtual

Saturday, May 14, 2011

A B

Estrutura de Invocaçãoinvokevirtual

Saturday, May 14, 2011

A B

Estrutura de Invocaçãoinvokevirtual

C

Saturday, May 14, 2011

A B

Estrutura de Invocaçãoinvokevirtual

C

Saturday, May 14, 2011

Estrutura de Invocaçãoinvokeinterface

Saturday, May 14, 2011

A

Estrutura de Invocaçãoinvokeinterface

Saturday, May 14, 2011

A

Estrutura de Invocaçãoinvokeinterface

Saturday, May 14, 2011

A I swear I am B

Estrutura de Invocaçãoinvokeinterface

Saturday, May 14, 2011

A I swear I am B

C

Estrutura de Invocaçãoinvokeinterface

Saturday, May 14, 2011

A I swear I am B

C

Estrutura de Invocaçãoinvokeinterface

Saturday, May 14, 2011

A I swear I am B

C

Estrutura de Invocaçãoinvokeinterface

Saturday, May 14, 2011

A I swear I am B

C

Estrutura de Invocaçãoinvokeinterface

He is D(LIAR)

Saturday, May 14, 2011

e o JavaScript?

Saturday, May 14, 2011

Saturday, May 14, 2011

function

Saturday, May 14, 2011

function

identifier

Saturday, May 14, 2011

function

identifier

formal parameter list

Saturday, May 14, 2011

function

identifier

formal parameter list

function body

Saturday, May 14, 2011

formal parameter list

function body

Saturday, May 14, 2011

Saturday, May 14, 2011

function body

function body

function body

function body

function body

function body

function body

function body

function body

function body

function body

function body

function body

function body

function body

Saturday, May 14, 2011

JavaScript===

um monte de blocos executáveis

Saturday, May 14, 2011

perfeito para otimização

Saturday, May 14, 2011

como resolver?

Saturday, May 14, 2011

JDK7(prevista pra 7/7)

Saturday, May 14, 2011

invokedynamic

Saturday, May 14, 2011

invokedynamic

Saturday, May 14, 2011

A

invokedynamic

Saturday, May 14, 2011

A

C

invokedynamic

Saturday, May 14, 2011

DA

C

invokedynamic

Saturday, May 14, 2011

DA

C

invokedynamic

Saturday, May 14, 2011

DA

C

invokedynamic

Saturday, May 14, 2011

DA

C

invokedynamic

Saturday, May 14, 2011

DA

C

invokedynamic

?

Saturday, May 14, 2011

DA

C

invokedynamic

?

Saturday, May 14, 2011

DA

C

invokedynamic

?

Saturday, May 14, 2011

DA

C

invokedynamic

?

Saturday, May 14, 2011

mega-alpha

Saturday, May 14, 2011

dyn.js100% invokedynamic js impl

Saturday, May 14, 2011

em breve

Saturday, May 14, 2011

“Anyway, I know only one programming language worse than C and that is JavaScript”

Robert Caillau

Saturday, May 14, 2011

Saturday, May 14, 2011

?Saturday, May 14, 2011

Obrigado!

Saturday, May 14, 2011

Recommended