Unite´ d’Enseignement L3 : Projet de Developpement´
Gilles Menez
Universite´ de Nice – Sophia-Antipolis Departement´ d’Informatique email : [email protected] www : www.i3s.unice.fr/˜menez
22 mars 2011: V 1.1
c Gilles Menez 1 Introduction a` Eclipse
Introduction a` Eclipse
ª EDI : Introduction et historique ª Architecture d’Eclipse
Ref´ erences´ : Site Eclipse http://www.eclipse.org Tutoriaux de JM Doudoux http://www.jmdoudoux.fr/accueil_java.html Introduction a` Eclipse 3.4 Ganymede http://vogella.developpez.com/tutoriels/eclipse/ prise-en-main-eclipse-ganymede/
c Gilles Menez 2 Introduction a` Eclipse Introduction Eclipse est un ”EDI”
EDI : Environnement de Developpement´ Integr´ e´ Un logiciel regroupant un ensemble d’outils necessaires´ au developpement´ des applications dans un langage de programmation.
editeur´ de texte specialis´ e,´ un compilateur, un debogueur,´ un gestionnaire de projets (organisation de fichiers, variables de compilation, execution),´ un gestionnaire de versions, un gen´ erateur´ de documentation, ...
c Gilles Menez 3 Introduction a` Eclipse Historique des EDI Historique des EDI
¢ 1970 : Introduction des makefiles et des fichiers de configurations. ¢ 1980 : Environnement graphique et premiers EDI. ª 1981 : Turbo Pascal ª 1983 : Borland Turbo Pascal(DOS) a` 50 $ ª 1987 : Borland Turbo C ¢ 1990 : Les ”gros” s’y mettent . . . ª 1991 : Microsoft Visual Basic 1 ª 1997 : Microsoft Visual Studio (C++) ª 1994 : IBM VisualAge ª 1996 : Sun Microsystems Netbeans ª 2001 : IBM Eclipse . . . de soleil ! ?
c Gilles Menez 4 Introduction a` Eclipse Eclipse et ses concurrents Eclipse et ses concurrents
¢ Logiciels Libres : ª Emacs, Xemacs : basiques, mais adaptables a` tout langage ª OpenOffice.org : langages de script ª Kdevelop (FDE) : C, C++ base´ sur les outils GNU ª Netbeans (Sun puis Oracle) : conc¸u pour Java, maintenant C, C++, XML, et HTML ª Code : :Blocks ª Eclipse (OTI-IBM) : Java, C/C++, PHP, HMTL, Python . . . ¢ Logiciels proprietaires´ : ª Visual Studio (Microsoft) : C/C++, .NET, C#, . . . ª JBuilder (Borland) : Java « Abandonnee´ au profit d’Eclipse. ª JCreator : Java ª Win Dev(PC Soft) Applicaiton PC Pocket et Mobile
c Gilles Menez 5 Introduction a` Eclipse Eclipse Eclipse : Logiciel Libre
5 Destine´ a` l’origine pour le developpement´ en Java, 5 Eclipse devient un EDI pour developper´ d’autres EDIs et outils. Objectifs : 5 Offrir une plateforme ouverte pour le developpement´ d’applications, 5 Non dedi´ ee´ a` un langage ou systeme` d’exploitation ou interface graphique, 5 Facile a` comprendre mais aussi facile a` etendre,´ 5 Parametrable´ selon les besoins/goutsˆ du programmeur, 5 Capable d’automatiser les tachesˆ lourdes du developpement,´ 5 Ayant une base stable, 5 Utilisable pour son propre developpement´ (”bootstrapable”), 5 Promouvant l’utilisation de Java, . . .
c Gilles Menez 6 Introduction a` Eclipse Historique d’Eclipse Historique d’Eclipse
¢ 1996 : IBM rachete` OTI, qui developpe´ la suite d’EDI Visual Age (en Smalltalk) , et en particulier VA4J
¢ 2001 : apres` un investissement de 40 M$, IBM lance Eclipse 1 ª Grand succes´ populaire car suite ouverte et gratuite (Licence CPL : Common Public License). ª Creation´ du consortium Eclipse (IBM, Borland, RedHat, Suse, Intel, . . . )
¢ 2002 : Eclipse 2.0
¢ 2004 : Eclipse 3.0
c Gilles Menez 7 Introduction a` Eclipse Historique d’Eclipse Historique d’Eclipse (suite)
¢ 2006 : Eclipse 3.2 Europa ª Premiere` release nommee´ pour stabiliser les ref´ erences´ aux sous-projets.
¢ 2009 : Eclipse 3.5 Galileo ª 33 projets internes allant de modelisation´ a` l’analyse des performances. ª Plus de 380 membres appartenant a` 44 organisations differentes´ ont contribue´ a` l’elaboration´ de cette version comportant : 24 millions de lignes de code !
c Gilles Menez 8 Introduction a` Eclipse Fondation Eclipse Fondation Eclipse
La fondation Eclipse est une structure independante´ regie´ par des regles` clairement formalisees´ :
http://www.eclipse.org/org/documents/
Les decisions´ sont prises par un conseil d’administration compose´ de representants´ des societ´ es´ ou organismes membres de la fondation. Debut´ 2006, la fondation Eclipse compte pres` de 120 membres : ª Repartis´ en differentes´ categories´ en fonction de leur niveau d’engagement (Strategic, Add-in Provider, Associate).
En plus d’etreˆ represent´ es´ au conseil d’administration, les membres participent a` trois comites´ charges´ d’organiser les travaux de la fondation. ª Les projets developp´ es´ dans le cadre de la fondation obeissent´ a` des regles` clairement formalisees.´
c Gilles Menez 9 Introduction a` Eclipse Projets Eclipse Projets Eclipse
Ces projets sont organises´ en plusieurs categories´ nommees´ ’Top- Level projects’ : 5 ”projets principaux” eux-memesˆ decoup´ es´ en sous-projets.
5 http://www.eclipsetotale.com/articles/Fondation_et_projet_Eclipse.html
¢ Eclipse : architecture et structure de la plateforme ¢ Eclipse Tools : outils pour permettre l’enrichissement de la plateforme (PDT, CDT sont bases´ sur ce projet) ¢ Eclipse Technology : recherche sur l’evolution´ de la plateforme ¢ Test and Performance Tools Platform (TPTP) : outils de test et d’analyse ¢ Business Intelligence and Reporting Tools (BIRT) : outils de gen´ eration´ d’etats´
c Gilles Menez 10 Introduction a` Eclipse Projets Eclipse Projets Eclipse (suite)
¢ Eclipse Modeling : Plusieurs sous-projets dont ª EMF (Eclipse Modeling Framework) : pour la manipulation de modeles` et projection vers du code ª UML2 : metamod´ ele` complet d’UML2 pour creation´ d’outils conforme ¢ Data Tools Platform (DTP) : Manipulation de source de donnees´ (BD relationnelles essentiellement) ¢ Device Software Development Platform : Outils pour plugins de developpement´ dedi´ e´ aux applications mobiles ¢ Eclipse SOA Tools Platform (STP) : Outil pour le developpement´ d’applications selon des architectures orientees´ services (web services, standard SCA, . . . )
c Gilles Menez 11 Introduction a` Eclipse Installation Installation
Page Web : Des infos utiles sur la pages Web de P.Collet . . . surtout avec des installations Linux ”agees”.´ ¢ http://deptinfo.unice.fr/twiki/bin/view/Linfo/ProjetDev2010Outils
Java/Python :
¢ Eclipse 3.5 JEE edition : http://www.eclipse.org/downloads/ ¢ Plugin subclipse1.6 (acces´ au ref´ erentiel´ svn) : http://subclipse.tigris.org/update_1.6.x (par update) ¢ Plugin pydev http://pydev.org/
c Gilles Menez 12 Introduction a` Eclipse Installation Installation (suite)
C: ¢ CDT 6.0.2 (par update) http://www.eclipse.org/cdt/downloads.php ¢ framework de test unitaire, check http://check.sourceforge.net
PHP/MySQL : ¢ PDT 2.1 : envt std PHP dans Eclipse http://www.eclipse.org/cdt/downloads.php : ¢ SimpleTest Plugin et framework de test (par update) : http://simpletest.org/eclipse/ ¢ SQL Plugin (par update) : http://eclipsesql.sourceforge.net/
c Gilles Menez 13 Introduction a` Eclipse Architecture Eclipse Architecture Eclipse Coherence,´ ”plug-in” !
http://www.ibm.com/developerworks/library/os-ecov/
c Gilles Menez 14 Introduction a` Eclipse Architecture Eclipse Platform runtime
La tacheˆ la plus importante qui lui incombe est de lancer la plateforme Eclipse elle-memeˆ (dans une JVM, donc OS-independant).´ The Platform runtime is the kernel that discovers at startup what plug-ins are installed and creates a registry of information about them. ª Un plug-in est un module qui etend´ les fonctionnalites.´ ª To reduce start-up time and resource usage, it does not load any plug-in until it is actually needed. ª Except for the kernel, everything else is implemented as a plug-in.
Il possede` d’autres fonctionnalites´ : ª gestion du log, gestion du ”preference store”, . . .
c Gilles Menez 15 Introduction a` Eclipse Architecture Eclipse
When the Platform is launched, the user is presented with an integrated development environment (IDE) composed of the set of available plug-ins. ¢ Except for a small kernel known as the Platform Runtime, all of the Eclipse Platform’s functionality is located in plug-ins !
c Gilles Menez 16 Introduction a` Eclipse Architecture Eclipse Workspace
The Workspace is the plug-in responsible for managing the user’s resources. This includes : the projects the user creates, the files in those projects, and changes to files and other resources.
The Workspace is also responsible for notifying other interested plug-ins about resource changes, such as files that are created, deleted, or changed. Le workspace implemente´ un mecanisme´ d’historique local (backup) pour tracer les changements des ressources
c Gilles Menez 17 Introduction a` Eclipse Architecture Eclipse Workbench The Workbench (plan de travail) fournit l’interface visuelle pour l’utilisateur de la plateforme.
c Gilles Menez 18 Introduction a` Eclipse Architecture Eclipse Workbench Il est decompos´ e´ en fenetresˆ , chaque fenetreˆ offre une ou plusieurs perspectives, mais une seule perspective est visible a` la fois. Une perspective contient des editeurs´ et des vues selon ayant une disposition precise´ dans le plan de travail.
c Gilles Menez 19 Introduction a` Eclipse Architecture Eclipse Workbench
Les editeurs´ permettent de sauvegarder, editer´ et ouvrir des objets, ¢ Editeur ª Edition plus ou moins dedi´ ee´ (coloration syntaxique, completion,´ indentation, . . . ) ª Exemple : Java, Python, . . .
tandis que les vues fournissent de l’information a` propos d’objets qui sont en train d’etreˆ utilises´ dans le workbench. ¢ Vue ª Informations sur les objets (structure, composantes, . . . ) en communiquant avec d’autres vues ou editeurs´ ª Exemple : Navigateur, packages, . . .
c Gilles Menez 20 Introduction a` Eclipse Architecture Eclipse Workbench Graphical API
The Workbench is built using : the Standard Widget Toolkit (SWT) - a nonstandard alternative to Java’s Swing/AWT GUI API - and a higher-level API, JFace, built on top of SWT that provides UI components : boˆıtes de dialogues, assistants (wizard), . . . The SWT has proven to be the most controversial part of Eclipse !
c Gilles Menez 21 Introduction a` Eclipse Architecture Eclipse Workbench
SWT is more closely mapped to the native graphics capabilities of the underlying operating system than Swing or AWT, which not only makes SWT faster but also allows Java programs to have a look and feel more like native applications. The use of this new GUI API could limit the portability of the Eclipse workbench, but SWT ports for the most popular operating systems are already available. The use of SWT by Eclipse affects only the portability of Eclipse itself - not any Java applications built using Eclipse, unless they use SWT instead of Swing/AWT. Car ces API peuvent etreˆ utilisees´ par les applications.
c Gilles Menez 22 Introduction a` Eclipse Architecture Eclipse Team support
The team support component is responsible for providing support for version control and configuration management. It adds views as necessary to allow the user to interact with whatever version control system (if any) is being used. Most plug-ins do not need to interact with the team support component unless they provide version control services.
c Gilles Menez 23 Introduction a` Eclipse Architecture Eclipse Help
The help component parallels the extensibility of the Eclipse Platform itself. In the same way that plug-ins add functionality to Eclipse, help provides an add-on navigation structure that allows tools to add documentation in the form of HTML files.
c Gilles Menez 24 Introduction a` Eclipse Architecture Eclipse Features
Instance (feature) = ensemble (packaging) de plug-ins qui cooperent` pour offrir un EDI http://www.ibm.com/developerworks/opensource/library/os-ecfeat/
c Gilles Menez 25 Introduction a` Eclipse Architecture Eclipse Perspective Java
c Gilles Menez 26 Introduction a` Eclipse Architecture Eclipse Perspective Python
c Gilles Menez 27 Introduction a` Eclipse Architecture Eclipse Perspective Svn
c Gilles Menez 28 Introduction a` Eclipse Perspective Ressource Perspective Ressource
Par defaut,´ cette perspective contient les fenetresˆ suivantes :
¢ La vue ”Navigateur” qui affiche les ressources (arborescence des fichiers) de l’espace de travail. ¢ un editeur´ qui permet d’editer´ une ressource selectionn´ ee´ dans la vue ”Navigateur” ¢ la vue ”Structure” qui permet d’obtenir une arborescence presentant´ les grandes lignes de certaines ressources en cours de traitement ¢ La vue ”Taches”ˆ qui affiche une liste de tachesˆ a` effectuer.
c Gilles Menez 29 Introduction a` Eclipse Fonctions pratiques Fonction Recherche
¢ Dedi´ ee´ . . . a` Java, a` Python, . . . ¢ Dans tout l’espace de travail (workspace) ¢ Dans des ensembles de travail (working set).
Cela permet de creer´ des ”sous”- environnements de travail au sein de l’IDE, en filtrant les el´ ements´ voulus. Ils sont utilises´ dans plusieurs recherches et vues.
c Gilles Menez 30 Introduction a` Eclipse Fonctions pratiques Fonction Tachesˆ
¢ actions a` realiser´ ¢ erreurs de compilation a` corriger ¢ point d’arretˆ pour le debogage´
c Gilles Menez 31 Introduction a` Eclipse Aide en ligne Aide en ligne
¢ F1 : aide contextuelle ª Depend´ de la vue, l’editeur,´ etc ¢ Dans un editeur´ : ª CTRL+ESPACE induit une completion´
c Gilles Menez 32 XDT : X Development Tooling
Environnements de developpement´ pour Java, Python , C . . .
ª Java Development Tooling (JDT), ª CDT, PDT, PyDev, . . . ª Support SVN ª Application a` votre projet
c Gilles Menez 33 XDT : X Development Tooling
Objectifs
Il s’agit de presenter´ ce qu’est un Development Tool de fac¸on ”gen´ erique”.´ ª Quelles sont les fonctionnalites´ que vous allez trouver pour vous aider a` developper´ ? ª C’est ”presque toujours pareil” d’un langage a` l’autre . . . Certains Development Tool font partie d’Eclipse (par exemple JDT), d’autres (CDT, PyDev, . . . ) doivent etreˆ ajoutes´ (Plug-in).
c Gilles Menez 34 XDT : X Development Tooling
Structuration des projets
Desormais,´ la plupart du temps (sauf ”toy application”), le developpement´ du projet est structure´ : Au niveau du systeme` de fichiers, de fac¸on arborescente : ¢ Workspace (EDI) qui se comporte comme la racine des projets, ¢ Repertoires,´ ¢ Fichier, ¢ Archives, . . . Au niveau des objets semantiques´ du langage, de fac¸on hierarchique´ : ¢ Package, ¢ Module, ¢ Class, . . .
c Gilles Menez 35 XDT : X Development Tooling
Le projet Eclipse
Un ”projet” contient les codes sources et les fichiers relatifs qui vont permettre de construire le programme. ¢ Il s’integre` dans un workspace qui peut contenir plusieurs projets. ¢ Il est associe´ a` un ”builder” qui peut compiler, eventuellement´ incrementalement,´ les fichiers modifiers. ¢ C’est l’argument d’un ensemble de parametrages´ : Paths, Lib, . . .
c Gilles Menez 36 XDT : X Development Tooling
Snapshot de la ”vue” projet dans Eclipse Plusieurs projets dans mon workspace :
c Gilles Menez 37 XDT : X Development Tooling
Snapshot de la creation´ d’un projet Java, Python,. . .
c Gilles Menez 38 XDT : X Development Tooling
Vues
Il est important de ”voir” un projet sous toutes ses formes : ¢ Package, ¢ Hierarchie,´ ¢ Membres, ¢ Javadoc ,declarations,´ erreurs, historique . . .
Au niveau du workbench : Window − > Show View − >
c Gilles Menez 39 XDT : X Development Tooling
Par exemple : la ”vue” package
Cette vue permet d’afficher de fac¸on arborescente le contenu des differents´ packages definis´ et utilises´ dans chaque projet ainsi que les bibliotheques` utilisees´ par le projet.
¢ Pour les el´ ements´ contenant du code source, l’arborescence sous jacente permet de voir les differents´ membres qui composent l’el´ ement.´ ¢ Un double clic sur des el´ ements´ de l’arborescence, permet d’ouvrir l’editeur´ directement sur l’el´ ement´ selectionn´ e.´
Chaque el´ ement´ de l’arborescence possede` une petite iconeˆ en fonction en son type : http://www.jmdoudoux.fr/java/dejae/chap007.htm (pour JDT)
c Gilles Menez 40 XDT : X Development Tooling
Adaptation au langage/perspective
Package explorer sous Pydev :
c Gilles Menez 41 XDT : X Development Tooling
Editeur de code
Depuis tres` longtemps, les editeurs´ de codes (emacs par ex) proposent une adaptation de leur comportement au langage utilise´ lors de l’edition.´ ¢ Coloration syntaxique ¢ Completion´ de code (CTRL+ESPACE) ¢ Rormatage du code source (CTRL+SHIFT+F) ¢ L’importation et l’exportation de code via un assistant ¢ Forte synergie avec le debogueur´
D’un point de vue ”configuration d’Eclipse”, on peut parametrer´ l’editeur´ d’Eclipse pour retourver les raccourcis d’Emacs !
c Gilles Menez 42 XDT : X Development Tooling
Coloration syntaxique
c Gilles Menez 43 XDT : X Development Tooling
Proposition de correction
c Gilles Menez 44 XDT : X Development Tooling
Bulle d’aide
c Gilles Menez 45 XDT : X Development Tooling
Completion´
c Gilles Menez 46 XDT : X Development Tooling
Formatage, masquage de portion de code, . . .
Dans le workbench :
Source − > ...
c Gilles Menez 47 XDT : X Development Tooling
Compilation et erreur
¢ Par defaut´ ª La compilation se fait souvent (Java, Python, . . . ) en arriere` plan ¢ Erreurs
c Gilles Menez 48 XDT : X Development Tooling
Execution´ sur une classe
c Gilles Menez 49 XDT : X Development Tooling
Execution´ par configuration
Si le ”defaut”´ ne suffit pas ! ª Classe, Module, . . . ª Parametre(s)` a` l’appel : ”argv” ª JRE, Interpreteurs´ ª Bibliotheques` ª CLASSPATH ª ...
c Gilles Menez 50 XDT : X Development Tooling
Refactoring
¢ Structure du code ª Renommer, deplacer´ ª Changer la signature d’une methode´ ª Encadrer (try/catch) ¢ Structure au niveau de la classe ª Transferer/Extraire´ methode´ ou attribut ª Extraire une interface ¢ Structure a` l’interieur´ d’une classe ª Integrer` methode/attribut´ ª Extraire une methode,´ variable locale, constante
c Gilles Menez 51 CDT : C/C++ Development Tooling
CDT : C/C++ Development Tooling
ª Environnement dedi´ e´ au developpment´ en C et C++ ª Projets, perspectives, vues, editeurs´ dedi´ es´ ª Completion,´ formatage, gen´ eration´ de documentation dedi´ ees´ ª Refactoring succinct mais present´ ¢ Renommage, extraction de constantes et de fonctions ª Specificit´ es´ ¢ Gen´ eration´ de makefile ¢ Necessit´ e´ de configuration du compilateur, du debogueur´
c Gilles Menez 52 PDT : PHP Development Tooling
PDT : PHP Development Tooling
ª Environnment dedi´ e´ au developpment´ en PHP ª Base´ sur le sous-projet ”web tools” (Societ´ e´ Zend) ª Completion,´ formatage, gen´ eration´ de documentation dedi´ ees´ ª Historique ¢ A pris le dessus sur PHPEclipse (premier envt dedi´ e´ a` PHP sous Eclipse)
c Gilles Menez 53 CVS/SVN dans Eclipse
CVS/SVN dans Eclipse
c Gilles Menez 54 CVS/SVN dans Eclipse
Team Support
Eclipse est aussi un environnement de developpement´ pour une equipe´ de developpeurs.´
Du coup, au travers d’Eclipse on va pouvoir : ª Controlerˆ les versions et partager d’un projet entre differents´ developpeurs,´ ª Enregistrer dans une archive, ª Gerer` des modifications de fichiers, ª Recup´ erer` toute modification enregistree,´ ª Visualiser les differences´ entre les versions,
http://www.informit.com/articles/article.aspx?p=517206
c Gilles Menez 55 CVS/SVN dans Eclipse
Par defaut,´ Eclipse fournit : un outil pour travailler avec Concurrent Versions System (CVS), ª Pas besoin d’installer quoi que ce soit. ª Il suffit de se connecter a` son serveur CVS. ª Ensuite, Eclipse fournit (graphiquement) toutes les commandes propres a` CVS. une ”Team Support” API pour l’interface avec d’autres systemes.`
Deux enrichissements (Plug-in) permettent a` Eclipse de s’interfacer avec SVN : Subversive : support en standard dans Eclipse (tres` bientot)ˆ ª Encore en ”incubation” Subclipse : subclipse.tigris.org ª http://subclipse.tigris.org/update_1.6.x ª Integration´ dans Eclipse ?
c Gilles Menez 56 CVS/SVN dans Eclipse
Perspectives ”SVN Repository Exploring”
¢ Perspective pour administrer differents´ ref´ erentiels´ svn
Perspective PyDev Perspective Svn c Gilles Menez 57 CVS/SVN dans Eclipse
Creation´ d’un projet : New / Other... / SVN /. . .
c Gilles Menez 58 CVS/SVN dans Eclipse
On n’est pas oblige´ de ”tout” prendre :
c Gilles Menez 59 CVS/SVN dans Eclipse
Choix du nom de projet dans le workspace Eclipse :
c Gilles Menez 60 CVS/SVN dans Eclipse
Apres` le checkout . . . j’ai ma ”copie de travail” :
c Gilles Menez 61 CVS/SVN dans Eclipse
Un projet sous svn dans le workbench
Je viens de creer´ la classe ”bonjour”.
c Gilles Menez 62 CVS/SVN dans Eclipse
Commit ! Il faut la ”committer” pour que l’information soit placee´ sur le serveur :
c Gilles Menez 63 CVS/SVN dans Eclipse
Commit ! Voila,` mon travail est disponible pour l’equipe´ !
c Gilles Menez 64 CVS/SVN dans Eclipse
Commentaires des versions On peut acceder´ aux commentaires places´ lors du commit !
c Gilles Menez 65 CVS/SVN dans Eclipse
Synchronisation/gestion des conflits Permet de fusionner ”plus facilement” deux versions :
c Gilles Menez 66 CVS/SVN dans Eclipse
Commit
¢ Lors d’un commit, on peut selectionner´ ª Tout le projet ª Une sous partie ª Un seul fichier ¢ On entre un commentaire qui sera stocke´ dans le svn ª et dans le trac (redmine) !
c Gilles Menez 67 CVS/SVN dans Eclipse Application a` votre projet Application a` votre projet
¢ Synchronisation du svn fourni avec Eclipse ¢ Compilation, execution,´ debogage´ dans Eclipse ¢ Pilotage des tests unitaires pour Java, Php, . . .
c Gilles Menez 68 Index
Index :
c Gilles Menez 69