Title: Slide sem t
1Arquitetura da Máquina Virtual Java James
de Souza - RA 991899 IC - Unicamp -
Novembro/2005
2Arquitetura da JVM - Agenda
- Introdução - Estrutura - Tipos de dados
- Área de dados - Conjunto de instruções -
Limitações - Exemplo de bytecode -
Otimizações - Conclusão - Bibliografia
3Arquitetura da JVM - Introdução
- motivação portabilidade - um novo nível de
abstração - trabalha com bytecodes - pode ser
implementada em diversas arquiteturas - formato
de arquivo class - subsistemas, área de memória,
tipos de dados e instruções
4Arquitetura da JVM - Estrutura
5Arquitetura da JVM - Tipos de dados
6Arquitetura da JVM - Threads e Stacks
7Arquitetura da JVM - Área de métodos e heap
- área de métodos - informações das classes -
heap - área de instâncias
8Arquitetura da JVM - Conjunto de Instruções
- Instruções load e store Ex iload, dload -
Instruções aritméticas Ex iadd, lsub, fmul,
ishl, iand - Instruções para conversão de
dados Ex i2l, f2d - Instruções para manipulação
de objetos Ex new, newarray, getfield,
putstatic
9Arquitetura da JVM - Conjunto de Instruções
- Instruções para gerenciamento da pilha (operand
stack) Ex pop, dup, swap - Instruções de
controle Ex ifeq, ifnull, ifnonnull, goto -
Instruções de chamada e retorno de métodos Ex
invokevirtual, invocstatic
10Arquitetura da JVM - Limitações
- arquivo class - magic - 0xCAFEBABE - campos
minor_version, major_version, access_flag
(ACC_FINAL, ACC_ABSTRACT), fields_count,
fields - máximo de variáveis locais 65535 -
operand stack 65535 - número de parâmetros de
um método 255
11Arquitetura da JVM - Exemplo
class Act public static void doMathForever()
int i 0 for ()
i 1 i 2
12Arquitetura da JVM - Exemplo
0 iconst_0 // 03 1 istore_0
// 3b 2 iinc 0, 1 // 84 00 01 5
iload_0 // 1a 6 iconst_2
// 05 7 imul // 68 8 istore_0
// 3b 9 goto 2 //
a7 ff f9
13Arquitetura da JVM - Otimizações
- inicialmente considerada lenta -
interpretada - otimização usando compilação para
código nativo direto - otimização usando
hardware picoJava - otimização utilizando JIT
(Just-In-Time)
14Arquitetura da JVM - Conclusão
- simples e de fácil implementação - permite
independência de hardware - ao mesmo tempo abre
espaço para implementações específicas -
utilização de bytecodes - outras linguagens -
lenta quando interpretada, porém otimizada em
hardware e JIT
15Arquitetura da JVM - Bibliografia
- Sun Microsystems, Inc. The Java Virtual Machine
Specification, 1999. - B. Venners. Inside the
Java Virtual Machine. Artima Software, Inc.,
2003. - Tom R. Halfhill, How To Soup Up Java,
1998. - Austin C. e Pawlan M., Advanced
Programming for the Java 2 Platform, 1999. -
Apache Software Foundation, Byte Code Engineering
Library, 2003