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.

Dr Java Virtual Machine

1,293 views

Published on

Apresentação para o Locaweb TechDay (Nov/2009) falando sobre a JVM (Java Virtual Machine).

Published in: Technology
  • Login to see the comments

  • Be the first to like this

Dr Java Virtual Machine

  1. 1. Dr. “Java Virtual Machine” Otávio Fernandes otavio.fernandes@locaweb.com.br http://blog.emresumo.com/
  2. 2. Ou...
  3. 3. Como eu aprendi a parar de odiar Java e Amar a JVM
  4. 4. OMG! Ele disse “ódio”. Vamos ter que inventar um novo Design Pattern.
  5. 5. Porque “ódio” ao Java? • Em primeiro lugar: Sarcasmo (ponto); • Escreve-se mais do que o necessário; • Necessidade imposta de uma IDE; • Padrões impostos; • Foco na plataforma e não no programador; • Complexidade/Excesso dos Frameworks; • Excessivamente “Enterprise”;
  6. 6. É fato, existem inúmeros códigos extremamente competentes em Java. Todas as plataformas implicam em limitações.
  7. 7. O futuro da linguagem Java? • Compatibilidade com as versões anteriores; • Apenas bug-fixes, poucas features; • E assim, é cada vez mais difícil prosseguir;
  8. 8. Reinvento do “Java” • 1993: Oak se transforma em Java; • 2009: JVM é plataforma para (n+1) linguagens; • Java está caminhando para ser o novo “Cobol”;
  9. 9. Aproveitar os excelentes códigos que já foram feitos e estão há anos em produção. Estabilidade.
  10. 10. JVM
  11. 11. “Amor” a JVM • Excelente Garbage Collector; • HotSpot (foi comprado da LLC, para a v1.3); • JIT (Just in Time) Compilation; • Disponível em N plataformas e Java Cards; • Adaptive Optimization (Hot Spots); • Threads (das boas!); • Startup Time Delay;
  12. 12. Otimizações na JVM • Destaques: • Gerações da Memória HEAP (onde estão os objetos); • Teoria da Mortalidade Infantil; • JIT; • Hot Spots; • Startup Time Delay;
  13. 13. A Oracle/Sun afirma que a JVM tem mais de 4.5 bilhões de instâncias.
  14. 14. Como a JVM trabalha?
  15. 15. Conjunto de Instruções • Load/store; • Arithmetic; • Type conversion; • Object creation and manipulation; • Operand stack management (push/pop); • Control transfer (branching); • Method invocation and return; • Throwing exceptions; • Monitor-based concurrency;
  16. 16. No final, tudo se resume ao Java Bytecode...
  17. 17. Java Bytecode 0 aload_0 1 invokespecial #3 <Method java.lang.Object()> 4 aload_0 5 aload_1 6 putfield #5 <Field java.lang.String name> 9 aload_0 10 iload_2 11 putfield #4 <Field int idNumber> 14 aload_0 15 aload_1 16 iload_2 17 invokespecial #6 <Method void storeData(java.lang.String, int)> 20 return
  18. 18. No seu cerne a JVM é dinâmica.
  19. 19. A melhor parte da JVM
  20. 20. Está sendo utilizada para outras linguagens. Mais modernas, outros paradigmas.
  21. 21. Exemplos: • JRuby; • Scala; • Clojure; • e muitas outras...
  22. 22. JRuby
  23. 23. Chamada as APIs do Java. Isso indica que eu poderia testar as minhas aplicações Java (legadas ou não) com RSpec, por exemplo.
  24. 24. Implementação do JRuby: • Predominantemente Java; • A parte dinâmica do Ruby veio a partir de Reflections; • Workarrounds: • Stripping Types; • Boxing Types; • Boxing Arrays;
  25. 25. Chamadas Reflexivas são sempre mais lentas do que as convencionais, apesar de toda a evolução da JVM para melhorar isso.
  26. 26. Porem, no Java 7... • Da Vinci Machine ou MLVM (Multi Language Virtual Machine); • Instrução do “invokedynamic”; • JSR 292; • Suporte nativo as linguagens dinâmicas;
  27. 27. Obrigado.
  28. 28. Perguntas?
  29. 29. Agradecimentos especiais: “Stanley Kubrick” William Markito (Ericsson) Fábio Kung (Locaweb) Maurício Aniche (Locaweb) Ricardo Ruiz (Locaweb)

×