Plataforma java: detalhes da JVM

2,701 views

Published on

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.

Published in: Technology
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,701
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Plataforma java: detalhes da JVM

    1. 1. Java pordentro @paulo_caelum Paulo Silveira paulo.silveira@caelum.com.br
    2. 2. Quem é PauloSilveira?
    3. 3. como minha mãe me vê
    4. 4. como minha mãe me vê como meus estagiários me vêem
    5. 5. como minha mãe me vê como meus estagiários me vêem como eu me vejo
    6. 6. como minha mãe me vê como meus estagiários me vêem como eu me vejo como sou na verdade
    7. 7. Linguagem Java- O.O.- bibliotecas- parece C++- vários SOs
    8. 8. PLATAFORMALinguagem Java
    9. 9. PLATAFORMA JAVA- Portável- Facil- Segura- Onipresente
    10. 10. Máquina Virtual Java
    11. 11. Máquina Virtual Java Código Executável Windows
    12. 12. Máquina Virtual Java Código Código CódigoExecutável Executável Executável Linux Windows Mac
    13. 13. Máquina Virtual Java Código “Executável”Linux Windows Mac
    14. 14. Máquina Virtual Java Código “Executável” Máquina Virtual Java JVMLinux Windows Mac
    15. 15. Máquina Virtual Java Código linguagem Java “Executável” bytecode Java Máquina Virtual Java JVMLinux Windows Mac
    16. 16. Bytecode????CAFEBABE0003101DA060F90100118012A013014701570161063C696E69743E103282956104436F646510F4C696E654E756D6265725461626C651046D61696E1016285B4C6A6176612F6C616E672F537472696E673B295610A536F7572636546696C6510A48656C6C6F2E6A617661C07087017C01801910C6F6C612062797465636F6465701AC01B01C10548656C6C6F10106A6176612F6C616E672F4F626A65637410106A6176612F6C616E672F53797374656D1036F757410154C6A6176612F696F2F5072696E7453747265616D3B10136A6176612F696F2F5072696E7453747265616D1077072696E746C6E1015284C6A6176612F6C616E672F537472696E673B2956021050600000201070801090001D010100052AB701B100010A0006010001090B0C01090002502010009B202123B604B100010A000A0200030804010D00020E
    17. 17. Bytecode???? B1 = lreturn 12= ldc 256 opcodes! http://java.sun.com/docs/books/jvms/second_edition/html/Mnemonics.doc.html
    18. 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. 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. 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. 21. Paulo! Então esse tal de Java é lento? traduzir bytecode toda hora!!!
    22. 22. for (int x = 0; x < 100; x++) { delete(x);}
    23. 23. inc x;jmp delete;cmp x, 100;jmp for; Como fazer melhor?
    24. 24. inc x;jmp delete;inc x;jmp delete;inc x;jmp delete;inc x;jmp delete;...cmp x, 100;jmp for
    25. 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. 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. 27. Chega de bla bla bla 1 1 2 3 5 8 13 21-XX:+PrintCompilation
    28. 28. Máquina Virtual Java Multi-plataforma Gerenciamento de memória Segurança Sandbox Otimizações JIT Compiler +rápida que estática?
    29. 29. IBM JVM? Oracle JVM? Especificação xImplementação
    30. 30. PLATAFORMA JAVA1. Maquina Virtual - JVM2. Bibliotecas - api3. Linguagem Java
    31. 31. PLATAFORMA JAVA1. Maquina Virtual - JVM2. Bibliotecas - api3. Linguagem Java
    32. 32. PLATAFORMA JAVA1. Maquina Virtual - JVM2. Bibliotecas - api ns3. Linguagem Java
    33. 33. Máquina Virtual Java Ruby Scala Python GroovyClojure bytecode ?Android? Linux Windows Mac
    34. 34. Máquina Virtual Java Ruby Scala Python GroovyClojure bytecode ?Android? Máquina Virtual Java JVM Linux Windows Mac
    35. 35. Por que tanto Java?• Sistemas heterogêneos• Em todos os lugares• Concorrência• Você vai usar a JVM• Importante conhecê-la profundamente
    36. 36. Obrigado! Paulo Silveira paulo.silveira@caelum.com.br

    ×