• Non ci sono risultati.

- The Eclipse Platform -

N/A
N/A
Protected

Academic year: 2022

Condividi "- The Eclipse Platform -"

Copied!
59
0
0

Testo completo

(1)

AOT Lab

Dipartimento di Ingegneria dell’Informazione

Università degli Studi di Parma

Software Development Tools

- The Eclipse Platform -

Alessandro Negri

negri@ce.unipr.it

(2)

Eclipse

Š “Eclipse, an extensible development platform and application frameworks for building software”

Š Versione attuale: Eclipse 3.1.1 (30 Sett. 2005)

(3)

3

La piattaforma attuale

(4)

Il progetto Eclipse

Š 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

Š Migrato verso la licenza opensource di IBM e diviso in 3 progetti principali

ƒ Piattaforma

(5)

5

La licenza OpenSource IBM

Š CPL (Common Public License)

Š Licenza promossa da IBM

Š La licenza CPL è stata approvata dall'Open

Source Initiative (OSI) e permette agli sviluppatori di modificare il codice e riutilizzarlo all'interno di prodotti commerciali

Š Recentemente anche Microsoft ha rilasciato

alcune librerie con licenza CPL

(6)

Obiettivo 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

ƒ Gestisca in modo completo vari tipi di linguaggi: HTML, Java, C/C++, XML, JSP, EJB …

Š Facilitare l’integrazione di tool specifici

(7)

7

Architettura (1)

Š Eclipse è una piattaforma universale per integrare tool di sviluppo

Š Ha un’architettura aperta, estendibile, basata su plug-in

Java VM Standard Java2

Virtual Machine

Platform Eclipse Platform

Java Development

Tools JDT

Plug-in Development PDE Environment

(8)

Architettura (2)

Plug-in Development Environment

Java Development Tools

Definisce un’infrastruttura estendibile, indipendente

dal linguaggio di

Fornisce un’IDE Java con possibilità di estendere

l’infrastruttura

Estende il JDT fornendo il supporto per lo sviluppo

di nuovi plug-in

(9)

9

Architettura (3)

Platform Runtime

Workspace

Help

Team Workbench

JFace SWT

Eclipse Project

Java

Development Tools (JDT)

Their Tool Your Tool Another

Tool

Plug-in Development

Environment (PDE)

Eclipse Platform

Debug

Definisce il paradigma di base dell’interfaccia di Eclipse, basato sul concetto

di editor, views e perspectives

Un insieme di piccoli framework per l’UI,

sviluppati su SWT Standard Widget Toolkit gestisce la grafica di base e definisce un set standard

di widget

Gestisce un insieme di progetti. Un progetto consiste in un insieme di

file e directory corrispondenti a risorse

sul file system

Definisce l’infrastruttura a plug-in, riconosce i plug-in

disponibili e ne gestisce il ciclo di vita

(10)

Workspace

Š 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

Š Vari tool permettono di leggere, creare, modificare, cancellare risorse nel workspace

(11)

11

Standard Widget Toolkit

Š Libreria contenente un insieme di strumenti grafici generici per la costruzione di GUI

ƒ bottoni, liste, testo, menu, alberi, testi formattati, …

Š Ha API indipendenti dal sistema operativo, ma …

Š … richiede componenti nativi per ogni sistema operativo

ƒ Ogni piattaforma operativa deve mettere a disposizione il proprio file swt.jar

In Windows è una .dll, in Linux un .so

Š Ogni progetto grafico in Eclipse deve utilizzare SWT, ma …

Š … SWT può essere utilizzato anche indipendentemente da Eclipse

Ha spesso dimostrato prestazioni migliori rispetto a Swing, perchè

…???

(12)

SWT - Esempi

(13)

13

JFace

Š JFace è un framework grafico di più alto livello costruito su SWT

Š Mette a disposizione una serie di classi per gestire le operazioni standard di un’interfaccia grafica

Š Le API e l’implementazione sono indipendenti dal sistema operativo

Š Permette di costruire in modo rapido:

ƒ Finestre di dialogo, preferenze, wizard, alberi, tabelle, liste, ecc…

(14)

Workbench

Š Il Workbench rappresenta l’interfaccia utente della piattaforma Eclipse

Š Il Workbench usa JFace e vi aggiunge alcune funzionalità più complesse

Š Componenti fondamentali

ƒ Editors

ƒ Views

ƒ Perspectives

(15)

15

Workbench - Terminologia

Tool bar

Perspective and

Fast View bar

Resource Navigator view

Stacked views Properties

view

Tasks view

Outline view

Bookmarks view

Menu bar

Message area

Editor Status area Text editor

(16)

Editors

Š Compaiono nell’area centrale del workbench

Š Aggiungono azioni ai menu del workbench e alle toolbar

ƒ Open, edit, save, close lifecycle

Š 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

(17)

17

Views

Š Forniscono informazioni su di un oggetto

Š Completano le funzionalità degli editors

ƒ Esempio: l’Outline View riassume il contenuto dell’editor

Š Completano altre views

ƒ 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, …

(18)

Perspectives

Š Sono disposizioni di views ed editors

Š Diverse perspectives possono essere utilizzate per gestire diverse operazioni

Š Il workbench fornisce:

ƒ Extension Point per definire nuove perspectives

Š La piattaforma Eclipse include un certo numero di perspectives standard

ƒ Esempio: Resource, Debug, …

(19)

19

La 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

Š 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

(20)

Plug-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 una semplice funzione (es. l’azione per creare un file zip)

Š Un plugin si concretizza fisicamente in una directory con all’interno:

(21)

21

Plug-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:

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

(22)

Architettura del Plug-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 (OPZIONALE)

ƒ Risiede in una sottodirectory a lui dedicata

Š Plug-in Manifest

ƒ Dichiara tutte le “Contributions”

ƒ Implementa interfacce o fornisce API

(23)

23

Extension e Extension Point

Š Un Extension Point è un punto di aggancio per i contributi dei plugin

ƒ “Qualcuno” (un altro plugin) 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

ƒ 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

(24)

Architettura del Plug-in (2)

Š Plug-in A

ƒ Dichiara un Extension Point P

ƒ Dichiara un’interfaccia I per il punto P

Š Plug-in B

plug-in A plug-in B

class C interface I

extension

point P contributes extension

creates, calls implements

(25)

25

Eclipse Platform Runtime

Š Eclipse Platform Runtime è un micro-kernel

ƒ Tutte le funzionalità sono implementate in plug-ins

Š Eclipse Platform Runtime gestisce l’inizializzazione e la creazione dell’ambiente di lavoro

ƒ Ricerca tutti i plug-ins installati sul disco

ƒ Unisce tutte le Extensions con i rispettivi Extension Points

ƒ Costruisce un registro globale dei plug-in

ƒ Crea una copia in cache del registro per l’esecuzione successiva

(26)

Eclipse Help

(27)

27

Eclipse Modeling Framework

“To model or to program, that is not the question”

Š E’ un framework per la generazione di codice Java

Š Concetti fondamentali

ƒ Portable design

ƒ Dynamic integration

ƒ Flexible development and tools integration using metadata

ƒ Better use of design patterns and templates

(28)

EMF – Ecore (1)

Š Il metamodello utilizzato da EMF per

rappresentare modelli è chiamato Ecore

Š Un sottoinsieme di un Ecore model

(29)

29

EMF – Ecore (2)

Š Esempio di un ordine di acquisto

Š Quando instanziamo le classi definite in un metamodello Ecore per definire un modello della nostra applicazione, stiamo creando un Core model Æ rappresentazione XMI

(30)

EMF - Core

<?xml version="1.0" encoding="ASCII"?>

<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI“

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance“

xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"

name="po" nsURI="http:///com/example/po.ecore"

nsPrefix="com.example.po">

<eClassifiers xsi:type="ecore:EClass" name="PurchaseOrder">

<eReferences name="items“ eType="#//Item" upperBound="-1" containment="true"/>

<eAttributes name="shipTo“ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

<eAttributes name="billTo“ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

</eClassifiers>

<eClassifiers xsi:type="ecore:EClass" name="Item">

<eAttributes name="productName“ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

<eAttributes name="quantity“ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>

<eAttributes name="price“ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>

(31)

31

EMF – Generazione del Codice Java

(32)

Graphical Editing Framework

Š Permette di sviluppare rappresentazioni grafiche di modelli precostruiti

Š Utilizza:

ƒ Draw2D: standard framework per il disegno in 2D basato su SWT

ƒ Usa l’architettura MVC (Model-View-Controller)

(33)

33

GEF e EMF

Š GEF e EMF sono stati progettati per essere utilizzati insieme per la generazione di editor grafici

Š Vantaggi

ƒ EMF permette di creare modelli consistenti, efficienti e facilmente modificabili

ƒ Tramite MVC c’è perfetta integrazione fra EMF e GEF

ƒ Viene mantenuto un legame reciproco fra modello ed implementazione

ƒ Si possono creare editor standard in modo automatico usando le EMF API

Š Passi principali

ƒ Crea il tuo modello

ƒ Definisci la view

ƒ Scrivi le tue EditParts ed i Controllers

ƒ Metti insieme il tutto

(34)

Java Development Tools

Š Composto da una serie di plug-in per la creazione di un’IDE per la gestione di progetti Java

Š Fornisce API per essere esteso a piacere

Š Componenti principali:

ƒ Core: definisce l’infrastruttura non grafica

Java builder, search, refactoring, tree navigation

ƒ UI: workbench specifico per Java

Packages View, Type Hierarchy View, Java Outline View, Wizards per creare elementi Java, Java Editor

ƒ Debug: fornisce strumenti per il debugging

(35)

35

Rich Client Platform

Š “The Rich Client Platform (RCP) is an exciting new way to build Java applications that can compete with native applications on any platform.”

Š Storia:

ƒ Eclipse 2.1: degli hacker nella comunità di Eclipse cominciarono a sviluppare delle applicazioni non-IDE

ƒ Eclipse 3.0: gli aspetti relativi all’IDE sono stati estratti dal workbench, dando origine a RCP

(36)

RCP – Esempi (1)

(37)

37

RCP – Esempi (2)

Eclipse Trader

(38)

RCP - Prestazioni

Š Un’applicazione RCP è un’applicazione di Eclipse nella quale il workbench è eseguito nel main event loop

Š Alcuni numeri:

ƒ Dimensione download ~ 5MB

ƒ Dimensione decompresso ~ 6MB

ƒ Dimensione VM di Hello World (non Eclipse) ~ 8MB

ƒ Dimensione VM di Hello World RCP ~ 9MB

ƒ Numero di plug-in inseriti nel bianrio di RCP: 10

(39)

39

Omondo EclipseUML Plug-in

Š Gratuito solo in versione personale

ƒ Versione attuale: 2.1.0

Š Sviluppato in Java, disponibile al sito:

http://www.omondo.org

Š Eclipse 100% native API

ƒ Permette di integrare il plug-in in altre applicazioni

Š Tool visuale per la modellizzazione UML,

integrato in modo nativo con Eclipse e CVS

(40)

Omondo – Architettura Prodotti

(41)

41

Omondo – Free & Studio Edition

(42)

Omondo - Funzionalità

Š Supporto per gestire la creazione di diagrammi UML 2.0: disegno, modifica, stampa, zoom …

Š Reverse Engeneering

Š Sincronizzazione automatica fra i modelli ed il codice corrispondente

Š Integrazione automatica con EMF e GEF

Š Nella versione EclipseUML Studio

ƒ Graphical Database Diagram

ƒ EclipseJ2ee

(43)

43

Omondo - Diagrammi Supportati

Š Class Diagram

Š Sequence Diagram

Š Use Case Diagram

Š State Diagram

Š Activity Diagram

Š Object Diagram

Š Component Diagram

Š Deployment Diagram

Š Robustness Diagram

(44)

Omondo – Class Diagram

Creare un class diagram

(45)

45

Omondo – Class Diagram

Creare una classe

(46)

Omondo – Class Diagram

(47)

47

Omondo – Class Diagram

(48)

Omondo – Sequence Diagram

(49)

49

Omondo – Use Case Diagram

(50)

Omondo – State Diagram

(51)

51

Omondo – Database Explorer

(52)

Eclipse Homepage

www.eclipse.org

(53)

53

Eclipse Download Page

(54)

Eclipse Download Page

(55)

55

Eclipse Documentation

(56)

Omondo Homepage

(57)

57

Omondo Download Page

(58)

Demo

DEMO

(59)

AOT Lab

Dipartimento di Ingegneria dell’Informazione

Università degli Studi di Parma

Software Development Tools

- The Eclipse Platform -

Alessandro Negri

negri@ce.unipr.it

Riferimenti

Documenti correlati

that may be altered by cellular changes occurring during the aging process are: expression levels, post-translational modifications, such as glycosylation and phosphorylation, as

 FEEDBACK PER M (nelle abilità numeriche, logiche, verbali): Le tue risposte alla sezione abilità numeriche, verbali e logiche rilevano una moderata abilità in tutte

MAGL, monoacylglycerol lipase; GPCRs, G protein-coupled receptors; FABPs, fatty acid binding proteins; FAAH, fatty acid amide hydrolase; NAAA, N-acylethanolamine hydrolyzing

This preliminary analysis demonstrated that the configuration where an ad hoc reader antenna is chosen as identical to the tag antenna (“shape-matched

(HERA-B Collaboration), Kinematic distribu- tions and nuclear effects of J=ψ production in 920 GeV fixed-target proton-nucleus collisions, Eur.. Adare

Questo può accadere, per esempio, quando si usano i progetti forniti nel corso, come per esempio le soluzioni agli esercizi o quelli fatti in laboratorio, che possono essere creati

● Nel menù di sinistra scegliere Java Build Path e nella scheda Libraries cliccare su Add Librarie.. ● Nella schermata Add Librarie cliccare su JRE System Librarie e selezionare

● Nella classe ModelSwarm creiamo il metodo pubblico buildObjects() che ritorna tipo Object..