1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella...

28
1 Java Virtual Machine Massa Laura Mela Enrica

Transcript of 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella...

Page 1: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

1

Java Virtual Machine

Massa Laura

Mela Enrica

Page 2: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

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.

Page 3: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

3

Situazione idealeFront-end

indipendente dall’hardware

Back-endindipendente dal linguaggio del

SOURCE CODE

Page 4: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

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)

Page 5: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

5

Programma codificato per una macchina astratta

Codice eseguibile(dipende dall’architettura)

compilatore

Emula la macchine astratta

interprete

lento Codice più denso

Page 6: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

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.

Page 7: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

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

Page 8: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

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

Page 9: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

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

Page 10: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

10

JVMClass file format

Bytecode

Tavola dei simboli

Altre informazioni

Class file format

Page 11: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

11

Tipi di dato

Primitivi Di riferimento

Numerici

Di ritorno

Classi Interfacce

Vettori

Page 12: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

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

Page 13: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

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

Page 14: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

14

Aree dati

pc

Var locali

Op stack

Frame corrente

Thread

Java stack

Area metodi

Classe1

Classe2

Metodo

corrente

Heap

oggetti

vettori

Page 15: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

15

Program counter

Contiene l’indirizzo dell’istruzione in esecuzione

Unico per ogni thread

Il registro PC ha le dimensioni di una parola

Page 16: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

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

Page 17: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

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)

Page 18: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

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)

Page 19: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

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

Page 20: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

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

Page 21: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

21

Vettore di parole(variabili locali)

Stack degli operandi

Frame

Riferimento al tipo di Metodo corrente

Page 22: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

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)

Page 23: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

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

Page 24: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

24

Esecuzione

Forma binariaoggetto

Caricamento

Forma binariaCombinazionecon lo stato

corrente della JVM

Linking

Inizializzione

Esecuzione degli Inizializzatori statici

Page 25: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

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

Page 26: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

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.

Page 27: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

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

Page 28: 1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità

28

Insieme delle istruzioni

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

Ottimizzazione: istruzioni veloci (quick).