135
JavaScript por debaixo dos panos ecossistema e linguagem na perspectiva da JVM @qmx http://blog.qmx.me/ Saturday, May 14, 2011

JavaScript por debaixo dos panos

Embed Size (px)

DESCRIPTION

ecossistema e linguagem na perspectiva da JVM

Citation preview

Page 1: JavaScript por debaixo dos panos

JavaScriptpor debaixo dos panosecossistema e linguagem na perspectiva da JVM

@qmxhttp://blog.qmx.me/

Saturday, May 14, 2011

Page 3: JavaScript por debaixo dos panos

quê?

Saturday, May 14, 2011

Page 4: JavaScript por debaixo dos panos

O DesenvolvedorSaturday, May 14, 2011

Page 5: JavaScript por debaixo dos panos

O ClienteSaturday, May 14, 2011

Page 6: JavaScript por debaixo dos panos

O processo de deploySaturday, May 14, 2011

Page 7: JavaScript por debaixo dos panos

HomologaçãoSaturday, May 14, 2011

Page 8: JavaScript por debaixo dos panos

Sem pacote RPM?Saturday, May 14, 2011

Page 9: JavaScript por debaixo dos panos

Pacotes fáceis de Fazer

Saturday, May 14, 2011

Page 10: JavaScript por debaixo dos panos

Deploy Simples

Saturday, May 14, 2011

Page 11: JavaScript por debaixo dos panos

Um ZipãoSaturday, May 14, 2011

Page 12: JavaScript por debaixo dos panos

à prova de sobrinho

Saturday, May 14, 2011

Page 13: JavaScript por debaixo dos panos

Java!Saturday, May 14, 2011

Page 14: JavaScript por debaixo dos panos

Java?Saturday, May 14, 2011

Page 15: JavaScript por debaixo dos panos

porquê?

Saturday, May 14, 2011

Page 16: JavaScript por debaixo dos panos

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

Page 17: JavaScript por debaixo dos panos

node.js

Saturday, May 14, 2011

Page 18: JavaScript por debaixo dos panos

Saturday, May 14, 2011

Page 19: JavaScript por debaixo dos panos

node.js tem potencial

Saturday, May 14, 2011

Page 20: JavaScript por debaixo dos panos

MAS

Saturday, May 14, 2011

Page 21: JavaScript por debaixo dos panos

node.js não ébala de prata

Saturday, May 14, 2011

Page 22: JavaScript por debaixo dos panos

100% async não é pra qualquer um

Saturday, May 14, 2011

Page 23: JavaScript por debaixo dos panos

“mais de um jeito de fazer”

Consultor Sênior

Saturday, May 14, 2011

Page 24: JavaScript por debaixo dos panos

ringojsSaturday, May 14, 2011

Page 25: JavaScript por debaixo dos panos

10 anos de idade!Saturday, May 14, 2011

Page 26: JavaScript por debaixo dos panos

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

Saturday, May 14, 2011

Page 27: JavaScript por debaixo dos panos

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

funcionar

Saturday, May 14, 2011

Page 28: JavaScript por debaixo dos panos

(QUASE) NADA

Saturday, May 14, 2011

Page 29: JavaScript por debaixo dos panos

como?

Saturday, May 14, 2011

Page 30: JavaScript por debaixo dos panos

reutilizando a roda Saturday, May 14, 2011

Page 31: JavaScript por debaixo dos panos

➜ 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

Page 32: JavaScript por debaixo dos panos

Qualquer biblioteca java já existente

Saturday, May 14, 2011

Page 33: JavaScript por debaixo dos panos

in-process cache?distributed cache?

roll your own?

Saturday, May 14, 2011

Page 34: JavaScript por debaixo dos panos

EHCACHE

Saturday, May 14, 2011

Page 35: JavaScript por debaixo dos panos

Agendamento de Tarefas?

Saturday, May 14, 2011

Page 36: JavaScript por debaixo dos panos

QuartzSaturday, May 14, 2011

Page 37: JavaScript por debaixo dos panos

Busca textual?

Saturday, May 14, 2011

Page 38: JavaScript por debaixo dos panos

Lucene / SolrSaturday, May 14, 2011

Page 39: JavaScript por debaixo dos panos

E muito mais!

Saturday, May 14, 2011

Page 40: JavaScript por debaixo dos panos

um problema

Saturday, May 14, 2011

Page 41: JavaScript por debaixo dos panos

Rhino é lento

Saturday, May 14, 2011

Page 42: JavaScript por debaixo dos panos

porquê?

Saturday, May 14, 2011

Page 43: JavaScript por debaixo dos panos

Saturday, May 14, 2011

Page 44: JavaScript por debaixo dos panos

Saturday, May 14, 2011

Page 45: JavaScript por debaixo dos panos

Não é V8Saturday, May 14, 2011

Page 46: JavaScript por debaixo dos panos

mehSaturday, May 14, 2011

Page 47: JavaScript por debaixo dos panos

VM

Saturday, May 14, 2011

Page 48: JavaScript por debaixo dos panos

Vantagense

Desvantagens

Saturday, May 14, 2011

Page 49: JavaScript por debaixo dos panos

poor’s man computer?

Saturday, May 14, 2011

Page 50: JavaScript por debaixo dos panos

KISS

Saturday, May 14, 2011

Page 51: JavaScript por debaixo dos panos

e o JavaScript?

Saturday, May 14, 2011

Page 52: JavaScript por debaixo dos panos

como otimizar?

Saturday, May 14, 2011

Page 53: JavaScript por debaixo dos panos

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

Page 54: JavaScript por debaixo dos panos

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

Page 55: JavaScript por debaixo dos panos

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

Saturday, May 14, 2011

Page 56: JavaScript por debaixo dos panos

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

Page 57: JavaScript por debaixo dos panos

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

Page 58: JavaScript por debaixo dos panos

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

Page 59: JavaScript por debaixo dos panos

inline de métodos

Saturday, May 14, 2011

Page 60: JavaScript por debaixo dos panos

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

Page 61: JavaScript por debaixo dos panos

Replay

Saturday, May 14, 2011

Page 62: JavaScript por debaixo dos panos

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

Saturday, May 14, 2011

Page 63: JavaScript por debaixo dos panos

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

Page 64: JavaScript por debaixo dos panos

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

Page 65: JavaScript por debaixo dos panos

problemas?

Saturday, May 14, 2011

Page 66: JavaScript por debaixo dos panos

#fail

Saturday, May 14, 2011

Page 67: JavaScript por debaixo dos panos

JVM

Saturday, May 14, 2011

Page 68: JavaScript por debaixo dos panos

feita pensando em uma linguagem

(começa com J)

Saturday, May 14, 2011

Page 69: JavaScript por debaixo dos panos

precisa de classes

Saturday, May 14, 2011

Page 70: JavaScript por debaixo dos panos

function Carro ===

class Carro

Saturday, May 14, 2011

Page 71: JavaScript por debaixo dos panos

JVMno máximo 256 opcodes

Saturday, May 14, 2011

Page 72: JavaScript por debaixo dos panos

simples

Saturday, May 14, 2011

Page 73: JavaScript por debaixo dos panos

Saturday, May 14, 2011

Page 74: JavaScript por debaixo dos panos

ldc

Saturday, May 14, 2011

Page 75: JavaScript por debaixo dos panos

ldc #9

Saturday, May 14, 2011

Page 76: JavaScript por debaixo dos panos

ldc #9 // “Hello World”

Saturday, May 14, 2011

Page 77: JavaScript por debaixo dos panos

ldc

getstatic

#9 // “Hello World”

Saturday, May 14, 2011

Page 78: JavaScript por debaixo dos panos

ldc

getstatic #15

#9 // “Hello World”

Saturday, May 14, 2011

Page 79: JavaScript por debaixo dos panos

ldc

getstatic #15

#9 // “Hello World”

// System.out

Saturday, May 14, 2011

Page 80: JavaScript por debaixo dos panos

ldc

getstatic

swap

#15

#9 // “Hello World”

// System.out

Saturday, May 14, 2011

Page 81: JavaScript por debaixo dos panos

ldc

getstatic

swap

invokevirtual

#15

#9 // “Hello World”

// System.out

Saturday, May 14, 2011

Page 82: JavaScript por debaixo dos panos

ldc

getstatic

swap

invokevirtual #21

#15

#9 // “Hello World”

// System.out

Saturday, May 14, 2011

Page 83: JavaScript por debaixo dos panos

ldc

getstatic

swap

invokevirtual #21

#15

#9 // “Hello World”

// System.out

// PrintWriter.println()

Saturday, May 14, 2011

Page 84: JavaScript por debaixo dos panos

ldc

getstatic

swap

invokevirtual

return

#21

#15

#9 // “Hello World”

// System.out

// PrintWriter.println()

Saturday, May 14, 2011

Page 85: JavaScript por debaixo dos panos

ZOMG

Saturday, May 14, 2011

Page 86: JavaScript por debaixo dos panos

Estrutura de Invocaçãoinvokestatic

Saturday, May 14, 2011

Page 87: JavaScript por debaixo dos panos

A

Estrutura de Invocaçãoinvokestatic

Saturday, May 14, 2011

Page 88: JavaScript por debaixo dos panos

A

Estrutura de Invocaçãoinvokestatic

Saturday, May 14, 2011

Page 89: JavaScript por debaixo dos panos

A B

Estrutura de Invocaçãoinvokestatic

Saturday, May 14, 2011

Page 90: JavaScript por debaixo dos panos

Estrutura de Invocaçãoinvokevirtual

Saturday, May 14, 2011

Page 91: JavaScript por debaixo dos panos

A

Estrutura de Invocaçãoinvokevirtual

Saturday, May 14, 2011

Page 92: JavaScript por debaixo dos panos

A

Estrutura de Invocaçãoinvokevirtual

Saturday, May 14, 2011

Page 93: JavaScript por debaixo dos panos

A B

Estrutura de Invocaçãoinvokevirtual

Saturday, May 14, 2011

Page 94: JavaScript por debaixo dos panos

A B

Estrutura de Invocaçãoinvokevirtual

C

Saturday, May 14, 2011

Page 95: JavaScript por debaixo dos panos

A B

Estrutura de Invocaçãoinvokevirtual

C

Saturday, May 14, 2011

Page 96: JavaScript por debaixo dos panos

Estrutura de Invocaçãoinvokeinterface

Saturday, May 14, 2011

Page 97: JavaScript por debaixo dos panos

A

Estrutura de Invocaçãoinvokeinterface

Saturday, May 14, 2011

Page 98: JavaScript por debaixo dos panos

A

Estrutura de Invocaçãoinvokeinterface

Saturday, May 14, 2011

Page 99: JavaScript por debaixo dos panos

A I swear I am B

Estrutura de Invocaçãoinvokeinterface

Saturday, May 14, 2011

Page 100: JavaScript por debaixo dos panos

A I swear I am B

C

Estrutura de Invocaçãoinvokeinterface

Saturday, May 14, 2011

Page 101: JavaScript por debaixo dos panos

A I swear I am B

C

Estrutura de Invocaçãoinvokeinterface

Saturday, May 14, 2011

Page 102: JavaScript por debaixo dos panos

A I swear I am B

C

Estrutura de Invocaçãoinvokeinterface

Saturday, May 14, 2011

Page 103: JavaScript por debaixo dos panos

A I swear I am B

C

Estrutura de Invocaçãoinvokeinterface

He is D(LIAR)

Saturday, May 14, 2011

Page 104: JavaScript por debaixo dos panos

e o JavaScript?

Saturday, May 14, 2011

Page 105: JavaScript por debaixo dos panos

Saturday, May 14, 2011

Page 106: JavaScript por debaixo dos panos

function

Saturday, May 14, 2011

Page 107: JavaScript por debaixo dos panos

function

identifier

Saturday, May 14, 2011

Page 108: JavaScript por debaixo dos panos

function

identifier

formal parameter list

Saturday, May 14, 2011

Page 109: JavaScript por debaixo dos panos

function

identifier

formal parameter list

function body

Saturday, May 14, 2011

Page 110: JavaScript por debaixo dos panos

formal parameter list

function body

Saturday, May 14, 2011

Page 111: JavaScript por debaixo dos panos

Saturday, May 14, 2011

Page 112: JavaScript por debaixo dos panos

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

Page 113: JavaScript por debaixo dos panos

JavaScript===

um monte de blocos executáveis

Saturday, May 14, 2011

Page 114: JavaScript por debaixo dos panos

perfeito para otimização

Saturday, May 14, 2011

Page 115: JavaScript por debaixo dos panos

como resolver?

Saturday, May 14, 2011

Page 116: JavaScript por debaixo dos panos

JDK7(prevista pra 7/7)

Saturday, May 14, 2011

Page 117: JavaScript por debaixo dos panos

invokedynamic

Saturday, May 14, 2011

Page 118: JavaScript por debaixo dos panos

invokedynamic

Saturday, May 14, 2011

Page 119: JavaScript por debaixo dos panos

A

invokedynamic

Saturday, May 14, 2011

Page 120: JavaScript por debaixo dos panos

A

C

invokedynamic

Saturday, May 14, 2011

Page 121: JavaScript por debaixo dos panos

DA

C

invokedynamic

Saturday, May 14, 2011

Page 122: JavaScript por debaixo dos panos

DA

C

invokedynamic

Saturday, May 14, 2011

Page 123: JavaScript por debaixo dos panos

DA

C

invokedynamic

Saturday, May 14, 2011

Page 124: JavaScript por debaixo dos panos

DA

C

invokedynamic

Saturday, May 14, 2011

Page 125: JavaScript por debaixo dos panos

DA

C

invokedynamic

?

Saturday, May 14, 2011

Page 126: JavaScript por debaixo dos panos

DA

C

invokedynamic

?

Saturday, May 14, 2011

Page 127: JavaScript por debaixo dos panos

DA

C

invokedynamic

?

Saturday, May 14, 2011

Page 128: JavaScript por debaixo dos panos

DA

C

invokedynamic

?

Saturday, May 14, 2011

Page 129: JavaScript por debaixo dos panos

mega-alpha

Saturday, May 14, 2011

Page 130: JavaScript por debaixo dos panos

dyn.js100% invokedynamic js impl

Saturday, May 14, 2011

Page 131: JavaScript por debaixo dos panos

em breve

Saturday, May 14, 2011

Page 132: JavaScript por debaixo dos panos

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

Robert Caillau

Saturday, May 14, 2011

Page 133: JavaScript por debaixo dos panos

Saturday, May 14, 2011

Page 134: JavaScript por debaixo dos panos

?Saturday, May 14, 2011

Page 135: JavaScript por debaixo dos panos

Obrigado!

Saturday, May 14, 2011