javascript por debaixo dos panos
DESCRIPTION
ecossistema e linguagem na perspectiva da JVMTRANSCRIPT
JavaScriptpor debaixo dos panosecossistema e linguagem na perspectiva da JVM
@qmxhttp://blog.qmx.me/
Saturday, May 14, 2011
Text
gitshelf.com
www.caelum.com.br
www.gonow.com.br
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