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

Gilles Menez 1 Introduction a`

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 : ª 1983 : Borland Turbo Pascal(DOS) a` 50 $ ª 1987 : ¢ 1990 : Les ”gros” s’y mettent . . . ª 1991 : Microsoft Visual Basic 1 ª 1997 : (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 , 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 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