Introduzione al linguaggio Java Alessandro Martinelli alessandro.martinelli@unipv.it 28 Settembre 2011 Introduzione al linguaggio Java Generalità del Linguaggio Java e Portabilità Java e Robustezza Java come linguaggio ad oggetti Fondamenti di Informatica II
Il linguaggio Java Nasce durante gli anni 90 A. Martinelli () Java 28/9/2011 2 / 7
Il linguaggio Java Nasce durante gli anni 90 Due importanti linee guida: A. Martinelli () Java 28/9/2011 2 / 7
Il linguaggio Java Nasce durante gli anni 90 Due importanti linee guida: Un linguaggio migliore del C++. Un linguaggio adatto allo sviluppo di software per il Web. A. Martinelli () Java 28/9/2011 2 / 7
Il linguaggio Java Nasce durante gli anni 90 Due importanti linee guida: Un linguaggio migliore del C++. Un linguaggio adatto allo sviluppo di software per il Web. Tre importanti caratteristiche: A. Martinelli () Java 28/9/2011 2 / 7
Il linguaggio Java Nasce durante gli anni 90 Due importanti linee guida: Un linguaggio migliore del C++. Un linguaggio adatto allo sviluppo di software per il Web. Tre importanti caratteristiche: Portabilità A. Martinelli () Java 28/9/2011 2 / 7
Il linguaggio Java Nasce durante gli anni 90 Due importanti linee guida: Un linguaggio migliore del C++. Un linguaggio adatto allo sviluppo di software per il Web. Tre importanti caratteristiche: Portabilità Robustezza A. Martinelli () Java 28/9/2011 2 / 7
Il linguaggio Java Nasce durante gli anni 90 Due importanti linee guida: Un linguaggio migliore del C++. Un linguaggio adatto allo sviluppo di software per il Web. Tre importanti caratteristiche: Portabilità Robustezza Orientato agli Oggetti A. Martinelli () Java 28/9/2011 2 / 7
Java e Portabilità: La Java Virtual Machine Come per il linguaggio C, il codice Java viene compilato. A. Martinelli () Java 28/9/2011 3 / 7
Java e Portabilità: La Java Virtual Machine Come per il linguaggio C, il codice Java viene compilato. Il risultato del processo di compilazione è un insieme di file.class. A. Martinelli () Java 28/9/2011 3 / 7
Java e Portabilità: La Java Virtual Machine Come per il linguaggio C, il codice Java viene compilato. Il risultato del processo di compilazione è un insieme di file.class. I.class non sono scritti in linguaggio macchina. A. Martinelli () Java 28/9/2011 3 / 7
Java e Portabilità: La Java Virtual Machine Come per il linguaggio C, il codice Java viene compilato. Il risultato del processo di compilazione è un insieme di file.class. I.class non sono scritti in linguaggio macchina. La Java Virtual Machine Lanciando una Macchina Virtuale Java si può interpretare i.class. La Macchina Virtuale Java è un programma. E possibile eseguire i.class su qualsiasi sistema operativo per il quale esista una Macchina Virtuale Java. Per questi motivi Java è anche detto linguaggio interpretato. A. Martinelli () Java 28/9/2011 3 / 7
Java e Robustezza Nell epoca d oro del linguaggio C++, era noto che la difficoltà maggiore degli sviluppatori stava nella gestione della memoria (allocazione e deallocazione) A. Martinelli () Java 28/9/2011 4 / 7
Java e Robustezza Nell epoca d oro del linguaggio C++, era noto che la difficoltà maggiore degli sviluppatori stava nella gestione della memoria (allocazione e deallocazione) Sbagliare in questo compito comporta due grossi rischi: A. Martinelli () Java 28/9/2011 4 / 7
Java e Robustezza Nell epoca d oro del linguaggio C++, era noto che la difficoltà maggiore degli sviluppatori stava nella gestione della memoria (allocazione e deallocazione) Sbagliare in questo compito comporta due grossi rischi: Segmentation Fault (Facile da riscontrare, non da risolvere) A. Martinelli () Java 28/9/2011 4 / 7
Java e Robustezza Nell epoca d oro del linguaggio C++, era noto che la difficoltà maggiore degli sviluppatori stava nella gestione della memoria (allocazione e deallocazione) Sbagliare in questo compito comporta due grossi rischi: Segmentation Fault (Facile da riscontrare, non da risolvere) Saturazione della Memoria (Molto più difficile da rilevare) A. Martinelli () Java 28/9/2011 4 / 7
Java e Robustezza Nell epoca d oro del linguaggio C++, era noto che la difficoltà maggiore degli sviluppatori stava nella gestione della memoria (allocazione e deallocazione) Sbagliare in questo compito comporta due grossi rischi: Segmentation Fault (Facile da riscontrare, non da risolvere) Saturazione della Memoria (Molto più difficile da rilevare) Per far fronte a questi due problemi, Java offre due importanti meccanismi: Il primo problema è risolto con l introduzione delle Eccezioni Runtime. A. Martinelli () Java 28/9/2011 4 / 7
Java e Robustezza Nell epoca d oro del linguaggio C++, era noto che la difficoltà maggiore degli sviluppatori stava nella gestione della memoria (allocazione e deallocazione) Sbagliare in questo compito comporta due grossi rischi: Segmentation Fault (Facile da riscontrare, non da risolvere) Saturazione della Memoria (Molto più difficile da rilevare) Per far fronte a questi due problemi, Java offre due importanti meccanismi: Il primo problema è risolto con l introduzione delle Eccezioni Runtime. Il secondo problema è risolto attraverso il Garbage Collector. A. Martinelli () Java 28/9/2011 4 / 7
Java e Robustezza : le Eccezioni Runtime Gestione delle Eccezioni La Gestione delle Eccezioni è un importante meccanismo comune a molti linguaggi ad oggetti, caratteristico tra gli altri del linguaggio Java. La Gestione delle Eccezioni consente di regolamentare il comportamento del Software quando si verificano comportamenti eccezionali. A. Martinelli () Java 28/9/2011 5 / 7
Java e Robustezza : le Eccezioni Runtime Gestione delle Eccezioni La Gestione delle Eccezioni è un importante meccanismo comune a molti linguaggi ad oggetti, caratteristico tra gli altri del linguaggio Java. La Gestione delle Eccezioni consente di regolamentare il comportamento del Software quando si verificano comportamenti eccezionali. Le Eccezioni Runtime (RunTimeException) sono un particolare tipo di eccezione, trattata in modo privilegiato rispetto alle altre. A. Martinelli () Java 28/9/2011 5 / 7
Java e Robustezza : le Eccezioni Runtime Gestione delle Eccezioni La Gestione delle Eccezioni è un importante meccanismo comune a molti linguaggi ad oggetti, caratteristico tra gli altri del linguaggio Java. La Gestione delle Eccezioni consente di regolamentare il comportamento del Software quando si verificano comportamenti eccezionali. Le Eccezioni Runtime (RunTimeException) sono un particolare tipo di eccezione, trattata in modo privilegiato rispetto alle altre. Con le Eccezioni Runtime Java gestisce tutte quelle situazioni comuni del linguaggio che solitamente si tradurrebbero in un segmentation fault. A. Martinelli () Java 28/9/2011 5 / 7
Java e Robustezza : le Eccezioni Runtime Gestione delle Eccezioni La Gestione delle Eccezioni è un importante meccanismo comune a molti linguaggi ad oggetti, caratteristico tra gli altri del linguaggio Java. La Gestione delle Eccezioni consente di regolamentare il comportamento del Software quando si verificano comportamenti eccezionali. Le Eccezioni Runtime (RunTimeException) sono un particolare tipo di eccezione, trattata in modo privilegiato rispetto alle altre. Con le Eccezioni Runtime Java gestisce tutte quelle situazioni comuni del linguaggio che solitamente si tradurrebbero in un segmentation fault. Il vantaggio di usare la Gestione delle Eccezioni per trattare queste situazioni sta nelle informazioni che la Java Virtual Machine fornisce in output quando questi problemi si verificano. A. Martinelli () Java 28/9/2011 5 / 7
Java e Robustezza : il Garbage Collector Per far fronte al secondo problema, Java introduce il Garbage Collector: Responsabile dell allocazione della memoria. A. Martinelli () Java 28/9/2011 6 / 7
Java e Robustezza : il Garbage Collector Per far fronte al secondo problema, Java introduce il Garbage Collector: Responsabile dell allocazione della memoria. Mantiene una mappa di tutti i puntatori alle aree di memoria utilizzate. A. Martinelli () Java 28/9/2011 6 / 7
Java e Robustezza : il Garbage Collector Per far fronte al secondo problema, Java introduce il Garbage Collector: Responsabile dell allocazione della memoria. Mantiene una mappa di tutti i puntatori alle aree di memoria utilizzate. Dealloca le aree di memoria non più utilizzate. A. Martinelli () Java 28/9/2011 6 / 7
Java e Robustezza : il Garbage Collector Per far fronte al secondo problema, Java introduce il Garbage Collector: Responsabile dell allocazione della memoria. Mantiene una mappa di tutti i puntatori alle aree di memoria utilizzate. Dealloca le aree di memoria non più utilizzate. Di fatto: il programmatore non alloca, non dealloca e i puntatori nemmeno li vede. A. Martinelli () Java 28/9/2011 6 / 7
Java come linguaggio ad Oggetti Offre gli strumenti per applicare i più importanti principi della programmazione ad oggetti. A. Martinelli () Java 28/9/2011 7 / 7
Java come linguaggio ad Oggetti Offre gli strumenti per applicare i più importanti principi della programmazione ad oggetti. Ha rappresentato una solida basa per lo sviluppo e la concettualizzazione della teoria della programmazione ad oggetti. A. Martinelli () Java 28/9/2011 7 / 7
Java come linguaggio ad Oggetti Offre gli strumenti per applicare i più importanti principi della programmazione ad oggetti. Ha rappresentato una solida basa per lo sviluppo e la concettualizzazione della teoria della programmazione ad oggetti. Porta con se una vasta gamma di librerie ad oggetti, che sono il principale output della teoria della programazione ad oggetti. A. Martinelli () Java 28/9/2011 7 / 7