IDE Integrated Development Environment Jacopo Torrini IDE Cosa chiede un programmatore da una IDE – Gestibilità del codice • avere il codice sotto controllo • molto utile per grossi progetti – Source assistant • velocizzare e migliorare la scrittura del codice • minimizzare gli errori di sinatassi • evitare scritture ripetitive – Refactoring • fondamentale – Debugger • non si può scrivere codice corretto senza un buon debugger 200303331 2 IDE Gestione codice – Esplorazione dei packages e delle classi con struttura ad albero – Ricerca veloce della dichiarazione di un metodo, una classe di una variabile – Informazioni istantanee sugli elementi del codice • tooltip sull’elemento • documentazione dell’elemento – Ricerca di elementi in più files – Caller graph dei metodi – Ricerca dei riferimenti ad un elemento – Personalizzazione dell’interfaccia grafica – In pratica: avere sotto controllo il codice 200303331 3 IDE Scrittura codice – – – – – 200303331 Completamento automatico Evidenziazione immediata errori di sintassi Elenco metodi di un oggetto Code templates Macro per scrittura automatica di metodi, costruttori ecc... 4 IDE Refactoring – Conoscere in anticipo l’impatto di una modifica sul codice – Possibilità di modificare un elemento mantenendo la semantica di tutto il codice – Possibilità di decidere quali cambiamenti effettuare – Preview dei cambiamenti – Undo e Redo del refactoring 200303331 5 IDE Debugger – – – – – – 200303331 Step in, out, over... Breakpoints Conditional breakpoints Variables Watches Stack trace 6 Eclipse Project 200303331 7 Scopi dell’Eclipse Project Fornisce una piattaforma aperta per tool di sviluppo di applicazioni – Gira su un vasto range di sistemi operativi Language-neutral – HTML, Java, C, JSP, EJB, XML, GIF, … Facilita l’integrazione di tool – A livello di UI e più profondamente – Aggiunte di tool ai prodotti già presenti 200303331 8 Artchitettura Plug-in - Generale Tutte le funzionalità sono fornite dai plug-in – Include tutti gli aspetti della piattaforma Eclipse stessa Impacchettati in features installabili separatamente – Scaricabili Eclipse ha un’architettura aperta e estensibile basata sui plug-in 200303331 9 Componenti del Workspace I tool operano sui file nel workspace dell’utente Workspace contiene 1 o più progetti top-level I progetti sono mappati su directory nel file system I tool leggono, creano, modificano e cancellano le risorse nel workspace 200303331 10 Workbench Component UI della piattaforma Eclipse UI paradigm centrato intorno – Editors – Views – Perspectives 200303331 11 Workbench Terminology Menu bar Tool bar Text editor Outline view Resource Navigator view Bookmarks view Properties view Message area 200303331 Tasks view Editor Status area 12 Perspectives Perspectives sono le disposizioni delle viste e degli editor Differenti perspectives per differenti user tasks L’utente può velocemente passare tra le differenti prospettive Perspectives control – – – Visibilità delle viste Disposizione delle viste e dell’editor Visibilità delle azioni Eclipse Platform include prospettive standard – Resource, Debug, … 200303331 13 Responsabilità del Workbench Eclipse Eclipse Eclipse 200303331 Platform Platform Platform gestisce le finestre e le prospettive crea i menu e le toolbar crea le viste e gli editor 14 Debug Component UI 200303331 15 Debug Component Configurazione per il launch – Come eseguire un programma (debug mode option) Modello generico di debug – – – – Azioni standard di debug: resume, terminate, step, … Breakpoints Expressions Source code locator UI generica di debug – Debug perspective – Debug views: stack frames, breakpoints, … Esempio: JDT fornisce Java launcher e debugger 200303331 16 Java Development Tools JDT = Java development tools – Implemented as Eclipse plug-ins – Using Eclipse Platform APIs and extension points Incluso nelle release dell’ Eclipse Project 200303331 17 Java Workbench Java project package class field method Java 200303331 editor 18 Java - Gestione codice Esplorazione della gerarchia dei tipi – “Up” – “Down” Type hierarchy Selected type’s members 200303331 19 Java Perspective Ricerca di elementi Java – Dichiarazioni o riferimenti – Include librerie o altri progetti Elemento trovato segnalato al margine Tutti i risultati della ricerca 200303331 20 Java - Gestione codice Javadoc come tooltip sugli oggetti 200303331 21 Java - Gestione codice Completamento automatico del metodo Lista dei metodi plausibili 200303331 Doc per il metodo 22 Java - Gestione codice Controllo sintassi on-the-fly cattura gli errori istantaneamente Clicca per vedere i fix Problema 200303331 Preview Quick fixes 23 Java - Gestione codice Code templates aiutano a scrivere il codice Statement template 200303331 Preview 24 Java - Gestione codice Java editor aiuta i programmatori a scrivere buon codice Variable name suggestion JavaDoc code assist Argument hints and proposed argument names 200303331 25 Java - Gestione codice Call Hierarchy dei metodi Ricerca veloce della dichiarazione di un elemento (F3) 200303331 26 Java - Gestione codice Rimando ai metodi ridefiniti della superclasse rimando al metodo della superclasse History degli spostamenti del cursore 200303331 27 Java Editor – Source Organize imports Override implements methods – si scelgono i metodi della superclasse da ridefinire 200303331 28 Java Editor – Source Generate constructor using fields – Si scelgono gli attributi da inizializzare nel costruttore Add constructors from superclass – si scelgono i costruttori dalla superclasse 200303331 29 Java Editor – Source Generate delegate method – Si sceglie l’oggetto contenuto e i metodi su cui eseguire la delega Generate getter and setter method – si scelgono gli attributi per i quali costruire metodi get e set – utilissimo per Java Beans Inserimento delle informazioni di base di un metodo (@param, @return...) quando si aggiunge un commento Javadoc ad un metodo 200303331 30 Java Editor – Source Externalize strings – Utilissimo comando per l’esportazione delle stringhe dal codice ad un file di testo. – Le stringhe vengono sostituite da identificatori – viene creato un file di testo e una classe per la gestione del caricamento delle stringhe – Interazionalizzazione 200303331 31 Java Editor - Refactoring JDT refactoring 200303331 32 Java Editor - Refactoring Le azioni di refactory riscrivono il codice – dentro un singolo file java – attraverso molti file java tra loro correlati Le azioni di refactory preservano la semantica del programma Non alterano quello che il programma fa – Cambia solo il modo con cui lo fa 200303331 33 Java Editor - Refactoring Preview completo di tutti i cambiamenti di codice che seguono – Il programmatore può decidere quali cambiamenti effettuare Lista delle modifiche “before” vs. “after” 200303331 34 Java Editor - Refactoring Rename – aggiorna i riferimenti (anche quelli testuali – javadoc ) 200303331 35 Java Editor - Refactoring Change method signature – è possibile cambiare i parametri (numero e tipo dato) e il tipo di ritorno – vengono visualizzati tutti gli errori che si generano 200303331 36 Java Editor - Refactoring Preview errori 200303331 37 Java Editor - Refactoring Preview modifiche 200303331 38 Java Editor - Refactoring Extract interface 200303331 39 Java Editor - Refactoring Extract method – Crea un nuovo metodo contenente il codice selezionato e rimpiazza quest’ultimo con una chiamata al nuovo metodo. – vengono aggiunti automaticamente i parametri del metodo e i valori di ritorno. 200303331 40 Java Editor - Refactoring Codice originale 200303331 41 Java Editor - Refactoring Refactor 200303331 42 Java Editor - Refactoring Codice modificato Metodo aggiunto 200303331 43 Java Editor - Refactoring Introduce factory – converte la creazione di un oggetto in un metodo di una factory (singleton) Convert anonymous class to nested Pull up – push down – sposta un metodo dalla classe alla super o sotto classe Use Supertype Where Possible – Rimpiazza le occorrenze di un tipo con un suo supertipo dopo aver identificato tutti i posti dove questo rimpiazzo è possibile. Inline – Rende inline le variabili statiche e i metodi. ... 200303331 44 Java Editor Altre caratteristiche – – – 200303331 Code formatter Source code for binary libraries ... 45 Eclipse Java Debugger Run or debug Java programs Local variables Threads and stack frames Editor with breakpoint marks Console I/O 200303331 46 Eclipse Java Debugger Le caratteristiche del debugger includono – Ispezione delle variabili tramite tooltip sulla variabile stessa – Method and exception breakpoints – Conditional breakpoints – Watches (anche di espressioni) – Step over, into, return; run to line – Inspect and modify fields and local variables 200303331 47 Eclipse Project FINE 200303331 48