Successfully reported this slideshow.
Your SlideShare is downloading. ×

Plataforma java: detalhes da JVM

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 37 Ad
Advertisement

More Related Content

Slideshows for you (20)

Viewers also liked (18)

Advertisement

Similar to Plataforma java: detalhes da JVM (20)

More from Caelum (20)

Advertisement

Recently uploaded (20)

Plataforma java: detalhes da JVM

  1. 1. Java por dentro @paulo_caelum Paulo Silveira paulo.silveira@caelum.com.br
  2. 2. Quem é Paulo Silveira?
  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. PLATAFORMA Linguagem 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ódigo Executá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 JVM Linux Windows Mac
  15. 15. Máquina Virtual Java Código linguagem Java “Executável” bytecode Java Máquina Virtual Java JVM Linux Windows Mac
  16. 16. Bytecode???? CAFEBABE0003101DA060F90100118012A013014701570161063C696E69743E1032829 56104436F646510F4C696E654E756D6265725461626C651046D61696E1016285B4C6A 6176612F6C616E672F537472696E673B295610A536F7572636546696C6510A48656C6 C6F2E6A617661C07087017C01801910C6F6C612062797465636F6465701AC01B01C10 548656C6C6F10106A6176612F6C616E672F4F626A65637410106A6176612F6C616E67 2F53797374656D1036F757410154C6A6176612F696F2F5072696E7453747265616D3B 10136A6176612F696F2F5072696E7453747265616D1077072696E746C6E1015284C6A 6176612F6C616E672F537472696E673B2956021050600000201070801090001D01010 0052AB701B100010A0006010001090B0C01090002502010009B202123B604B100010A 000A0200030804010D00020E
  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 x Implementação
  30. 30. PLATAFORMA JAVA 1. Maquina Virtual - JVM 2. Bibliotecas - api 3. Linguagem Java
  31. 31. PLATAFORMA JAVA 1. Maquina Virtual - JVM 2. Bibliotecas - api 3. Linguagem Java
  32. 32. PLATAFORMA JAVA 1. Maquina Virtual - JVM 2. Bibliotecas - api ns 3. Linguagem Java
  33. 33. Máquina Virtual Java Ruby Scala Python Groovy Clojure bytecode ?Android? Linux Windows Mac
  34. 34. Máquina Virtual Java Ruby Scala Python Groovy Clojure 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

Editor's Notes

  • \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

×