Introduzione ad Eclipse
ing. Mario L. Bernardi
Eclipse: Origini e Storia
Eclipse è un IDE open source sviluppata inizialmente da IBM.Successivamente
il progetto fu reso open source e ceduto ad un consorzio che include tra le varie
aziende:
IBM,Borland,Merant,QNX Software,Rational,
Red Hat,SuSE,TogetherSoft, Oracle,HP,Sybase.
La sola IBM ha investito in Eclipse
circa 40 milioni di $ prima di renderlo open source.
IBM continua lo sviluppo di Eclipse tramite una società sussidiaria chiamata
OTI (Object Technologies International)
Eclipse è stata un successo fin dalla relase 1.0 : perchè?
E' l'evoluzione di una IDE della IBM sviluppata da OTI nel 1996 in smalltalk:
Visual Age for Java ( VA4J )
Applicava a Java molte idee innovative
che fermentavano intorno a SmallTalk. Due esempi:
●Non esisteva il concetto di file
●Versioning a livello dei metodi
Sostanzialmente Eclipse è l'implementazione in java di VA4J
Introduzione ad Eclipse
3
Organizzazione
Eclipse è gestito dal consorzio mediante il “Board of Stewards”:
- c'è un rappresentante per ogni azienda membro del consorzio
- la commissione determina gli obiettivi del progetto sulla base di due
principi generali:
- supportare e favorire una comunità open-source vitale e dinamica
- creare opportunità commerciali per i membri del consorzio
Dal punto di vista operazionale il consorzio definisce i “Project Management
Committee” (PMC) che gestiscono i vari progetti che compongono Eclipse.
Sostanzialmente i progetti fondamentali sono:
- La piattaforma eclipse ( Eclipse Platform )
- Il toolkit di sviluppo java ( Java Development ToolKit,JDT)
[ Eric Gamma]
ToolKit
- Il toolkit di sviluppo C/C++ ( C++ Development ToolKit , CDT )
- L'ambiente di sviluppo di plug-ins ( Plugin Development Environment,PDE
)
Environment
Introduzione ad Eclipse
4
Organizzazione (2)
Eclipse viene fornito con diversi modalità di packaging:
- Eclipse SDK che contiene platform,JDT e PDT, docs,binari e sorgenti
- Eclipse Platform Run-time che contiene solo i binari del platform
- Eclipse Platform SDK che contiene binari e sorgenti del platform
- Componenti singoli
E' importante osservare che JDT,CDT e PDT sono sostanzialmente aggiunte
al platform. Il cuore di Eclipse è la Eclipse Platform il cui scopo è fornire solo
i servizi necessari per integrare gli strumenti software di più alto livello che
vengono implementati ad un livello superiore come plug-ins.
L'aspetto più interessante del progetto di eclipse è proprio questo:
Eccetto i servizi forniti da un piccolo kernel a run-time, ogni altra
caratteristica di Eclipse è fornita da un insieme di plugin comunicanti.
Introduzione ad Eclipse
Architettura
Sostanzialmente l'architettura di eclipse è mostrata in 1.1:
5
Introduzione ad Eclipse
6
Platform Runtime
Lo scopo fondamentale del runtime è di rilevare tutti i plug-ins che
sono disponibili nella cartella dei plug-in.
Ogni plug-in possiede un manifesto scritto in XML che esplicita la lista delle
connessioni che il plugin richiede. Dunque:
- La lista dei punti di estensione che il plugin mette a disposizione di altri
plugins.
- La lista dei punti di estensione che egli richiede dalla platform e da altri
plugins.
Un aspetto cruciale dell'architettura a plugin è quello prestazionale
dato che i plugin possono divenire un numero elevatissimo:
Eclipse utilizza una politica di load on demand dei plugin.
Questo minimizza la quantità di memoria utilizzata ed il
tempo di startup nel quale diventa necessario solo rilevare
(ma non istanziare ) tutti i plugin.
Introduzione ad Eclipse
The Workspace
Lo scopo fondamentale del workspace è la gestione delle risorse di utente
che sono organizzate in uno o più progetti di massimo livello gerarchico.
Ogni progetto è associato ad una cartella della
“cartella di workspace”
workspace di eclipse
Il workspace mantiene anche una history di basso livello per le
risorse. Questo significa che è possibile disfare anche cambiamenti
vecchi di giorni (in dipendenza di come viene configurata l'history).
7
Introduzione ad Eclipse
The WorkBench
8
Introduzione ad Eclipse
9
The WorkBench
Editors
Perspectives
Views
Introduzione ad Eclipse
10
Team Support & Help
Eclipse, per centrare i suoi goal di alto livello, deve garantire ai teams di
lavorare insieme in maniera flessibile e avanzata. Per questo è stato
implementato un supporto per i tool di versioning molto esteso.
L'ambiente integra un client CVS e vi sono plugins per la maggior parte dei
tools di versioning utilizzati (SVN,VSS).
Per quanto riguarda l'help, il platform fornisce un componente di help che
rappresenta un “Extensible Documentation System”:
- i progettisti di plug-ins possono definire la loro documentazione in
HTML;
- imporre politiche di navigazione;
- utilizzare XML;
- inserire nei punti di estensione di altri plug-in conenuto aggiuntivo
nell'albero degli argomenti della documentazione ad essi relativa.
Introduzione ad Eclipse
Neutralità rispetto al linguaggio
Un aspetto caratterizzante di eclipse è la neutralità rispetto al linguaggio:
- Linguaggio di programmazione
- JDT
- CDT
- COBOL
- C# e altri linguaggi .NET sono in sviluppo.
- Internazionalizzazione
11
Introduzione ad Eclipse
12
Ottenere eclipse
http://www.eclipse.org
Nel sito sono disponibili diversi tipi di package (dette “build”):
- release – Una release ufficiale di eclipse profondamente testata.
- stable build – Una release intermedia che è stata testata e si dimostra
relativamente stabile.
- integration build – Una release in cui i singoli componenti sono testati
ma non sono ancora stati fatti test di integrazione.
- nightly build – Release che sono realizzate in automatico ogni notte dal
codice sorgente più recente che c'è e non hanno test di
affidabilità.
Introduzione ad Eclipse
13
JDT - Creare un progetto Java
I tipi di progetto che è possibile creare dipendono dai plug-in installati.
In un'installazione standard di eclipse che comprende JDT/CDT/PDT avremo:
Selezionando “Java Project”
Introduzione ad Eclipse
14
JDT - Creare una classe Java
All'atto della creazione
di una classe è possibile
specificare tutte le
caratteristiche che la
riguardano:
- Nome
- Package
- Superclasse
- Interfacce
- Eventuale entry point
Introduzione ad Eclipse
15
JDT - Creare una classe Java (2)
Eclipse durante la creazione della classe fornisce una serie di consigli per
creare una classe che rispetti le direttive suggerite dalle specifiche SUN.
Oltre ovviamente ad evidenziare errori:
Introduzione ad Eclipse
16
JDT – Code completion
Gli editor di eclipse possiedono ottime capacità di code-completion.
In ogni situazione è possibile invocare la code-completion mediante
i tasti CTRL-spazio:
E' possibile ottenere
una guida anche
durante la compilazione
degli argomenti(di cui
Eclipse conosce i tipi
di ogni overload)
selezionando uno dei
metodi dell'elenco.
La code-completion in
Eclipse è inoltre del tutto
configurabile
con mediante semplici
template.
Introduzione ad Eclipse
17
JDT – Eseguire programmi java
Un aspetto di grande flessibilità di Eclipse sono le politiche di esecuzione
dei programmi. La gestione delle esecuzioni avviene tramite i:
Profili di esecuzione ( Run “configurations”):
“configurations”
Introduzione ad Eclipse
18
JDT – Debugging di programmi java
La stessa flessibilità per i profili di esecuzione è stata replicata per le esigenze
di debugging. La gestione del debug avviene tramite i:
Profili di debugging ( Debug“configurations”):
Debug“configurations”
con un pannello simile a quello visto precedentemente.
Il debug è però associato ad una
prospettiva che introduce tutte le
viste necessarie per analizzare lo
stato del programma durante la
sua esecuzione.
Ovviamente la prospettiva è
personalizzabile per cui è
possibile introdurre le viste che
più si ritengono interessanti.
Introduzione ad Eclipse
19
JDT – Debugging di programmi java (2)
Il debugger di Eclipse possiede le seguenti viste fondamentali:
Mostra il progetto, i suoi threads
e il punto(classe/metodo) di debug
corrente.
Mostra un elenco dei vari
breakpoints che sono stati
definiti.
Mostra l'elenco delle variabili
visibili nello scope corrente.
Il visualizzatore è intelligente ed
è capace di visualizzare
array/hash-tables in maniera
sintetica.
In futuro verranno sviluppati nuovi
modi intuitivi di visualizzare i tipi.
Introduzione ad Eclipse
Eclipse opzioni e preferenze
Coding style e javadoc
In Eclipse vi sono sofisticate opzioni per selezionare lo stile di codifica
sotto vari aspetti:
- Code formatter
Cambia come il codice viene formattato ed indentato in maniera
automatica.
- Code templates
Cambia come vengono generati commenti javadoc e strutture di
codice predefinite in maniera automatica.
- Organizzazione degli Import
Cambia le politiche di gestione automatica degli import
20
Introduzione ad Eclipse
21
Eclipse opzioni e preferenze (2)
Template per codice java/javadoc
E' possibile modificare tutta
una serie di templates
predefinite.
E' anche possibile creare
nuove template e
importare/esportare mediante
un formato XML le
template già esistenti per
supportare un livello di
interoperabilità maggiore
tra team diversi.
Introduzione ad Eclipse
22
Eclipse opzioni e preferenze (3)
Template per la code-generation
Generazione
di commenti
javadoc
Generazione di codice
La sezione code-templates ci
fornisce il modo per:
-Editare le modalità di creazione
automatica di commenti javadoc
-Editare le modalità di creazione
automatica di generazione di codice
-Import/Export delle template
Introduzione ad Eclipse
Eclipse opzioni e preferenze (4)
Classpaths e variabili di classpath
Le opzioni per la
selezione di librerie
esterne è molto
flessibile. E' possibile:
- aggiungere JARs
esterni
- aggiungere JARs
interni
23
Introduzione ad Eclipse
24
Aiuti nella generazione di codice
Eclipse fornisce un insieme di opzioni per creare codice in maniera automatica:
Introduzione ad Eclipse
Refactoring
Rinominare una classe
25
Introduzione ad Eclipse
Refactoring (2)
Rinominare un metodo
26
Introduzione ad Eclipse
Refactoring (3)
Cambiare la signature di un metodo
E' possibile cambiare la
signature di un metodo
(e tutti i riferimenti a quel
metodo) attraverso un solo
pannello che permette di
specificare il valore di
default dei parametri
aggiunti.
27
Introduzione ad Eclipse
28
Refactoring (4)
Estrarre un'interfaccia
E' possibile estrarre da
una classe un'interfaccia
specificando quali metodi
della classe devono essere
inclusi in essa.
E' anche possbile
selezionare i modificatori
di accesso.
Inoltre Eclipse di propone
di cambiare i riferimenti
alla classe in riferimenti
all'interfaccia ove
possibile.
Introduzione ad Eclipse
Refactoring (5)
Altre opzioni interessanti ?
Inlining di variabili
Incapsulare un field
Generalizzare un tipo
Pull-Up / Push-Down
29