Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 1
InfoArchitettura JVM
Installazione JDK (Windows Linux)Hello world
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 2
InfoOrario Lunedigrave (830) 900 ndash 1230 Aula 309
In ogni esercitazione Ripasso teoria (14) esercizi (34)
Pagina web esercitazioni httphomesdsiunimiit~frosioLessonsAY2008-2009-LabProgrLaboratorioProgrammazione20082009html
wwwdsiunimiit rarr docenti rarr Frosio rarr Lessons
Orario calendario esercitazioni download slides (ripasso teoria) download esercizi (testo + soluzione) links (pagina web del corso wiki download JDK documentazione JDK prog documentazione prog) ricevimento
Ricevimento frosiodsiunimiit x appuntamento
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 3
InfoLinguaggio utilizzato Java 5
Per chi installa il package prog dal libro di testo (2^ ed) o dal sito del prof Boldi
JDK (Java Development Kit) 1515 (include JVM 1515) + documentazione
Per chi installa il package prog dal libro di testo (3^ ed) o dal sito del prof Pighizzini
JDK (Java Development Kit) 1607 (ultima release ndash include JVM 1607) + documentazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 4
Account aula 309 (Windows)
Nome utente iniziale del nome + iniziale del cognome + matricola Password milano
Cambiamento obbligatorio della password per tutti al primo logon non sono state date GPO per le restrizioni
Tutti gli account avranno a disposizione il disco Z dove poter salvare i propri file tale disco ha lrsquoimpostazione della gestione quota settata a
30MB I file salvati sul desktop e impostazioni lato utente non verranno salvati al
logoff
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 5
Architettura
Architettura calcolatore (Von Neumann)CPU RAM
Esecuzione di un programmaCompilatori
JVM
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 6
Architettura calcolatore (Von Neuman)
Componenti hardware principali ndash la memoria contiene i programmi da eseguire ed i dati da elaborare ndash il processore (CPU) esegue i programmi registrati nella memoria
elaborando i dati registrati nella memoria ndash le periferiche ndash il bus linea di connessione tra le diverse componenti
processore
memoria
interfaccia alle periferiche
bus
di s
iste
ma
processore
memoria
interfaccia alle periferiche
bus
di s
iste
ma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 7
Architettura calcolatore (Von Neuman)
CPUMemoriacentrale
Memoriedi massa
MouseTastieraMonitor
BUSInput Output InputOutput (IO)
CPUMemoriacentrale
Memoriedi massa
MouseTastieraMonitor
BUSInput Output InputOutput (IO)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 8
Processore Il processore o CPU -Central Processing Unit- egrave lrsquounitagrave di
elaborazione centrale del computer Controlla le funzioni del computer esegue le operazioni aritmetico-
logiche ed elabora i dati E` composto da
ndash datapath un insieme di circuiti in grado di operare e manipolare i dati
ndash controller un insieme di circuiti in grado di interpretare un programma e fare eseguire alle altre componenti del calcolatore le istruzioni del programma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 9
Processore Ogni modello di microprocessore egrave in grado di riconoscere solo
programmi scritti nel proprio linguaggio macchina Ogni modello di microprocessore ha un proprio linguaggio macchina
diverso da quello di altri processori Il linguaggio macchina contiene tutte e sole le istruzioni che possono
essere eseguite direttamente dal microprocessore Ogni istruzione del linguaggio macchina viene eseguita dal
microprocessore svolgendo una serie di operazioni elementari Il numero di operazioni elementari necessario per completare
lrsquoesecuzione di unrsquoistruzione in linguaggio macchina egrave dellrsquoordine di 7-10
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 10
Processore Lrsquoesecuzione di un programma richiede caricamento del programma
dal disco alla memoria centrale codice macchina pronto per lrsquoesecuzione
per ogni istruzione del programma esecuzione di tre tipi di operazionindash Fetch (il processore preleva dalla memoria lrsquoistruzione da eseguire
e la carica al suo interno)ndash Decode (il processore decodifica lrsquoistruzione da eseguire)ndash Execute (il processore esegue le operazioni corrispondenti
allrsquoistruzione)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 11
Processore Registri Sono la memoria interna al processore Usati come ldquoappoggiordquo durante lrsquoesecuzione delle istruzioni per
trasferire i dati dallaalla memoria per salvare i risultati parziali delle operazioni artimeticologiche
Sono solitamente poche decine (32-64)
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registro
registro
registro
registro
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registroregistro
registroregistro
registroregistro
registroregistro
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 12
Memoria centrale Organizzazione in celle di memoria Ogni dato istruzione egrave identificabile per mezzo di un indirizzo Memoria volatile
ndash Perde il suo contenuto se non viene alimentata elettricamentendash Genericamente indicata con il termine RAM Random Access Memory percheacute
il tempo di accesso ad una cella di memoria non dipende dalla sua posizione fisica (e` lo stesso per tutte le celle)
Programmi applicativi e dati
Zona riservata al sistema operativo
Area libera
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 13
Esecuzione di un programma Caricamento programma e dati in memoria Fetch 1^ istruzione in linguaggio macchina (preleva dalla memoria
lrsquoistruzione e la porta al procesore) decode (il processore decodifica lrsquoistruzione da eseguire) execute (il processore esegue le operazioni corrispondenti allrsquoistruzione)
2^ istruzione 3^ istruzione Quando il programma termina puograve essere eliminato dalla memoria
Problema come generare la lista di istruzioni in linguaggio assembly
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 14
Compilatori
Fino agli anni 50 i programmatori scrivevano codice in linguaggio Assembly rarr codice specifico per la macchina utilizzata cambiare processore significa cambiare codice
Per mezzo dei compilatori egrave possibile scrivere codice ad alto livello che viene automaticamente tradotto in linguaggio macchina dal compilatore
Esportando codice ad alto livello e compilandolo con diversi compilatori egrave possibile generare codice per macchine diverse
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 15
Compilatori
Codice Pascal (alto livello)
Codice macchina Linux Codice macchina Windows Codice macchina Mac
Compilatore Linux Compilatore Windows Compilatore Mac
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 16
Compilatori A differenza dei compilatori che traducono ed eseguono un intero
programma gli interpreti traducono ed eseguono immediatamente ogni istruzione
Un interprete realizza in pratica una ldquomacchina virtualerdquo pronta ad eseguire ogni istruzione che viene digitata dal programmatore letta da un file contenente una serie di istruzioni
E piugrave efficiente utilizzare un compilatore rispetto ad un interprete quando un programma viene eseguito piugrave volte in quanto la traduzione viene effettuata una volta per tutte
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 17
Compilatori
Compilatore
Programma oggetto
Linker
Eseguibile
Esecutore
LibrerieErrori del linker
Programma sorgente (alto livello)
Output ed errori di esecuzione
Errori di compilazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 18
JVM
Java Virtual Machine (JVM) rarr macchina astratta in grado di eseguire un codice di basso livello (simile a un codice macchina) chiamato bytecodeE un interprete
Codice di alto livello rarr file javaByte code rarr file class
HelloWorldjava
Compilatore (javac)
HelloWorldclass
Interprete (java)
Esecutore (PC)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 19
JVMLa compilazione (javac) egrave indipendente dalla macchina reale di cui si dispone il file class generato egrave lo stesso su una macchina Windows Linux
Linterprete (java) dipende dalla specifica macchine
Si ottiene oltre alla portabilitagrave del codice sorgente ad alto livello (file java) anche la portabilitagrave del codice compilato (file class)
Sono disponibili librerie (package) in bytecode che possono essere utilizzate da qualunque macchina
Durante la compilazione il compilatore accede alle librerie per verificare luso corretto delle risorse disponibili ndash non include nel bytecode generato il codice delle librerie
Durante lesecuzione la JVM carica il bytecode del programma e quello delle librerie che vengono utilizzate
Ad esempio applet java nei browser rarr il browser contiene un jvm che interpreta il bytecode e lo esegue indipendentemente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 20
JVMCodice java (java)
Macchina Linux Macchina Windows Macchina Mac
Interprete Linux Interprete Windows Interprete Mac
Compilatore (javac)
Bytecode
Pacakges
Indipendente dalla piattaformaDipendente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 21
Cosa installarePer chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA
Addison-Wesley Pearson Education Italia II edizione
JDK (ver 15) httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 50 English JDK Programmer guides 50 English
Package prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Per chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA Addison-Wesley Pearson Education Italia III edizione
JDK (ver 16) httpjavasuncomproductsarchivej2se6u6indexhtml [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 60 English JDK Programmer guides 60 English
Package prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 2
InfoOrario Lunedigrave (830) 900 ndash 1230 Aula 309
In ogni esercitazione Ripasso teoria (14) esercizi (34)
Pagina web esercitazioni httphomesdsiunimiit~frosioLessonsAY2008-2009-LabProgrLaboratorioProgrammazione20082009html
wwwdsiunimiit rarr docenti rarr Frosio rarr Lessons
Orario calendario esercitazioni download slides (ripasso teoria) download esercizi (testo + soluzione) links (pagina web del corso wiki download JDK documentazione JDK prog documentazione prog) ricevimento
Ricevimento frosiodsiunimiit x appuntamento
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 3
InfoLinguaggio utilizzato Java 5
Per chi installa il package prog dal libro di testo (2^ ed) o dal sito del prof Boldi
JDK (Java Development Kit) 1515 (include JVM 1515) + documentazione
Per chi installa il package prog dal libro di testo (3^ ed) o dal sito del prof Pighizzini
JDK (Java Development Kit) 1607 (ultima release ndash include JVM 1607) + documentazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 4
Account aula 309 (Windows)
Nome utente iniziale del nome + iniziale del cognome + matricola Password milano
Cambiamento obbligatorio della password per tutti al primo logon non sono state date GPO per le restrizioni
Tutti gli account avranno a disposizione il disco Z dove poter salvare i propri file tale disco ha lrsquoimpostazione della gestione quota settata a
30MB I file salvati sul desktop e impostazioni lato utente non verranno salvati al
logoff
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 5
Architettura
Architettura calcolatore (Von Neumann)CPU RAM
Esecuzione di un programmaCompilatori
JVM
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 6
Architettura calcolatore (Von Neuman)
Componenti hardware principali ndash la memoria contiene i programmi da eseguire ed i dati da elaborare ndash il processore (CPU) esegue i programmi registrati nella memoria
elaborando i dati registrati nella memoria ndash le periferiche ndash il bus linea di connessione tra le diverse componenti
processore
memoria
interfaccia alle periferiche
bus
di s
iste
ma
processore
memoria
interfaccia alle periferiche
bus
di s
iste
ma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 7
Architettura calcolatore (Von Neuman)
CPUMemoriacentrale
Memoriedi massa
MouseTastieraMonitor
BUSInput Output InputOutput (IO)
CPUMemoriacentrale
Memoriedi massa
MouseTastieraMonitor
BUSInput Output InputOutput (IO)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 8
Processore Il processore o CPU -Central Processing Unit- egrave lrsquounitagrave di
elaborazione centrale del computer Controlla le funzioni del computer esegue le operazioni aritmetico-
logiche ed elabora i dati E` composto da
ndash datapath un insieme di circuiti in grado di operare e manipolare i dati
ndash controller un insieme di circuiti in grado di interpretare un programma e fare eseguire alle altre componenti del calcolatore le istruzioni del programma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 9
Processore Ogni modello di microprocessore egrave in grado di riconoscere solo
programmi scritti nel proprio linguaggio macchina Ogni modello di microprocessore ha un proprio linguaggio macchina
diverso da quello di altri processori Il linguaggio macchina contiene tutte e sole le istruzioni che possono
essere eseguite direttamente dal microprocessore Ogni istruzione del linguaggio macchina viene eseguita dal
microprocessore svolgendo una serie di operazioni elementari Il numero di operazioni elementari necessario per completare
lrsquoesecuzione di unrsquoistruzione in linguaggio macchina egrave dellrsquoordine di 7-10
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 10
Processore Lrsquoesecuzione di un programma richiede caricamento del programma
dal disco alla memoria centrale codice macchina pronto per lrsquoesecuzione
per ogni istruzione del programma esecuzione di tre tipi di operazionindash Fetch (il processore preleva dalla memoria lrsquoistruzione da eseguire
e la carica al suo interno)ndash Decode (il processore decodifica lrsquoistruzione da eseguire)ndash Execute (il processore esegue le operazioni corrispondenti
allrsquoistruzione)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 11
Processore Registri Sono la memoria interna al processore Usati come ldquoappoggiordquo durante lrsquoesecuzione delle istruzioni per
trasferire i dati dallaalla memoria per salvare i risultati parziali delle operazioni artimeticologiche
Sono solitamente poche decine (32-64)
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registro
registro
registro
registro
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registroregistro
registroregistro
registroregistro
registroregistro
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 12
Memoria centrale Organizzazione in celle di memoria Ogni dato istruzione egrave identificabile per mezzo di un indirizzo Memoria volatile
ndash Perde il suo contenuto se non viene alimentata elettricamentendash Genericamente indicata con il termine RAM Random Access Memory percheacute
il tempo di accesso ad una cella di memoria non dipende dalla sua posizione fisica (e` lo stesso per tutte le celle)
Programmi applicativi e dati
Zona riservata al sistema operativo
Area libera
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 13
Esecuzione di un programma Caricamento programma e dati in memoria Fetch 1^ istruzione in linguaggio macchina (preleva dalla memoria
lrsquoistruzione e la porta al procesore) decode (il processore decodifica lrsquoistruzione da eseguire) execute (il processore esegue le operazioni corrispondenti allrsquoistruzione)
2^ istruzione 3^ istruzione Quando il programma termina puograve essere eliminato dalla memoria
Problema come generare la lista di istruzioni in linguaggio assembly
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 14
Compilatori
Fino agli anni 50 i programmatori scrivevano codice in linguaggio Assembly rarr codice specifico per la macchina utilizzata cambiare processore significa cambiare codice
Per mezzo dei compilatori egrave possibile scrivere codice ad alto livello che viene automaticamente tradotto in linguaggio macchina dal compilatore
Esportando codice ad alto livello e compilandolo con diversi compilatori egrave possibile generare codice per macchine diverse
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 15
Compilatori
Codice Pascal (alto livello)
Codice macchina Linux Codice macchina Windows Codice macchina Mac
Compilatore Linux Compilatore Windows Compilatore Mac
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 16
Compilatori A differenza dei compilatori che traducono ed eseguono un intero
programma gli interpreti traducono ed eseguono immediatamente ogni istruzione
Un interprete realizza in pratica una ldquomacchina virtualerdquo pronta ad eseguire ogni istruzione che viene digitata dal programmatore letta da un file contenente una serie di istruzioni
E piugrave efficiente utilizzare un compilatore rispetto ad un interprete quando un programma viene eseguito piugrave volte in quanto la traduzione viene effettuata una volta per tutte
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 17
Compilatori
Compilatore
Programma oggetto
Linker
Eseguibile
Esecutore
LibrerieErrori del linker
Programma sorgente (alto livello)
Output ed errori di esecuzione
Errori di compilazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 18
JVM
Java Virtual Machine (JVM) rarr macchina astratta in grado di eseguire un codice di basso livello (simile a un codice macchina) chiamato bytecodeE un interprete
Codice di alto livello rarr file javaByte code rarr file class
HelloWorldjava
Compilatore (javac)
HelloWorldclass
Interprete (java)
Esecutore (PC)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 19
JVMLa compilazione (javac) egrave indipendente dalla macchina reale di cui si dispone il file class generato egrave lo stesso su una macchina Windows Linux
Linterprete (java) dipende dalla specifica macchine
Si ottiene oltre alla portabilitagrave del codice sorgente ad alto livello (file java) anche la portabilitagrave del codice compilato (file class)
Sono disponibili librerie (package) in bytecode che possono essere utilizzate da qualunque macchina
Durante la compilazione il compilatore accede alle librerie per verificare luso corretto delle risorse disponibili ndash non include nel bytecode generato il codice delle librerie
Durante lesecuzione la JVM carica il bytecode del programma e quello delle librerie che vengono utilizzate
Ad esempio applet java nei browser rarr il browser contiene un jvm che interpreta il bytecode e lo esegue indipendentemente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 20
JVMCodice java (java)
Macchina Linux Macchina Windows Macchina Mac
Interprete Linux Interprete Windows Interprete Mac
Compilatore (javac)
Bytecode
Pacakges
Indipendente dalla piattaformaDipendente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 21
Cosa installarePer chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA
Addison-Wesley Pearson Education Italia II edizione
JDK (ver 15) httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 50 English JDK Programmer guides 50 English
Package prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Per chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA Addison-Wesley Pearson Education Italia III edizione
JDK (ver 16) httpjavasuncomproductsarchivej2se6u6indexhtml [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 60 English JDK Programmer guides 60 English
Package prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 3
InfoLinguaggio utilizzato Java 5
Per chi installa il package prog dal libro di testo (2^ ed) o dal sito del prof Boldi
JDK (Java Development Kit) 1515 (include JVM 1515) + documentazione
Per chi installa il package prog dal libro di testo (3^ ed) o dal sito del prof Pighizzini
JDK (Java Development Kit) 1607 (ultima release ndash include JVM 1607) + documentazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 4
Account aula 309 (Windows)
Nome utente iniziale del nome + iniziale del cognome + matricola Password milano
Cambiamento obbligatorio della password per tutti al primo logon non sono state date GPO per le restrizioni
Tutti gli account avranno a disposizione il disco Z dove poter salvare i propri file tale disco ha lrsquoimpostazione della gestione quota settata a
30MB I file salvati sul desktop e impostazioni lato utente non verranno salvati al
logoff
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 5
Architettura
Architettura calcolatore (Von Neumann)CPU RAM
Esecuzione di un programmaCompilatori
JVM
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 6
Architettura calcolatore (Von Neuman)
Componenti hardware principali ndash la memoria contiene i programmi da eseguire ed i dati da elaborare ndash il processore (CPU) esegue i programmi registrati nella memoria
elaborando i dati registrati nella memoria ndash le periferiche ndash il bus linea di connessione tra le diverse componenti
processore
memoria
interfaccia alle periferiche
bus
di s
iste
ma
processore
memoria
interfaccia alle periferiche
bus
di s
iste
ma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 7
Architettura calcolatore (Von Neuman)
CPUMemoriacentrale
Memoriedi massa
MouseTastieraMonitor
BUSInput Output InputOutput (IO)
CPUMemoriacentrale
Memoriedi massa
MouseTastieraMonitor
BUSInput Output InputOutput (IO)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 8
Processore Il processore o CPU -Central Processing Unit- egrave lrsquounitagrave di
elaborazione centrale del computer Controlla le funzioni del computer esegue le operazioni aritmetico-
logiche ed elabora i dati E` composto da
ndash datapath un insieme di circuiti in grado di operare e manipolare i dati
ndash controller un insieme di circuiti in grado di interpretare un programma e fare eseguire alle altre componenti del calcolatore le istruzioni del programma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 9
Processore Ogni modello di microprocessore egrave in grado di riconoscere solo
programmi scritti nel proprio linguaggio macchina Ogni modello di microprocessore ha un proprio linguaggio macchina
diverso da quello di altri processori Il linguaggio macchina contiene tutte e sole le istruzioni che possono
essere eseguite direttamente dal microprocessore Ogni istruzione del linguaggio macchina viene eseguita dal
microprocessore svolgendo una serie di operazioni elementari Il numero di operazioni elementari necessario per completare
lrsquoesecuzione di unrsquoistruzione in linguaggio macchina egrave dellrsquoordine di 7-10
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 10
Processore Lrsquoesecuzione di un programma richiede caricamento del programma
dal disco alla memoria centrale codice macchina pronto per lrsquoesecuzione
per ogni istruzione del programma esecuzione di tre tipi di operazionindash Fetch (il processore preleva dalla memoria lrsquoistruzione da eseguire
e la carica al suo interno)ndash Decode (il processore decodifica lrsquoistruzione da eseguire)ndash Execute (il processore esegue le operazioni corrispondenti
allrsquoistruzione)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 11
Processore Registri Sono la memoria interna al processore Usati come ldquoappoggiordquo durante lrsquoesecuzione delle istruzioni per
trasferire i dati dallaalla memoria per salvare i risultati parziali delle operazioni artimeticologiche
Sono solitamente poche decine (32-64)
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registro
registro
registro
registro
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registroregistro
registroregistro
registroregistro
registroregistro
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 12
Memoria centrale Organizzazione in celle di memoria Ogni dato istruzione egrave identificabile per mezzo di un indirizzo Memoria volatile
ndash Perde il suo contenuto se non viene alimentata elettricamentendash Genericamente indicata con il termine RAM Random Access Memory percheacute
il tempo di accesso ad una cella di memoria non dipende dalla sua posizione fisica (e` lo stesso per tutte le celle)
Programmi applicativi e dati
Zona riservata al sistema operativo
Area libera
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 13
Esecuzione di un programma Caricamento programma e dati in memoria Fetch 1^ istruzione in linguaggio macchina (preleva dalla memoria
lrsquoistruzione e la porta al procesore) decode (il processore decodifica lrsquoistruzione da eseguire) execute (il processore esegue le operazioni corrispondenti allrsquoistruzione)
2^ istruzione 3^ istruzione Quando il programma termina puograve essere eliminato dalla memoria
Problema come generare la lista di istruzioni in linguaggio assembly
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 14
Compilatori
Fino agli anni 50 i programmatori scrivevano codice in linguaggio Assembly rarr codice specifico per la macchina utilizzata cambiare processore significa cambiare codice
Per mezzo dei compilatori egrave possibile scrivere codice ad alto livello che viene automaticamente tradotto in linguaggio macchina dal compilatore
Esportando codice ad alto livello e compilandolo con diversi compilatori egrave possibile generare codice per macchine diverse
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 15
Compilatori
Codice Pascal (alto livello)
Codice macchina Linux Codice macchina Windows Codice macchina Mac
Compilatore Linux Compilatore Windows Compilatore Mac
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 16
Compilatori A differenza dei compilatori che traducono ed eseguono un intero
programma gli interpreti traducono ed eseguono immediatamente ogni istruzione
Un interprete realizza in pratica una ldquomacchina virtualerdquo pronta ad eseguire ogni istruzione che viene digitata dal programmatore letta da un file contenente una serie di istruzioni
E piugrave efficiente utilizzare un compilatore rispetto ad un interprete quando un programma viene eseguito piugrave volte in quanto la traduzione viene effettuata una volta per tutte
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 17
Compilatori
Compilatore
Programma oggetto
Linker
Eseguibile
Esecutore
LibrerieErrori del linker
Programma sorgente (alto livello)
Output ed errori di esecuzione
Errori di compilazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 18
JVM
Java Virtual Machine (JVM) rarr macchina astratta in grado di eseguire un codice di basso livello (simile a un codice macchina) chiamato bytecodeE un interprete
Codice di alto livello rarr file javaByte code rarr file class
HelloWorldjava
Compilatore (javac)
HelloWorldclass
Interprete (java)
Esecutore (PC)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 19
JVMLa compilazione (javac) egrave indipendente dalla macchina reale di cui si dispone il file class generato egrave lo stesso su una macchina Windows Linux
Linterprete (java) dipende dalla specifica macchine
Si ottiene oltre alla portabilitagrave del codice sorgente ad alto livello (file java) anche la portabilitagrave del codice compilato (file class)
Sono disponibili librerie (package) in bytecode che possono essere utilizzate da qualunque macchina
Durante la compilazione il compilatore accede alle librerie per verificare luso corretto delle risorse disponibili ndash non include nel bytecode generato il codice delle librerie
Durante lesecuzione la JVM carica il bytecode del programma e quello delle librerie che vengono utilizzate
Ad esempio applet java nei browser rarr il browser contiene un jvm che interpreta il bytecode e lo esegue indipendentemente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 20
JVMCodice java (java)
Macchina Linux Macchina Windows Macchina Mac
Interprete Linux Interprete Windows Interprete Mac
Compilatore (javac)
Bytecode
Pacakges
Indipendente dalla piattaformaDipendente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 21
Cosa installarePer chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA
Addison-Wesley Pearson Education Italia II edizione
JDK (ver 15) httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 50 English JDK Programmer guides 50 English
Package prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Per chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA Addison-Wesley Pearson Education Italia III edizione
JDK (ver 16) httpjavasuncomproductsarchivej2se6u6indexhtml [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 60 English JDK Programmer guides 60 English
Package prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 4
Account aula 309 (Windows)
Nome utente iniziale del nome + iniziale del cognome + matricola Password milano
Cambiamento obbligatorio della password per tutti al primo logon non sono state date GPO per le restrizioni
Tutti gli account avranno a disposizione il disco Z dove poter salvare i propri file tale disco ha lrsquoimpostazione della gestione quota settata a
30MB I file salvati sul desktop e impostazioni lato utente non verranno salvati al
logoff
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 5
Architettura
Architettura calcolatore (Von Neumann)CPU RAM
Esecuzione di un programmaCompilatori
JVM
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 6
Architettura calcolatore (Von Neuman)
Componenti hardware principali ndash la memoria contiene i programmi da eseguire ed i dati da elaborare ndash il processore (CPU) esegue i programmi registrati nella memoria
elaborando i dati registrati nella memoria ndash le periferiche ndash il bus linea di connessione tra le diverse componenti
processore
memoria
interfaccia alle periferiche
bus
di s
iste
ma
processore
memoria
interfaccia alle periferiche
bus
di s
iste
ma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 7
Architettura calcolatore (Von Neuman)
CPUMemoriacentrale
Memoriedi massa
MouseTastieraMonitor
BUSInput Output InputOutput (IO)
CPUMemoriacentrale
Memoriedi massa
MouseTastieraMonitor
BUSInput Output InputOutput (IO)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 8
Processore Il processore o CPU -Central Processing Unit- egrave lrsquounitagrave di
elaborazione centrale del computer Controlla le funzioni del computer esegue le operazioni aritmetico-
logiche ed elabora i dati E` composto da
ndash datapath un insieme di circuiti in grado di operare e manipolare i dati
ndash controller un insieme di circuiti in grado di interpretare un programma e fare eseguire alle altre componenti del calcolatore le istruzioni del programma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 9
Processore Ogni modello di microprocessore egrave in grado di riconoscere solo
programmi scritti nel proprio linguaggio macchina Ogni modello di microprocessore ha un proprio linguaggio macchina
diverso da quello di altri processori Il linguaggio macchina contiene tutte e sole le istruzioni che possono
essere eseguite direttamente dal microprocessore Ogni istruzione del linguaggio macchina viene eseguita dal
microprocessore svolgendo una serie di operazioni elementari Il numero di operazioni elementari necessario per completare
lrsquoesecuzione di unrsquoistruzione in linguaggio macchina egrave dellrsquoordine di 7-10
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 10
Processore Lrsquoesecuzione di un programma richiede caricamento del programma
dal disco alla memoria centrale codice macchina pronto per lrsquoesecuzione
per ogni istruzione del programma esecuzione di tre tipi di operazionindash Fetch (il processore preleva dalla memoria lrsquoistruzione da eseguire
e la carica al suo interno)ndash Decode (il processore decodifica lrsquoistruzione da eseguire)ndash Execute (il processore esegue le operazioni corrispondenti
allrsquoistruzione)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 11
Processore Registri Sono la memoria interna al processore Usati come ldquoappoggiordquo durante lrsquoesecuzione delle istruzioni per
trasferire i dati dallaalla memoria per salvare i risultati parziali delle operazioni artimeticologiche
Sono solitamente poche decine (32-64)
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registro
registro
registro
registro
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registroregistro
registroregistro
registroregistro
registroregistro
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 12
Memoria centrale Organizzazione in celle di memoria Ogni dato istruzione egrave identificabile per mezzo di un indirizzo Memoria volatile
ndash Perde il suo contenuto se non viene alimentata elettricamentendash Genericamente indicata con il termine RAM Random Access Memory percheacute
il tempo di accesso ad una cella di memoria non dipende dalla sua posizione fisica (e` lo stesso per tutte le celle)
Programmi applicativi e dati
Zona riservata al sistema operativo
Area libera
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 13
Esecuzione di un programma Caricamento programma e dati in memoria Fetch 1^ istruzione in linguaggio macchina (preleva dalla memoria
lrsquoistruzione e la porta al procesore) decode (il processore decodifica lrsquoistruzione da eseguire) execute (il processore esegue le operazioni corrispondenti allrsquoistruzione)
2^ istruzione 3^ istruzione Quando il programma termina puograve essere eliminato dalla memoria
Problema come generare la lista di istruzioni in linguaggio assembly
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 14
Compilatori
Fino agli anni 50 i programmatori scrivevano codice in linguaggio Assembly rarr codice specifico per la macchina utilizzata cambiare processore significa cambiare codice
Per mezzo dei compilatori egrave possibile scrivere codice ad alto livello che viene automaticamente tradotto in linguaggio macchina dal compilatore
Esportando codice ad alto livello e compilandolo con diversi compilatori egrave possibile generare codice per macchine diverse
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 15
Compilatori
Codice Pascal (alto livello)
Codice macchina Linux Codice macchina Windows Codice macchina Mac
Compilatore Linux Compilatore Windows Compilatore Mac
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 16
Compilatori A differenza dei compilatori che traducono ed eseguono un intero
programma gli interpreti traducono ed eseguono immediatamente ogni istruzione
Un interprete realizza in pratica una ldquomacchina virtualerdquo pronta ad eseguire ogni istruzione che viene digitata dal programmatore letta da un file contenente una serie di istruzioni
E piugrave efficiente utilizzare un compilatore rispetto ad un interprete quando un programma viene eseguito piugrave volte in quanto la traduzione viene effettuata una volta per tutte
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 17
Compilatori
Compilatore
Programma oggetto
Linker
Eseguibile
Esecutore
LibrerieErrori del linker
Programma sorgente (alto livello)
Output ed errori di esecuzione
Errori di compilazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 18
JVM
Java Virtual Machine (JVM) rarr macchina astratta in grado di eseguire un codice di basso livello (simile a un codice macchina) chiamato bytecodeE un interprete
Codice di alto livello rarr file javaByte code rarr file class
HelloWorldjava
Compilatore (javac)
HelloWorldclass
Interprete (java)
Esecutore (PC)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 19
JVMLa compilazione (javac) egrave indipendente dalla macchina reale di cui si dispone il file class generato egrave lo stesso su una macchina Windows Linux
Linterprete (java) dipende dalla specifica macchine
Si ottiene oltre alla portabilitagrave del codice sorgente ad alto livello (file java) anche la portabilitagrave del codice compilato (file class)
Sono disponibili librerie (package) in bytecode che possono essere utilizzate da qualunque macchina
Durante la compilazione il compilatore accede alle librerie per verificare luso corretto delle risorse disponibili ndash non include nel bytecode generato il codice delle librerie
Durante lesecuzione la JVM carica il bytecode del programma e quello delle librerie che vengono utilizzate
Ad esempio applet java nei browser rarr il browser contiene un jvm che interpreta il bytecode e lo esegue indipendentemente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 20
JVMCodice java (java)
Macchina Linux Macchina Windows Macchina Mac
Interprete Linux Interprete Windows Interprete Mac
Compilatore (javac)
Bytecode
Pacakges
Indipendente dalla piattaformaDipendente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 21
Cosa installarePer chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA
Addison-Wesley Pearson Education Italia II edizione
JDK (ver 15) httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 50 English JDK Programmer guides 50 English
Package prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Per chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA Addison-Wesley Pearson Education Italia III edizione
JDK (ver 16) httpjavasuncomproductsarchivej2se6u6indexhtml [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 60 English JDK Programmer guides 60 English
Package prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 5
Architettura
Architettura calcolatore (Von Neumann)CPU RAM
Esecuzione di un programmaCompilatori
JVM
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 6
Architettura calcolatore (Von Neuman)
Componenti hardware principali ndash la memoria contiene i programmi da eseguire ed i dati da elaborare ndash il processore (CPU) esegue i programmi registrati nella memoria
elaborando i dati registrati nella memoria ndash le periferiche ndash il bus linea di connessione tra le diverse componenti
processore
memoria
interfaccia alle periferiche
bus
di s
iste
ma
processore
memoria
interfaccia alle periferiche
bus
di s
iste
ma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 7
Architettura calcolatore (Von Neuman)
CPUMemoriacentrale
Memoriedi massa
MouseTastieraMonitor
BUSInput Output InputOutput (IO)
CPUMemoriacentrale
Memoriedi massa
MouseTastieraMonitor
BUSInput Output InputOutput (IO)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 8
Processore Il processore o CPU -Central Processing Unit- egrave lrsquounitagrave di
elaborazione centrale del computer Controlla le funzioni del computer esegue le operazioni aritmetico-
logiche ed elabora i dati E` composto da
ndash datapath un insieme di circuiti in grado di operare e manipolare i dati
ndash controller un insieme di circuiti in grado di interpretare un programma e fare eseguire alle altre componenti del calcolatore le istruzioni del programma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 9
Processore Ogni modello di microprocessore egrave in grado di riconoscere solo
programmi scritti nel proprio linguaggio macchina Ogni modello di microprocessore ha un proprio linguaggio macchina
diverso da quello di altri processori Il linguaggio macchina contiene tutte e sole le istruzioni che possono
essere eseguite direttamente dal microprocessore Ogni istruzione del linguaggio macchina viene eseguita dal
microprocessore svolgendo una serie di operazioni elementari Il numero di operazioni elementari necessario per completare
lrsquoesecuzione di unrsquoistruzione in linguaggio macchina egrave dellrsquoordine di 7-10
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 10
Processore Lrsquoesecuzione di un programma richiede caricamento del programma
dal disco alla memoria centrale codice macchina pronto per lrsquoesecuzione
per ogni istruzione del programma esecuzione di tre tipi di operazionindash Fetch (il processore preleva dalla memoria lrsquoistruzione da eseguire
e la carica al suo interno)ndash Decode (il processore decodifica lrsquoistruzione da eseguire)ndash Execute (il processore esegue le operazioni corrispondenti
allrsquoistruzione)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 11
Processore Registri Sono la memoria interna al processore Usati come ldquoappoggiordquo durante lrsquoesecuzione delle istruzioni per
trasferire i dati dallaalla memoria per salvare i risultati parziali delle operazioni artimeticologiche
Sono solitamente poche decine (32-64)
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registro
registro
registro
registro
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registroregistro
registroregistro
registroregistro
registroregistro
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 12
Memoria centrale Organizzazione in celle di memoria Ogni dato istruzione egrave identificabile per mezzo di un indirizzo Memoria volatile
ndash Perde il suo contenuto se non viene alimentata elettricamentendash Genericamente indicata con il termine RAM Random Access Memory percheacute
il tempo di accesso ad una cella di memoria non dipende dalla sua posizione fisica (e` lo stesso per tutte le celle)
Programmi applicativi e dati
Zona riservata al sistema operativo
Area libera
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 13
Esecuzione di un programma Caricamento programma e dati in memoria Fetch 1^ istruzione in linguaggio macchina (preleva dalla memoria
lrsquoistruzione e la porta al procesore) decode (il processore decodifica lrsquoistruzione da eseguire) execute (il processore esegue le operazioni corrispondenti allrsquoistruzione)
2^ istruzione 3^ istruzione Quando il programma termina puograve essere eliminato dalla memoria
Problema come generare la lista di istruzioni in linguaggio assembly
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 14
Compilatori
Fino agli anni 50 i programmatori scrivevano codice in linguaggio Assembly rarr codice specifico per la macchina utilizzata cambiare processore significa cambiare codice
Per mezzo dei compilatori egrave possibile scrivere codice ad alto livello che viene automaticamente tradotto in linguaggio macchina dal compilatore
Esportando codice ad alto livello e compilandolo con diversi compilatori egrave possibile generare codice per macchine diverse
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 15
Compilatori
Codice Pascal (alto livello)
Codice macchina Linux Codice macchina Windows Codice macchina Mac
Compilatore Linux Compilatore Windows Compilatore Mac
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 16
Compilatori A differenza dei compilatori che traducono ed eseguono un intero
programma gli interpreti traducono ed eseguono immediatamente ogni istruzione
Un interprete realizza in pratica una ldquomacchina virtualerdquo pronta ad eseguire ogni istruzione che viene digitata dal programmatore letta da un file contenente una serie di istruzioni
E piugrave efficiente utilizzare un compilatore rispetto ad un interprete quando un programma viene eseguito piugrave volte in quanto la traduzione viene effettuata una volta per tutte
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 17
Compilatori
Compilatore
Programma oggetto
Linker
Eseguibile
Esecutore
LibrerieErrori del linker
Programma sorgente (alto livello)
Output ed errori di esecuzione
Errori di compilazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 18
JVM
Java Virtual Machine (JVM) rarr macchina astratta in grado di eseguire un codice di basso livello (simile a un codice macchina) chiamato bytecodeE un interprete
Codice di alto livello rarr file javaByte code rarr file class
HelloWorldjava
Compilatore (javac)
HelloWorldclass
Interprete (java)
Esecutore (PC)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 19
JVMLa compilazione (javac) egrave indipendente dalla macchina reale di cui si dispone il file class generato egrave lo stesso su una macchina Windows Linux
Linterprete (java) dipende dalla specifica macchine
Si ottiene oltre alla portabilitagrave del codice sorgente ad alto livello (file java) anche la portabilitagrave del codice compilato (file class)
Sono disponibili librerie (package) in bytecode che possono essere utilizzate da qualunque macchina
Durante la compilazione il compilatore accede alle librerie per verificare luso corretto delle risorse disponibili ndash non include nel bytecode generato il codice delle librerie
Durante lesecuzione la JVM carica il bytecode del programma e quello delle librerie che vengono utilizzate
Ad esempio applet java nei browser rarr il browser contiene un jvm che interpreta il bytecode e lo esegue indipendentemente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 20
JVMCodice java (java)
Macchina Linux Macchina Windows Macchina Mac
Interprete Linux Interprete Windows Interprete Mac
Compilatore (javac)
Bytecode
Pacakges
Indipendente dalla piattaformaDipendente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 21
Cosa installarePer chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA
Addison-Wesley Pearson Education Italia II edizione
JDK (ver 15) httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 50 English JDK Programmer guides 50 English
Package prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Per chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA Addison-Wesley Pearson Education Italia III edizione
JDK (ver 16) httpjavasuncomproductsarchivej2se6u6indexhtml [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 60 English JDK Programmer guides 60 English
Package prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 6
Architettura calcolatore (Von Neuman)
Componenti hardware principali ndash la memoria contiene i programmi da eseguire ed i dati da elaborare ndash il processore (CPU) esegue i programmi registrati nella memoria
elaborando i dati registrati nella memoria ndash le periferiche ndash il bus linea di connessione tra le diverse componenti
processore
memoria
interfaccia alle periferiche
bus
di s
iste
ma
processore
memoria
interfaccia alle periferiche
bus
di s
iste
ma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 7
Architettura calcolatore (Von Neuman)
CPUMemoriacentrale
Memoriedi massa
MouseTastieraMonitor
BUSInput Output InputOutput (IO)
CPUMemoriacentrale
Memoriedi massa
MouseTastieraMonitor
BUSInput Output InputOutput (IO)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 8
Processore Il processore o CPU -Central Processing Unit- egrave lrsquounitagrave di
elaborazione centrale del computer Controlla le funzioni del computer esegue le operazioni aritmetico-
logiche ed elabora i dati E` composto da
ndash datapath un insieme di circuiti in grado di operare e manipolare i dati
ndash controller un insieme di circuiti in grado di interpretare un programma e fare eseguire alle altre componenti del calcolatore le istruzioni del programma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 9
Processore Ogni modello di microprocessore egrave in grado di riconoscere solo
programmi scritti nel proprio linguaggio macchina Ogni modello di microprocessore ha un proprio linguaggio macchina
diverso da quello di altri processori Il linguaggio macchina contiene tutte e sole le istruzioni che possono
essere eseguite direttamente dal microprocessore Ogni istruzione del linguaggio macchina viene eseguita dal
microprocessore svolgendo una serie di operazioni elementari Il numero di operazioni elementari necessario per completare
lrsquoesecuzione di unrsquoistruzione in linguaggio macchina egrave dellrsquoordine di 7-10
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 10
Processore Lrsquoesecuzione di un programma richiede caricamento del programma
dal disco alla memoria centrale codice macchina pronto per lrsquoesecuzione
per ogni istruzione del programma esecuzione di tre tipi di operazionindash Fetch (il processore preleva dalla memoria lrsquoistruzione da eseguire
e la carica al suo interno)ndash Decode (il processore decodifica lrsquoistruzione da eseguire)ndash Execute (il processore esegue le operazioni corrispondenti
allrsquoistruzione)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 11
Processore Registri Sono la memoria interna al processore Usati come ldquoappoggiordquo durante lrsquoesecuzione delle istruzioni per
trasferire i dati dallaalla memoria per salvare i risultati parziali delle operazioni artimeticologiche
Sono solitamente poche decine (32-64)
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registro
registro
registro
registro
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registroregistro
registroregistro
registroregistro
registroregistro
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 12
Memoria centrale Organizzazione in celle di memoria Ogni dato istruzione egrave identificabile per mezzo di un indirizzo Memoria volatile
ndash Perde il suo contenuto se non viene alimentata elettricamentendash Genericamente indicata con il termine RAM Random Access Memory percheacute
il tempo di accesso ad una cella di memoria non dipende dalla sua posizione fisica (e` lo stesso per tutte le celle)
Programmi applicativi e dati
Zona riservata al sistema operativo
Area libera
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 13
Esecuzione di un programma Caricamento programma e dati in memoria Fetch 1^ istruzione in linguaggio macchina (preleva dalla memoria
lrsquoistruzione e la porta al procesore) decode (il processore decodifica lrsquoistruzione da eseguire) execute (il processore esegue le operazioni corrispondenti allrsquoistruzione)
2^ istruzione 3^ istruzione Quando il programma termina puograve essere eliminato dalla memoria
Problema come generare la lista di istruzioni in linguaggio assembly
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 14
Compilatori
Fino agli anni 50 i programmatori scrivevano codice in linguaggio Assembly rarr codice specifico per la macchina utilizzata cambiare processore significa cambiare codice
Per mezzo dei compilatori egrave possibile scrivere codice ad alto livello che viene automaticamente tradotto in linguaggio macchina dal compilatore
Esportando codice ad alto livello e compilandolo con diversi compilatori egrave possibile generare codice per macchine diverse
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 15
Compilatori
Codice Pascal (alto livello)
Codice macchina Linux Codice macchina Windows Codice macchina Mac
Compilatore Linux Compilatore Windows Compilatore Mac
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 16
Compilatori A differenza dei compilatori che traducono ed eseguono un intero
programma gli interpreti traducono ed eseguono immediatamente ogni istruzione
Un interprete realizza in pratica una ldquomacchina virtualerdquo pronta ad eseguire ogni istruzione che viene digitata dal programmatore letta da un file contenente una serie di istruzioni
E piugrave efficiente utilizzare un compilatore rispetto ad un interprete quando un programma viene eseguito piugrave volte in quanto la traduzione viene effettuata una volta per tutte
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 17
Compilatori
Compilatore
Programma oggetto
Linker
Eseguibile
Esecutore
LibrerieErrori del linker
Programma sorgente (alto livello)
Output ed errori di esecuzione
Errori di compilazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 18
JVM
Java Virtual Machine (JVM) rarr macchina astratta in grado di eseguire un codice di basso livello (simile a un codice macchina) chiamato bytecodeE un interprete
Codice di alto livello rarr file javaByte code rarr file class
HelloWorldjava
Compilatore (javac)
HelloWorldclass
Interprete (java)
Esecutore (PC)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 19
JVMLa compilazione (javac) egrave indipendente dalla macchina reale di cui si dispone il file class generato egrave lo stesso su una macchina Windows Linux
Linterprete (java) dipende dalla specifica macchine
Si ottiene oltre alla portabilitagrave del codice sorgente ad alto livello (file java) anche la portabilitagrave del codice compilato (file class)
Sono disponibili librerie (package) in bytecode che possono essere utilizzate da qualunque macchina
Durante la compilazione il compilatore accede alle librerie per verificare luso corretto delle risorse disponibili ndash non include nel bytecode generato il codice delle librerie
Durante lesecuzione la JVM carica il bytecode del programma e quello delle librerie che vengono utilizzate
Ad esempio applet java nei browser rarr il browser contiene un jvm che interpreta il bytecode e lo esegue indipendentemente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 20
JVMCodice java (java)
Macchina Linux Macchina Windows Macchina Mac
Interprete Linux Interprete Windows Interprete Mac
Compilatore (javac)
Bytecode
Pacakges
Indipendente dalla piattaformaDipendente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 21
Cosa installarePer chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA
Addison-Wesley Pearson Education Italia II edizione
JDK (ver 15) httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 50 English JDK Programmer guides 50 English
Package prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Per chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA Addison-Wesley Pearson Education Italia III edizione
JDK (ver 16) httpjavasuncomproductsarchivej2se6u6indexhtml [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 60 English JDK Programmer guides 60 English
Package prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 7
Architettura calcolatore (Von Neuman)
CPUMemoriacentrale
Memoriedi massa
MouseTastieraMonitor
BUSInput Output InputOutput (IO)
CPUMemoriacentrale
Memoriedi massa
MouseTastieraMonitor
BUSInput Output InputOutput (IO)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 8
Processore Il processore o CPU -Central Processing Unit- egrave lrsquounitagrave di
elaborazione centrale del computer Controlla le funzioni del computer esegue le operazioni aritmetico-
logiche ed elabora i dati E` composto da
ndash datapath un insieme di circuiti in grado di operare e manipolare i dati
ndash controller un insieme di circuiti in grado di interpretare un programma e fare eseguire alle altre componenti del calcolatore le istruzioni del programma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 9
Processore Ogni modello di microprocessore egrave in grado di riconoscere solo
programmi scritti nel proprio linguaggio macchina Ogni modello di microprocessore ha un proprio linguaggio macchina
diverso da quello di altri processori Il linguaggio macchina contiene tutte e sole le istruzioni che possono
essere eseguite direttamente dal microprocessore Ogni istruzione del linguaggio macchina viene eseguita dal
microprocessore svolgendo una serie di operazioni elementari Il numero di operazioni elementari necessario per completare
lrsquoesecuzione di unrsquoistruzione in linguaggio macchina egrave dellrsquoordine di 7-10
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 10
Processore Lrsquoesecuzione di un programma richiede caricamento del programma
dal disco alla memoria centrale codice macchina pronto per lrsquoesecuzione
per ogni istruzione del programma esecuzione di tre tipi di operazionindash Fetch (il processore preleva dalla memoria lrsquoistruzione da eseguire
e la carica al suo interno)ndash Decode (il processore decodifica lrsquoistruzione da eseguire)ndash Execute (il processore esegue le operazioni corrispondenti
allrsquoistruzione)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 11
Processore Registri Sono la memoria interna al processore Usati come ldquoappoggiordquo durante lrsquoesecuzione delle istruzioni per
trasferire i dati dallaalla memoria per salvare i risultati parziali delle operazioni artimeticologiche
Sono solitamente poche decine (32-64)
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registro
registro
registro
registro
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registroregistro
registroregistro
registroregistro
registroregistro
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 12
Memoria centrale Organizzazione in celle di memoria Ogni dato istruzione egrave identificabile per mezzo di un indirizzo Memoria volatile
ndash Perde il suo contenuto se non viene alimentata elettricamentendash Genericamente indicata con il termine RAM Random Access Memory percheacute
il tempo di accesso ad una cella di memoria non dipende dalla sua posizione fisica (e` lo stesso per tutte le celle)
Programmi applicativi e dati
Zona riservata al sistema operativo
Area libera
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 13
Esecuzione di un programma Caricamento programma e dati in memoria Fetch 1^ istruzione in linguaggio macchina (preleva dalla memoria
lrsquoistruzione e la porta al procesore) decode (il processore decodifica lrsquoistruzione da eseguire) execute (il processore esegue le operazioni corrispondenti allrsquoistruzione)
2^ istruzione 3^ istruzione Quando il programma termina puograve essere eliminato dalla memoria
Problema come generare la lista di istruzioni in linguaggio assembly
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 14
Compilatori
Fino agli anni 50 i programmatori scrivevano codice in linguaggio Assembly rarr codice specifico per la macchina utilizzata cambiare processore significa cambiare codice
Per mezzo dei compilatori egrave possibile scrivere codice ad alto livello che viene automaticamente tradotto in linguaggio macchina dal compilatore
Esportando codice ad alto livello e compilandolo con diversi compilatori egrave possibile generare codice per macchine diverse
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 15
Compilatori
Codice Pascal (alto livello)
Codice macchina Linux Codice macchina Windows Codice macchina Mac
Compilatore Linux Compilatore Windows Compilatore Mac
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 16
Compilatori A differenza dei compilatori che traducono ed eseguono un intero
programma gli interpreti traducono ed eseguono immediatamente ogni istruzione
Un interprete realizza in pratica una ldquomacchina virtualerdquo pronta ad eseguire ogni istruzione che viene digitata dal programmatore letta da un file contenente una serie di istruzioni
E piugrave efficiente utilizzare un compilatore rispetto ad un interprete quando un programma viene eseguito piugrave volte in quanto la traduzione viene effettuata una volta per tutte
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 17
Compilatori
Compilatore
Programma oggetto
Linker
Eseguibile
Esecutore
LibrerieErrori del linker
Programma sorgente (alto livello)
Output ed errori di esecuzione
Errori di compilazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 18
JVM
Java Virtual Machine (JVM) rarr macchina astratta in grado di eseguire un codice di basso livello (simile a un codice macchina) chiamato bytecodeE un interprete
Codice di alto livello rarr file javaByte code rarr file class
HelloWorldjava
Compilatore (javac)
HelloWorldclass
Interprete (java)
Esecutore (PC)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 19
JVMLa compilazione (javac) egrave indipendente dalla macchina reale di cui si dispone il file class generato egrave lo stesso su una macchina Windows Linux
Linterprete (java) dipende dalla specifica macchine
Si ottiene oltre alla portabilitagrave del codice sorgente ad alto livello (file java) anche la portabilitagrave del codice compilato (file class)
Sono disponibili librerie (package) in bytecode che possono essere utilizzate da qualunque macchina
Durante la compilazione il compilatore accede alle librerie per verificare luso corretto delle risorse disponibili ndash non include nel bytecode generato il codice delle librerie
Durante lesecuzione la JVM carica il bytecode del programma e quello delle librerie che vengono utilizzate
Ad esempio applet java nei browser rarr il browser contiene un jvm che interpreta il bytecode e lo esegue indipendentemente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 20
JVMCodice java (java)
Macchina Linux Macchina Windows Macchina Mac
Interprete Linux Interprete Windows Interprete Mac
Compilatore (javac)
Bytecode
Pacakges
Indipendente dalla piattaformaDipendente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 21
Cosa installarePer chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA
Addison-Wesley Pearson Education Italia II edizione
JDK (ver 15) httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 50 English JDK Programmer guides 50 English
Package prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Per chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA Addison-Wesley Pearson Education Italia III edizione
JDK (ver 16) httpjavasuncomproductsarchivej2se6u6indexhtml [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 60 English JDK Programmer guides 60 English
Package prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 8
Processore Il processore o CPU -Central Processing Unit- egrave lrsquounitagrave di
elaborazione centrale del computer Controlla le funzioni del computer esegue le operazioni aritmetico-
logiche ed elabora i dati E` composto da
ndash datapath un insieme di circuiti in grado di operare e manipolare i dati
ndash controller un insieme di circuiti in grado di interpretare un programma e fare eseguire alle altre componenti del calcolatore le istruzioni del programma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 9
Processore Ogni modello di microprocessore egrave in grado di riconoscere solo
programmi scritti nel proprio linguaggio macchina Ogni modello di microprocessore ha un proprio linguaggio macchina
diverso da quello di altri processori Il linguaggio macchina contiene tutte e sole le istruzioni che possono
essere eseguite direttamente dal microprocessore Ogni istruzione del linguaggio macchina viene eseguita dal
microprocessore svolgendo una serie di operazioni elementari Il numero di operazioni elementari necessario per completare
lrsquoesecuzione di unrsquoistruzione in linguaggio macchina egrave dellrsquoordine di 7-10
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 10
Processore Lrsquoesecuzione di un programma richiede caricamento del programma
dal disco alla memoria centrale codice macchina pronto per lrsquoesecuzione
per ogni istruzione del programma esecuzione di tre tipi di operazionindash Fetch (il processore preleva dalla memoria lrsquoistruzione da eseguire
e la carica al suo interno)ndash Decode (il processore decodifica lrsquoistruzione da eseguire)ndash Execute (il processore esegue le operazioni corrispondenti
allrsquoistruzione)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 11
Processore Registri Sono la memoria interna al processore Usati come ldquoappoggiordquo durante lrsquoesecuzione delle istruzioni per
trasferire i dati dallaalla memoria per salvare i risultati parziali delle operazioni artimeticologiche
Sono solitamente poche decine (32-64)
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registro
registro
registro
registro
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registroregistro
registroregistro
registroregistro
registroregistro
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 12
Memoria centrale Organizzazione in celle di memoria Ogni dato istruzione egrave identificabile per mezzo di un indirizzo Memoria volatile
ndash Perde il suo contenuto se non viene alimentata elettricamentendash Genericamente indicata con il termine RAM Random Access Memory percheacute
il tempo di accesso ad una cella di memoria non dipende dalla sua posizione fisica (e` lo stesso per tutte le celle)
Programmi applicativi e dati
Zona riservata al sistema operativo
Area libera
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 13
Esecuzione di un programma Caricamento programma e dati in memoria Fetch 1^ istruzione in linguaggio macchina (preleva dalla memoria
lrsquoistruzione e la porta al procesore) decode (il processore decodifica lrsquoistruzione da eseguire) execute (il processore esegue le operazioni corrispondenti allrsquoistruzione)
2^ istruzione 3^ istruzione Quando il programma termina puograve essere eliminato dalla memoria
Problema come generare la lista di istruzioni in linguaggio assembly
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 14
Compilatori
Fino agli anni 50 i programmatori scrivevano codice in linguaggio Assembly rarr codice specifico per la macchina utilizzata cambiare processore significa cambiare codice
Per mezzo dei compilatori egrave possibile scrivere codice ad alto livello che viene automaticamente tradotto in linguaggio macchina dal compilatore
Esportando codice ad alto livello e compilandolo con diversi compilatori egrave possibile generare codice per macchine diverse
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 15
Compilatori
Codice Pascal (alto livello)
Codice macchina Linux Codice macchina Windows Codice macchina Mac
Compilatore Linux Compilatore Windows Compilatore Mac
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 16
Compilatori A differenza dei compilatori che traducono ed eseguono un intero
programma gli interpreti traducono ed eseguono immediatamente ogni istruzione
Un interprete realizza in pratica una ldquomacchina virtualerdquo pronta ad eseguire ogni istruzione che viene digitata dal programmatore letta da un file contenente una serie di istruzioni
E piugrave efficiente utilizzare un compilatore rispetto ad un interprete quando un programma viene eseguito piugrave volte in quanto la traduzione viene effettuata una volta per tutte
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 17
Compilatori
Compilatore
Programma oggetto
Linker
Eseguibile
Esecutore
LibrerieErrori del linker
Programma sorgente (alto livello)
Output ed errori di esecuzione
Errori di compilazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 18
JVM
Java Virtual Machine (JVM) rarr macchina astratta in grado di eseguire un codice di basso livello (simile a un codice macchina) chiamato bytecodeE un interprete
Codice di alto livello rarr file javaByte code rarr file class
HelloWorldjava
Compilatore (javac)
HelloWorldclass
Interprete (java)
Esecutore (PC)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 19
JVMLa compilazione (javac) egrave indipendente dalla macchina reale di cui si dispone il file class generato egrave lo stesso su una macchina Windows Linux
Linterprete (java) dipende dalla specifica macchine
Si ottiene oltre alla portabilitagrave del codice sorgente ad alto livello (file java) anche la portabilitagrave del codice compilato (file class)
Sono disponibili librerie (package) in bytecode che possono essere utilizzate da qualunque macchina
Durante la compilazione il compilatore accede alle librerie per verificare luso corretto delle risorse disponibili ndash non include nel bytecode generato il codice delle librerie
Durante lesecuzione la JVM carica il bytecode del programma e quello delle librerie che vengono utilizzate
Ad esempio applet java nei browser rarr il browser contiene un jvm che interpreta il bytecode e lo esegue indipendentemente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 20
JVMCodice java (java)
Macchina Linux Macchina Windows Macchina Mac
Interprete Linux Interprete Windows Interprete Mac
Compilatore (javac)
Bytecode
Pacakges
Indipendente dalla piattaformaDipendente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 21
Cosa installarePer chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA
Addison-Wesley Pearson Education Italia II edizione
JDK (ver 15) httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 50 English JDK Programmer guides 50 English
Package prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Per chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA Addison-Wesley Pearson Education Italia III edizione
JDK (ver 16) httpjavasuncomproductsarchivej2se6u6indexhtml [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 60 English JDK Programmer guides 60 English
Package prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 9
Processore Ogni modello di microprocessore egrave in grado di riconoscere solo
programmi scritti nel proprio linguaggio macchina Ogni modello di microprocessore ha un proprio linguaggio macchina
diverso da quello di altri processori Il linguaggio macchina contiene tutte e sole le istruzioni che possono
essere eseguite direttamente dal microprocessore Ogni istruzione del linguaggio macchina viene eseguita dal
microprocessore svolgendo una serie di operazioni elementari Il numero di operazioni elementari necessario per completare
lrsquoesecuzione di unrsquoistruzione in linguaggio macchina egrave dellrsquoordine di 7-10
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 10
Processore Lrsquoesecuzione di un programma richiede caricamento del programma
dal disco alla memoria centrale codice macchina pronto per lrsquoesecuzione
per ogni istruzione del programma esecuzione di tre tipi di operazionindash Fetch (il processore preleva dalla memoria lrsquoistruzione da eseguire
e la carica al suo interno)ndash Decode (il processore decodifica lrsquoistruzione da eseguire)ndash Execute (il processore esegue le operazioni corrispondenti
allrsquoistruzione)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 11
Processore Registri Sono la memoria interna al processore Usati come ldquoappoggiordquo durante lrsquoesecuzione delle istruzioni per
trasferire i dati dallaalla memoria per salvare i risultati parziali delle operazioni artimeticologiche
Sono solitamente poche decine (32-64)
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registro
registro
registro
registro
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registroregistro
registroregistro
registroregistro
registroregistro
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 12
Memoria centrale Organizzazione in celle di memoria Ogni dato istruzione egrave identificabile per mezzo di un indirizzo Memoria volatile
ndash Perde il suo contenuto se non viene alimentata elettricamentendash Genericamente indicata con il termine RAM Random Access Memory percheacute
il tempo di accesso ad una cella di memoria non dipende dalla sua posizione fisica (e` lo stesso per tutte le celle)
Programmi applicativi e dati
Zona riservata al sistema operativo
Area libera
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 13
Esecuzione di un programma Caricamento programma e dati in memoria Fetch 1^ istruzione in linguaggio macchina (preleva dalla memoria
lrsquoistruzione e la porta al procesore) decode (il processore decodifica lrsquoistruzione da eseguire) execute (il processore esegue le operazioni corrispondenti allrsquoistruzione)
2^ istruzione 3^ istruzione Quando il programma termina puograve essere eliminato dalla memoria
Problema come generare la lista di istruzioni in linguaggio assembly
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 14
Compilatori
Fino agli anni 50 i programmatori scrivevano codice in linguaggio Assembly rarr codice specifico per la macchina utilizzata cambiare processore significa cambiare codice
Per mezzo dei compilatori egrave possibile scrivere codice ad alto livello che viene automaticamente tradotto in linguaggio macchina dal compilatore
Esportando codice ad alto livello e compilandolo con diversi compilatori egrave possibile generare codice per macchine diverse
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 15
Compilatori
Codice Pascal (alto livello)
Codice macchina Linux Codice macchina Windows Codice macchina Mac
Compilatore Linux Compilatore Windows Compilatore Mac
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 16
Compilatori A differenza dei compilatori che traducono ed eseguono un intero
programma gli interpreti traducono ed eseguono immediatamente ogni istruzione
Un interprete realizza in pratica una ldquomacchina virtualerdquo pronta ad eseguire ogni istruzione che viene digitata dal programmatore letta da un file contenente una serie di istruzioni
E piugrave efficiente utilizzare un compilatore rispetto ad un interprete quando un programma viene eseguito piugrave volte in quanto la traduzione viene effettuata una volta per tutte
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 17
Compilatori
Compilatore
Programma oggetto
Linker
Eseguibile
Esecutore
LibrerieErrori del linker
Programma sorgente (alto livello)
Output ed errori di esecuzione
Errori di compilazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 18
JVM
Java Virtual Machine (JVM) rarr macchina astratta in grado di eseguire un codice di basso livello (simile a un codice macchina) chiamato bytecodeE un interprete
Codice di alto livello rarr file javaByte code rarr file class
HelloWorldjava
Compilatore (javac)
HelloWorldclass
Interprete (java)
Esecutore (PC)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 19
JVMLa compilazione (javac) egrave indipendente dalla macchina reale di cui si dispone il file class generato egrave lo stesso su una macchina Windows Linux
Linterprete (java) dipende dalla specifica macchine
Si ottiene oltre alla portabilitagrave del codice sorgente ad alto livello (file java) anche la portabilitagrave del codice compilato (file class)
Sono disponibili librerie (package) in bytecode che possono essere utilizzate da qualunque macchina
Durante la compilazione il compilatore accede alle librerie per verificare luso corretto delle risorse disponibili ndash non include nel bytecode generato il codice delle librerie
Durante lesecuzione la JVM carica il bytecode del programma e quello delle librerie che vengono utilizzate
Ad esempio applet java nei browser rarr il browser contiene un jvm che interpreta il bytecode e lo esegue indipendentemente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 20
JVMCodice java (java)
Macchina Linux Macchina Windows Macchina Mac
Interprete Linux Interprete Windows Interprete Mac
Compilatore (javac)
Bytecode
Pacakges
Indipendente dalla piattaformaDipendente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 21
Cosa installarePer chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA
Addison-Wesley Pearson Education Italia II edizione
JDK (ver 15) httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 50 English JDK Programmer guides 50 English
Package prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Per chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA Addison-Wesley Pearson Education Italia III edizione
JDK (ver 16) httpjavasuncomproductsarchivej2se6u6indexhtml [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 60 English JDK Programmer guides 60 English
Package prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 10
Processore Lrsquoesecuzione di un programma richiede caricamento del programma
dal disco alla memoria centrale codice macchina pronto per lrsquoesecuzione
per ogni istruzione del programma esecuzione di tre tipi di operazionindash Fetch (il processore preleva dalla memoria lrsquoistruzione da eseguire
e la carica al suo interno)ndash Decode (il processore decodifica lrsquoistruzione da eseguire)ndash Execute (il processore esegue le operazioni corrispondenti
allrsquoistruzione)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 11
Processore Registri Sono la memoria interna al processore Usati come ldquoappoggiordquo durante lrsquoesecuzione delle istruzioni per
trasferire i dati dallaalla memoria per salvare i risultati parziali delle operazioni artimeticologiche
Sono solitamente poche decine (32-64)
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registro
registro
registro
registro
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registroregistro
registroregistro
registroregistro
registroregistro
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 12
Memoria centrale Organizzazione in celle di memoria Ogni dato istruzione egrave identificabile per mezzo di un indirizzo Memoria volatile
ndash Perde il suo contenuto se non viene alimentata elettricamentendash Genericamente indicata con il termine RAM Random Access Memory percheacute
il tempo di accesso ad una cella di memoria non dipende dalla sua posizione fisica (e` lo stesso per tutte le celle)
Programmi applicativi e dati
Zona riservata al sistema operativo
Area libera
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 13
Esecuzione di un programma Caricamento programma e dati in memoria Fetch 1^ istruzione in linguaggio macchina (preleva dalla memoria
lrsquoistruzione e la porta al procesore) decode (il processore decodifica lrsquoistruzione da eseguire) execute (il processore esegue le operazioni corrispondenti allrsquoistruzione)
2^ istruzione 3^ istruzione Quando il programma termina puograve essere eliminato dalla memoria
Problema come generare la lista di istruzioni in linguaggio assembly
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 14
Compilatori
Fino agli anni 50 i programmatori scrivevano codice in linguaggio Assembly rarr codice specifico per la macchina utilizzata cambiare processore significa cambiare codice
Per mezzo dei compilatori egrave possibile scrivere codice ad alto livello che viene automaticamente tradotto in linguaggio macchina dal compilatore
Esportando codice ad alto livello e compilandolo con diversi compilatori egrave possibile generare codice per macchine diverse
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 15
Compilatori
Codice Pascal (alto livello)
Codice macchina Linux Codice macchina Windows Codice macchina Mac
Compilatore Linux Compilatore Windows Compilatore Mac
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 16
Compilatori A differenza dei compilatori che traducono ed eseguono un intero
programma gli interpreti traducono ed eseguono immediatamente ogni istruzione
Un interprete realizza in pratica una ldquomacchina virtualerdquo pronta ad eseguire ogni istruzione che viene digitata dal programmatore letta da un file contenente una serie di istruzioni
E piugrave efficiente utilizzare un compilatore rispetto ad un interprete quando un programma viene eseguito piugrave volte in quanto la traduzione viene effettuata una volta per tutte
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 17
Compilatori
Compilatore
Programma oggetto
Linker
Eseguibile
Esecutore
LibrerieErrori del linker
Programma sorgente (alto livello)
Output ed errori di esecuzione
Errori di compilazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 18
JVM
Java Virtual Machine (JVM) rarr macchina astratta in grado di eseguire un codice di basso livello (simile a un codice macchina) chiamato bytecodeE un interprete
Codice di alto livello rarr file javaByte code rarr file class
HelloWorldjava
Compilatore (javac)
HelloWorldclass
Interprete (java)
Esecutore (PC)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 19
JVMLa compilazione (javac) egrave indipendente dalla macchina reale di cui si dispone il file class generato egrave lo stesso su una macchina Windows Linux
Linterprete (java) dipende dalla specifica macchine
Si ottiene oltre alla portabilitagrave del codice sorgente ad alto livello (file java) anche la portabilitagrave del codice compilato (file class)
Sono disponibili librerie (package) in bytecode che possono essere utilizzate da qualunque macchina
Durante la compilazione il compilatore accede alle librerie per verificare luso corretto delle risorse disponibili ndash non include nel bytecode generato il codice delle librerie
Durante lesecuzione la JVM carica il bytecode del programma e quello delle librerie che vengono utilizzate
Ad esempio applet java nei browser rarr il browser contiene un jvm che interpreta il bytecode e lo esegue indipendentemente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 20
JVMCodice java (java)
Macchina Linux Macchina Windows Macchina Mac
Interprete Linux Interprete Windows Interprete Mac
Compilatore (javac)
Bytecode
Pacakges
Indipendente dalla piattaformaDipendente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 21
Cosa installarePer chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA
Addison-Wesley Pearson Education Italia II edizione
JDK (ver 15) httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 50 English JDK Programmer guides 50 English
Package prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Per chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA Addison-Wesley Pearson Education Italia III edizione
JDK (ver 16) httpjavasuncomproductsarchivej2se6u6indexhtml [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 60 English JDK Programmer guides 60 English
Package prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 11
Processore Registri Sono la memoria interna al processore Usati come ldquoappoggiordquo durante lrsquoesecuzione delle istruzioni per
trasferire i dati dallaalla memoria per salvare i risultati parziali delle operazioni artimeticologiche
Sono solitamente poche decine (32-64)
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registro
registro
registro
registro
processorememoria
interfaccia alle periferiche
bus
di s
iste
ma
registroregistro
registroregistro
registroregistro
registroregistro
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 12
Memoria centrale Organizzazione in celle di memoria Ogni dato istruzione egrave identificabile per mezzo di un indirizzo Memoria volatile
ndash Perde il suo contenuto se non viene alimentata elettricamentendash Genericamente indicata con il termine RAM Random Access Memory percheacute
il tempo di accesso ad una cella di memoria non dipende dalla sua posizione fisica (e` lo stesso per tutte le celle)
Programmi applicativi e dati
Zona riservata al sistema operativo
Area libera
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 13
Esecuzione di un programma Caricamento programma e dati in memoria Fetch 1^ istruzione in linguaggio macchina (preleva dalla memoria
lrsquoistruzione e la porta al procesore) decode (il processore decodifica lrsquoistruzione da eseguire) execute (il processore esegue le operazioni corrispondenti allrsquoistruzione)
2^ istruzione 3^ istruzione Quando il programma termina puograve essere eliminato dalla memoria
Problema come generare la lista di istruzioni in linguaggio assembly
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 14
Compilatori
Fino agli anni 50 i programmatori scrivevano codice in linguaggio Assembly rarr codice specifico per la macchina utilizzata cambiare processore significa cambiare codice
Per mezzo dei compilatori egrave possibile scrivere codice ad alto livello che viene automaticamente tradotto in linguaggio macchina dal compilatore
Esportando codice ad alto livello e compilandolo con diversi compilatori egrave possibile generare codice per macchine diverse
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 15
Compilatori
Codice Pascal (alto livello)
Codice macchina Linux Codice macchina Windows Codice macchina Mac
Compilatore Linux Compilatore Windows Compilatore Mac
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 16
Compilatori A differenza dei compilatori che traducono ed eseguono un intero
programma gli interpreti traducono ed eseguono immediatamente ogni istruzione
Un interprete realizza in pratica una ldquomacchina virtualerdquo pronta ad eseguire ogni istruzione che viene digitata dal programmatore letta da un file contenente una serie di istruzioni
E piugrave efficiente utilizzare un compilatore rispetto ad un interprete quando un programma viene eseguito piugrave volte in quanto la traduzione viene effettuata una volta per tutte
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 17
Compilatori
Compilatore
Programma oggetto
Linker
Eseguibile
Esecutore
LibrerieErrori del linker
Programma sorgente (alto livello)
Output ed errori di esecuzione
Errori di compilazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 18
JVM
Java Virtual Machine (JVM) rarr macchina astratta in grado di eseguire un codice di basso livello (simile a un codice macchina) chiamato bytecodeE un interprete
Codice di alto livello rarr file javaByte code rarr file class
HelloWorldjava
Compilatore (javac)
HelloWorldclass
Interprete (java)
Esecutore (PC)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 19
JVMLa compilazione (javac) egrave indipendente dalla macchina reale di cui si dispone il file class generato egrave lo stesso su una macchina Windows Linux
Linterprete (java) dipende dalla specifica macchine
Si ottiene oltre alla portabilitagrave del codice sorgente ad alto livello (file java) anche la portabilitagrave del codice compilato (file class)
Sono disponibili librerie (package) in bytecode che possono essere utilizzate da qualunque macchina
Durante la compilazione il compilatore accede alle librerie per verificare luso corretto delle risorse disponibili ndash non include nel bytecode generato il codice delle librerie
Durante lesecuzione la JVM carica il bytecode del programma e quello delle librerie che vengono utilizzate
Ad esempio applet java nei browser rarr il browser contiene un jvm che interpreta il bytecode e lo esegue indipendentemente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 20
JVMCodice java (java)
Macchina Linux Macchina Windows Macchina Mac
Interprete Linux Interprete Windows Interprete Mac
Compilatore (javac)
Bytecode
Pacakges
Indipendente dalla piattaformaDipendente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 21
Cosa installarePer chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA
Addison-Wesley Pearson Education Italia II edizione
JDK (ver 15) httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 50 English JDK Programmer guides 50 English
Package prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Per chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA Addison-Wesley Pearson Education Italia III edizione
JDK (ver 16) httpjavasuncomproductsarchivej2se6u6indexhtml [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 60 English JDK Programmer guides 60 English
Package prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 12
Memoria centrale Organizzazione in celle di memoria Ogni dato istruzione egrave identificabile per mezzo di un indirizzo Memoria volatile
ndash Perde il suo contenuto se non viene alimentata elettricamentendash Genericamente indicata con il termine RAM Random Access Memory percheacute
il tempo di accesso ad una cella di memoria non dipende dalla sua posizione fisica (e` lo stesso per tutte le celle)
Programmi applicativi e dati
Zona riservata al sistema operativo
Area libera
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 13
Esecuzione di un programma Caricamento programma e dati in memoria Fetch 1^ istruzione in linguaggio macchina (preleva dalla memoria
lrsquoistruzione e la porta al procesore) decode (il processore decodifica lrsquoistruzione da eseguire) execute (il processore esegue le operazioni corrispondenti allrsquoistruzione)
2^ istruzione 3^ istruzione Quando il programma termina puograve essere eliminato dalla memoria
Problema come generare la lista di istruzioni in linguaggio assembly
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 14
Compilatori
Fino agli anni 50 i programmatori scrivevano codice in linguaggio Assembly rarr codice specifico per la macchina utilizzata cambiare processore significa cambiare codice
Per mezzo dei compilatori egrave possibile scrivere codice ad alto livello che viene automaticamente tradotto in linguaggio macchina dal compilatore
Esportando codice ad alto livello e compilandolo con diversi compilatori egrave possibile generare codice per macchine diverse
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 15
Compilatori
Codice Pascal (alto livello)
Codice macchina Linux Codice macchina Windows Codice macchina Mac
Compilatore Linux Compilatore Windows Compilatore Mac
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 16
Compilatori A differenza dei compilatori che traducono ed eseguono un intero
programma gli interpreti traducono ed eseguono immediatamente ogni istruzione
Un interprete realizza in pratica una ldquomacchina virtualerdquo pronta ad eseguire ogni istruzione che viene digitata dal programmatore letta da un file contenente una serie di istruzioni
E piugrave efficiente utilizzare un compilatore rispetto ad un interprete quando un programma viene eseguito piugrave volte in quanto la traduzione viene effettuata una volta per tutte
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 17
Compilatori
Compilatore
Programma oggetto
Linker
Eseguibile
Esecutore
LibrerieErrori del linker
Programma sorgente (alto livello)
Output ed errori di esecuzione
Errori di compilazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 18
JVM
Java Virtual Machine (JVM) rarr macchina astratta in grado di eseguire un codice di basso livello (simile a un codice macchina) chiamato bytecodeE un interprete
Codice di alto livello rarr file javaByte code rarr file class
HelloWorldjava
Compilatore (javac)
HelloWorldclass
Interprete (java)
Esecutore (PC)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 19
JVMLa compilazione (javac) egrave indipendente dalla macchina reale di cui si dispone il file class generato egrave lo stesso su una macchina Windows Linux
Linterprete (java) dipende dalla specifica macchine
Si ottiene oltre alla portabilitagrave del codice sorgente ad alto livello (file java) anche la portabilitagrave del codice compilato (file class)
Sono disponibili librerie (package) in bytecode che possono essere utilizzate da qualunque macchina
Durante la compilazione il compilatore accede alle librerie per verificare luso corretto delle risorse disponibili ndash non include nel bytecode generato il codice delle librerie
Durante lesecuzione la JVM carica il bytecode del programma e quello delle librerie che vengono utilizzate
Ad esempio applet java nei browser rarr il browser contiene un jvm che interpreta il bytecode e lo esegue indipendentemente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 20
JVMCodice java (java)
Macchina Linux Macchina Windows Macchina Mac
Interprete Linux Interprete Windows Interprete Mac
Compilatore (javac)
Bytecode
Pacakges
Indipendente dalla piattaformaDipendente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 21
Cosa installarePer chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA
Addison-Wesley Pearson Education Italia II edizione
JDK (ver 15) httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 50 English JDK Programmer guides 50 English
Package prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Per chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA Addison-Wesley Pearson Education Italia III edizione
JDK (ver 16) httpjavasuncomproductsarchivej2se6u6indexhtml [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 60 English JDK Programmer guides 60 English
Package prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 13
Esecuzione di un programma Caricamento programma e dati in memoria Fetch 1^ istruzione in linguaggio macchina (preleva dalla memoria
lrsquoistruzione e la porta al procesore) decode (il processore decodifica lrsquoistruzione da eseguire) execute (il processore esegue le operazioni corrispondenti allrsquoistruzione)
2^ istruzione 3^ istruzione Quando il programma termina puograve essere eliminato dalla memoria
Problema come generare la lista di istruzioni in linguaggio assembly
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 14
Compilatori
Fino agli anni 50 i programmatori scrivevano codice in linguaggio Assembly rarr codice specifico per la macchina utilizzata cambiare processore significa cambiare codice
Per mezzo dei compilatori egrave possibile scrivere codice ad alto livello che viene automaticamente tradotto in linguaggio macchina dal compilatore
Esportando codice ad alto livello e compilandolo con diversi compilatori egrave possibile generare codice per macchine diverse
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 15
Compilatori
Codice Pascal (alto livello)
Codice macchina Linux Codice macchina Windows Codice macchina Mac
Compilatore Linux Compilatore Windows Compilatore Mac
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 16
Compilatori A differenza dei compilatori che traducono ed eseguono un intero
programma gli interpreti traducono ed eseguono immediatamente ogni istruzione
Un interprete realizza in pratica una ldquomacchina virtualerdquo pronta ad eseguire ogni istruzione che viene digitata dal programmatore letta da un file contenente una serie di istruzioni
E piugrave efficiente utilizzare un compilatore rispetto ad un interprete quando un programma viene eseguito piugrave volte in quanto la traduzione viene effettuata una volta per tutte
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 17
Compilatori
Compilatore
Programma oggetto
Linker
Eseguibile
Esecutore
LibrerieErrori del linker
Programma sorgente (alto livello)
Output ed errori di esecuzione
Errori di compilazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 18
JVM
Java Virtual Machine (JVM) rarr macchina astratta in grado di eseguire un codice di basso livello (simile a un codice macchina) chiamato bytecodeE un interprete
Codice di alto livello rarr file javaByte code rarr file class
HelloWorldjava
Compilatore (javac)
HelloWorldclass
Interprete (java)
Esecutore (PC)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 19
JVMLa compilazione (javac) egrave indipendente dalla macchina reale di cui si dispone il file class generato egrave lo stesso su una macchina Windows Linux
Linterprete (java) dipende dalla specifica macchine
Si ottiene oltre alla portabilitagrave del codice sorgente ad alto livello (file java) anche la portabilitagrave del codice compilato (file class)
Sono disponibili librerie (package) in bytecode che possono essere utilizzate da qualunque macchina
Durante la compilazione il compilatore accede alle librerie per verificare luso corretto delle risorse disponibili ndash non include nel bytecode generato il codice delle librerie
Durante lesecuzione la JVM carica il bytecode del programma e quello delle librerie che vengono utilizzate
Ad esempio applet java nei browser rarr il browser contiene un jvm che interpreta il bytecode e lo esegue indipendentemente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 20
JVMCodice java (java)
Macchina Linux Macchina Windows Macchina Mac
Interprete Linux Interprete Windows Interprete Mac
Compilatore (javac)
Bytecode
Pacakges
Indipendente dalla piattaformaDipendente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 21
Cosa installarePer chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA
Addison-Wesley Pearson Education Italia II edizione
JDK (ver 15) httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 50 English JDK Programmer guides 50 English
Package prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Per chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA Addison-Wesley Pearson Education Italia III edizione
JDK (ver 16) httpjavasuncomproductsarchivej2se6u6indexhtml [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 60 English JDK Programmer guides 60 English
Package prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 14
Compilatori
Fino agli anni 50 i programmatori scrivevano codice in linguaggio Assembly rarr codice specifico per la macchina utilizzata cambiare processore significa cambiare codice
Per mezzo dei compilatori egrave possibile scrivere codice ad alto livello che viene automaticamente tradotto in linguaggio macchina dal compilatore
Esportando codice ad alto livello e compilandolo con diversi compilatori egrave possibile generare codice per macchine diverse
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 15
Compilatori
Codice Pascal (alto livello)
Codice macchina Linux Codice macchina Windows Codice macchina Mac
Compilatore Linux Compilatore Windows Compilatore Mac
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 16
Compilatori A differenza dei compilatori che traducono ed eseguono un intero
programma gli interpreti traducono ed eseguono immediatamente ogni istruzione
Un interprete realizza in pratica una ldquomacchina virtualerdquo pronta ad eseguire ogni istruzione che viene digitata dal programmatore letta da un file contenente una serie di istruzioni
E piugrave efficiente utilizzare un compilatore rispetto ad un interprete quando un programma viene eseguito piugrave volte in quanto la traduzione viene effettuata una volta per tutte
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 17
Compilatori
Compilatore
Programma oggetto
Linker
Eseguibile
Esecutore
LibrerieErrori del linker
Programma sorgente (alto livello)
Output ed errori di esecuzione
Errori di compilazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 18
JVM
Java Virtual Machine (JVM) rarr macchina astratta in grado di eseguire un codice di basso livello (simile a un codice macchina) chiamato bytecodeE un interprete
Codice di alto livello rarr file javaByte code rarr file class
HelloWorldjava
Compilatore (javac)
HelloWorldclass
Interprete (java)
Esecutore (PC)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 19
JVMLa compilazione (javac) egrave indipendente dalla macchina reale di cui si dispone il file class generato egrave lo stesso su una macchina Windows Linux
Linterprete (java) dipende dalla specifica macchine
Si ottiene oltre alla portabilitagrave del codice sorgente ad alto livello (file java) anche la portabilitagrave del codice compilato (file class)
Sono disponibili librerie (package) in bytecode che possono essere utilizzate da qualunque macchina
Durante la compilazione il compilatore accede alle librerie per verificare luso corretto delle risorse disponibili ndash non include nel bytecode generato il codice delle librerie
Durante lesecuzione la JVM carica il bytecode del programma e quello delle librerie che vengono utilizzate
Ad esempio applet java nei browser rarr il browser contiene un jvm che interpreta il bytecode e lo esegue indipendentemente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 20
JVMCodice java (java)
Macchina Linux Macchina Windows Macchina Mac
Interprete Linux Interprete Windows Interprete Mac
Compilatore (javac)
Bytecode
Pacakges
Indipendente dalla piattaformaDipendente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 21
Cosa installarePer chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA
Addison-Wesley Pearson Education Italia II edizione
JDK (ver 15) httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 50 English JDK Programmer guides 50 English
Package prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Per chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA Addison-Wesley Pearson Education Italia III edizione
JDK (ver 16) httpjavasuncomproductsarchivej2se6u6indexhtml [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 60 English JDK Programmer guides 60 English
Package prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 15
Compilatori
Codice Pascal (alto livello)
Codice macchina Linux Codice macchina Windows Codice macchina Mac
Compilatore Linux Compilatore Windows Compilatore Mac
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 16
Compilatori A differenza dei compilatori che traducono ed eseguono un intero
programma gli interpreti traducono ed eseguono immediatamente ogni istruzione
Un interprete realizza in pratica una ldquomacchina virtualerdquo pronta ad eseguire ogni istruzione che viene digitata dal programmatore letta da un file contenente una serie di istruzioni
E piugrave efficiente utilizzare un compilatore rispetto ad un interprete quando un programma viene eseguito piugrave volte in quanto la traduzione viene effettuata una volta per tutte
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 17
Compilatori
Compilatore
Programma oggetto
Linker
Eseguibile
Esecutore
LibrerieErrori del linker
Programma sorgente (alto livello)
Output ed errori di esecuzione
Errori di compilazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 18
JVM
Java Virtual Machine (JVM) rarr macchina astratta in grado di eseguire un codice di basso livello (simile a un codice macchina) chiamato bytecodeE un interprete
Codice di alto livello rarr file javaByte code rarr file class
HelloWorldjava
Compilatore (javac)
HelloWorldclass
Interprete (java)
Esecutore (PC)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 19
JVMLa compilazione (javac) egrave indipendente dalla macchina reale di cui si dispone il file class generato egrave lo stesso su una macchina Windows Linux
Linterprete (java) dipende dalla specifica macchine
Si ottiene oltre alla portabilitagrave del codice sorgente ad alto livello (file java) anche la portabilitagrave del codice compilato (file class)
Sono disponibili librerie (package) in bytecode che possono essere utilizzate da qualunque macchina
Durante la compilazione il compilatore accede alle librerie per verificare luso corretto delle risorse disponibili ndash non include nel bytecode generato il codice delle librerie
Durante lesecuzione la JVM carica il bytecode del programma e quello delle librerie che vengono utilizzate
Ad esempio applet java nei browser rarr il browser contiene un jvm che interpreta il bytecode e lo esegue indipendentemente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 20
JVMCodice java (java)
Macchina Linux Macchina Windows Macchina Mac
Interprete Linux Interprete Windows Interprete Mac
Compilatore (javac)
Bytecode
Pacakges
Indipendente dalla piattaformaDipendente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 21
Cosa installarePer chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA
Addison-Wesley Pearson Education Italia II edizione
JDK (ver 15) httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 50 English JDK Programmer guides 50 English
Package prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Per chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA Addison-Wesley Pearson Education Italia III edizione
JDK (ver 16) httpjavasuncomproductsarchivej2se6u6indexhtml [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 60 English JDK Programmer guides 60 English
Package prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 16
Compilatori A differenza dei compilatori che traducono ed eseguono un intero
programma gli interpreti traducono ed eseguono immediatamente ogni istruzione
Un interprete realizza in pratica una ldquomacchina virtualerdquo pronta ad eseguire ogni istruzione che viene digitata dal programmatore letta da un file contenente una serie di istruzioni
E piugrave efficiente utilizzare un compilatore rispetto ad un interprete quando un programma viene eseguito piugrave volte in quanto la traduzione viene effettuata una volta per tutte
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 17
Compilatori
Compilatore
Programma oggetto
Linker
Eseguibile
Esecutore
LibrerieErrori del linker
Programma sorgente (alto livello)
Output ed errori di esecuzione
Errori di compilazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 18
JVM
Java Virtual Machine (JVM) rarr macchina astratta in grado di eseguire un codice di basso livello (simile a un codice macchina) chiamato bytecodeE un interprete
Codice di alto livello rarr file javaByte code rarr file class
HelloWorldjava
Compilatore (javac)
HelloWorldclass
Interprete (java)
Esecutore (PC)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 19
JVMLa compilazione (javac) egrave indipendente dalla macchina reale di cui si dispone il file class generato egrave lo stesso su una macchina Windows Linux
Linterprete (java) dipende dalla specifica macchine
Si ottiene oltre alla portabilitagrave del codice sorgente ad alto livello (file java) anche la portabilitagrave del codice compilato (file class)
Sono disponibili librerie (package) in bytecode che possono essere utilizzate da qualunque macchina
Durante la compilazione il compilatore accede alle librerie per verificare luso corretto delle risorse disponibili ndash non include nel bytecode generato il codice delle librerie
Durante lesecuzione la JVM carica il bytecode del programma e quello delle librerie che vengono utilizzate
Ad esempio applet java nei browser rarr il browser contiene un jvm che interpreta il bytecode e lo esegue indipendentemente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 20
JVMCodice java (java)
Macchina Linux Macchina Windows Macchina Mac
Interprete Linux Interprete Windows Interprete Mac
Compilatore (javac)
Bytecode
Pacakges
Indipendente dalla piattaformaDipendente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 21
Cosa installarePer chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA
Addison-Wesley Pearson Education Italia II edizione
JDK (ver 15) httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 50 English JDK Programmer guides 50 English
Package prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Per chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA Addison-Wesley Pearson Education Italia III edizione
JDK (ver 16) httpjavasuncomproductsarchivej2se6u6indexhtml [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 60 English JDK Programmer guides 60 English
Package prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 17
Compilatori
Compilatore
Programma oggetto
Linker
Eseguibile
Esecutore
LibrerieErrori del linker
Programma sorgente (alto livello)
Output ed errori di esecuzione
Errori di compilazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 18
JVM
Java Virtual Machine (JVM) rarr macchina astratta in grado di eseguire un codice di basso livello (simile a un codice macchina) chiamato bytecodeE un interprete
Codice di alto livello rarr file javaByte code rarr file class
HelloWorldjava
Compilatore (javac)
HelloWorldclass
Interprete (java)
Esecutore (PC)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 19
JVMLa compilazione (javac) egrave indipendente dalla macchina reale di cui si dispone il file class generato egrave lo stesso su una macchina Windows Linux
Linterprete (java) dipende dalla specifica macchine
Si ottiene oltre alla portabilitagrave del codice sorgente ad alto livello (file java) anche la portabilitagrave del codice compilato (file class)
Sono disponibili librerie (package) in bytecode che possono essere utilizzate da qualunque macchina
Durante la compilazione il compilatore accede alle librerie per verificare luso corretto delle risorse disponibili ndash non include nel bytecode generato il codice delle librerie
Durante lesecuzione la JVM carica il bytecode del programma e quello delle librerie che vengono utilizzate
Ad esempio applet java nei browser rarr il browser contiene un jvm che interpreta il bytecode e lo esegue indipendentemente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 20
JVMCodice java (java)
Macchina Linux Macchina Windows Macchina Mac
Interprete Linux Interprete Windows Interprete Mac
Compilatore (javac)
Bytecode
Pacakges
Indipendente dalla piattaformaDipendente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 21
Cosa installarePer chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA
Addison-Wesley Pearson Education Italia II edizione
JDK (ver 15) httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 50 English JDK Programmer guides 50 English
Package prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Per chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA Addison-Wesley Pearson Education Italia III edizione
JDK (ver 16) httpjavasuncomproductsarchivej2se6u6indexhtml [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 60 English JDK Programmer guides 60 English
Package prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 18
JVM
Java Virtual Machine (JVM) rarr macchina astratta in grado di eseguire un codice di basso livello (simile a un codice macchina) chiamato bytecodeE un interprete
Codice di alto livello rarr file javaByte code rarr file class
HelloWorldjava
Compilatore (javac)
HelloWorldclass
Interprete (java)
Esecutore (PC)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 19
JVMLa compilazione (javac) egrave indipendente dalla macchina reale di cui si dispone il file class generato egrave lo stesso su una macchina Windows Linux
Linterprete (java) dipende dalla specifica macchine
Si ottiene oltre alla portabilitagrave del codice sorgente ad alto livello (file java) anche la portabilitagrave del codice compilato (file class)
Sono disponibili librerie (package) in bytecode che possono essere utilizzate da qualunque macchina
Durante la compilazione il compilatore accede alle librerie per verificare luso corretto delle risorse disponibili ndash non include nel bytecode generato il codice delle librerie
Durante lesecuzione la JVM carica il bytecode del programma e quello delle librerie che vengono utilizzate
Ad esempio applet java nei browser rarr il browser contiene un jvm che interpreta il bytecode e lo esegue indipendentemente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 20
JVMCodice java (java)
Macchina Linux Macchina Windows Macchina Mac
Interprete Linux Interprete Windows Interprete Mac
Compilatore (javac)
Bytecode
Pacakges
Indipendente dalla piattaformaDipendente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 21
Cosa installarePer chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA
Addison-Wesley Pearson Education Italia II edizione
JDK (ver 15) httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 50 English JDK Programmer guides 50 English
Package prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Per chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA Addison-Wesley Pearson Education Italia III edizione
JDK (ver 16) httpjavasuncomproductsarchivej2se6u6indexhtml [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 60 English JDK Programmer guides 60 English
Package prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 19
JVMLa compilazione (javac) egrave indipendente dalla macchina reale di cui si dispone il file class generato egrave lo stesso su una macchina Windows Linux
Linterprete (java) dipende dalla specifica macchine
Si ottiene oltre alla portabilitagrave del codice sorgente ad alto livello (file java) anche la portabilitagrave del codice compilato (file class)
Sono disponibili librerie (package) in bytecode che possono essere utilizzate da qualunque macchina
Durante la compilazione il compilatore accede alle librerie per verificare luso corretto delle risorse disponibili ndash non include nel bytecode generato il codice delle librerie
Durante lesecuzione la JVM carica il bytecode del programma e quello delle librerie che vengono utilizzate
Ad esempio applet java nei browser rarr il browser contiene un jvm che interpreta il bytecode e lo esegue indipendentemente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 20
JVMCodice java (java)
Macchina Linux Macchina Windows Macchina Mac
Interprete Linux Interprete Windows Interprete Mac
Compilatore (javac)
Bytecode
Pacakges
Indipendente dalla piattaformaDipendente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 21
Cosa installarePer chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA
Addison-Wesley Pearson Education Italia II edizione
JDK (ver 15) httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 50 English JDK Programmer guides 50 English
Package prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Per chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA Addison-Wesley Pearson Education Italia III edizione
JDK (ver 16) httpjavasuncomproductsarchivej2se6u6indexhtml [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 60 English JDK Programmer guides 60 English
Package prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 20
JVMCodice java (java)
Macchina Linux Macchina Windows Macchina Mac
Interprete Linux Interprete Windows Interprete Mac
Compilatore (javac)
Bytecode
Pacakges
Indipendente dalla piattaformaDipendente dalla piattaforma
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 21
Cosa installarePer chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA
Addison-Wesley Pearson Education Italia II edizione
JDK (ver 15) httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 50 English JDK Programmer guides 50 English
Package prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Per chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA Addison-Wesley Pearson Education Italia III edizione
JDK (ver 16) httpjavasuncomproductsarchivej2se6u6indexhtml [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 60 English JDK Programmer guides 60 English
Package prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 21
Cosa installarePer chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA
Addison-Wesley Pearson Education Italia II edizione
JDK (ver 15) httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 50 English JDK Programmer guides 50 English
Package prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 15) httpboldidsiunimiitCorsiProgrMat2008matagg rarr Materiale didattico aggiuntivo [Altrimenti disponibile nel CD distribuito con il libro di testo]
Per chi utilizza G Pighizzini M Ferrari Dai fondamenti agli oggetti Corso di programmazione JAVA Addison-Wesley Pearson Education Italia III edizione
JDK (ver 16) httpjavasuncomproductsarchivej2se6u6indexhtml [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione API Programmer guide httpjavasuncomjavasereferenceapijsp rarr Core API Docs 60 English JDK Programmer guides 60 English
Package prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Documentazione prog (ver 16) httppighizzinidicounimiitjblibrerie [Altrimenti disponibile nel CD distribuito con il libro di testo]
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 22
Installazione JDK (Windows)
- Dal sito web
httpjavacomit
Download gratuito di Java rarr verifica versione rarr tutti i download di Java rarr altre versioni di java rarr Versioni precedenti (Archivio download prodotti tecnologia Java) rarr JDKJRE 50 Update 15 rarr httpjavasuncomproductsarchivej2se50_15indexhtml rarr Download JDK rarr Windows multilanguage rarr Windows offline installation (jdk-1_5_0_03-windows-i586-pexe) rarr Esegui
- Dal CD del libro (II edizione) jdk-1_5_0_03-windows-i586-p-exe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 23
Installazione JDK (Windows)
- E probabile che sulla macchina sia giagrave installata una versione piugrave recente di Java (versione 6 aggiornamento7) ndash nel corso verragrave comunque sviluppato codice utilizzando Java 5
- Per linstallazione su macchina Windows egrave necessario avere i diritti di amministratore della macchina
- E consigliabile installare tutte le componenti del pacchetto di installazione
- Una volta terminata linstallazione (ver 5) i programmi si trovano in CProgrammiJavajdk150_15
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 24
Documentazione online
Documentazione on line
httpjavasuncomjavasereferenceapijsp
- Core API Docs 50 English (documentazione API)
- JDK Programmer guides 50 English (guida per il programmatore)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 25
Installazione documentazione
Download documentazione solo dal sito (non disponibile nel libro di testo)
httpjavasuncomjavasedownloadsindex_jdk5jsp
J2SE 50 Documentation rarr Download rarr English rarr jdk-1_5_0-doczip rarr salvare in CProgrammiJavajdk150_15 rarr ldquoEstrai quirdquo (WinRar) rarr Crea automaticamente la cartella ldquodocsrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 26
Cosa abbiamo installato
CProgrammiJavajdk150_15docs
CProgrammiJavajdk150_15docsindexhtml rarr Pagina principale della guida Java (consigliabile creare un collegamento sul desktop)
CProgrammiJavajdk150_15docsapiindexhtml rarr Guida per le APIs Java (consigliabile creare un collegamento sul desktop)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 27
Cosa abbiamo installato
CProgrammiJavajdk150_15bin
Javacexe rarr CompilatoreJavaexe rarr Java Virtual MachineJavadocexe rarr Strumento per la generazione automatica della documentazione dei programmi
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 28
Prompt di DOSNon essendo prevista uninterfaccia grafica egrave necessario utilizzare linterprete dei comandi di Windows (prompt MS-DOS)
Per lavvio del prompt MS-DOS Start rarr Programmi rarr Accessori rarr Prompt dei comandi
Comandi utili
- dir rarr lista dei file directory presenti nella directory corrente- cd ltnome directorygt rarr cambia la directory corrente- cd rarr scende di un livello- cd rarr scende alla radice
Per andare nella directory di Java quindi
- cd CProgrammiJavajdk150_15bin
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 29
Prompt di DOS
Altri comandi utili
- mkdir ltnome directorygt rarr crea una nuova directory- copy ltfile1gt ltfile2gt rarr copia di file- del ltnome filegt rarr elimina file- path rarr visualizza il valore della variabile di sistema path- set rarr visualizza la variabili di sistema e i loro valori
Help delle funzioni help set help del
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 30
Variabile di sistema PATH- La variabile di sistema PATH indica al prompt di dos le directory nelle quali cercare i file eseguibili
- le directory sono elencate separate da ldquordquo
- Cosa succede se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe non viene eseguito dal momento che non si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin non si trova nella variabile PATH
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 31
Variabile di sistema PATHPer aggiornare la variabile di sistema PATH
- Windows NT 2000 XP Avvio rarr Impostazioni rarr Pannello di controllo rarr Sistema (2 click) rarr Ambiente (NT) o Avanzate (XP 2000) rarr Variabili dambiente rarr Variabili utente oppure variabili di sistema rarr Selezionare PATH rarr Aggiungere il percorso con gli eseguibili Java (CProgrammiJavajdk150_15bin) rarr OK o applica
Attne E importante che nella variabile PATH non sia presente unaltra directory con unaltra versione Java (altrimenti quale Javacexe sceglie il prompt di dos rarr la prima che trova)
- Winows ME 98 rarr G Pighizzini M Ferrari ldquoDai fondamenti agli oggetti ndash Corso di programmazione Javardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 32
Variabile di sistema PATH
Cosa succede ora se
cd CProgrammiJavajdk150_15bincd Javac
- Javacexe viene eseguito dal momento che si trova in CProgrammiJavajdk150_15 e che CProgrammiJavajdk150_15bin si trova nella variabile PATH
E ora possibile scrivere unapplicazione Java in qualunque directory e ad esempio compilarla senza cambiare directory (lOS identifica automaticamente la posizione del compilatore della Java Virtual Machine )
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 33
Prima esecuzione
I File sorgente di Java sono file in formato testuale rarr Utilizzare un editor di testo (Blocco Note Wordpad ) per la creazione ed il salvataggio dei file Java
Dove si trova ldquoBlocco Noterdquo (Notepad) rarr Avvio rarr Programmi rarr Accessori rarr Blocco Note
Attne Al momento del salvataggio del file Blocco Note aggiunge automaticamente lestensione ldquotxtrdquo al file salvato Per essere accettati dal compilatore i file devono avere lestensione ldquojavardquo Per evitare che Blocco Note aggiunga lestensione ldquotxtrdquo egrave necessario specificare tra apici il nome del file al momento del salvataggio
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 34
Prima esecuzioneAprire ldquoBlocco NoterdquoPrimo programma Java
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Salvare il programma con il nome ldquoHelloWorldjavardquo nella directory prescelta ad esempio ldquoE_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjavardquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 35
Prima esecuzione
Per la compilazione Javac ltnomefilejavagt
Ad esempio javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Errori comuni
Nome file errato rarr il compilatore non trova il fileEstensione java mancante rarr il compilatore interpreta la stringa corrispondente al nome del file come un parametro
Se proviamo a compilare rarr viene generato un file class nella stessa directory in cui si trova il file java
Il file class egrave il file che puograve essere eseguito dalla Java Virtual Machine
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 36
Prima esecuzioneAltri errori individuati dal compilatore
Proviamo a modificare il codice di HelloWorldjava inserendo un errore sintattico ad esempio
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(Hello world) Qui manca un
Salviamo il file ldquojavardquo in E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 37
Prima esecuzione
Compiliamo javac E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorldHelloWorldjava
Il compilatore segnala lerrore di sintassi
In questo caso il bytecode (file class) non viene creato
Nota per lhelp del compilatore digitare ldquojava -hrdquo al prompt di dos
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 38
Prima esecuzionePer lesecuzione dobbiamo utilizzare la Java Virtual Machine
La sintassi per lutilizzo egraveJava ltfile class senza estensionegt
Quindi per eseguire la HelloWorldclass
Cambiamo la directory corrente per andare nella directory in cui egrave contenuto il file classcd E_Didattica_AA20082009_ProgrammazioneCodice000_HelloWorld (se non si vuole cambiare la directory si veda lopzione -classpath di Javaexe)
Invochiamo la Java Virtual MachineJava HelloWorld
Come risultato otteniamo a schermo la scritta ldquoHello Worldrdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 39
Installazione packageIn unapplicazione Java vengono in genere utilizzate
- Classi fornite con lambiente di sviluppo (API Application Programmer Interface)- Classi sviluppate in precedenza dal programmatore o da altri- Classi che compongono il programma
Le classi sono organizzate in librerie (in Java chiamate package)
Es HelloWorld utilizzate il package javalang System egrave una classe di tale package rarr egrave fornita con lambiente di sviluppo Java quindi il compilatore sa giagrave dove trovarla
Analogamente il compilatore trova tutte le classi che si trovano nella stessa directory della classe che si compila
Per package diversi da javalang file class in una directory diversa da quella di compilazione rarr necessaria limportazione
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 40
Installazione package
Per utilizzare un package
import ltnome della classegt
Queste sono le uniche istruzioni che possono (e devono) essere messe prima del corpo della
classe
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 41
Installazione packageRiscriviamo Hello world esplicitando direttamente limportazione del package javalang
Direttiva dimportazione per la casse System import javalangSystem
Hello world application class HelloWorld
Main methodpublic static void main(String [] args)
Systemoutprintln(ldquoHello worldrdquo)
Compilare (javac HelloWorldjava) eseguire (java HelloWorld)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 42
Installazione packageCome fare per utilizzare package diversi da javalang Vogliamo ad esempio utilizzare le classi ConsoleInputManager e ConsoleOutputManager del package progio rarr Le classi vanno importate esplicitamente Scriviamo una nuova applicazione che utilizzi queste classi per la gestione dellinput output
Direttive di importazione import progioConsoleOutputManagerimport progioConsoleInputManager
class GoodMorning
public static void main (String [] args)
ConsoleInputManager in = new ConsoleInputManager()ConsoleOutputManager out = new ConsoleOutputManager()String Name = inreadLine(ldquoWhats your name ldquo)outprintln(ldquoGoodMorning ldquo + Name + ldquordquo)
Proviamo a compilare
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 43
Installazione package
javac GoodMorningjava
GoodMorningjava2 class or interface expectedImport progioConsoleOutputManager^GoodMorningjava3 class or interface expectedImport progioConsoleInputManager^2 errors
Il compilatore segnala 2 errori di importazione relativi alle classi ConsoleOutputManager e ConsoleImputManagerLerrore egrave dovuto al fatto che il compilatore non trova ConsoleOutputManagerclass e ConsoleImputManagerclass nella stesa directory di GoodMorningjava e non sa dove cercare il package progio (le due classi sono contenute allinterno del package)
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 44
Installazione package
La direttiva di importazione indica il compilatore e alla Java Virtual Machine dove trovare le classi utilizzate nel programma
progioConsoleInputManager identifica una classe memorizzata in progioConsoleInputManagerclass (viene quindi dato un indirizzamento relativo)
Ma quale egrave lindirizzo di base per limportazione dei package rarr Java utilizza la variabile di sistema CLASSPATH
Nella variabile sono memorizzate le directory i base nelle quali lutente salva le proprie librerie (separate da ldquordquo in Windows separate da ldquordquo in Linux) La variabile egrave dunque da aggiornare per indicare a Java la directory che utilizziamo per le librerie
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 45
Installazione package
Procedura per Java 6
Per prima cosa dobbiamo installare il package prog scaricare il file prog-3edjar dal sito web di Pighizzini estrarre prog-3edjar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 46
Installazione package
Procedura per Java 5
Per prima cosa dobbiamo installare il package prog scaricare il file prog-15jar dal sito web di Boldi estrarre prog-15jar (utilizzando WinZip in Windows tar in Linux) in E_Didattica_AA20082009_Programmazione viene create una directory E_Didattica_AA20082009_Programmazioneprog nella quale sono presenti due sottodirectory io e utili Dobbiamo aggiornare la CLASSPATH in Windows per includere E_Didattica_AA20082009_Programmazione tra le directory in cui cercare i package
Per aggiornare la CLASSPATH (Windows XP)Avvio rarr Impostazioni rarr Pannello di Controllo rarr Sistema rarr Avanzate rarr Variabili di AmbienteLa variabile CLASSPATH puograve comparire oppure non comparire tra le variabili giagrave presenti nel caso non compaia egrave necessario creare una nuova variabile dambiente con il nome CLASSPATH altrimenti egrave sufficiente modificare la CLASSPATH includendo ldquoE_Didattica_AA20082009_Programmazionerdquo
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux
Laboratorio di Programmazione ndash Esercitazioni - Iuri Frosio - frosiodsiunimiit 47
Installazione package
Proviamo ora a compilare
gt javac GoodMorningjava
e ad eseguire
gt java GoodMorning
E ora Linux