Java Virtual Machine

Post on 21-Jan-2016

41 views 0 download

description

Java Virtual Machine. Massa Laura Mela Enrica. La macchine astratte. La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità dei programmi: dal programma compilato in una forma intermedia in una definizione astratta di macchina virtuale. Situazione ideale. - PowerPoint PPT Presentation

Transcript of Java Virtual Machine

1

Java Virtual Machine

Massa Laura

Mela Enrica

2

La macchine astratte

La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità dei programmi: dal programma compilato in una forma intermedia in una definizione astratta di macchina virtuale.

3

Situazione idealeFront-end

indipendente dall’hardware

Back-endindipendente dal linguaggio del

SOURCE CODE

4

Linguaggio intermedio

Molte di queste rappresentazioni di linguaggi intermedi sono basate sulle macchine astratte a stack

P-code: particolare rappresentazione inventata cone forma intermedia per ETH compilatori Pascal( diventata poi dominante come codice macchina per il sistema UCSD Pascal)

5

Programma codificato per una macchina astratta

Codice eseguibile(dipende dall’architettura)

compilatore

Emula la macchine astratta

interprete

lento Codice più denso

6

UCSD usa interprete codice molto intenso e compatto primi usi su microcomputer linguaggi ad alto livello su microcomputer la portabilità del sistema di linguaggio su una

nuova macchina si riduce alla creazione di un nuovo interprete.

7

Architecture Neutral Distribuition Form (ANDF) Idea di base: distribuire programmi in una

forma intermedia e completare il compito della compilazione durante l’installazione.

Nella forma intermedia, durante la compilazione, tutti gli accessi ad indirizzi sono lasciati in forma simbolica

8

Macchine astratte

Nei tardi ’90 Sun Microstystem distribuisce il sistema di linguaggio Java, basato su una macchina astratta a stack, e come l’ANDF usa gli accessi simbolici

Nel 2000 Microsoft svela una nuova tecnologia basata sul vasto mondo del WWW. Questa tecnologia, anch’essa basata sulla macchina astratta a stack, diventa nota come .NET System

9

Introduzione JVM

Macchina astratta su cui vengono eseguite le istruzioni del linguaggio Java

Bytecode Basata su uno stack Il suo compito è quello di interpretare un

particolare formato di file, class file format

10

JVMClass file format

Bytecode

Tavola dei simboli

Altre informazioni

Class file format

11

Tipi di dato

Primitivi Di riferimento

Numerici

Di ritorno

Classi Interfacce

Vettori

12

Elenco dei tipi numerici

byte: valori con segno, su 8 bit, in complemento a 2 short: valori con segno, su 16 bit, in complemento a 2

int: valori con segno, su 32 bit, in complemento a 2

long: valori con segno, su 64 bit, in complemento a 2

char: valori senza segno, su 16 bit, in conformità allo standard Unicode

versione 1.1.5 I tipi numerici in virgola mobile sono:

float: valori in singola precisione, su 32 bit double: valori in doppia precisione, su 64 bit

13

Memorizzazione dei valori: nozione astratta di “parola”

Le dimensioni delle aree di memoria della JVM sono definiti in termini di parole e non di numero effettivo di bit

14

Aree dati

pc

Var locali

Op stack

Frame corrente

Thread

Java stack

Area metodi

Classe1

Classe2

Metodo

corrente

Heap

oggetti

vettori

15

Program counter

Contiene l’indirizzo dell’istruzione in esecuzione

Unico per ogni thread

Il registro PC ha le dimensioni di una parola

16

Stack

Ogni thread ha uno stack privato, creato insieme al thread

Contiene i frame

Mantiene le variabili locali e i risultati parziali

Dimensioni fissi e variabili dinamicamente

17

Heap

Area di memoria condivisa fra tutti i thread Vi sono allocati oggetti e vettori Creato con l’attivazione della JVM ed è

gestito dal garbage collector Dimensione fissa o

dinamica(espanso/contratto)

18

Area dei metodi

Condivisa fra tutti i thread Contiene le strutture associate ad ogni

classe(constant pool, dati dei campi e dei metodi)

Creata con l’attivazione della JVM Dimensione fissa o

dinamica(espanso/contratto)

19

Constant pool

Rappresentazione runtime della tavola constant_pool

Contiene diversi tipi di costanti Al caricamento di una classe o di

un’interfaccia la JVM crea la corrispondente constant_pool

20

Frame

Memorizzazione dei dati e dei risultati parziali Dynamic linking Per ogni metodo invocato viene creato un

frame Viene chiamato frame corrente, il frame del

metodo in esecuzione Il frame è locale al thread che l’ha creato

21

Vettore di parole(variabili locali)

Stack degli operandi

Frame

Riferimento al tipo di Metodo corrente

22

Frame

Ogni frame ospita un vettore di parole contenente i valori delle variabili locali

Le istruzioni della JVM estraggono i valori su cui operare dallo stack delgli operandi del frame corrente

Ogni frame contiene un riferimento al tipo del metodo corrente nel constant pool (supporto del Dynamic Linking)

23

Esecuzione

La JVM invoca il metodo main della classe specificata

La classe a questo punto viene

1)Caricata

2)Linkata

3)Inizializzata Il metodo main deve essere dichiarato

public, static, void

24

Esecuzione

Forma binariaoggetto

Caricamento

Forma binariaCombinazionecon lo stato

corrente della JVM

Linking

Inizializzione

Esecuzione degli Inizializzatori statici

25

Caricamento

La JVM tenterà di eseguire il metodo main

Visto che la classe non è stata ancora caricata la JVM utilizza il ClassLoader per trovare la rappresentazione binaria della classe

26

Linking

Il processo di linking include: verifica, preparazione e risoluzione

Verifica: controlla che la rappresentazione della classe sia conforme alle specifiche, e che il bytecode sia conforme alle regole semantiche della JVM.

Preparazione: alloca le strutture dati, ad esempio le tavole dei metodi,e crea e inizializza i campi statici di una classe ai valori di default

Risoluzione: controlla che riferimenti simbolici ad altre classi ed interfacce siano corretti.

27

Inizializzazione

Esecuzione di tutti gli inizializzatori della classe

Se la classe possiede una superclasse a sua volta deve essere caricata, linkata e inizializzata

Nel caso la classe implementi un’interfaccia questa non deve essere inizializzata

28

Insieme delle istruzioni

In esecuzione l’accesso al constant pool per risolvere i riferimenti è oneroso.

Ottimizzazione: istruzioni veloci (quick).