SlideShare uma empresa Scribd logo
Java por
dentro
   @paulo_caelum
   Paulo Silveira
   paulo.silveira@caelum.com.br
Quem é
   Paulo
Silveira?
como minha mãe me vê
como minha mãe me vê   como meus estagiários
                            me vêem
como minha mãe me vê   como meus estagiários
                            me vêem




   como eu me vejo
como minha mãe me vê   como meus estagiários
                            me vêem




   como eu me vejo     como sou na verdade
Linguagem Java
-   O.O.
-   bibliotecas
-   parece C++
-   vários SOs
PLATAFORMA
Linguagem Java
PLATAFORMA JAVA
-   Portável
-   Facil
-   Segura
-   Onipresente
Máquina Virtual Java
Máquina Virtual Java

    Código


   Executável


    Windows
Máquina Virtual Java

 Código       Código       Código


Executável   Executável   Executável


  Linux       Windows        Mac
Máquina Virtual Java

             Código


           “Executável”




Linux       Windows       Mac
Máquina Virtual Java

                Código


             “Executável”

         Máquina Virtual Java JVM


Linux          Windows              Mac
Máquina Virtual Java

                Código         linguagem Java


             “Executável”      bytecode Java


         Máquina Virtual Java JVM


Linux          Windows              Mac
Bytecode????

CAFEBABE0003101DA060F90100118012A013014701570161063C696E69743E1032829
56104436F646510F4C696E654E756D6265725461626C651046D61696E1016285B4C6A
6176612F6C616E672F537472696E673B295610A536F7572636546696C6510A48656C6
C6F2E6A617661C07087017C01801910C6F6C612062797465636F6465701AC01B01C10
548656C6C6F10106A6176612F6C616E672F4F626A65637410106A6176612F6C616E67
2F53797374656D1036F757410154C6A6176612F696F2F5072696E7453747265616D3B
10136A6176612F696F2F5072696E7453747265616D1077072696E746C6E1015284C6A
6176612F6C616E672F537472696E673B2956021050600000201070801090001D01010
0052AB701B100010A0006010001090B0C01090002502010009B202123B604B100010A
000A0200030804010D00020E
Bytecode????
          B1 = lreturn
            12= ldc
         256 opcodes!

 http://java.sun.com/docs/books/jvms/
second_edition/html/Mnemonics.doc.html
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
}
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
}
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";
	 }
}
Paulo! Então esse tal de Java
                      é lento?




                 traduzir bytecode
                       toda hora!!!
for (int x = 0; x < 100; x++) {
   delete(x);
}
inc   x;
jmp   delete;
cmp   x, 100;
jmp   for;

                Como fazer melhor?
inc   x;
jmp   delete;
inc   x;
jmp   delete;
inc   x;
jmp   delete;
inc   x;
jmp   delete;
...
cmp   x, 100;
jmp   for
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);
}
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);
}
Plataforma java: detalhes da JVM
Chega de bla bla bla
 1 1 2 3 5 8 13 21

-XX:+PrintCompilation
Máquina Virtual Java

           Multi-plataforma
 Gerenciamento de memória
                 Segurança
                   Sandbox
               Otimizações
              JIT Compiler
  +rápida que estática?
IBM JVM?
 Oracle JVM?

 Especificação
      x
Implementação
PLATAFORMA JAVA
1. Maquina Virtual - JVM
2. Bibliotecas - api
3. Linguagem
    Java
PLATAFORMA JAVA
1. Maquina Virtual - JVM
2. Bibliotecas - api
3. Linguagem
    Java
PLATAFORMA JAVA
1. Maquina Virtual - JVM
2. Bibliotecas - api
            ns
3. Linguagem
    Java
Máquina Virtual Java

 Ruby        Scala    Python    Groovy

Clojure
                 bytecode      ?Android?




   Linux         Windows       Mac
Máquina Virtual Java

 Ruby        Scala        Python        Groovy

Clojure
                  bytecode             ?Android?

            Máquina Virtual Java JVM


   Linux          Windows              Mac
Por que tanto Java?

• Sistemas heterogêneos
• Em todos os lugares
• Concorrência
• Você vai usar a JVM
• Importante conhecê-la profundamente
Obrigado!


                  Paulo Silveira
  paulo.silveira@caelum.com.br

Mais conteúdo relacionado

PDF
Imergindo jvm[Apresentação ]
PDF
Imergindo na JVM
PDF
O mundo visto de dentro do Ruby
KEY
QConSP: Do cache ao cluster, escalando com Rails
PDF
Conhecendo a JSR 223: Scripting for the Java Platform
PDF
Arduino: hardware hacking & coding dojo
PDF
Trabalhando com Threads em JAVA
PDF
Aula sobre multithreading
Imergindo jvm[Apresentação ]
Imergindo na JVM
O mundo visto de dentro do Ruby
QConSP: Do cache ao cluster, escalando com Rails
Conhecendo a JSR 223: Scripting for the Java Platform
Arduino: hardware hacking & coding dojo
Trabalhando com Threads em JAVA
Aula sobre multithreading

Mais procurados (20)

PDF
Java recursos avançados - multithreading
PDF
Introdução a Linguagem Java
PPT
drools + robocode
PDF
Resolvendo problemas com o Bbundler
PDF
Resolvendo problemas de dependências com o Bundler
PDF
RubyMasters 2011 - Beyond Ruby with NodeJS
PDF
Palestra Desenvolvimento Ágil para Web com ROR UVA
ODP
PPTX
C# 6.0 - DotNetBaixada - Novembro/2015
PDF
Linux Real-Time e Java Real Time, um mundo sem delays! por Flávio Buccianti
ODP
Programação Paralela - Threads
PDF
Sistemas Distribuídos - Multithreading
PDF
Erros comuns em java
PDF
Python - Programando em alto nível
PPT
Introducing Ruby
PDF
JavaFX 1.2
PDF
Programação Concorrente - Gerenciamento de Threads - Parte I
PDF
Freedomday2016 - Fique na caixinha, docker
Java recursos avançados - multithreading
Introdução a Linguagem Java
drools + robocode
Resolvendo problemas com o Bbundler
Resolvendo problemas de dependências com o Bundler
RubyMasters 2011 - Beyond Ruby with NodeJS
Palestra Desenvolvimento Ágil para Web com ROR UVA
C# 6.0 - DotNetBaixada - Novembro/2015
Linux Real-Time e Java Real Time, um mundo sem delays! por Flávio Buccianti
Programação Paralela - Threads
Sistemas Distribuídos - Multithreading
Erros comuns em java
Python - Programando em alto nível
Introducing Ruby
JavaFX 1.2
Programação Concorrente - Gerenciamento de Threads - Parte I
Freedomday2016 - Fique na caixinha, docker
Anúncio

Destaque (18)

PPSX
[GUTS-RS] DevOps pela visão de QA
PPTX
[GUTS-RS] GUTS Testing Games - Jogo BDD Warriors
DOCX
Betts_Michelle_Resume (3)
PDF
Mental Health 1st Aid
PPT
A Tribute to Mahatma
PPT
Vivir con salud
PPTX
Rosalba mendez-contabilidad-financiera
PDF
[GUTS-RS] Mobile Testing
PPTX
[GUTS-RS] Performance Engineering
PDF
Marketing jurídico: Prospecção e relacionamento
PDF
[GUTS-RS] MBehavior, um framework de automação de testes multiplataforma para...
PDF
Desenvolvimento de novos negócios na advocacia
PPTX
Finanzas
PPTX
Ikt hege
PDF
[GUTS-RS] GUTS Universitário - Carreira de Testes
PDF
Roteiro estratégico para novos negócios na advocacia
[GUTS-RS] DevOps pela visão de QA
[GUTS-RS] GUTS Testing Games - Jogo BDD Warriors
Betts_Michelle_Resume (3)
Mental Health 1st Aid
A Tribute to Mahatma
Vivir con salud
Rosalba mendez-contabilidad-financiera
[GUTS-RS] Mobile Testing
[GUTS-RS] Performance Engineering
Marketing jurídico: Prospecção e relacionamento
[GUTS-RS] MBehavior, um framework de automação de testes multiplataforma para...
Desenvolvimento de novos negócios na advocacia
Finanzas
Ikt hege
[GUTS-RS] GUTS Universitário - Carreira de Testes
Roteiro estratégico para novos negócios na advocacia
Anúncio

Semelhante a Plataforma java: detalhes da JVM (20)

PPTX
Interop itcare: Interoperabilidade Java e .NET
PPTX
JAVA: Muito mais que uma linguagem
PDF
Java 01
PDF
Criando Webservice REST com NodeJS, NoSQL & Docker
PPT
Aula1
PPTX
TypeScript - Campus party 2013
PPT
Java20141215 17[1]
PDF
Java Fundamentos
KEY
Dr Java Virtual Machine
PDF
Java script
PDF
Esta começando a programar para a web? Então começe com Rails
PDF
Introdução a linguagem Python
PDF
Usando QUnit para testes unitários em JavaScript
ODP
Tecnologia Java
PDF
Minicurso groovy grails
PDF
Introdução ao java
PDF
Java introdução ao java
PDF
Detalhes internos da nova JVM do Java 8 @mariofts
PDF
Groovy na plataforma Java
Interop itcare: Interoperabilidade Java e .NET
JAVA: Muito mais que uma linguagem
Java 01
Criando Webservice REST com NodeJS, NoSQL & Docker
Aula1
TypeScript - Campus party 2013
Java20141215 17[1]
Java Fundamentos
Dr Java Virtual Machine
Java script
Esta começando a programar para a web? Então começe com Rails
Introdução a linguagem Python
Usando QUnit para testes unitários em JavaScript
Tecnologia Java
Minicurso groovy grails
Introdução ao java
Java introdução ao java
Detalhes internos da nova JVM do Java 8 @mariofts
Groovy na plataforma Java

Mais de Caelum (20)

PDF
Performance Web além do carregamento
PDF
Desafios de Performance Web - BrazilJS
PDF
Performance na web: o modelo RAIL e outras novidades
PDF
Progressive Web Apps: o melhor da Web appficada
PDF
Tudo que você precisa saber sobre picture e srcset
PDF
Como o HTTP/2 vai mudar sua vida
PPTX
Métricas e a automatização do controle de qualidade
PDF
HTTP/2, SPDY e Otimizações Web - Front In Maceió 2014 - Sérgio Lopes
PDF
Offline Web com Service Workers - Sérgio Lopes
PDF
Design Responsivo - MobCamp 2014
PDF
Além do responsive design: a mudança de paradigma do design adaptativo e os m...
PPT
Por trás dos frameworks e além do reflection
PDF
Otimizações de Performance Web: Desafios do Mundo Mobile
PPT
Introducao a inteligencia artificial na educacao
PPT
Otimizando o time to market - do zero a produção em poucas iterações
PDF
All you need to know about JavaScript loading and execution in the browser - ...
PDF
Wsrest 2013
PDF
Design Responsivo por uma Web única
PDF
Os Caminhos de uma Estratégia Mobile
PDF
Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...
Performance Web além do carregamento
Desafios de Performance Web - BrazilJS
Performance na web: o modelo RAIL e outras novidades
Progressive Web Apps: o melhor da Web appficada
Tudo que você precisa saber sobre picture e srcset
Como o HTTP/2 vai mudar sua vida
Métricas e a automatização do controle de qualidade
HTTP/2, SPDY e Otimizações Web - Front In Maceió 2014 - Sérgio Lopes
Offline Web com Service Workers - Sérgio Lopes
Design Responsivo - MobCamp 2014
Além do responsive design: a mudança de paradigma do design adaptativo e os m...
Por trás dos frameworks e além do reflection
Otimizações de Performance Web: Desafios do Mundo Mobile
Introducao a inteligencia artificial na educacao
Otimizando o time to market - do zero a produção em poucas iterações
All you need to know about JavaScript loading and execution in the browser - ...
Wsrest 2013
Design Responsivo por uma Web única
Os Caminhos de uma Estratégia Mobile
Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...

Último (16)

PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Arquitetura de computadores - Memórias Secundárias
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Processos na gestão de transportes, TM100 Col18
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
COBITxITIL-Entenda as diferença em uso governança TI
Arquitetura de computadores - Memórias Secundárias
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Custos e liquidação no SAP Transportation Management, TM130 Col18

Plataforma java: detalhes da JVM

Notas do Editor