Massa Laura Mela Enrica

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

Traduzione ed Interpretazione
Ambiente Java.
Digital FX!32 Conte Davide Crivello Emanuele Ferrando Elisa.
Introduzione al linguaggio C
Costruttori e Distruttori
Recupero debito quarto anno Primo incontro
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
26/10/2004Laboratorio di Programmazione - Luca Tesei1 Variabili e Oggetti Lo spazio di memoria di Java Le API di Java.
L’architettura della Java Virtual Machine
File System Cos’è un File System File e Directory
Generazione di Codice Intermedio
Elaboratore e Sistemi Operativo
1 Semantica Operazionale di un frammento di Java: lo stato.
1 Classi di memorizzazione. 2 Definiscono le regole di visibilità delle variabili e delle funzioni quando il programma è diviso su più file Stabiliscono.
Generalità Linguaggio e Macchina Astratta
Realizzazione del file system
Programmazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++
Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Funzioni.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Terza parte: Programmazione ad oggetti in Java. Cosè Java Linguaggio di programmazione definito dalla Sun Obiettivo: sviluppo di applicazioni sicure,
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Variabili e tipi primitivi Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Corso di Informatica (Programmazione)
Introduzione al linguaggio Java
eliana minicozzi linguaggi1a.a lezione2
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso.
I Thread.
Software di base Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità di alto livello Es.organizzazione dei.
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Approfondimento delle classi
CAPITOLO 4 LINGUAGGIO JAVA: COSTRUTTI DI BASE. ALFABETO Java adotta la codifica standard Unicode della società Unicode, Inc. (ftp://ftp.unicode.org) definito.
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
memoria gestita staticamente:
Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.
Dichiarazioni e tipi predefiniti nel linguaggio C
Fondamenti di Informatica A - Massimo Bertozzi TIPI DI DATO IN C++ What's in a name? That which we call a rose By any other name would smell as sweet.
Espressioni condizionali
1 © 1999 Roberto Bisiani Rappresentazione delle informazioni n Occorre un codice n Legato alla tecnologia usata Robustezza Semplicita Economicita.
Argomenti della lezione
Programmazione in Java
JAVA Franco Bombi 8 ottobre FB Introduzione Java è un linguaggio di impiego generale, basato su classi e orientato agli oggetti Java.
Ereditarietà e Polimorfismo
Java Contardi Carlo A.S. 2008/09.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
CODIFICA Da flow-chart a C++.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
Implementazione di un linguaggio ad alto livello (con riferimento a Java)
Unità Didattica 3 Linguaggio C
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
Java come linguaggio di programmazione
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
I nomi in Java F. Bombi 18 novembre novembre 2003.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Programmazione ad oggetti
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
© Copyright NTT DATA Italia – All Rights Reserved The information contained in this document is the property of NTT DATA Italia S.p.A. and the addressee.
Programmazione in Java
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Introduzione Laboratorio di Calcolo Corso di Laurea in Fisica Università degli Studi di Roma “La Sapienza”
Programmazione Attività di progettazione ed implementazione di programmi I programmi permettono di realizzare funzioni complesse su un hardware in grado.
1 Macchine astratte, linguaggi, interpretazione, compilazione.
Classi ed Oggetti in Java (Cenni). Richiami Cenni sull’ Implementazione, Macchine Astratte, Compilatore, Interprete Ruolo delle Classi in Java Oggetti.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

Massa Laura Mela Enrica 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 Front-end indipendente dall’hardware Back-end indipendente dal linguaggio del SOURCE CODE

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)

Programma codificato per una macchina astratta interprete compilatore Codice eseguibile (dipende dall’architettura) Emula la macchine astratta lento Codice più denso

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.

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

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

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

JVM Class file format Class file format Altre informazioni Tavola dei simboli Bytecode Class file format

Tipi di dato Primitivi Di riferimento Numerici Di ritorno Classi Interfacce Vettori

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

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

Aree dati Thread Area metodi pc Heap Frame corrente Op stack Metodo corrente Classe1 pc Classe2 Frame corrente Op stack Var locali Heap Java stack oggetti vettori Thread

Program counter Contiene l’indirizzo dell’istruzione in esecuzione Unico per ogni thread Il registro PC ha le dimensioni di una parola

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

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)

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)

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

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

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

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)

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

Inizializzatori statici Esecuzione Caricamento Linking Forma binaria oggetto Forma binaria Combinazione con lo stato corrente della JVM Inizializzione Esecuzione degli Inizializzatori statici

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

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.

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

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