Arquitecturas Alternativas. Java Virtual Machine
|
|
- Pietra Castilho Henriques
- 5 Há anos
- Visualizações:
Transcrição
1 Arquitecturas Alternativas Java Virtual Machine
2 Compilação da linguagem Java A linguagem Java é uma linguagem interpretada que é executada por uma máquina virtual software denominada JVM (Java Virtual Machine) Um programa fonte Java é compilado para bytecode Java que é o ISA da JVM Para cada classe é gerado um ficheiro.class com a sua representação em bytecode Estas classes são carregadas por um componente da JVM, o class loader Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 448
3 Compilação da linguagem Java Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 449
4 A portabilidade do Java reside na JVM Para que seja possível executar aplicações Java numa dada plataforma (arquitectura e sistema operativo) tem de existir uma implementação da JVM que execute nessa plataforma Implementação da JVM para Linux Linux Implementação da JVM para Windows Windows Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 450
5 Carregar um programa Java Um programa é carregado para a JVM através da classe de entrada (a que implementa o método main) Quando a classe é carregada é sujeita à verificação da integridade do seu bytecode Só depois é feita a sua interpretação, o que inclui: Pedir ao class loader que carregue todas as classes referenciadas Criar o ambiente de execução (frame) para o main Criar o thread inicial do programa Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 451
6 Carregar um programa Java Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 452
7 Tabela top-level Um ficheiro.class Classe extendida, versão da classe, nome do ficheiro, Tabela de constantes Informação sobre as variáveis (valor e permissões de acesso) e métodos utilizados Tabela de interfaces implementados Tabela de atributos Tabela de métodos Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 453
8 Arquitectura da JVM Uma JVM é composta por: Memória global (Heap) Gerida automaticamente (Garbage-collector) Código das classes (Área dos métodos) Área de código nativo métodos que não implementados em Java Fluxos de execução (threads) Cada thread é composto por: Program counter (PC) Pilha de execução ou pilha de chamadas Similar à pilha de execução do C Composta pelas frames dos métodos Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 454
9 Frame de activação de um método A invocação de um método dá origem a uma frame com o ambiente de execução desse método Semelhante ao C A frame na JVM tem espaço para: Variáveis locais Posição 0 é para o this, caso o método não seja estático Pilha de avaliação Avalia as expressões existentes no método e é usada para empilhar os argumentos de invocações Informação de execução (não representada na figura) Pilha de avaliação Variáveis locais Var N N Var 1 1 Var 0 0 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 455
10 Formato das instruções ISA 1 byte para o opcode mais 0 ou mais para os operados Mais do que 200 instruções Load/store variáveis locais Load/store de campos de um objecto Push de constantes para a pilha de avaliação Arrays Aritméticas Conversão de tipos Controlo Call/return Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 456
11 Tipos de dados Tipo Código Descrição byte B 8 bits em complemento para 2 char C 2 bytes sem sinal, Unicode short S 16 bits em complemento para 2 int I 32 bits em complemento para 2 long J 64 bits em complemento para 2 float F 32 bits IEEE-754 double D 64 bits IEEE-754 boolean Z true/false referência return address 32 bits: endereço de um objecto ou array 32 bits Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 457
12 ISA algumas instruções iload n fload n istore n getfield i putfield i Carrega o inteiro na variável local n para a pilha de avaliação. Existem versões abreviadas iload_n (n de 0 a 3) Carrega o float na variável local n para a pilha de avaliação Existem versões abreviadas fload_n (n de 0 a 3) Guarda o inteiro que está no topo da pilha de avaliação para a variável local n. Existem versões abreviadas istore_n (n de 0 a 3) Carrega o inteiro no campo i para a pilha de avaliação Guarda o inteiro que está no topo da pilha de avaliação para o campo i (na tabela de constantes) bipush Push do byte (inteiro de -128 a 127) iadd, ladd, ifeq offset Adição dos operandos que estão na pilha se topo_pilha == 0 então PC= início_método + offset if_icmpge offset se (topo_pilha -1) topo_pilha >= 0 então PC= imét + offset invokevirtual i ireturn Invocar método i (na tabela de constantes) Retornar o inteiro que está no topo da pilha Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 458
13 Frame de activação de um método As operações de load e store operam sobre a posição na frame e não sobre um endereço Exemplo: Suponhamos que existem três variáveis locais int a = 10, b = 20; float c = 2.4; Vamos fazer o load do conteúdo da variável b iload_2 Pilha de avaliação Variáveis locais this 0 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 459
14 Frame de activação de um método As operações de load e store operam sobre a posição na frame e não sobre um endereço Exemplo: Suponhamos que existem três variáveis locais int a = 10, b = 20; float c = 2.4; Vamos fazer o load do conteúdo da variável b iload_2 O destino é a pilha de avaliação Pilha de avaliação Variáveis locais this 0 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 460
15 Frame de activação de um método As operações de load e store operam sobre a posição na frame e não sobre um endereço Exemplo: Suponhamos que existem três variáveis locais int a = 10, b = 20; float c = 2.4; Se agora quiseremos guardar esse valor em a fazemos: istore_1 Pilha de avaliação Variáveis locais this 0 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 461
16 Frame de activação de um método O espaço necessário para as variáveis locais e para a pilha de avaliação é calculado durante a compilação Uma vez que não se manipulam endereços, as frames não têm de estar contíguas em memória No IA-32 e no MIPS estão porque podemos alocar memória na pilha manipulando o stack pointer Exemplo: sub esp, 8 para reservar 8 bytes para variáveis locais Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 462
17 Arquitectura da JVM Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 463
18 Exemplo da compilação de um método public int mymet(int a, } int c; if (a < b) c = a; else c = b+100; return c; int b) { public int mymet(int, int); Code: Stack=2, Locals=4 0: iload_1 1: iload_2 2: if_icmpge 10 5: iload_1 6: istore_3 7: goto 15 10: iload_2 11: bipush : iadd 14: istore_3 15: iload_3 16: ireturn Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 464
19 Exemplo da execução de um método public int mymet(int, int); Code: Stack=2, Locals=4 0: iload_1 1: iload_2 2: if_icmpge 10 5: iload_1 6: istore_3 7: goto 15 10: iload_2 11: bipush : iadd 14: istore_3 15: iload_3 16: ireturn c? 3 b 17 2 a 10 1 this ref 0 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 465
20 Exemplo da execução de um método public int mymet(int, int); Code: Stack=2, Locals=4 0: iload_1 1: iload_2 2: if_icmpge 10 5: iload_1 6: istore_3 7: goto 15 10: iload_2 11: bipush : iadd 14: istore_3 15: iload_3 16: ireturn 10 c? 3 b 17 2 a 10 1 this ref 0 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 466
21 Exemplo da execução de um método public int mymet(int, int); Code: Stack=2, Locals=4 0: iload_1 1: iload_2 2: if_icmpge 10 5: iload_1 6: istore_3 7: goto 15 10: iload_2 11: bipush : iadd 14: istore_3 15: iload_3 16: ireturn c? 3 b 17 2 a 10 1 this ref 0 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 467
22 Exemplo da execução de um método public int mymet(int, int); Code: Stack=2, Locals=4 0: iload_1 1: iload_2 2: if_icmpge 10 5: iload_1 6: istore_3 7: goto 15 10: iload_2 11: bipush : iadd 14: istore_3 15: iload_3 16: ireturn c? 3 b 7 2 a 10 1 this ref 0 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 468
23 Exemplo da execução de um método public int mymet(int, int); Code: Stack=2, Locals=4 0: iload_1 1: iload_2 2: if_icmpge 10 5: iload_1 6: istore_3 7: goto 15 10: iload_2 11: bipush : iadd 14: istore_3 15: iload_3 16: ireturn 7 c? 3 b 7 2 a 10 1 this ref 0 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 469
24 Exemplo da execução de um método public int mymet(int, int); Code: Stack=2, Locals=4 0: iload_1 1: iload_2 2: if_icmpge 10 5: iload_1 6: istore_3 7: goto 15 10: iload_2 11: bipush : iadd 14: istore_3 15: iload_3 16: ireturn c? 3 b 7 2 a 10 1 this ref 0 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 470
25 Exemplo da execução de um método public int mymet(int, int); Code: Stack=2, Locals=4 0: iload_1 1: iload_2 2: if_icmpge 10 5: iload_1 6: istore_3 7: goto 15 10: iload_2 11: bipush : iadd 14: istore_3 15: iload_3 16: ireturn 107 c? 3 b 7 2 a 10 1 this ref 0 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 471
26 Exemplo da execução de um método public int mymet(int, int); Code: Stack=2, Locals=4 0: iload_1 1: iload_2 2: if_icmpge 10 5: iload_1 6: istore_3 7: goto 12 10: iload_2 11: bipush : iadd 14: istore_3 15: iload_3 16: ireturn c b 7 2 a 10 1 this ref 0 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 472
27 Exemplo da execução de um método public int mymet(int, int); Code: Stack=2, Locals=4 0: iload_1 1: iload_2 2: if_icmpge 10 5: iload_1 6: istore_3 7: goto 12 10: iload_2 11: bipush : iadd 14: istore_3 15: iload_3 16: ireturn 107 c b 7 2 a 10 1 this ref 0 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 473
28 Exemplo da execução de um método public int mymet(int, int); Code: Stack=2, Locals=4 0: iload_1 1: iload_2 2: if_icmpge 10 5: iload_1 6: istore_3 7: goto 12 10: iload_2 11: bipush : iadd 14: istore_3 15: iload_3 16: ireturn c? 3 b 7 2 a 10 1 this ref 0 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 474
29 Invocação do método Suponhamos o método mymet faz parte da classe MyClass public class MyClass { private int x, y = 10; public MyClass(int a) { this.x = a; } public void sety(int a) { this.y = mymet(a, ); } public int mymet(int a, int b) { } } Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 475
30 Invocação do método this.y = this.mymet(a,100000); aload_0 // carrega endereço iload_1 ldc #4 // carrega constante superior a 16 bits invokevirtual #5 putfield #10 a 10 1 this ref 0 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 476
31 Invocação do método this.y = this.mymet(a,100000); aload_0 // carrega endereço iload_1 ldc #4 // carrega constante superior a 16 bits invokevirtual #5 putfield # ref a 10 1 this ref 0 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 477
32 Tabela de constantes: Invocação do método Constant pool: const #2 = class #35 const #4 = int const #5 = Method #2.#37 const #28: = Asciz mymet; const #29: = Asciz (II)I; const #35 = Asciz MyClass; const #37 = #28.#29 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 478
33 Endereço de retorno Onde é que é colocado o endereço de retorno? Não existe uma norma definida pela especificação da máquina O normal será reservar um campo na frame de método para o guardar Semelhante ao C Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 479
34 Representação de um objecto Não existe especificação depende da implementação Apontador para os dados próprios da instância Tabela com os valores dos campos Apontador para o código da classe Flags para o garbage collector Entidade responsável por limpar da memória objectos que já não são precisos É preciso saber quantas referências é que existem para um dado objecto Se tiver 0 referências pode ser garbage-collected Suporte para exclusão mútua Assunto da disciplina FSO Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 480
35 Invocação de métodos invokespecial Mais coisas Invocar método especial Exemplo: construtor de um objecto invokestatic Invocar método estático invokeinterface Invocar método de um interface As excepções são implementadas com subrotinas Existem instruções para chamar e retornar de subrotinas: jsr e ret Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 481
36 Como ver e experimentar Podem ver o assembly de uma classe através do comando javap javac MyClass.java javap -c MyClass -verbose Podem usar o assembler Jasmin ( para fazer uns programas em assembly da JVM A sintaxe não é exactamente a descrita nos slides no que se refere às directivas Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 482
37 Exemplo public class C { public static main(string[] args) { C x = new C(10,30); } } Apontador para a pool de objectos Apontador para a classe Referência (apontador para o objecto) Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 483
38 Compilação Just-in-time (JIT) Aplicação Java Interpretado bytecode JVM Traduzido (compilado) Compilador JIT Código nativo Sistema Operativo Interpretado Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 484
39 Compilação Just-in-time (JIT) Para melhorar a performance algumas JVMs têm um compilador JIT Este compila o bytecode a executar para código nativo (código máquina da arquitectura) em tempo de execução, ou seja, durante a execução do programa Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 485
40 A JVM e outras linguagens A JVM pode ser usada como suporte à execução de outras linguagens Exemplos: Scala Jruby Jython Algumas linguagens compilam para java para poderem usufruir das suas APIs Outras compilam directamente para bytecode Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 486
JVM Máquina Virtual Java
JVM Máquina Virtual Java Cristiano Damiani Vasconcellos cristiano.vasconcello@udesc.br JVM - Introdução Processador virtual; Possui seu próprio conjunto de instruções; Arquitetura baseada em pilha de operandos;
Leia maisArquitectura de Computadores II. Máquinas Virtuais
Arquitectura de Computadores II 3º Ano Máquinas Virtuais João Luís Ferreira Sobral Departamento do Informática Universidade do Minho Março 2003 Máquinas Virtuais Questões que levaram à introdução de máquinas
Leia maisInstituto Superior de Engenharia de Lisboa
Instituto Superior de Engenharia de Lisboa Introdução à Programação (PG) Docente: Pedro Viçoso Fazenda (pfazenda@cedet.isel.ipl.pt) Professor Responsável: Pedro Alexandre Pereira (palex@cc.isel.ipl.pt)
Leia maisComo construir um compilador utilizando ferramentas Java
Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula extra A Máquina Virtual Java Prof. Márcio Delamaro delamaro@icmc.usp.br Como
Leia maisCompiladores Geração de Código
Compiladores Geração de Código Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica
Leia maisESQUEMA AULA PRÁTICA 0 Familiarização com o Ambiente de Desenvolvimento NetBeans Construção do primeiro programa em java.
P. Fazendeiro & P. Prata POO FP0/1 ESQUEMA AULA PRÁTICA 0 Familiarização com o Ambiente de Desenvolvimento NetBeans Construção do primeiro programa em java. 0 Iniciar o ambiente de desenvolvimento integrado
Leia maisUm Exemplo de Nível ISA: o IJVM. Pilhas. Pilhas. O Modelo de Memória da IJVM. Pilhas de Operandos. Nível ISA
Ciência da Computação Arq. e Org. de Computadores Nível ISA Prof. Sergio Ribeiro Um Exemplo de Nível ISA: o IJVM Objetivo: Introduzir um nível ISA (Instruction Set Architecture), a ser interpretado pelo
Leia maisAndré Santos / Pablo Sampaio
JVM- Máquina Virtual Java André Santos / Pablo Sampaio Estrutura da Apresentação Máquinas Virtuais Introdução à JVM Arquivo class Tipos de Dados Descritores de Tipos Frames Instruções Compilando para a
Leia maisLinguagens de Programação Classificação
Classificação Classificação A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível): Linguagem de máquina (primeira geração) Linguagem assembly - de montagem (segunda
Leia maisCapítulo 4 Nível da microarquitetura
Capítulo 4 Nível da microarquitetura Nível acima da lógica digital Função: Implementar a ISA (Instruction Set Architecture) O projeto da microarquitetura depende diretamente da ISA, além dos objetivos
Leia maisCompiladores Ambiente de Execução
Compiladores Ambiente de Execução Fabio Mascarenhas 2015.1 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica
Leia maisESQUEMA AULA PRÁTICA 1
P. Fazendeiro & P. Prata POO FP1/1 ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente JBuilder Introdução à Linguagem de Programação JAVA 0 Inicie o ambiente de desenvolvimento integrado JBuilder. Start
Leia maisESQUEMA AULA PRÁTICA 1
P. Fazendeiro & P. Prata POO FP1/1 ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente JBuilder Introdução à Linguagem de Programação JAVA 0 Inicie o ambiente de desenvolvimento integrado JBuilder. Start
Leia maisJAVA. Professor: Bruno Toledo
JAVA Professor: Bruno Toledo Funcionamento de uma LP Em uma Linguagem de Programação (LP) como C e Pascal, temos o seguinte quadro quando vamos compilar um programa. Código fonte em c Teste.c Gera código
Leia maisMicrojava. Káio, Estevão e André
Microjava Káio, Estevão e André Sumário da apresentação JVM - a máquina virtual Java microjava 701 Java Virtual Machine - JVM Máquina que executa programas em bytecode Processador virtual: o Possui seu
Leia maisMicroarquitetura IJVM. Datapath mic-1. Função dos Registradores. mic-1
Microarquitetura IJVM mic-1 Datapath mic-1 Este é mais um exemplo de datapath para microarquitetura IJVM desenvolvida por Andew Tanenbaum Parte da CPU que contém a ALU, suas entradas e saídas 2 Função
Leia maisO estudo da arquitectura de computadores efectua-se com recurso à Abstracção
ARQUITECTURA DE COMPUTADORES O estudo da arquitectura de computadores efectua-se com recurso à Abstracção Podemos ver um computador de várias formas. Para um utilizador normalmente o computador é a aplicação
Leia maisCompilação dos trabalhos: questões de concurso
1 Compilação dos trabalhos: questões de concurso UFBA/DCC/Linguagens para Aplicação Comercial/2009.1 MPU/2007 (Equipe 1) 1 Quanto às variáveis Java, um inteiro de 64 bits em notação de complemento de dois
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
2 A tecnologia Java Uma ideia base da linguagem JAVA é a de que, um programa em JAVA deve poder ser executado em qualquer tipo de computador sem ter que ser alterado ou compilado novamente. Em Java o código
Leia maisAULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 05: Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação O QUE SÃO PROCEDIMENTOS? Procedimentos são um conjunto
Leia maisManipulação de Bytecode Java
Manipulação de Bytecode Java Mantendo o espírito Hacker no mundo das linguagens de alto nível André Luiz Breves de Oliveira andre.breves@gmail.com class Hello { public static void main(string[] args) {
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
2 A tecnologia Java Uma ideia base da linguagem JAVA é a de que, um programa em JAVA deve poder ser executado em qualquer tipo de computador sem ter que ser alterado ou compilado novamente. Em Java o código
Leia maisLic. Engenharia de Sistemas e Informática
Conceitos de Sistemas Informáticos Lic. Engenharia de Sistemas e Informática 1º ano 2004/05 Luís Paulo Santos Módulo Arquitectura de Computadores Execução de Programas LPSantos, CSI: Arquitectura de Computadores,
Leia maisParadigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura
Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação
Leia maisfile.j. a Baseado no Jasmin User Guide. (http://jasmin.sourceforge.net/)
Jasmin a 1. Jasmin é um assembler para Java que recebe um descrição textual (ASCII) de classes Java e as converte para arquivos (binários) no formato class file. 2. Foi desenhado para ser um assembler
Leia maisTipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Leia maisTipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Leia maisAula 1 POO 1 Prática. Profa. Elaine Faria UFU
Aula 1 POO 1 Prática Profa. Elaine Faria UFU - 2019 Introdução Java Linguagem de programação poderosa Utiliza o paradigma Orientado a Objetos Muito utilizada em aplicativos para Internet e para redes Difundida
Leia maisNível da Arquitetura do Conjunto de Instruções. Ronaldo de Freitas Zampolo
Nível da Arquitetura do Conjunto de Instruções Ronaldo de Freitas Zampolo Tópicos Introdução Visão geral do nível ISA Tipos de dados Formatos de instruções Endereçamento Tipos de instruções Fluxo de controle
Leia maisLinguagem de Programação III
Linguagem de Programação III Aula-4 Construtores e Sobrecarga Prof. Esbel Tomás Valero Orellana Até Aqui Modelos e POO Classes e sua implementação em Java Encapsulamento Tipos de dados nativos em Java
Leia maisPalavras Reservadas da Linguagem Java
Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de
Leia maisArquitecturas Alternativas. Arquitectura X86-64 Arquitecturas RISC Exemplo: MIPS Desempenho de sistemas Pipelining
Arquitecturas Alternativas Arquitectura X86-64 Arquitecturas RISC Exemplo: MIPS Desempenho de sistemas Pipelining X86-64 Qual é o ISA que temos nas máquinas Intel actuais? O x86-64 que é uma extensão para
Leia maisAnálise de Programação
Análise de Programação Fundamentos da Linguagem de Programação Java Prof. Gilberto B. Oliveira Variáveis Atributos: Variáveis Declaradas fora de um método, sem o modificador static Variáveis membro ou
Leia maisManipulação de bytecodes Java
Manipulação de bytecodes Java Eduardo Oliveira de Souza esouza@ime.usp.br 27/10/2006 Manipulação de Bytecodes Java 1 Roteiro Bytecodes Manipulação de bytecodes Ferramentas Considerações Finais Bibliografia
Leia maisRevisões de PG. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa
Revisões de PG (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira (palex@cc.isel.ipl.pt) Compilar e executar programas em Java Ficheiro fonte (Prog.java) Ficheiro
Leia maisPilha de execução Volnys Borges Bernal Departamento de Sistemas Eletrônicos (PSI) Escola Politécnica da USP
2005-2015 Volnys Bernal 1 Pilha de execução Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos (PSI) Escola Politécnica da USP 2005-2015 Volnys Bernal 2 Agenda Os desafios da execução
Leia maisRevisões de PG. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa
Revisões de PG (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira (palex@cc.isel.ipl.pt) Compilar e executar programas em Java Ficheiro fonte (Prog.java) Ficheiro
Leia maisProgramação Orientada a Objetos
Programação Orientada a Objetos luno: ata: Professor: Leonardo abral da Rocha Soares 1. Torna o atributo visível a todas as classes do pacote onde foi declarado: a) public b) private c) protected d) package
Leia maisAlgoritmos e Modelação Computacional. Paulo Mateus MEBiom LMAC 2018
Algoritmos e Modelação Computacional Paulo Mateus MEBiom LMAC 2018 Objetivos Edição e compilação de programas Tipos e expressões Declaração de variáveis Atribuição, composição sequencial, iterativa e alternativa
Leia maisLinguagem de Programação II Implementação
Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Criando objeto Definindo valores para os atributos do objeto Método construtor Definindo valores padrão para os atributos dos
Leia maisUniversidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática
Programação Orientada a Objectos - 25/26; P. Prata, P. Fazendeiro 2 A tecnologia Java Uma ideia base da linguagem JAVA é a de que um programa em JAVA deve poder ser executado em qualquer tipo de computador
Leia maisPARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR
PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR Introdução Instruções são representadas em linguagem de máquina (binário) E x i s t e m l i n g u a g e n
Leia maisa Baseado no Capítulo 5 de Inside the Virtual Machine, por Bill Vernners.
Arquitetura da Máquina Virtual Java a 1. Principais subsistemas máquina virtual Java (JVM): Carregador de classes ( class loader ): carrega classes e interfaces a partir de nomes completamente qualificados.
Leia maisPROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br
Leia maisProgramação ao nível da máquina
Programação ao nível da máquina Ponto de vista do programador O nível Assembly Modelo de programação Assembler (processo de compilação da linguagem C) Que assembly para AC? Introdução ao assembly NASM
Leia maisAmbientação com a Sintaxe de Java: parte 1
Ambientação com a Sintaxe de Java: parte 1 Prof. Gustavo Wagner FATEC-PB Programas em Java Texto do programa: arquivo com extensão.java Arquivo contém ao menos uma classe Nome do arquivo deve ser IGUAL
Leia maisCompiladores Tópicos de JVM
Compiladores Tópicos de JVM Rui Gustavo Crespo IST/DEEC@2005 Compiladores JVM : 1/40 Máquinas virtuais (1) Um programa, codificado numa linguagem de alto nível, só pode ser executado na máquina para a
Leia maisRESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:
RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em: http://www.oxnar.com.br/aulas/java ATIVIDADE ELABORAR O PROGRAMA DE CÁLCULOS DE ÁREAS USANDO
Leia maisALOCAÇÃO DINÂMICA DE MEMÓRIA
INE5408 Estruturas de Dados Semestre 2008/1 Prof. Leandro J. Komosinski ALOCAÇÃO DINÂMICA DE Memória de Computador 1 byte = 8 bits (ex.: 00100110) 1 KB = 1024 bytes 1 MB = 1024 KB 1 GB = 1024 MB Meu computador
Leia maisAula teórica 7. Preparado por eng.tatiana Kovalenko
Aula teórica 7 Tema 7. Introdução a Programação Ø Linguagens de Programação Ø LP Java ØEstrutura de um programa em Java ØIdentificadores, variáveis e constantes. ØTipos de dados básicos Preparado por eng.tatiana
Leia maisArquitetura da Máquina Virtual Java
Arquitetura da Máquina Virtual Java James de Souza Instituto de Computação Universidade Estadual de Campinas RA 991899 jamesdesouza@gmail.com ABSTRACT Os diferentes tipos de arquiteturas de computadores
Leia maisBacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java
Linguagem Java Objetivos????? ADAPTAR O TEXTO ABAIXO????? Aprender a sintaxe da Estrutura de Repetição ENQUANTO-FAÇA na linguagem PORTUGOL Aprender a resolver problemas que requeiram o uso de ESTRUTURAS
Leia maisUniversidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática
Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]
Leia maisSintaxe da linguagem Java
Sintaxe da linguagem Java (PG) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira (palex@cc.isel.ipl.pt) Classe pública com método main Uma classe pública com nome A tem
Leia maisINTRODUÇÃO A LINGUAGEM JAVA
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A LINGUAGEM JAVA Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br Curso Técnico
Leia maisMicrocontrolador FemtoJava Pipeline (Low Power)
Microcontrolador FemtoJava Pipeline (Low Power) UFRGS Programa de Pós graduação em Computação CMP 237 Arquitetura e Organização de Processadores Prof. Dr. Flávio Rech Wagner Aluno: Paulo Roberto Miranda
Leia maisLinguagem C. Brian W. Kernighan, Dennis Ritchie (K&R) Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira
Linguagem C Brian W. Kernighan, Dennis Ritchie (K&R) Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira Centro de Cálculo Instituto Superior de Engenharia de Lisboa João
Leia maisIntrodução ao Java. Marco A L Barbosa malbarbo.pro.br. Departamento de Informática Universidade Estadual de Maringá
Introdução ao Java Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia mais7 Mecanismos de gestão de memória. Prof. Ricardo Silva
7 Mecanismos de gestão de memória Prof. Ricardo Silva Introdução Um programa reside no disco sob a forma de ficheiro executável Para ser executado, o programa tem de ser colocado em memória e associado
Leia maisA máquina SECD. Pedro Vasconcelos. 20 de Fevereiro de 2014
A máquina SECD Pedro Vasconcelos 20 de Fevereiro de 2014 O que é a máquina SECD? Um interpretador da linguagem funcional ISWIM (Landin, 1964) Máquina virtual para compilação LISP/Scheme (Henderson, 1980)
Leia maisInfraestrutura de Hardware. Funcionamento de um Computador
Infraestrutura de Hardware Funcionamento de um Computador Computador: Hardware + Software Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é
Leia mais2 Referencial Teórico
Referencial Teórico 2 Referencial Teórico Um programa Java é escrito em um arquivo java. Um compilador (em geral o JavaC) é então usado para gerar os bytecodes e armazená-los em um arquivo class. Este
Leia maisLinguagem C Introdução. Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux
Linguagem C Introdução Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux Porquê C em AC? A linguagem C fornece um modelo de programação próximo da máquina física
Leia maisDisciplina: Introdução à Engenharia da Computação
Colegiado de Engenharia de Computação Disciplina: Introdução à Engenharia da Computação Aula 07 (semestre 2011.2) Prof. Rosalvo Ferreira de Oliveira Neto, M.Sc. rosalvo.oliveira@univasf.edu.br 2 Representação
Leia maisProgramação em Sistemas Computacionais
Programação em Sistemas Computacionais Linguagem C Introdução, tipos Centro de Cálculo Instituto Superior de Engenharia de Lisboa Jorge Martins (jmartins@isel.pt) baseado no slides de Pedro Pereira Enquadramento
Leia maisInfraestrutura de Hardware. Instruindo um Computador Ponteiros, Execução de Programas em C e Java, Características do Intel x86
Infraestrutura de Hardware Instruindo um Computador Ponteiros, Execução de Programas em C e Java, Características do Intel x86 Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem
Leia maisLinguagem de Montagem Assembly
Linguagem de Montagem Assembly Especificações O programa em Assembly Fica sobre a camada do Sistema Operacional Efetua chamadas ao Sistema Operacional O montador Chama-se Assembler Traduz a linguagem de
Leia maisThreads em Java. Java Threads. Java Componentes: JVM JVM:
Threads em Java (Aula 17) Java Threads Difícil de classificar com user thread ou kernel thread As threads Java são gerenciadas pela JVM. Threads em Java podem ser criadas das seguintes maneiras: Fazendo
Leia maisSistemas Operacionais. Pilha de execução Volnys B. Bernal 1. Agenda. Pilha de execução. Os problemas. Os problemas.
25-215 Volns Bernal 1 25-215 Volns Bernal 2 Agenda Volns Borges Bernal volns@lsi.u.br Os problemas Controle do endereço de retorno da função Controle do quadro da pilha de Departamento de Sistemas Eletrônicos
Leia maisAULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK)
AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK) Ø LP Java. Estrutura de um programa em Java. Ø Conjunto de caracteres utilizado. Ø Identificadores. Ø Variáveis e constantes. Ø Tipos
Leia maisLinguagem de Programação C. Prof. Fabrício Olivetti de França
Linguagem de Programação C Prof. Fabrício Olivetti de França Linguagem C 2 Linguagem C Imperativo e estruturado Pequeno conjunto de palavras-chaves, operadores, etc. Tipagem estática, porém fraca Permite
Leia maisCompiladores Ambiente de Execução
Compiladores Ambiente de Execução Fabio Mascarenhas 2015.2 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica
Leia maisSumário. Sistemas Operativos 1
Sumário Requisitos mínimos do hardware para suportar um SO protegido (ex: Windows/Linux) Mecanismos hardware de suporte nas arquitecturas x86/x64 Sequência de chamada de serviços sistema no Windows a 32
Leia maisIntrodução. PCO / PPO Departamento de Informática Faculdade de Ciências da Universidade de Lisboa
Introdução PCO / PPO Departamento de Informática Faculdade de Ciências da Universidade de Lisboa Resumo Funcionamento da cadeira Intuição sobre programação orientada-a-objectos A linguagem Java: história
Leia mais(Características fundamentais de Codificação de programas)
Curso: Análise e Desenvolvimento de Sistemas Disciplina Algoritmos e Programação (Características fundamentais de Codificação de programas) Prof. Wagner Santos C. de Jesus wsantoscj@gmail.com Histórico
Leia maisMICROPROCESSADORES II (EMA911915) SUB-ROTINAS E PILHA 2 O SEMESTRE / 2018
MICROPROCESSADORES II (EMA911915) SUB-ROTINAS E PILHA 2 O SEMESTRE / 2018 MATERIAL DIDÁTICO Harris & Harris 6.4.6 Procedure Calls Patterson & Hennessy (4a edição) 2.8 Supporting Procedures in Computer
Leia mais02. [Sebesta, 2000] Quais são as vantagens e as desvantagens dos tipos de dados decimais?
01. [Sebesta, 2000] O que é um descritor? 02. [Sebesta, 2000] Quais são as vantagens e as desvantagens dos tipos de dados decimais? 03. [Sebesta, 2000] Quais são as questões de projeto relativas aos tipos
Leia maisFabiano Moreira.
Fabiano Moreira professor@fabianomoreira.com.br Um pouco de história Java 1.02 (250 classes, lenta) Java 1.1 (500 classes, um pouco mais rápida) Java 2, versões 1.2-1.4 (2300 classes, muito mais rápida)
Leia maisINF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS
INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Andrew Diniz da Costa andrew@les.inf.puc-rio.br Programa Capítulo 3 Ponteiros e Variáveis de Objeto Construtores
Leia maisOrientação a Objetos e Java
Orientação a Objetos e Java Daves Martins davesmartins@yahoo.com.br Mestre em Computação de Alto Desempenho pela UFRJ Especialista em Banco de Dados Analista Web Orientação a Objetos e Java Características
Leia maisMétodos de implementação de linguagens. Kellen Pinagé
Métodos de implementação de linguagens Kellen Pinagé Sumário Métodos de implementação de linguagens Compilação Interpretação pura Híbrido Métodos de implementação de linguagens Principais componentes de
Leia maisPROGRAMAÇÃO JAVA. Parte 2
PROGRAMAÇÃO JAVA Parte 2 Características interessantes do JAVA: Verificação automática de ortografia Recolha automática do lixo (GC) Simplificação de ponteiros de memória Acesso à rede simplificado Multi-threading
Leia maisNotas de Aula 01: Introdução à linguagem de programação Java e ao ambiente de desenvolvimento NetBeans
Notas de Aula 01: Introdução à linguagem de programação Java e ao ambiente de desenvolvimento NetBeans Objetivos da aula: Introduzir conceitos da linguagem Java Apresentar um histórico da linguagem Apresentar
Leia maisNo final deste curso, saberás criar programas através da linguagem de programação Java.
Programação em Java Programação Formato: Mentored - Online Preço: 415 ( Os valores apresentados não incluem IVA. Oferta de IVA a particulares e estudantes. ) Horário: Flexível das 24h/24h Duração: ~45h
Leia maisIntrodução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan
Introdução aos computadores, à Internet e à World Wide Web Prof. Marcelo Roberto Zorzan História do Java Origem Linguagem desenvolvida pela Sun Microsystems Sintaxe similar ao C++ Inicialmente chamada
Leia maisAULA 1 INTRODUÇÃO AO JAVA
AULA 1 INTRODUÇÃO AO JAVA Ao término dessa aula você terá aprendido: História e características do Java Ambientes e plataformas Java O Java é a base para praticamente todos os tipos de aplicações em rede
Leia maisProgramando em Assembly
Programando em Assembly precisa-se saber exatamente como interpretar & gerenciar a memória e como usar instruções de baixo nível para o processamento Não existem tipos e variáveis (apenas bytes na memória)
Leia maisMaterial III-Bimestre Introdução e conceitos fundamentais da Linguagem C#
Universidade do Vale do Paraíba Colégio Técnico Antônio Teixeira Fernandes Disciplina POO -2017 Material III-Bimestre Introdução e conceitos fundamentais da Linguagem C# http://www1.univap.br/~wagner Prof.
Leia maisAJProença, Sistemas de Computação, UMinho, 2017/18 1
Introdução aos Sistemas de Computação (3) Estrutura do tema ISC 1. Representação de informação num computador 2. Organização e estrutura interna dum computador 3. Execução de programas num computador 4.
Leia maisINF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS
INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 2 Visão Geral da Tecnologia Java Aplicação Hello World! Operadores e
Leia maisConceitos de Linguagens de Programação - Características. Paavo Soeiro
Conceitos de Linguagens de Programação - Características Paavo Soeiro Motivação Para que possa escolher uma linguagem apropriada ao problema. Melhorar o entendimento da linguagem utilizada. Facilitar o
Leia maisINF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS
INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 3 Ponteiros e Variáveis de Objeto Construtores e Blocos de Inicialização
Leia maisNoçõ linguagem Java. Profs. Marcel Hugo e Jomi Fred Hübner. Departamento de Sistemas e Computação Universidade Regional de Blumenau - FURB
Noçõ ções básicas b da linguagem Java Profs. Marcel Hugo e Jomi Fred Hübner Departamento de Sistemas e Computação Universidade Regional de Blumenau - FURB Introduçã ção Origem Funcionamento Vantagens Linguagem
Leia maisInstalação JDK 10/03/2017
1 Instalação JDK 10/03/2017 Máquina Virtual Java utiliza-se do conceito de máquina virtual, onde existe uma camada extra entre o sistema operacional e a aplicação, responsável por traduzir o que sua aplicação
Leia maisLinguagem de Programação II Implementação
Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa
Leia maisOrganização de Computadores
Organização de Computadores Aula 25 Conjunto de Instruções: Características e Funções Rodrigo Hausen 10 de novembro de 2011 http://cuco.pro.br/ach2034 1/92 Apresentação 1. Bases Teóricas 2. Organização
Leia maisUniversidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Introdução geovanegriesang@unisc.br Processadores de linguagem Linguagens de programação são notações para se descrever
Leia maisProgramação Orientada a Objetos SANTOS, Rafael (PLT)
Programação Orientada a Objetos SANTOS, Rafael (PLT) Possibilita atribuições em sequência na mesma instrução Retorna o valor atribuído Atribuições compostas: incluem a própria variável: +=, *=, -=, etc
Leia mais