150 likes | 241 Views
Arquitetura da Máquina Virtual Java James de Souza - RA 991899 IC - Unicamp - Novembro/2005. Arquitetura 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
E N D
Arquitetura da Máquina Virtual Java James de Souza - RA 991899 IC - Unicamp - Novembro/2005
Arquitetura 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
Arquitetura 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
Arquitetura da JVM - Área de métodos e heap - área de métodos - informações das classes - heap - área de instâncias
Arquitetura 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
Arquitetura 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
Arquitetura 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
Arquitetura da JVM - Exemplo class Act { public static void doMathForever() { int i = 0; for (;;) { i += 1; i *= 2; } } }
Arquitetura 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
Arquitetura 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)
Arquitetura 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
Arquitetura 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