La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "1 Java Virtual Machine Massa Laura Mela Enrica. 2 La macchine astratte La tendenza comune nella nuova tecnologia software è quella di conseguire la portabilità"— Transcript della presentazione:

1 1 Java Virtual Machine Massa Laura Mela Enrica

2 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 3 Situazione ideale Front-end indipendente dallhardware Back-end indipendente dal linguaggio del SOURCE CODE

4 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 5 Programma codificato per una macchina astratta Codice eseguibile (dipende dallarchitettura) compilatore Emula la macchine astratta interprete lentoCodice più denso

6 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 7 Architecture Neutral Distribuition Form (ANDF) Idea di base: distribuire programmi in una forma intermedia e completare il compito della compilazione durante linstallazione. Nella forma intermedia, durante la compilazione, tutti gli accessi ad indirizzi sono lasciati in forma simbolica

8 8 Macchine astratte Nei tardi 90 Sun Microstystem distribuisce il sistema di linguaggio Java, basato su una macchina astratta a stack, e come lANDF usa gli accessi simbolici Nel 2000 Microsoft svela una nuova tecnologia basata sul vasto mondo del WWW. Questa tecnologia, anchessa basata sulla macchina astratta a stack, diventa nota come.NET System

9 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 10 JVM Class file format Bytecode Tavola dei simboli Altre informazioni Class file format

11 11 Tipi di dato PrimitiviDi riferimento NumericiDi ritorno ClassiInterfacceVettori

12 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 I tipi numerici in virgola mobile sono: float: valori in singola precisione, su 32 bit double: valori in doppia precisione, su 64 bit

13 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 14 Aree dati pc Var locali Op stack Frame corrente Thread Java stack Area metodi Classe1 Classe2 Metodo corrente Heap oggetti vettori

15 15 Program counter Contiene lindirizzo dellistruzione in esecuzione Unico per ogni thread Il registro PC ha le dimensioni di una parola

16 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 17 Heap Area di memoria condivisa fra tutti i thread Vi sono allocati oggetti e vettori Creato con lattivazione della JVM ed è gestito dal garbage collector Dimensione fissa o dinamica(espanso/contratto)

18 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 lattivazione della JVM Dimensione fissa o dinamica(espanso/contratto)

19 19 Constant pool Rappresentazione runtime della tavola constant_pool Contiene diversi tipi di costanti Al caricamento di una classe o di uninterfaccia la JVM crea la corrispondente constant_pool

20 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 lha creato

21 21 Vettore di parole (variabili locali) Stack degli operandi Frame Riferimento al tipo di Metodo corrente

22 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 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 24 Esecuzione Forma binaria oggetto Caricamento Forma binaria Combinazione con lo stato corrente della JVM Linking Inizializzione Esecuzione degli Inizializzatori statici

25 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 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 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 uninterfaccia questa non deve essere inizializzata

28 28 Insieme delle istruzioni In esecuzione laccesso al constant pool per risolvere i riferimenti è oneroso. Ottimizzazione: istruzioni veloci (quick).


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

Presentazioni simili


Annunci Google