Dr. “Java Virtual         Machine”

              Otávio Fernandes
     otavio.fernandes@locaweb.com.br
         http://bl...
Ou...
Como eu aprendi a parar de
 odiar Java e Amar a JVM
OMG! Ele disse
 “ódio”. Vamos ter
que inventar um novo
   Design Pattern.
Porque “ódio” ao Java?
• Em primeiro lugar: Sarcasmo (ponto);
• Escreve-se mais do que o necessário;
• Necessidade imposta...
É fato, existem inúmeros códigos
extremamente competentes em Java.

  Todas as plataformas implicam em
              limit...
O futuro da
        linguagem Java?

• Compatibilidade com as versões anteriores;
• Apenas bug-fixes, poucas features;
• E ...
Reinvento do “Java”

• 1993: Oak se transforma em Java;
• 2009: JVM é plataforma para (n+1)
  linguagens;


• Java está ca...
Aproveitar os excelentes códigos que já
   foram feitos e estão há anos em
        produção. Estabilidade.
JVM
“Amor” a JVM
• Excelente Garbage Collector;
• HotSpot (foi comprado da LLC, para a v1.3);
• JIT (Just in Time) Compilation...
Otimizações na JVM
• Destaques:
 • Gerações da Memória HEAP (onde estão
    os objetos);
   • Teoria da Mortalidade Infant...
A Oracle/Sun afirma que a
JVM tem mais de 4.5 bilhões
      de instâncias.
Como a JVM trabalha?
Conjunto de Instruções
 •   Load/store;
 •   Arithmetic;
 •   Type conversion;
 •   Object creation and manipulation;
 •  ...
No final, tudo se
resume ao Java Bytecode...
Java Bytecode
0 aload_0
1 invokespecial #3 <Method java.lang.Object()>
4 aload_0
5 aload_1
6 putfield #5 <Field java.lang....
No seu cerne a JVM é dinâmica.
A melhor parte da JVM
Está sendo utilizada para
 outras linguagens. Mais
   modernas, outros
       paradigmas.
Exemplos:

• JRuby;
• Scala;
• Clojure;
• e muitas outras...
JRuby
Chamada as APIs do Java.
 Isso indica que eu poderia testar as
minhas aplicações Java (legadas ou não)
       com RSpec, p...
Implementação do
         JRuby:
• Predominantemente Java;
• A parte dinâmica do Ruby veio a partir de
  Reflections;
• Wor...
Chamadas Reflexivas são sempre mais
lentas do que as convencionais, apesar
   de toda a evolução da JVM para
            me...
Porem, no Java 7...

• Da Vinci Machine ou MLVM (Multi Language
  Virtual Machine);
• Instrução do “invokedynamic”;
• JSR ...
Obrigado.
Perguntas?
Agradecimentos especiais:

                      “Stanley Kubrick”
             William Markito (Ericsson)
               ...
Upcoming SlideShare
Loading in …5
×

Dr Java Virtual Machine

1,206 views

Published on

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

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

  • Be the first to like this

No Downloads
Views
Total views
1,206
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
17
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 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)

    ×