Java Virtual Machine

28
1 Java Virtual Machine Massa Laura Mela Enrica

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

Page 1: Java Virtual Machine

1

Java Virtual Machine

Massa Laura

Mela Enrica

Page 2: Java Virtual Machine

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: Java Virtual Machine

3

Situazione idealeFront-end

indipendente dall’hardware

Back-endindipendente dal linguaggio del

SOURCE CODE

Page 4: Java Virtual Machine

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: Java Virtual Machine

5

Programma codificato per una macchina astratta

Codice eseguibile(dipende dall’architettura)

compilatore

Emula la macchine astratta

interprete

lento Codice più denso

Page 6: Java Virtual Machine

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: Java Virtual Machine

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: Java Virtual Machine

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: Java Virtual Machine

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: Java Virtual Machine

10

JVMClass file format

Bytecode

Tavola dei simboli

Altre informazioni

Class file format

Page 11: Java Virtual Machine

11

Tipi di dato

Primitivi Di riferimento

Numerici

Di ritorno

Classi Interfacce

Vettori

Page 12: Java Virtual Machine

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: Java Virtual Machine

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: Java Virtual Machine

14

Aree dati

pc

Var locali

Op stack

Frame corrente

Thread

Java stack

Area metodi

Classe1

Classe2

Metodo

corrente

Heap

oggetti

vettori

Page 15: Java Virtual Machine

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: Java Virtual Machine

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: Java Virtual Machine

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: Java Virtual Machine

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: Java Virtual Machine

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: Java Virtual Machine

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: Java Virtual Machine

21

Vettore di parole(variabili locali)

Stack degli operandi

Frame

Riferimento al tipo di Metodo corrente

Page 22: Java Virtual Machine

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: Java Virtual Machine

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: Java Virtual Machine

24

Esecuzione

Forma binariaoggetto

Caricamento

Forma binariaCombinazionecon lo stato

corrente della JVM

Linking

Inizializzione

Esecuzione degli Inizializzatori statici

Page 25: Java Virtual Machine

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: Java Virtual Machine

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: Java Virtual Machine

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: Java Virtual Machine

28

Insieme delle istruzioni

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

Ottimizzazione: istruzioni veloci (quick).