S T L - C P S - L e s p l u g i n s E c l i p s e - Une Introduction - 2007, Frédéric Peschanski
L a p l a t e f o r m e E c l i p s e Aperçu de la plateforme Eclipse Runtime Composants OSGI Equinoxe Plugins Development Environment Extensions ActionSets et View (Swt/JFace) Workspace interfaces/objets Platform, PluginRegistry, Selection service, etc. Quoi encore? features, builder, markers, natures, etc.
A r c h i t e c t u r e d e l a p l a t e f o r m e
P l a t f o r m r u n t i m e org.eclipse.osgi org.eclipse.core.runtime Définition du modèle de plugin Gestion du registre des plugins: déploiement (archive) installation/désinstallation Découverte automatique Chargement/déchargement à la demande Résolution dynamique des dépendances Implémentation Bundle OSGI (sorte de super jar )
W o r k s p a c e Gestion des ressources Création, chargement, sauvegarde Projets Fichiers Répertoires Autres types de ressources (extensible) connexion avec le système de fichier répertoire workspace
W o r k b e n c h ( U I ) org.eclipse.ui.workbench Implémentation du modèle d'interface utilisateur basé sur SWT: toolkit portabilité native et JFace: framework MVC: Vues et Editeurs Points d'extension Eclipse ActionSet (menus et actions) Views (vues) etc. Rich client Platform: Sous-ensemble du workbench
I n t e r f a c e d u W o r k b e n c h
F r a m e w o r k O S G I OSGI orienté service bundle = implémenation modulaire et portable de service(s) composants binaires services de base: installation/désinstallation, chargement/activation dynamique, découverte, log, etc. Utilisation dans Eclipse découverte de Plugin chargement à la demande (déchargement?) résolution des inter-dépendances chargement éventuel de plugins requis
C y c l e d e v i e d e s B u n d l e O S G I Installed Starting start Resolved Active stop Uninstalled Stopping
D e m o 1 : c o n s o l e O S G I
P l u g i n E c l i p s e Composant structuré descriptif de bundle OSGI (manifest MANIFEST.MF) descriptif de plugin Eclipse (manifest plugin.xml) code d'implémentation du plugin (généralement en Java) Environnement de développement PDE code d'implémentation Java (JDT) configuration (manifest.mf, plugin.xml, etc.) packaging (création d'un jar)
E c l i p s e S D K
P o i n t s d ' e x t e n s i o n e t e x t e n s i o n s Point d'extension point d'ancrage dans plugins le provide des composants ressemble à la déclaration d'une interface mais description en XML Extension greffon attaché à un point d'extension le require des composants ressemble à une liaison entre une interface et une implémentation (description XML)
L i a i s o n Extension Point Extension Plugin A (provide) (require) Plugin B Liaison statique définie dans plugin.xml <extension-point>... pour le fournisseur <extension>... pour le requiérant Chargement dynamique si chargement nécessaire de Plugin B chargement automatique de plugin A
E t e n d r e E c l i p s e Plugin contributions extension de points d'extension standards des plugins de base d'eclipse Points d'extension du workspace Points d'extension du workbench etc. Plugin contributeur propose de nouveaux points d'extension pour d'autres plugins
P o i n t s d ' E x t e n s i o n d u W o r k b e n c h
C a t é g o r i e s d e c o n t r i b u t i o n s Action Set menus, popup menus, etc. Views affichage d'information Editors édition d'information Perspectives Assemblage d'actions, de vues et d'éditeurs pour supporter un processus global (ex. perspective Java rédiger du code Java)
C a t é g o r i e s d e c o n t r i b u t i o n s ( 2 ) Wizards Suite ordonnée de dialogues pour réaliser une tâche Pages de préférences interface de paramétrage du plugin (global) Pages de propriétés idem pour les ressources (local) Builders, Markers, Natures extensions au niveau projet etc!
E x e m p l e : P l u g i n s T i m e r / C l o c k Plugin Timer Extension du workbench Action sets ajout d'un menu dans la barre de menus Point d'extension: permet l'enregistrement de tâche répétitives ou à déclencher de façon retardée (mini-cron) Plugin Clock Extension du workbench View ajout d'une vue Extension du Timer si actif, se réveille toutes les secondes
D e m o 2 : p l u g i n s T i m e r / C l o c k
L i e n s u t i l e s Eclipse http://www.eclipse.org OSGI http://www.osgi.org/ eclipse equinoxe http://www.eclipse.org/equinoxe Développement de plugins http://www.instantiations.com/eclipseworld2007/commercialqualityplugins07.pdf