Travaux Pratiques n°1 (Eclipse)

Objectifs (1h)

  • Découvrir un environnement de programmation évolué
  • Comprendre ce qu'il se passe derrière Eclipse
  • Connaître les outils utiles au bon développement du projet
  • Rendre une archive avec le code produit

Présentation d'Eclipse

L'utilisation d'un éditeur intégré tel qu'Eclipse facilite la tâche de programmation car plusieurs choses sont traitées automatiquement. Il est cependant important de comprendre ce qui est réalisé automatiquement afin de ne pas être perdu si vous avez à programmer sous d'autres éditeurs. Les principes généraux de programmation seront donc expliqués dans les énoncés de TP et la manière dont cela est réalisé avec Eclipse et également proposée.

eclipse.png

Notions de workspace et de perspective

Perspectives

Eclipse est un environnement de développement capable de prendre en charge plusieurs langages et cadres de programmation. Java en est un, mais d'autres sont possibles (C/C++, Python, PHP, etc.). Comme chaque cadre de programmation a ses spécificités, il est possible pour Eclipse de proposer un agencement spécifique pour chaque cas. C'est ce qu'on appelle une Perspective. Ainsi, il existe une perspective Java, une perspective C++, mais aussi une perspective Debug, pour les activités de debugging. Lorsque l'on passe d'une perspective à une autre (en utilisant les boutons en haut à droite de la barre d'outils), l'agencement des onglets et fenêtres internes change. Il est également possible de changer de perspective en allant dans le menu Window > Open Perspective. Une perspective est en fait un agencement particulier de vues (Views), qui sont autant de fonctionnalités. Par exemple, il y a une vue éditeur, une vue explorateur de packages, une vue console, etc.

Principalement deux perspectives vont nous intéresser dans ce cours : la perspective Java et la perspective Debug. La perspective Java est présentée dans la capture d'écran précédente. Voici ces principales composantes :

  • Tout en haut se trouve une barre d'outils (icône) qui sont autant de raccourcis vers les fonctionnalités d'Eclipse que l'ont peut également utiliser par les différents menus.
  • A gauche, le Package Explorer permet de naviguer dans les différents projets et leurs contenus respectifs. Par exemple, ici nous pouvons voir le projet projetJava2013 et son contenu avec les sources dans le répertoire src ainsi que la documentation, et d'autres fichiers utiles.
  • Au centre se trouvent le code source du programme, avec une présentation en onglet pour ouvrir plusieurs fichiers. Cet éditeur bien pratique dispose notamment de fonctionnalité d'indentation automatique1 (CTRL-MAJ-F) et de complétion automatique2 (CTRL-Espace).
  • En bas se trouve notamment, la Console qui affiche les différentes messages de la sortie standard (stdout) ou de la sortie d'erreur (stderr). On peut ajouter d'autres vues, comme la liste des problèmes (Problems) de compilation.
  • A gauche se trouve le résumé du fichier en cours d'édition (Outline). Cette vue est pratique pour accéder directement à une méthode de la classe en cours.

La perspective Debug sera présentée dans le TP5.

Workspace

A l'ouverture d'Eclipse, il y a de fortes chances que le programme vous demande la localisation de votre espace de travail : le workspace. Cet espace est en fait un répertoire dans lequel Eclipse va stocker vos projets. Pour chaque projet, Eclipse va créer un répertoire dans lequel il va stocker :

  • les sources du projet, structurés en packages si nécessaire ;
  • les exécutables (.class) du projet, éventuellement dans un répertoire différent des sources ;
  • d'autres ressources stockant notamment les propriétés du projet : librairies utilisées, version de java utilisée pour la compilations, etc. ;
  • et tout autre fichier stocké dans le projet (par exemple, le .jar contenant une librairie utilisée)

Il est donc possible d'accéder au contenu du projet depuis un explorateur quelconque en se rendant dans le répertoire de l'espace de travail (par défaut appelé workspace).

Eclipse n'est pas automatiquement synchronisé avec le système de fichiers

Ceci signifie que si vous changez un fichier (par exemple, en changeant le nom du fichier) depuis un explorateur, puis que vous revenez sous Eclipse, le changement n'apparaîtra pas (le fichier apparaîtra sous son ancien nom). Pour signifier à Eclipse ce changement dans le système de fichiers, pensez à faire F5 sur votre projet sélectionné.

Un workspace est spécifique à une installation d'Eclipse particulière sur une machine particulière (car il contient des fichiers de propriétés contenant des chemins absolus vers des fichiers, notamment). Ainsi, copier un workspace d'une machine à une autre ne permettra pas d'ouvrir "proprement" le workspace sur cette seconde machine.

Pour travailler à plusieurs sur un projet Java

Il existe de nombreuses méthodes pour travailler de manière collaborative sur un projet (SVN, CVS, etc.). Ces techniques ne sont pas le sujet de ce cours, et donc nous allons utiliser une méthode plus adhoc : import/export de projets d'une séance à l'autre (voir plus bas). Surtout ne pensez pas que copier le workspace suffit…

Fonctionnalités de base

Définir un workspace

A l'ouverture d'Eclipse, il sera demandé de définir un workspace. Ceci signifie créer un répertoire (habituellement nommé workspace) dans votre système de fichier. Eclipse n'ouvre qu'un seul workspace à la fois, mais il est possible de changer de workspace par le menu File > Switch Workspace.

Exercice 1

Lancez Eclipse et créez un nouveau workspace nommé workspace dans votre répertoire personnel.

Création de projets

Une fois Eclipse lancé, il est possible de créer un projet qui contiendra toutes nos classes ainsi que divers paramètres liés à la compilation et à l'exécution. Pour créer un projet suivez le menu File > New > Project… > Java Project.

Pour que les sources et le bytecode soient séparés sous Eclipse, l'option "Create separate source and output folders" doit être cochée dans la fenêtre de dialogue de la création de projet Java.

Exercice 2

Créez un projet. Dans la boîte de dialogue qui s'ouvre, donnez un nom au projet (tp1-<nom1>-<nom2>, par exemple) et vérifiez la version utilisée. Si cette version n'est pas la 1.7.0, demandez à utiliser la version 1.7.0 en sélectionnant la case Use a project specific JRE. De plus, les sources doivent être séparés du bytecode.

Création de classes et de packages

Sous Eclipse, la création d'un package et d'une classe se fait par la sélection du projet ou du package englobant puis par le menu File > New….

Exercice 3

Créez un package fr.emse.lcpoo dans votre projet. Ce sera dans ce package que vous développerez vos classes.

Importer un fichier .java

Une fois dans un projet créé, il est possible d'importer un fichier .java contenant une classe, en faisant un copier-coller depuis l'explorateur du système de fichier (l'Explorer Windows par exemple) vers le répertoire où se trouvent vos codes sources.

Exercice 4

Importer le travail du TP1a (classe HelloWorld) dans votre projet.

Exécuter un programme Java

Pour lancer un programme, plusieurs options sont possibles :

  • Clic droit sur le fichier contenant la classe avec une méthode main, puis Run as.. > Java Application.
  • Utiliser le menu Run > Run.
  • Utiliser le menu Run > Run Configurations…, puis sélectionner ensuite Java Application et cliquez sur New. Cela crée une nouvelle manière d'exécuter votre projet (il peut en exister plusieurs). Une manière d'exécuter votre projet spécifie la classe à exécuter, ses paramètres d'exécution et les librairies requises.

Il est possible d'exécuter le programme en cours avec le bouton Run [ run_exc.png ].

Exercice 5

Exécutez votre programme avec les paramètres un deux trois.

Messages d'erreur sous Eclipse

Lorsqu'une erreur survient lors de l'exécution de votre programme, Eclipse affiche la trace de la pile d'appels, comme lors que l'exécution en ligne de commande. Un confort est que la trace contient des hyperliens vers le code source d'exception. Il suffit de cliquer dessus pour voir le code en faute.

Debugger

Une autre fonctionnalité très utile d'Eclipse est le debugger, qui permet d'exécuter pas à pas des programmes et d'afficher l'état des variables afin de détecter les éventuels bugs. Pour plus de détail nous vous conseillons le tutoriel plus complet du debugger sur Sourceforge.

Une séance entière sera dédiée à l'utilisation de cet outil bien pratique.

Remarque

A tout moment de votre développement, si un programme compile mais ne marche pas correctement, utilisez le debugger d'Eclipse. Nous vous fournissons une aide imprimée pour rapidement le prendre en main.

Javadoc

La génération de documentation Java se fait par le menu Project > Generate javadoc…". Ne vous pré-occupez pas de la plupart des options proposées pour le moment et avancez jusqu'à la génération des pages HTML.

Exercice 6

Générez la documentation de votre projet.

La reconception et génération sous Eclipse

Sous le terme reconception (refactoring) se cache des fonctionnalités bien pratiques dans Eclipse, notamment le renommage d'une classe, d'un attribut, d'une méthode, etc. : en cliquant droit sur un élément (par exemple, une méthode), puis Refactor > Rename… il est possible de le renommer dans tous les fichier.

Il est également possible de générer les getters et setters des attributs d'une classe en faisant clic droit sur la classe puis Sources > Generate Getters and Setters… et choisir les attributs concernés.

Plein d'autres fonctionnalités sont bien sûr disponibles. A vous de les explorer.

Exercice 7

Renommez un élément de votre programme.

Exportation/Importation de projets Eclipse

Comme nous l'avons vu plus haut, copier-coller un workspace n'est pas la bonne manière de sauver et de récupérer un projet Java. Nous allons suivre la méthode suivante tout au long de ce cours :

  1. Créer un projet
  2. Ecrire du code
  3. Exporter le projet sous forme d'archive à la fin de la séance
  4. Importer l'archive la séance suivante
  5. Recommencer à partir de l'étape 2 jusqu'à la fin du développement

Exporter un projet

Pour exporter un projet, il suffit de faire Clic droit sur le projet puis Export…. Il est possible d'exporter sous plusieur format. Nous allons choisir le format ZIP pour notre travail. Ce choix se fait en choisissant General > Archive File puis en appuyant sur le bouton Next. Une fenêtre de dialogue s'ouvre proposant de choisir les fichiers à exporter (par défaut, mettre tous les fichiers), le nom et l'emplacement de l'archive et diverses options d'export. Dans le cas qui nous concerne pensez à cocher :

  • Save in zip format
  • Compress the contents of the file

Exercice 8

Exporter votre projet dans une archive tp1b.zip dans votre répertoire personnel.

Importer un projet depuis une archive

Pour importer un projet issu d'une archive il y a principalement deux options :

  • Créer un nouveau projet à partir de l'archive : menu Import… > General > Existing Project into Workspace puis choisir l'archive et le nom du projet.
  • Importer les sources dans un projet existant : menu Import… > General > Archive File puis choisir l'archive et le projet de destination.

Exercice 9

Importer l'archive tp1b.zip comme un nouveau projet Java. Attention, il risque d'y avoir un conflit avec votre ancien projet à cause de son nom, car dans un même workspace il ne peut y avoir deux projets portant le même nom. Vous devez donc soit renommer l'ancien projet soit changer de workspace (File > Switch Workspace > Other…).

Rendu du travail

Le TP doit être rendu en fin séance, quel que soit son état d'avancement. Envoyez le source des classes (.java) ainsi que les classes compilées (.class) dans une archive zip (voir les instructions précédentes et veiller à bien ajouter les sources !) à Gauthier Picard à la fin, avec comme sujet [LCPOO] TP1b <nom1> <nom2>. L'absence d'envoi sera sanctionnée dans la note finale.

Notes de bas de page:

1

L'indentation automatique permet de respecter automatiquement les règles de présentation du code.

2

La complétion automatique évite de devoir taper le nom entier de méthodes ou attributs, mais également d'explorer les différentes possibilités offertes par l'usage d'une classe, en cours d'écriture de code.


Gauthier Picard