Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Plataforma java: detalhes da JVM

2,773 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
  • Be the first to comment

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

×