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