• Save
Plataforma java: detalhes da JVM
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Plataforma java: detalhes da JVM

on

  • 2,371 views

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.

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.

Statistics

Views

Total Views
2,371
Views on SlideShare
2,371
Embed Views
0

Actions

Likes
6
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \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 Presentation Transcript

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