Prova Finale a.a. 2011/2012 Laboratorio 1: Introduzione a Java e Eclipse 1 Java 6 Standard Edition • JRE Linguaggio Java – Macchina virtuale e librerie necessarie per l'esecuzione di programmi Java. Tool di sviluppo (javac, ....) Librerie per l'interfaccia grafica Macchina virtuale Sistema Operativo JRE JDK Librerie di base • JDK – JRE + tool a riga di comando (compilatore, debugger, ...) necessari per sviluppare programmi in Java Java Virtual Machine • Macchina astratta – Esegue programmi Java compilati con javac – Stesso programma eseguito su diverse piattaforme (con machcine virtuali diverse) Sviluppo di un programma Java • File .jar = Java Archive – Raggruppano un insieme di file (tipicamente .class) Javac • Compilatore a riga di comando (stile gcc) • Riceve in ingresso: – File .java del programma (organizzati in directory rispettando la struttura dei package) – Posizione delle librerie esterne (già compilate e inserite in file .jar) • Produce: – I file .class del programma – Oppure messaggi di errore JavaC • Sintassi: – javac [ options ] [ sourcefiles ] – Options: opzioni per il compilatore (es. La posizione di classi da cui dipendono quelle da compilare) – Sourcefiles: i nomi e i percorsi dei file java da compilare Java virtual Machine • Si lancia con il comando java • Esegue una serie di classi (file .class) • Sintassi: – java [ options ] class [ argument ... ] – java [ options ] -jar file.jar [ argument ... ] – Options: opzioni per la virtual machine – Argument: parametri per il programma da eseguire Esecuzione di un programma • Creare un file con notepad: – Nome: HelloWorld.java class HelloWorldApp { public static void main(String[] args) { //Display "Hello World!" System.out.println("Hello World!"); } } Esecuzione di un programma • Compilare il programma: – javac HelloWorld.java • Eseguire il programma: – java HelloWorld • Attenzione: quando si esegue un programma non bisogna inserire l'estensione .class e bisogna rispettare la struttura dei package Integrated Development Environment • Ambiente software utilizzato per lo sviluppo di applicazioni • Ambiente interattivo – Intuitivo – Automatizza operazioni – Automatizza gestione dei progetti – .... • Integra anche aspetti esterni alla programmazione: progettazione, testing, ... Integrated Development Environment • Tipicamente funge da interfaccia per tool di livello più basso • Esempi: – Eclipse (per tutto) – Borland Jbuilder (per Java) – Kdevelop (C / C++ sotto linux) – Microsoft Visual Studio Eclipse • Piattaforma estendibile per sviluppo – Meccanismo dei plugin • Plugin permettono di: – Programmare con diversi linguaggi – Progettare sistemi software – Testare applicazioni – ... • Noi lo useremo per sviluppare in Java Avviare eclipse Workspace • Ambiente di lavoro – Racchiude progetti – Mantiene impostazioni – Raggruppa viste e funzionalità Progetti • Raccoglie una serie di file correlati e le relative impostazioni • Diversi tipi di progetti a seconda della finalità – Per noi progetti Java • Contengono principalmente sorgenti e file compilati • Ogni progetto è contenuto in una sottodirectory all'interno del workspace – Può essere spostato o copiato integralmente da un workspace verso un altro Creare progetto Workspace - elementi • Editor testuali – Inserimento, modifica, ecc. Del codice – Aiuti allo sviluppatore Workspace - elementi • Viste (views) – Visualizzazione/ editing di elementi del progetto – Gestione packages, Gestione errori,... – Personalizzabili Workspace - elementi • Prospettive (perspective) – Insieme di editor e viste per una specifica funzionalità – Prospettiva per lo sviluppo Java – Diverse a seconda della fase di sviluppo (testing, debugging, ecc.) Java perspective • • • • • Java editor Package explorer Outline Problems Documentazione Esecuzione di un programma • Posso mantenere la configurazione per una specifica esecuzione – Salvo che classe eseguire – Salvo i parametri da passare in ingresso – Salvo che JVM utilizzare – Salvo impostazioni della JVM – .... • A noi interessano le “Java application” Visualizzare impostazioni di esecuzione Debugging con Eclipse • Si interfaccia con il debugger incluso nel JDK • Offre un'interfaccia comoda per il debugging delle applicazioni, permette di: – Settare/gestire brakpoint – Eseguire il programma passo passo – Monitorare il contenuto delle variabili – .... Prospettiva di debug • Controlli per esecuzione passo/passo • • • • Monitor variabili Stack chiamate Editor Output I/O forma*ato • Input – Dobbiamo costruire uno scanner collegato allo “standard input stream” System.in, poi usare i metodi della classe Scanner • • • • • • nextLine() legge la prossima riga next() legge la prossima stringa fino a uno spazio nextInt() legge il prossimo int nextDouble() legge il prossimo double hasNext() dice se c'è una stringa in input hasNextInt(), nextFloat(), nextBoolean() • Output – System.out fornisce anche il “buon vecchio” printf di C, con le solite convenzioni di formattazione, più print e println Esempio public static void main(String args[]) { Scanner in = new Scanner(System.in); System.out.println("Come ti chiami?"); String nome = in.nextLine(); System.out.println("Quanti anni hai?"); int eta = in.nextInt(); System.out.println("Ciao "+nome+" tra un anno avrai " } +(eta+1)+" anni"); Riferimenti Documentazione API Java: http://docs.oracle.com/javase/6/docs/api/ Documentazione Eclipse: http://help.eclipse.org/indigo/index.jsp