SlideShare uma empresa Scribd logo
Dr. “Java Virtual         Machine”

              Otávio Fernandes
     otavio.fernandes@locaweb.com.br
         http://blog.emresumo.com/
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 de uma IDE;
• Padrões impostos;
• Foco na plataforma e não no programador;
• Complexidade/Excesso dos Frameworks;
• Excessivamente “Enterprise”;
É fato, existem inúmeros códigos
extremamente competentes em Java.

  Todas as plataformas implicam em
              limitações.
O futuro da
        linguagem Java?

• Compatibilidade com as versões anteriores;
• Apenas bug-fixes, poucas features;
• E assim, é cada vez mais difícil prosseguir;
Reinvento do “Java”

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


• Java está caminhando para ser o novo
  “Cobol”;
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;
• Disponível em N plataformas e Java Cards;
• Adaptive Optimization (Hot Spots);
• Threads (das boas!);
• Startup Time Delay;
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;
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;
 •   Operand stack management (push/pop);
 •   Control transfer (branching);
 •   Method invocation and return;
 •   Throwing exceptions;
 •   Monitor-based concurrency;
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.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
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, por exemplo.
Implementação do
         JRuby:
• Predominantemente Java;
• A parte dinâmica do Ruby veio a partir de
  Reflections;
• Workarrounds:
 • Stripping Types;
 • Boxing Types;
 • Boxing Arrays;
Chamadas Reflexivas são sempre mais
lentas do que as convencionais, apesar
   de toda a evolução da JVM para
            melhorar isso.
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;
Obrigado.
Perguntas?
Agradecimentos especiais:

                      “Stanley Kubrick”
             William Markito (Ericsson)
                  Fábio Kung (Locaweb)
             Maurício Aniche (Locaweb)
               Ricardo Ruiz (Locaweb)

Mais conteúdo relacionado

PDF
PPTX
Testes com javascript
PPTX
Javascript por debaixo dos panos
PDF
Análise estática de código Python
PDF
Escalabilidade e Resiliência de Microservices em Python
PDF
JEE nas nuvens: uma introdução ao openshift
PDF
Filosofia Ruby e Rails (UFOP e Inforuso 2010)
PDF
Microservices em Python: desafios e soluções
Testes com javascript
Javascript por debaixo dos panos
Análise estática de código Python
Escalabilidade e Resiliência de Microservices em Python
JEE nas nuvens: uma introdução ao openshift
Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Microservices em Python: desafios e soluções

Mais procurados (13)

PPTX
Delphi Parallel Programming Library
KEY
Integração Contínua com Hudson
PDF
T07_LM3: Eventos em Javascript (2013-2014)
PPTX
PDF
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
PPTX
Inovando na plataforma Java
PDF
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
PDF
Javascript por debaixo dos panos
PPT
QCon 2011
PPTX
Visão geral type script
PPTX
TypeScript - Campus party 2013
PDF
JavaFX: Abordagem Prática
PDF
Desmistificando Otimização de JVM
Delphi Parallel Programming Library
Integração Contínua com Hudson
T07_LM3: Eventos em Javascript (2013-2014)
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
Inovando na plataforma Java
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
Javascript por debaixo dos panos
QCon 2011
Visão geral type script
TypeScript - Campus party 2013
JavaFX: Abordagem Prática
Desmistificando Otimização de JVM
Anúncio

Destaque (20)

PPS
Dedicatórias
PPS
P E 4
PPSX
Cultura La Paz Entre Ríos: Dos años de gestión
PPT
PresentacióN1
PPTX
Primavera
PPTX
Energia Fotovoltaica
PPS
69515 Um Dia No C
PPTX
Centrais Termoelectricas
PDF
Perfil República Dominicana
PDF
20120711 wum ss用
PPTX
Trigonometria
 
DOC
Palavra a moeda e o vaso
PPT
Copia de spot
PPSX
Teste Convite
PPTX
eraispena
PPTX
Trigonometria ciclo e relações
 
PDF
2014 hradec kralove
PPS
As Fases Da Lua
PDF
Daniel Marx Couto
Dedicatórias
P E 4
Cultura La Paz Entre Ríos: Dos años de gestión
PresentacióN1
Primavera
Energia Fotovoltaica
69515 Um Dia No C
Centrais Termoelectricas
Perfil República Dominicana
20120711 wum ss用
Trigonometria
 
Palavra a moeda e o vaso
Copia de spot
Teste Convite
eraispena
Trigonometria ciclo e relações
 
2014 hradec kralove
As Fases Da Lua
Daniel Marx Couto
Anúncio

Semelhante a Dr Java Virtual Machine (20)

PDF
Imergindo na JVM
PPTX
Java virtual machine quantas linguas fala a jvm2
PPT
Apostila de Fundamentos Java
PPT
Conhecendo Java
PDF
Mini aula-java
PDF
Mini aula-java
PPT
PPTX
Introdução Java virtual machine
PPT
Java Seminar
PDF
Imergindo jvm[Apresentação ]
ODP
Linguagens Dinamicas na JVM
PPTX
JAVA: Muito mais que uma linguagem
PPTX
As muitas faces do java
PDF
Slides 04 - A Linguagem Java.pdf
PDF
Curso Java Basico
ODP
Tecnologia Java
PPTX
PPT
Java, historico e futuro
PDF
Fundamentos Java - 01
PDF
Java basico modulo_01
Imergindo na JVM
Java virtual machine quantas linguas fala a jvm2
Apostila de Fundamentos Java
Conhecendo Java
Mini aula-java
Mini aula-java
Introdução Java virtual machine
Java Seminar
Imergindo jvm[Apresentação ]
Linguagens Dinamicas na JVM
JAVA: Muito mais que uma linguagem
As muitas faces do java
Slides 04 - A Linguagem Java.pdf
Curso Java Basico
Tecnologia Java
Java, historico e futuro
Fundamentos Java - 01
Java basico modulo_01

Último (19)

PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Apple Pippin Uma breve introdução. - David Glotz
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Processos na gestão de transportes, TM100 Col18
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Aula04-Academia Heri- Tecnologia Geral 2025
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Aula 18 - Manipulacao De Arquivos python
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Apple Pippin Uma breve introdução. - David Glotz
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Custos e liquidação no SAP Transportation Management, TM130 Col18
Processos na gestão de transportes, TM100 Col18
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
COBITxITIL-Entenda as diferença em uso governança TI
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...

Dr Java Virtual Machine

  • 1. Dr. “Java Virtual Machine” Otávio Fernandes otavio.fernandes@locaweb.com.br http://blog.emresumo.com/
  • 3. Como eu aprendi a parar de odiar Java e Amar a JVM
  • 4. OMG! Ele disse “ódio”. Vamos ter que inventar um novo Design Pattern.
  • 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. É fato, existem inúmeros códigos extremamente competentes em Java. Todas as plataformas implicam em limitações.
  • 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. 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. Aproveitar os excelentes códigos que já foram feitos e estão há anos em produção. Estabilidade.
  • 10. JVM
  • 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. 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. A Oracle/Sun afirma que a JVM tem mais de 4.5 bilhões de instâncias.
  • 14. Como a JVM trabalha?
  • 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. No final, tudo se resume ao Java Bytecode...
  • 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. No seu cerne a JVM é dinâmica.
  • 19. A melhor parte da JVM
  • 20. Está sendo utilizada para outras linguagens. Mais modernas, outros paradigmas.
  • 21. Exemplos: • JRuby; • Scala; • Clojure; • e muitas outras...
  • 22. JRuby
  • 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. 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. Chamadas Reflexivas são sempre mais lentas do que as convencionais, apesar de toda a evolução da JVM para melhorar isso.
  • 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;
  • 29. Agradecimentos especiais: “Stanley Kubrick” William Markito (Ericsson) Fábio Kung (Locaweb) Maurício Aniche (Locaweb) Ricardo Ruiz (Locaweb)