Software Development Tools - The Eclipse Platform - Alessandro Negri

Pagina creata da Roberto Mantovani
 
CONTINUA A LEGGERE
Software Development Tools - The Eclipse Platform - Alessandro Negri
AOT Lab
       Dipartimento di Ingegneria
            dell’Informazione
      Università degli Studi di Parma

Software Development
        Tools
- The Eclipse Platform -

       Alessandro Negri
       negri@ce.unipr.it
Software Development Tools - The Eclipse Platform - Alessandro Negri
Eclipse

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

Š Versione attuale: Eclipse 3.1.1 (30 Sett. 2005)
Š Scaricabile dal sito ufficiale: www.eclipse.org

                                                     2
Software Development Tools - The Eclipse Platform - Alessandro Negri
La piattaforma attuale

                     3
Software Development Tools - The Eclipse Platform - Alessandro Negri
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
  ƒ JDT (Java Development Tools)
  ƒ PDE (Plug-in Development Environment)
                                                    4
Software Development Tools - The Eclipse Platform - Alessandro Negri
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

                                                           5
Software Development Tools - The Eclipse Platform - Alessandro Negri
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
   ƒ Possibilità di inserire nuovi tool al prodotto di base per
     venire incontro alle esigenze del singolo sviluppatore
                                                                  6
Software Development Tools - The Eclipse Platform - Alessandro Negri
Architettura (1)

Š Eclipse è una piattaforma universale per integrare
  tool di sviluppo
Š Ha un’architettura aperta, estendibile, basata su
  plug-in
    Plug-in Development             PDE
    Environment

    Java Development                JDT
    Tools

      Eclipse Platform            Platform

      Standard Java2
      Virtual Machine              Java VM

                                                       7
Software Development Tools - The Eclipse Platform - Alessandro Negri
Architettura (2)

                                     Estende il JDT fornendo il
                                     supporto per lo sviluppo
                                          di nuovi plug-in
Plug-in Development Environment
                                     Fornisce un’IDE Java con
                                      possibilità di estendere
                                          l’infrastruttura

Java Development Tools
                                     Definisce un’infrastruttura
                                     estendibile, indipendente
                                          dal linguaggio di
                                          programmazione
Platform

                                                                   8
Software Development Tools - The Eclipse Platform - Alessandro Negri
Architettura (3)
                                          Definisce il paradigma di
                                                             Another
                                           base dell’interfaccia  di
                  Eclipse Platform
                                                                Tool
                                         Eclipse, basato sul concetto
                                                  Un insieme di piccoli
                                               di editor, views e
    Java             Workbench                     framework per l’UI,
                                         Help perspectives
Development                                         sviluppati su SWT
   Tools                   JFace
                                           Standard Widget Toolkit
   (JDT)                                  gestisce la grafica di base
                     SWT
                                         Team                  Your
                                          e definisce un set standard
                                                   di widget Tool

  Plug-in            Workspace            Gestisce un insieme di
Development                           Debugprogetti. Un progetto
Environment
                                        consiste in un insieme di
   (PDE)
                                              file e directory
                                         corrispondenti a risorse
                                                            Their a
                                              sul file system
                       Platform Runtime Definisce l’infrastruttura
                                        plug-in, riconosce Tool
                                                              i plug-in
Eclipse Project                          disponibili e ne gestisce il
                                                 ciclo di vita

                                                                          9
Software Development Tools - The Eclipse Platform - Alessandro Negri
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

                                                                  10
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è
           …???

                                                                                11
SWT - Esempi

           12
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…

                                                                13
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

                                                        14
Workbench - Terminologia

Menu bar
                                  Text
Tool bar                          editor

Perspective
and
Fast View
bar
                                  Outline
                                  view
Resource
Navigator
view

                                  Bookmarks
Properties                        view
view

Message                           Editor
area                              Status
                                  area
              Stacked   Tasks
              views     view                15
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

                                                                   16
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, …
                                                                17
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, …

                                                       18
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

                                                                             19
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:
   ƒ plugin.xml: il manifest, una descrizione della Contribution
   ƒ resources: risorse utili al plugin (es. icone) - OPZIONALE
   ƒ Java code: strutturato in file .jar - OPZIONALE

                                                                       20
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

                                                                                    21
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
  ƒ plugin.xml: descrive le proprietà del plug-in

                                                                  22
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

                                                                        23
Architettura del Plug-in (2)
         plug-in A                                plug-in B
                  extension          contributes
                                                           extension
                   point P

                                     implements
                  interface I                                 class C

                                                 creates, calls
Š 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

                                                                              24
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

                                                            25
Eclipse Help

           26
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

                                                                   27
EMF – Ecore (1)

Š Il metamodello utilizzato da EMF per
  rappresentare modelli è chiamato Ecore
Š Un sottoinsieme di un Ecore model

                                            28
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
                                                             29
EMF - Core

Š Gli elementi XML corrispondono esattamente alle istanze del
  metamodello Ecore
                                                                                     30
EMF – Generazione del Codice Java

                                31
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)

                                                        32
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

                                                                           33
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
     • JVM introspection
  ƒ APT: supporto per le annotazioni introdotte nella
    versione Java 5.0
                                                                34
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

                                                                    35
RCP – Esempi (1)

IBM Lotus Workplace
                          36
RCP – Esempi (2)

Eclipse Trader
                          37
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

                                                          38
Omondo EclipseUML Plug-in

Š Tool visuale per la modellizzazione UML,
  integrato in modo nativo con Eclipse e CVS

Š 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

                                                              39
Omondo – Architettura Prodotti

                             40
Omondo – Free & Studio Edition

                             41
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
  ƒ   CVS
  ƒ   Team solution

                                                    42
Omondo - Diagrammi Supportati

Š   Class Diagram
Š   Sequence Diagram
Š   Use Case Diagram
Š   State Diagram
Š   Activity Diagram
Š   Object Diagram
Š   Component Diagram
Š   Deployment Diagram
Š   Robustness Diagram

                                     43
Omondo – Class Diagram

Creare un class diagram

                                       44
Omondo – Class Diagram

Creare una classe

                                         45
Omondo – Class Diagram

                     46
Omondo – Class Diagram

                     47
Omondo – Sequence Diagram

                        48
Omondo – Use Case Diagram

                        49
Omondo – State Diagram

                     50
Omondo – Database Explorer

                         51
Eclipse Homepage
www.eclipse.org

                       52
Eclipse Download Page

                    53
Eclipse Download Page

                    54
Eclipse Documentation

                    55
Omondo Homepage

              56
Omondo Download Page

                   57
Demo

DEMO

          58
AOT Lab
       Dipartimento di Ingegneria
            dell’Informazione
      Università degli Studi di Parma

Software Development
        Tools
- The Eclipse Platform -

       Alessandro Negri
       negri@ce.unipr.it
Puoi anche leggere