AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools...
Transcript of AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools...
![Page 1: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/1.jpg)
Agent and Object Technology LabDipartimento di Ingegneria dell’Informazione
Università degli Studi di Parma
AOTAOTLABLAB
Eclipse Platform 3.3Eclipse Platform 3.3Eclipse Platform 3.3Eclipse Platform 3.3
(EUROPA)(EUROPA)(EUROPA)(EUROPA)
Alessandro Negri
http://www.ce.unipr.it/people/negri/
![Page 2: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/2.jpg)
AOTAOTLABLAB Il Progetto EclipseIl Progetto EclipseIl Progetto EclipseIl Progetto Eclipse
� “Eclipse, an extensible development platform
and application frameworks for building software”
2
� Versione attuale: Eclipse 3.3.1 (Sett. 2007)
� Scaricabile dal sito ufficiale: www.eclipse.org
![Page 3: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/3.jpg)
AOTAOTLABLAB La StoriaLa StoriaLa StoriaLa Storia
� Eclipse è stato creato dai gruppi OTI e IBM già responsabili dei prodotti:� IBM VisualAge/Smalltalk (Smalltalk IDE) � IBM VisualAge/Java (Java IDE)� IBM VisualAge/Micro Edition (Java IDE)
� Inizialmente sviluppato da un gruppo di 40 programmatori impegnati a tempo pieno
3
programmatori impegnati a tempo pieno� Donato da IBM alla comunità open-source
� Versione community di WebSphere® Studio Application Developer (WSAD)
� Diviso in 3 progetti principali� Piattaforma (Core/Runtime)� JDT (Java Development Tools)� PDE (Plug-in Development Environment)
![Page 4: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/4.jpg)
AOTAOTLABLAB La LicenzaLa LicenzaLa LicenzaLa Licenza
� Eclipse Public License - v1.0� La licenza EPL è stata approvata dall'Open Source
Initiative (OSI)
“The Open Source Initiative (OSI) is a non-profit corporation formed to educate about and advocate for the benefits of open source and to
4
educate about and advocate for the benefits of open source and to build bridges among different constituencies in the open-source
community.”
http://www.opensource.org/licenses/eclipse-1.0.php
� Permette agli sviluppatori di modificare il codice (open source) ed anche di riutilizzarlo all'interno di prodotti commerciali (free redistribution)
![Page 5: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/5.jpg)
AOTAOTLABLAB Obiettivo del ProgettoObiettivo del ProgettoObiettivo del ProgettoObiettivo del Progetto
“in many ways Eclipse is the Emacs for the 21st century“
� Fornire una piattaforma aperta per lo sviluppo di applicativi che:� sia utilizzabile sul più alto numero di sistemi operativi
� sia utilizzabile con un’interfaccia grafica o senza (GUI o non-GUI)
� Indipendente dal linguaggio di programmazione
5
� Gestisca in modo completo vari tipi di linguaggi: HTML, Java, C/C++, XML, JSP, EJB …
� Facilitare l’integrazione di tool specifici� Possibilità di inserire nuovi tool al prodotto di base per venire
incontro alle esigenze del singolo sviluppatore
� Ma che cosa è la piattaforma Eclipse?� …
![Page 6: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/6.jpg)
AOTAOTLABLAB Eclipse: Java IDEEclipse: Java IDEEclipse: Java IDEEclipse: Java IDE
� Universalmente riconosciuta come “La”
piattaforma per lo sviluppo in linguaggio Java
� Con tutti gli strumenti necessari…
� Language aware editor, viste, …
� Supporto al refactoring
6
� Supporto al refactoring
� Unit testing e debugging integrato
� Compilazione incrementale ed esecuzione
� Supporto allo sviluppo in team
• Supporto a database esterni, CVS
� …
![Page 7: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/7.jpg)
AOTAOTLABLAB Eclipse: IDE FrameworkEclipse: IDE FrameworkEclipse: IDE FrameworkEclipse: IDE Framework
� IDE = Integrated Development Environment ovvero un ambiente integrato di sviluppo
� Eclipse + JDT = Java IDE� Framework per Java� Language aware editor� Compilazione incrementale� Debugging integrato
7
� Debugging integrato
� Eclipse + CDT = C/C++ IDE� First class framework for C/C++� Language aware editor� Refactoring, ricerca
� Eclipse + PHP = PHP IDE� Eclipse + JDT + CDT + PHP = Java, C/C++, PHP IDE� …
![Page 8: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/8.jpg)
AOTAOTLABLAB Eclipse: Tools FrameworkEclipse: Tools FrameworkEclipse: Tools FrameworkEclipse: Tools Framework
� Estensibilità attraverso l’implementazione OSGi
� I plug-in rendono Eclipse esattamente quello che ci serve
che sia
� Il focus è sullo sviluppo di una piattaforma universale
di framework e tool
� I tool estendono la piattaforma Eclipse utilizzando
8
� I tool estendono la piattaforma Eclipse utilizzando plug-in
� Business Intelligence and Reporting Tools (BIRT)
� Eclipse Communications Framework (ECF)
� Web Tools Project (WTP)
� Eclipse Modelling Framework (EMF)
� Graphical Editing Framework (GEF)
� Test and Performance Tooling Project (TPTP)
![Page 9: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/9.jpg)
AOTAOTLABLAB Eclipse: Application FrameworkEclipse: Application FrameworkEclipse: Application FrameworkEclipse: Application Framework
� Rimuovi gli elementi dell’IDE, il supporto al
linguaggio Java, il supporto allo sviluppo in team
… e rimani con un semplice e generico
application framework
� Supporto multi-piattaforma
9
� Supporto multi-piattaforma
• Linux, Windows, Mac OSX, UNIX…
� Insieme di widget per la grafica
� Integrazione nativa con il sistema operativo (drag and drop, integrazione OLE/XPCOM)
� Una piattaforma per creare “rich clients” (RCP)
![Page 10: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/10.jpg)
AOTAOTLABLAB Eclipse: Progetto Open SourceEclipse: Progetto Open SourceEclipse: Progetto Open SourceEclipse: Progetto Open Source
� Dieci (10) progetti di alto livello
� The Eclipse Project
� Tools
� Web Tools Platform
� Test & Performance Tools Platform
� Business Intelligence and Reporting Tools
10
� Business Intelligence and Reporting Tools
� Eclipse Modeling Project
� Data Tools Platform
� Device Software Development Platform
� SOA Tools Platform
� Technology (Incubators)
� Decine di sottoprogetti
![Page 11: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/11.jpg)
AOTAOTLABLAB Eclipse: Comunità Open SourceEclipse: Comunità Open SourceEclipse: Comunità Open SourceEclipse: Comunità Open Source
� Tutti i progetti di Eclipse sono disponibili gratuitamente per il dowload
� Centinaia di contribution
� Centinaia di plug-in realizzati da aziende, organizzazioni e singoli individui
11
� Comunità di blogger� http://www.planeteclipse.org
� Numerosi portali dedicati� EclipseZone (http://www.eclipsezone.com)
� Eclipse Plug-in Central (http://www.eclipseplugincentral.com)
� Altri (http://www.eclipse.org/community)
![Page 12: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/12.jpg)
AOTAOTLABLAB Architettura (1)Architettura (1)Architettura (1)Architettura (1)
� Eclipse è una piattaforma universale per
integrare tool di sviluppo
� Ha un’architettura aperta, estendibile, basata su
plug-in
12
Java VMStandard Java2Virtual Machine
PlatformEclipse Platform
Java Development Tools
JDT
PDEPlug-in DevelopmentEnvironment
![Page 13: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/13.jpg)
AOTAOTLABLAB Architettura (2)Architettura (2)Architettura (2)Architettura (2)
Help
Team
Workbench
JFace
SWT
JavaDevelopment
Tools(JDT)
Your
AnotherTool
Eclipse Platform
Definisce il paradigma di base dell’interfaccia di
Eclipse, basato sul concetto di editor, views e
perspectives
Standard Widget Toolkit gestisce la grafica di base e definisce un set standard di
13
Platform Runtime
Workspace
Team
Eclipse Project
Their Tool
Your Tool
Plug-inDevelopmentEnvironment
(PDE)
Debug
definisce un set standard di widget
Definisce l’infrastruttura a plug-in, riconosce i plug-in disponibili e ne gestisce il
ciclo di vita
![Page 14: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/14.jpg)
AOTAOTLABLAB Architettura (2)Architettura (2)Architettura (2)Architettura (2)
Help
Team
Workbench
JFace
SWT
JavaDevelopment
Tools(JDT)
Your
AnotherTool
Eclipse PlatformUn insieme di piccoli framework per l’UI, sviluppati su SWT
14
Platform Runtime
Workspace
Team
Eclipse Project
Their Tool
Your Tool
Plug-inDevelopmentEnvironment
(PDE)
DebugGestisce un insieme di progetti. Un progetto
consiste in un insieme di file e directory
corrispondenti a risorse sul file system
![Page 15: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/15.jpg)
AOTAOTLABLAB Eclipse Platform RuntimeEclipse Platform RuntimeEclipse Platform RuntimeEclipse Platform Runtime
� Eclipse Platform Runtime è un micro-kernel
� Tutte le funzionalità sono implementate in plug-in
� Eclipse Platform Runtime gestisce
l’inizializzazione e la creazione dell’ambiente di
lavoro
15
lavoro
� Ricerca tutti i plug-in installati sul disco
� Unisce tutte le Extension con i rispettivi Extension Point
� Costruisce un registro globale dei plug-in
� Crea una copia in cache del registro per l’esecuzione successiva
![Page 16: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/16.jpg)
AOTAOTLABLAB Extension e Extension PointExtension e Extension PointExtension e Extension PointExtension e Extension Point
� Un Extension Point è un punto di aggancio per i contributi dei plug-in� “Qualcuno” (un altro plug-in) lo ha dichiarato
• org.eclipse.ui
� E’ identificato univocamente nella piattaforma (Id)• org.eclipse.ui.ActionSets
� Ha uno schema che regolamenta le informazioni dichiarative che i contributor devono fornire
16
i contributor devono fornire� Può contenere un set di Action, ecc…� Definisce un’interfaccia che la classe del contributor deve
implementare
� Una Extension è la dichiarazione dalla Contribution� Chi ha dichiarato l’Extension Point in genere interroga il
registry per sapere chi offre delle Extension� Es. il workbench verifica chi fornisce una Extension per gli
ActionSets per costruire l’interfaccia utente dell’IDE
![Page 17: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/17.jpg)
AOTAOTLABLAB La ContributionLa ContributionLa ContributionLa Contribution
� Contribution Rule: “Everything is a contribution”
� L’intera piattaforma Eclipse (escluso il Runtime Kernel) non ha nessuna funzionalità built-in, tutto è basato sulla Contribution
• Eclipse + JDT ≈ 60 plugins
• IBM Websphere IDE ≈ 600 plugins
� Il Runtime Kernel è in grado di gestire migliaia di plugin
17
� Lazy Loading Rule: ” Contributions are only loaded when they are needed”
� “Declaration vs Implementation”
� La piattaforma mantiene le informazioni di tutti i plugin disponibili
• Manifest file � plugin.xml
� L’implementazione viene caricata alla prima richiesta di accesso
• PLUGIN_XXX.jar
![Page 18: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/18.jpg)
AOTAOTLABLAB PlugPlugPlugPlug----in (1)in (1)in (1)in (1)
� Plug-in: la più piccola unità funzionale in Eclipse“a piece of behavior that is outside the run-time kernel”
(Contributing to Eclipse: Principles, Patterns and Plug-Ins by E.Gamma,K.Beck)
� E’ un componente strutturato che descrive se stesso al sistema utilizzando un manifest file (plugin.xml)
� Può racchiudere numerose funzionalità (es. HTML editor) oppure
18
� Può racchiudere numerose funzionalità (es. HTML editor) oppure una semplice funzione (es. l’azione per creare un file zip)
� Un plugin si concretizza fisicamente in una directory con all’interno:
� plugin.xml: il manifest, una descrizione della Contribution
� resources: risorse utili al plugin (es. icone) - OPZIONALE
� Java code: strutturato in file .jar - OPZIONALE
![Page 19: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/19.jpg)
AOTAOTLABLAB PlugPlugPlugPlug----in (2)in (2)in (2)in (2)
� Ha un identificatore univoco – plugin ID
� Porta una Contribution alla piattaforma
� Descritta tramite il manifest
� Implementata (quando serve) attraverso le librerie del plug-in
� Può estendere un aspetto specifico della piattaforma (Extensions), per esempio:
19
(Extensions), per esempio:
• Introdurre un nuovo tipo di risorsa o estendere un tipo di risorsa già
presente
� Può contribuire con nuovi punti di estensione (Extension Points), per esempio:
• Validatori di documenti XML
� Può dipendere da altri plug-in
� Dipendenza esplicita nella descrizione e gestita in automatico dalla piattaforma
![Page 20: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/20.jpg)
AOTAOTLABLAB Architettura del PlugArchitettura del PlugArchitettura del PlugArchitettura del Plug----in (1)in (1)in (1)in (1)
� Ogni plug-in:
� Contribuisce ad 1 o più Extension Point
� Dichiara 1 o più Extension Point (OPZIONALE)
� Dipende da un set di altri plug-in (OPZIONALE)
� Contiene librerie di codice Java o altri file
20
� Contiene librerie di codice Java o altri file (OPZIONALE)
� Risiede in una sottodirectory a lui dedicata
� Plug-in Manifest
� Dichiara tutte le “Contributions”
� Implementa interfacce o fornisce API
� plugin.xml: descrive le proprietà del plug-in
![Page 21: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/21.jpg)
AOTAOTLABLAB Il Manifest fileIl Manifest fileIl Manifest fileIl Manifest file
� File XML, che permette di dichiarare
� L’esistenza del plug-in
• Dati identificativi e descrittivi del plug-in
� Le librerie che fanno parte del plug-in
• Jar generati dal codice sorgente
21
• Altre librerie incluse nel plug-in
� Le dipendenze del plug-in
• Altri plug-in i cui servizi sono necessari in fase di runtime
▫ La disponibilità dei plug-in dichiarati viene verificata a runtime
▫ I Jar degli altri plug-in vengono inclusi nel classpath del plug-in a
runtime
� I servizi offerti dal plug-in
![Page 22: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/22.jpg)
AOTAOTLABLAB Esempio: plugin.xmlEsempio: plugin.xmlEsempio: plugin.xmlEsempio: plugin.xml
<pluginid = “com.example.tool"name = “Example Plug-in Tool"class = "com.example.tool.ToolPlugin">
<requires><import plugin = "org.eclipse.core.resources"/><import plugin = "org.eclipse.ui"/>
</requires><runtime>
<library name = “tool.jar"/> Location of plug-in’s code
Other plug-ins needed
Plug-in identification
plugin.xml
22
<library name = “tool.jar"/> </runtime><extension
point = "org.eclipse.ui.preferencepages"><page id = "com.example.tool.preferences"
icon = "icons/tool.gif"title = “My Tool"class = "com.example.tool.ToolPreferenceWizard“/>
</extension><extension-point
name = “New Plugin Provider“id = "com.example.tool.newPluginProvider"/>
</plugin>
Declare contributionthis plug-in makes
Declare new extension point open to contributions from other plug-ins
Location of plug-in’s code
![Page 23: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/23.jpg)
AOTAOTLABLAB Architettura del PlugArchitettura del PlugArchitettura del PlugArchitettura del Plug----in (2)in (2)in (2)in (2)
plug-in A plug-in B
class Cinterface I
extensionpoint P
extensioncontributes
implements
23
Plug-in A
� Dichiara un Extension Point P
� Dichiara un’interfaccia I per il punto P
� Plug-in B
� Implementa l’interfaccia I con la sua classe C
� Inserisce la classe C come Contribution all’Extension Point P
� Il Plug-in A instanzia la classe C e richiama i metodi dell’interfaccia I
creates, calls
![Page 24: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/24.jpg)
AOTAOTLABLAB La Classe PlugLa Classe PlugLa Classe PlugLa Classe Plug----inininin
� Singleton che rappresenta a runtime il plug-in
� Estende la classe
� org.eclipse.core.runtime.Plugin
� Fornisce metodi di hook per la gestione del ciclo
di vita del plug-in
24
di vita del plug-in
� Start
� Stop
� Accentra in genere servizi comuni a tutti gli
elementi del plug-in
� Resource bundle
![Page 25: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/25.jpg)
AOTAOTLABLAB Attivazione dei PlugAttivazione dei PlugAttivazione dei PlugAttivazione dei Plug----inininin
� Ogni plug-in ha il proprio Java class loader
� Si delega l’esecuzione al plug-in stesso
� Si restringe la visibilità alle API esportate
� Le contribution sono processate senza l’attivazione dei plug-in
� Esempio: eventuali menù sono costruiti dal manifest relativo alle
25
� Esempio: eventuali menù sono costruiti dal manifest relativo alle varie contribution
� I plug-ins sono attivati solo al momento in cui sono necessari
� Esempio: il plug-in è attivato solamente quando l’utente seleziona una voce corrispondente in un menù
� Soluzione scalabile se si hanno molti plug-in installati
� Riduce i tempi di startup
![Page 26: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/26.jpg)
AOTAOTLABLAB PlugPlugPlugPlug----in Fragmentsin Fragmentsin Fragmentsin Fragments
� I Plug-in Fragments memorizzano alcuni files del
plug-in
� Installabili separatamente
� Ogni fragment ha una propria sottodirectory
� Manifest separato
26
� Manifest separato
� Logical plug-in = Base plug-in + fragment
� I Plug-in Fragments sono utilizzati per:
� Sviluppare caratterizzazioni specifiche per un sistema operativo
� Gestire la localizzazione (traduzioni)
![Page 27: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/27.jpg)
AOTAOTLABLAB Implementare un PlugImplementare un PlugImplementare un PlugImplementare un Plug----inininin
� Identificare gli extension point
� Comprendere ed analizzare le specifiche di
ogni extension point
� Definire il plug-in manifest (plugin.xml)
� Scrivere la class che implementa l’interfaccia
27
� Scrivere la class che implementa l’interfaccia
definita dall’extension point
� Installare il plug-in nella rispettiva cartella plugins
![Page 28: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/28.jpg)
AOTAOTLABLAB Esempio: “Hello World” PlugEsempio: “Hello World” PlugEsempio: “Hello World” PlugEsempio: “Hello World” Plug----inininin
� Creare un pulsante “Hello” nella toolbar di
Eclipse
� Aggiungere una action al bottone in modo che
possa essere aperta una finestra con la scritta
“Hello World”
28
“Hello World”
<plugin
id=“org.eclipse.hello”
name=“Hello World”
version=“1.0.0”>
...
</plugin>
![Page 29: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/29.jpg)
AOTAOTLABLAB Esempio: Aggiungere un PulsanteEsempio: Aggiungere un PulsanteEsempio: Aggiungere un PulsanteEsempio: Aggiungere un Pulsante
� Problema:
� come integrare il nostro plug-in all’interno della piattaforma?
� Soluzione:
� Eclipse fornisce il plug-in org.eclipse.ui
29
� Eclipse fornisce il plug-in org.eclipse.ui
• Non ha niente a che fare con la User Interface
� org.eclipse.ui ha un extension point org.eclipse.ui.actionSets
![Page 30: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/30.jpg)
AOTAOTLABLAB Esempio: Esempio: Esempio: Esempio: org.eclipse.ui.actionSetsorg.eclipse.ui.actionSetsorg.eclipse.ui.actionSetsorg.eclipse.ui.actionSets
� Utilizzato per aggiungere contribution alla piattaforma, in particolare:� Nuove voci ai menù
� Nuovi pulsanti nella toolbar
� I pulsanti nelle toolbar sono raggruppati in Action
Sets
30
Sets
� Contribuire con un pulsante� Definire un action set
� Definire un’azione (che verrà invocata alla pressione del pulsante)
� Definire la posizione in cui appare il pulsante (toolbar path)
� Dichiarare l’implementazione dell’azione (classe Java)
� Dichiarare l’aspetto del pulsante (icona)
![Page 31: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/31.jpg)
AOTAOTLABLAB Esempio: la StrutturaEsempio: la StrutturaEsempio: la StrutturaEsempio: la Struttura
org.eclipse.ui org.eclipse.hello
HelloActionIWorkbenchWindowActionDelegate
actionSets [extension]contributes
implements
31
� org.eclipse.ui� Ha un extension point actionSets� Dichiara l’interfaccia IWorkbenchWindowActionDelegate
� org.eclipse.hello� Implementa l’interfaccia IWorkbenchWindowActionDelegate con la
classe HelloAction� Contribuisce all’extension point actionSets con la classe
HelloAction
![Page 32: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/32.jpg)
AOTAOTLABLAB Esempio: la classe HelloActionEsempio: la classe HelloActionEsempio: la classe HelloActionEsempio: la classe HelloAction
public class HelloAction implements IWorkbenchWindowActionDelegate {
public void dispose() {…}
public void init(IWorkbenchWindow window) { … }
32
public void run(IAction action) {
MessageDialog.openInformation(
null, null, “Hello World”);
}
public void selectionChanged(IAction action, ISelection selection) {…}
}
![Page 33: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/33.jpg)
AOTAOTLABLAB Esempio: Plugin.xml Esempio: Plugin.xml Esempio: Plugin.xml Esempio: Plugin.xml –––– DipendenzeDipendenzeDipendenzeDipendenze
� Lista di tutti i plug-in che sono necessari per la compilazione e l’esecuzione del nostro plug-in
<plugin>
...
<requires>
33
<requires>
<import plugin=“org.eclipse.ui”/>
</requires>
...
</plugin>
![Page 34: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/34.jpg)
AOTAOTLABLAB Esempio: Plugin.xml Esempio: Plugin.xml Esempio: Plugin.xml Esempio: Plugin.xml –––– ExtensionExtensionExtensionExtension
<plugin>
...
<extension point=“org.eclipse.ui.actionSets”>
<actionSet
id=“org.eclipse.hello.actionSet”
label=“Hello Set”>
<action
34
<action
id=“org.eclipse.hello.HelloAction”
label=“Hello”
toolbarPath=“helloGroup”
class=“org.eclipse.hello.HelloAction”>
</action>
</actionSet>
</extension>
...
</plugin>
![Page 35: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/35.jpg)
AOTAOTLABLAB Esempio: Hello WorldEsempio: Hello WorldEsempio: Hello WorldEsempio: Hello World
35
![Page 36: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/36.jpg)
AOTAOTLABLAB Rilascio di un PlugRilascio di un PlugRilascio di un PlugRilascio di un Plug----inininin
� Un plug-in si presenta come una cartella
strutturata, presente nella cartella “plugins” di
Eclipse
� Un plug-in viene rilasciato nella maggior parte
dei casi come uno zip
36
dei casi come uno zip
� Applicazioni medio-grandi sono composte da più
plug-in (da qualche unità a qualche centinaio)
� Feature: un insieme coerente di plugin
• Con una descrizione
• Con un meccanismo automatico di installazione
• Con una licenza
![Page 37: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/37.jpg)
AOTAOTLABLAB Il Sito WebIl Sito WebIl Sito WebIl Sito Web
http://www.eclipse.org
37
![Page 38: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/38.jpg)
AOTAOTLABLAB Eclipse Download Eclipse Download Eclipse Download Eclipse Download
Eclipse IDE for Java Developers (78MB)Versione specifica per lo sviluppo di applicazioni Java
38
Versione specifica per lo sviluppo di applicazioni Java
• Java editing with validation
• Compilazione incrementale
• Cross-referencing
• Code assist
• XML Editor
• Mylyn
![Page 39: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/39.jpg)
AOTAOTLABLAB Eclipse Download Eclipse Download Eclipse Download Eclipse Download
Eclipse IDE for Java EE Developers (125MB)
39
Eclipse IDE for Java EE Developers (125MB)Versione che contiene tutti gli strumenti necessari per creare
applicazioni Java Enterprise Edition (Java EE).
• Java editing
• Compilazione incrementale
• Supporto a Java EE 5
• Editor grafico per HTML/JSP/JSF
• Tool per la gestione di database
• Supporto integrato per i più conosciuti application servers
![Page 40: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/40.jpg)
AOTAOTLABLAB Eclipse Download Eclipse Download Eclipse Download Eclipse Download
40
Eclipse IDE for C/C++ Developers (63MB)
Versione studiata appositamente per gli sviluppatori in C/C++
• Editor con syntax highlighting ed autocompletamento
• Compilatore e Debugger
• Funzionalità di ricerca
• Generatore di makefile
![Page 41: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/41.jpg)
AOTAOTLABLAB Eclipse Download Eclipse Download Eclipse Download Eclipse Download
Eclipse for RCP/Plug-in Developers (153MB)
Versione specifica per lo sviluppo di applicazioni basate sulla
41
Versione specifica per lo sviluppo di applicazioni basate sullapiattaforma Eclipse
• Plug-in specifici per lo sviluppo
• Eclipse Rich Client Platform (RCP)
• Java editing con compilazione incrementale
• Plug-in Development Environment (PDE)
• XML Editor
• Mylyn
• Codice sorgente completo della piattaforma
![Page 42: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/42.jpg)
AOTAOTLABLAB Eclipse Download Eclipse Download Eclipse Download Eclipse Download
Eclipse Classic (140MB)
42
Eclipse Classic (140MB)Versione tradizionale di Eclipse che contiene tutto quello che è
necessario per lo sviluppo di applicazioni
• Eclipse IDE
• Eclipse Rich Client Platform (RCP)
• Plug-in Development Environment (PDE)
• Codice sorgente completo della piattaforma
![Page 43: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/43.jpg)
AOTAOTLABLAB VersioniVersioniVersioniVersioni
43
http://www.eclipse.org/epp/content.php
![Page 44: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/44.jpg)
AOTAOTLABLAB WorkbenchWorkbenchWorkbenchWorkbench
� Il Workbench rappresenta l’interfaccia utente
della piattaforma Eclipse
� Il Workbench usa JFace e vi aggiunge alcune
funzionalità più complesse
� Componenti fondamentali
44
� Componenti fondamentali
� Editors
� Views
� Perspectives
![Page 45: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/45.jpg)
AOTAOTLABLAB Workbench Workbench Workbench Workbench ---- TerminologiaTerminologiaTerminologiaTerminologia
Tool bar
Perspective
and
Fast View
barOutline
Menu barText
editor
45
Resource
Navigator
view
Stacked
views
Properties
view
Tasks
view
Outline
view
Bookmarks
view
Message
area
Editor
Status
area
![Page 46: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/46.jpg)
AOTAOTLABLAB WorkspaceWorkspaceWorkspaceWorkspace
� Risorse: permette di accedere a files, directory o progetti
� Il Workspace è in grado di gestire 1 o più progetti
� I progetti corrispondono a directory nel file system
� Vista Navigator
� Albero di file e directory
46
� Vari tool permettono di leggere, creare, modificare, cancellare risorse nel workspace
![Page 47: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/47.jpg)
AOTAOTLABLAB EditorsEditorsEditorsEditors
� Compaiono nell’area centrale del workbench
� Aggiungono azioni ai menu del workbench e alle
toolbar
� Open, edit, save, close lifecycle
47
� Il workbench fornisce
� Extension Point per creare nuovi tipi di editors
• Esempio: JDT crea un editor per gestire i file Java
� API per editor di testo estendibili ed un framework
![Page 48: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/48.jpg)
AOTAOTLABLAB ViewsViewsViewsViews
� Forniscono informazioni su di un oggetto
� Completano le funzionalità degli editors� Esempio: l’Outline View riassume il contenuto
dell’editor
� Completano altre views
48
� Esempio: la “Properties View” caratterizza una selezione
� Il workbench fornisce:� Extension Point per definire nuovi tipi di views
� La piattaforma Eclipse include un certo numero di views standard� Esempio: Resource Navigator, Outline, Properties,
Tasks, Bookmarks, Search, …
![Page 49: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/49.jpg)
AOTAOTLABLAB PerspectivesPerspectivesPerspectivesPerspectives
� Sono disposizioni di views ed editors
� Diverse perspectives possono essere utilizzate
per gestire diverse operazioni
� Il workbench fornisce:
� Extension Point per definire nuove perspectives
49
� Extension Point per definire nuove perspectives
� La piattaforma Eclipse include un certo numero
di perspectives standard
� Esempio: Resource, Debug, …
![Page 50: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/50.jpg)
AOTAOTLABLAB Eclipse HelpEclipse HelpEclipse HelpEclipse Help
50
![Page 51: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/51.jpg)
AOTAOTLABLAB RisorseRisorseRisorseRisorse
� Sito Ufficiale: http://www.eclipse.org/resources/
� Articoli, Webinars, podcasts, libri, presentazioni, esempi di codice, dimostrazioni video, corsi
� Plug-in: http://www.eclipseplugincentral.org
� Tutorial for Beginners:
http://eclipsetutorial.sourceforge.net
51
http://eclipsetutorial.sourceforge.net
� Video tutorial
� Eclipse Live: http://live.eclipse.org/
� Webinars, podcast, articoli, presentazioni
� Eclipse Planet: http://www.planeteclipse.org/planet/
� Feed Rss, articoli, blog
� Eclipse Zone: http://www.eclipsezone.com/
![Page 52: AOT A O T Lab LAB Dipartimento di Ingegneria dell ...negri/Eclipse3.pdf · LAB Eclipse: Tools Framework Estensibilità attraverso l’implementazione OSGi I plug-in rendono Eclipse](https://reader033.fdocument.pub/reader033/viewer/2022060513/5f2bc47cc9d4922d4c636980/html5/thumbnails/52.jpg)
Agent and Object Technology LabDipartimento di Ingegneria dell’Informazione
Università degli Studi di Parma
AOTAOTLABLAB
Eclipse Platform 3.3Eclipse Platform 3.3Eclipse Platform 3.3Eclipse Platform 3.3
(EUROPA)(EUROPA)(EUROPA)(EUROPA)
Alessandro Negri
http://www.ce.unipr.it/people/negri/