Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi – A. Viola Ambienti di Sviluppo Insieme omogeneo di strumenti adatti allo sviluppo di progetti software. • Compilatori e/o interpreti; • Editor; • Strumenti di debug e/o test; 1 Linguaggi compilati • Codice sorgente “convertito” nel corrispondente codice in linguaggio macchina (es. C/C++) • Pro: controllo errori, prestazioni • Contro: portabilità 2 Ambienti di sviluppo 1 Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi – A. Viola Compilatore Traduce un programma scritto in un linguaggio di alto livello (programma sorgente) in un programma funzionalmente equivalente che può essere eseguito da uno specifico sistema di calcolo Programma sorgente Compilatore Istruzioni Eseguibili 3 Linguaggi interpretati • Il codice sorgente viene interpretato “al volo” da un interprete (es. PHP) • Le istruzioni sono eseguite così come descritte nel codice sorgente • Pro: portabilità • Contro: prestazioni, controllo errori 4 Ambienti di sviluppo 2 Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi – A. Viola Interprete Esegue, in corrispondenza dei dati d’ingresso, il programma sorgente scritto in un linguaggio di alto livello. Programma sorgente Interprete Output programma Dati input 5 E Java? • Nato con lo scopo di realizzare un linguaggio write once, run everywhere ("scrivi una volta, esegui ovunque") • Linguaggio sia compilato che interpretato • Obiettivo: acquisire i pro delle due precedenti tipologie riducendo i contro 6 Ambienti di sviluppo 3 Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi – A. Viola Java Bytecode Indipendente dalla piattaforma javac Demo.java java Demo Codice sorgente Compilatore Java Java FILE CON ESTENSIONE .JAVA FILE CON ESTENSIONE .CLASS (es. Demo.java, Esempio.java ...) (es. Demo.class, Esempio.class ...) JVM Istruzioni Eseguibili ISTRUZIONI MACCHINA (es. 01011010 ...) 7 Installazione JDK • http://java.sun.com/javase/downloads/index.jsp per il download 8 Ambienti di sviluppo 4 Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi – A. Viola Codice sorgente • Listato del programma – File con estensione “.java” – Modificabile con un comune editor testuale • Blocco note • Edit (dos) • Wordpad 9 Codice Compilato • Codice di programma (BYTECODE) – File con estensione “.class” – Interpretabile da una “qualsiasi” macchina virtuale Java (JVM) – Indipendente dalla piattaforma Una macchina virtuale Java = Interprete di ByteCode 10 Ambienti di sviluppo 5 Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi – A. Viola Macchine Virtuali Java (JVM) • Applicazioni stand alone • Integrate in un Browser • Integrate all’interno di altre applicazioni – ambienti di sviluppo – programmi applicativi • Implementate in HW – Firmware – Processori 11 L’armamentario di base • javac Nome.java • Compila nome.java producendo Nome.class • java Nome • Interpreta Nome.class cercando il metodo main nella classe nome • documentazione (formato html) html) • jar • javadoc • Tutto quello che avreste voluto sapere … • Gestione archivi di classi • Generazione documentazione 12 Ambienti di sviluppo 6 Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi – A. Viola Editor Applicazioni che permettono di editare / disegnare il codice sorgente • Testuali: – Formattazione • Indentazione; • Colori; – Code Completion • Grafici: – Disegno di interfacce (WYSIWYG); – Disegno della struttura del codice; 13 Ambienti di Sviluppo per Java • Diverse tipologie (come per altri linguaggi) – Potenzialità – Livello di integrazione tra i diversi strumenti – Strumenti aggiuntivi – Librerie fornite – Aderenza allo “standard” 14 Ambienti di sviluppo 7 Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi – A. Viola Ambienti di sviluppo • Base (JDK). • Editor testuali per sviluppatori: – Jpad, JPadPro, JEdit... • Ambienti integrati: – Eclipse, NetBeans, JBuilder, JDev, ... 15 Eclipse • IDE multilinguaggio (es. Java, C/C++) • Sviluppato in Java => multipiattaforma • Open Source: sviluppato inizialmente da IBM; dal 2004 controllato dalla Eclipse Foundation, organizzazione no profit indipendente. • Modulare ed espandibile in base alle esigenze dell’utente 16 Ambienti di sviluppo 8 Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi – A. Viola Architettura • Architettura a plugin: plugin: – “Core”: funzionalità di base – Plugin: Plugin: sfruttano le funzionalità offerte dallo strato “core” e cooperano tra loro per offrire servizi all’utente – Eclipse è un applicativo Java che quindi richiede l’esecuzione di una JVM: i plugin potrebbero essere molto numerosi => Eclipse utilizza una politica di load on demand dei plugin, plugin, per minimizzare la quantità di memoria necessaria Per il nostro corso non è necessario installare alcun plugin aggiuntivo 17 Installazione Eclipse • http://www.eclipse.org/downloads/ 18 Ambienti di sviluppo 9 Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi – A. Viola Workspace • All’avvio Eclipse chiede di specificare il Workspace: cartella usata per memorizzare i progetti e altre informazioni relative all’operatività dell’utente. 19 Workspace 20 Ambienti di sviluppo 10 Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi – A. Viola Perspectives • Per uno stesso workspace esistono più perspectives, che raggruppano funzionalità (view) in base all’operatività dell’utente. – Java (Sviluppo di codice sorgente) – Debug (Debug del programma) 21 Views • • Le views sono delle “schede” schede” inserite nelle perspectives; offrono numerosi strumenti per le attività connesse allo sviluppo del software Possono essere spostate, spostate, mediante trascinamento, trascinamento, nella porzione desiderata 22 Ambienti di sviluppo 11 Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi – A. Viola Workspace, Perspectives, Views 1 23 Creare un nuovo progetto 1. File => New => Project 2. Java Project La scelta Java Project può comparire già al livello di New 3. Next 24 Ambienti di sviluppo 12 Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi – A. Viola Creare un nuovo progetto 1. Digitare il nome del progetto 2. Next 25 Creare un nuovo progetto • E’ necessario specificare (o accettare le impostazioni di default) – Cartella radice dei sorgenti (es. “src”) – Cartella nella quale vengono posti i compilati (es. “bin”, “class”, “build”) 26 Ambienti di sviluppo 13 Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi – A. Viola Creare una nuova classe • File => New => Class oppure • click tasto destro sul package seguito da New => Class 27 Creare una nuova classe • E’ OBBLIGATORIO specificare il nome della classe • E’ consigliato specificare il package • E’ possibile generare automaticamente codice aggiuntivo (scheletro del main, main, interfacce, superclassi, ecc.) • Eclipse verifica che il nome della classe sia “corretto” (buone abitudini…) 28 Ambienti di sviluppo 14 Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi – A. Viola Compilazione • Eclipse offre due possibilità: possibilità: – Compilazione automatica; automatica; segnala in tempo reale gli errori rilevati – Compilazione on demand; L’opzione di compilazione automatica (default) è impostabile mediante Project -> Build Automatically 29 Esecuzione • Selezionare la classe che possiede il metodo Main • Click con tasto destro => Run As => Java Application … oppure… 30 Ambienti di sviluppo 15 Modulo di Fondamenti di Programmazione P. Baroni - P.Martinelli - M. Rossi – A. Viola Esecuzione • Run => Open Run Dialog • Specificare la classe contenente il metodo main • Specificare eventuali parametri da passare al main • Specificare, se necessario, il nome della configurazione E’ possibile avviare l’ultima esecuzione semplicemente selezionando Run => Run (Ctrl + F11) 31 Test & Debug • Test: – Verifica del funzionamento del programma rispetto ai requisiti; – Tipicamente a Scatola Nera (chiusa). – Casi di test (“Unit (“Unit test case”) • Debug: – Eliminazione dei malfunzionamenti di un programma; – Preferibilmente con la possibilità di analizzare lo stato del programma in punti prestabiliti e di poterne seguire l’evoluzione. 32 Ambienti di sviluppo 16