Para quem começou com Java, é importante conhecer um pouco mais do que a JVM é capaz. Aqui vimos uma demonstração de como o JIT trabalha, além de como funciona a máquina virtual.
18. Bytecode????
Compiled from "Onibus.java"
class Teste {
bytecode
public static void main(java.lang.String);
Code:
0: new #2 // class Onibus
3: dup
4: invokespecial #3 Onibus."<init>":()V
7: astore_1
8: aload_1
9: ldc #4 // String Jabaquara...
11: putfield #5
// Field Onibus.linha:Ljava/lang/String;
Mac
14: return
}
19. Bytecode????
Compiled from "Onibus.java"
class Teste {
bytecode
public static void main(java.lang.String);
Code:
0: new #2 // class Onibus
3: dup
4: invokespecial #3 Onibus."<init>":()V JVM
7: astore_1
8: aload_1
9: ldc #4 // String Jabaquara...
11: putfield #5
// Field Onibus.linha:Ljava/lang/String;
Mac
14: return
}
20. Java, ufa!
public class Onibus {
String nome;
String linha;
}
class Teste {
public static void main(String args) {
Onibus o = new Onibus();
o.linha = "Jabaquara-Liberdade";
}
}
21. Paulo! Então esse tal de Java
é lento?
traduzir bytecode
toda hora!!!
25. for (int x = 0; x < 100; x+=10) {
delete(x);
delete(x+1);
delete(x+2);
delete(x+3);
delete(x+4);
delete(x+5);
delete(x+6);
delete(x+7);
delete(x+8);
delete(x+9);
}
26. for (int x = 0; x < 100; x+=10) {
delete(x);
delete(x+1);
delete(x+2);
delete(x+3);
delete(x+4);
delete(x+5);
delete(x+6);
delete(x+7); O que seu chefe fará
delete(x+8); ao ver esse código?
delete(x+9);
}
27.
28. Chega de bla bla bla
1 1 2 3 5 8 13 21
-XX:+PrintCompilation
29. Máquina Virtual Java
Multi-plataforma
Gerenciamento de memória
Segurança
Sandbox
Otimizações
JIT Compiler
+rápida que estática?