Université de la Méditerranée (Aix–Marseille Université) |
Programmation
Orientée Objets, langage Java |
Faculté des Sciences de Luminy |
Henri
Garreta |
La documentation en ligne declipse est abondante mais son approche nest pas immédiate. Sans souci dexhaustivité, nous donnons ici quelques indications pour débuter rapidement dans lutilisation de cet excellent outil de développement.
|
|
Eclipse ne contient ni le compilateur Java ni les autres outils basiques. Pour développer
des programmes en Java il faut donc installer au préalable un kit de
développement. Nous conseillons celui de Oracle (anciennement Sun Microsystems, la maison
mère de Java), qui est complet, à jour (par définition)
et libre gratuit.
Vous pouvez lobtenir chez Oracle : site www.oracle.com/technetwork/java/javase/downloads, section JDK Download. Le produit à télécharger sappelle, lors de la publication de cette notice, Java SE Development Kit 7u10.
Attention, ne confondez pas le JDK (Java Development Kit) avec le JRE (Java Runtime Environment), appelé aussi « plugin Java », qui ne contient que le nécessaire pour exécuter les programmes Java. Ne vous occupez pas de télécharger le JRE, à lintérieur du JDK il y en a un exemplaire.
Le fichier téléchargé est un installateur auto-extractible : une fois chargé, il suffit de le lancer et de suivre les instructions qui saffichent. Au besoin, des informations sur linstallation du JDK sont donnés sur le site de Oracle, aussi bien pour Windows que pour Linux.
Une fois linstallation terminée, vérifiez sa réussite en tapant « java -version » dans une console de commandes. Vous devez obtenir un message vous annonçant le numéro de version de la machine Java mise en place. Dans le cas de Windows cela ressemblera à ceci :
Fig. 1
Pour développer des programmes en Java il vous faut disposer également de la documentation de lAPI (Application Programmer Interface, cest-à-dire le volumineux ensemble de paquetages, classes, méthodes et variables qui constituent la bibliothèque système). Vous pouvez la consulter en ligne ou bien la télécharger depuis le site de Oracle (pas loin du logiciel, voir plus haut).
Note (cas de Windows). Si vous souhaitez pouvoir employer le compilateur et les autres outils Java en dehors declipse, cest-à-dire en tapant des commandes dans une console Invite de commandes, alors vous devez procéder à la manipulation supplémentaire suivante : repérez le répertoire dinstallation de Java, appelons-le ®, et ajoutez le chemin ®
\bin
dans la définition de la variable Path. Si vous avez laissé linstallateur de Java faire à sa guise, ® doit être quelque chose commeC:\Program Files\Java\jdk1.7.0_10
.
Vous pouvez examiner et modifier la valeur de la variable Path en cliquant avec le bouton droit sur licône du Poste de travail, puis Propriétés > Avancé > Variables denvironnement > Variables système ; sélectionner la ligne Path puis faire Modifier.Dans le cas de Linux, une manipulation analogue est nécessaire après linstallation du JDK. Nous ne lexpliquons pas car elle fait partie des opérations bien connues sur ce système.
Eclipse est un logiciel libre que vous pouvez télécharger depuis le site www.eclipse.org, onglet Downloads. Le produit qui nous intéresse est Eclipse IDE for Java Developers (~150 MB).
Pour les systèmes « 64 bits », le fichier à télécharger se nomme :
eclipse-java-juno-SR1-win32-x86_64.zip
eclipse-java-juno-SR1-linux-gtk-x86_64.tar.gz
eclipse-java-juno-SR1-macosx-cocoa-x86_64.tar.gz
Nous ne vous conseillons pas de télécharger une version française declipse. Il peut exister des plugin de francisations de linterface, mais outre le fait quelles sont assez imparfaites, elles servent surtout à vous empêcher dutiliser la dernière version du logiciel.
A partir dici, les explications sont communes aux divers systèmes dexploitation, ou bien ne concernent que Windows.
Pour installer eclipse il suffit de décompresser larchive zip ou tar.gz téléchargée. Cela crée un dossier, nommé eclipse, que nous vous conseillons de placer aussi haut que vous le pouvez dans la hiérarchie de fichiers de votre système. Dans la suite de cette note nous supposons que vous avez fait ainsi et que vous avez donc un dossier nommé C:\eclipse
Pour faciliter le lancement declipse créez un raccourci vers le fichier C:\eclipse\eclipse.exe et placez-le sur le bureau, dans le menu démarrer ou ailleurs, selon vos goûts.
Note. Linstallation declipse est donc bien plus légère que celle de beaucoup de logiciels ; en particulier, sous Windows elle ne produit pas des inscriptions dans la base de registres. Par conséquent, pour désinstaller complètement eclipse il suffira, le moment venu, de mettre à la corbeille le dossier C:\eclipse et le(s) espace(s) de travail (dossiers
workspace
, voir ci-dessous) créés ultérieurement.
Lancez eclipse, par exemple en double-cliquant sur le raccourci que vous venez de créer. Au bout de quelques instants, on vous demandera de situer lespace de travail dans lequel seront vos fichiers. Si vous travaillez sur un ordinateur partagé il est conseillé de mettre lespace de travail dans votre dossier Documents. Si vous êtes le seul utilisateur de votre système, mettez lespace de travail où bon vous semble.
Sauf indication contraire, les fichiers sources de vos programmes se trouveront dans lespace de travail. Il est donc important de se souvenir de lemplacement de ce dernier pour accéder aux sources (par exemple pour les sauvegarder, les transporter, etc.)
Fig. 2
Si vous cochez la case « Use this as the default and do not ask again » eclipse ne vous posera plus cette question (mais il y a toujours un moyen pour changer ultérieurement lespace de travail : File > Switch Workspace > Other...).
Au bout de quelques instants (la première fois ce nest pas très rapide) vous obtenez un écran qui présente le produit, comme ceci :
Fig. 3
Vous pouvez feuilleter cette présentation, elle est faite pour cela. Quand vous en aurez assez, cliquez sur le lien Workbench (la flèche représentée à droite de lécran). Le contenu de la fenêtre devient tout de suite beaucoup plus sérieux :
Fig. 4
Eclipse est un environnement qui permet une grande variété dactivités de développement (pour vous en convaincre, faites un tour chez eclipse plugin central, chez eclipse plugins ou bien sur le site francophone eclipsetotale.com). En standard, eclipse est prêt pour le développement en Java, encore faut-il veiller à ce que la perspective (cest-à-dire larrangement des vues montrées à lécran) soit celle qui convient le mieux à Java. Si ce nest pas le cas, agissez sur la petite icône en haut à droite cerclée de rouge sur la figure 4 , étiquetée Open perspective et choisissez Java.
Fermez les vues Task List et Outline (à droite) ; pour afficher la structure des classes, la vue Package explorer (à gauche) suffit. Vous obtenez un cadre de travail tout à fait commode pour développer en Java :
Fig. 5
Pour commencer, créer un projet.
Note pour les étudiants. Ne vous sentez pas obligés de créer un nouveau projet chaque fois que vous commencez un nouvel exercice de programmation : vous pouvez très bien avoir un seul projet, contenant tous les exercices que vous faites dans le cadre dun enseignement. Dautant plus que cela ne vous empêchera pas de bien ranger vos fichiers : un projet peut contenir plusieurs packages java (qui se traduiront dans le système de fichiers par des répertoires différents).
Pour créer un projet, cliquez sur le premier des boutons dassistants Java (cerclé de rouge sur la figure 5) etiqueté « New Java Project ». Vous obtenez le panneau New Java Project où, au minimum, vous devez donner un nom pour votre projet :
Fig. 6
La méthode rapide consiste à donner un nom de projet (si possible, moins bête que Mon projet génial...) et cliquer sur le bouton Finish. Notez que les autres « questions » posées dans ce panneau sont intéressantes. La troisième, notamment, permet de conserver séparément les fichiers sources (précieux) et les fichiers classes (quen cas de perte on peut toujours refaire).
Fig. 7
Dans un projet sérieux nous commencerions par créer des packages (deuxième bouton des assistants Java, « New Java Package »). Mais, puisque nous débutons, allons à lessentiel et ajoutons directement une ou plusieurs classes au projet : cest le troisième des boutons dassistants Java, « New Java Class » (cerclé de rouge dans la figure 7), qui fait cela. La méthode rapide consiste à donner le nom de la classe et cocher la case étiquetée public static void main(String[] args) :
Fig. 8
Notez queclipse critique notre démarche, nous indiquant que lemploi du package par défaut (sans nom) est découragé. Cela ne fait rien, nous construisons ici une application de débutant.
Eclipse crée alors un fichier source contenant une classe rudimentaire, correcte mais creuse, que vous navez plus quà compléter pour en faire le programme voulu :
Fig. 9
Note. Lorsquun commentaire contient lexpresson TODO, eclipse affiche une marque bleue dans la marge qui permet de se rendre rapidement à cet endroit. Cest très pratique pour retrouver dans les gros fichiers ces commentaires qui signalent des morceaux en chantier.
Pour essayer votre programme vous allez taper le classique System.out.println("Bonjour à tous!"); à lintérieur de la fonction main. Au fur et à mesure que vous tapez, remarquez comment :
Pour exécuter le programme assurez-vous que la vue éditeur contient une classe exécutable (cest-à-dire une classe publique avec une méthode public static void main(String[] args);) et alors activez la commande Run as > Java Application du menu attaché au bouton cerclé de rouge sur la figure 9 :
Fig. 10
Lapplication sexécute et, si des sorties sont à afficher, une vue Console apparaît au-dessous de la vue éditeur :
Fig. 11
Notez que dans la vue Console il y a un bouton cerclé de rouge sur la figure 11 qui permet darrêter une application qui bouclerait indéfiniment. Ce bouton est rouge quand lapplication est vivante, gris (estompé) lorsque lapplication est morte.
Cette question se pose par exemple lorsque, après avoir développé une application dans eclipse, vous souhaitez récupérer vos fichier sources pour les amener sur un autre système, les compiler dans un autre environnement ou tout simplement les ranger dans vos archives.
La réponse se trouve dans les figures 2 et 6 : si lors de la création du projet vous avez laissé loption par défaut « Create new project in workspace » (cf. figure 6) alors les sources, rangés dans des dossiers correspondant aux packages, sont dans le dossier workspace, lui-même placé à lendroit que vous avez indiqué au lancement declipse (cf. figure 2).
Deux cas possibles : ces fichiers forment déjà un projet eclipse (par exemple créé sur un autre système), ou bien il ne sagit que dun ensemble de fichiers sources en vrac.
Copiez le dossier du projet eclipse où vous voulez (par exemple dans le dossier workspace, mais ce nest pas une obligation), puis faites la commande File > Import... Ensuite, choisissez General puis Existing Projects into Workspace. Le projet que vous venez dimporter apparaît dans la fenêtre Package explorer, cest terminé.
Prenez un projet qui existe déjà, ou bien créez un noveau projet. Ensuite :
Un programme « bogué » est un programme qui ne donne pas les résultats quil devrait. « Déboguer » un programme cest chercher les erreurs de programmation à lorigine de tels dysfonctionnements. Pour aider le programmeur dans cette recherche, eclipse offre un mode debug permettant, entre autres choses :
Pour déboguer simplement un programme il suffit de poser un point darrêt au début de lendroit quon souhaite examiner en détail. Pour cela il faut double-cliquer dans la marge, à gauche de la ligne en question, ce qui fait apparaître un disque bleu (cerclé de rouge dans la figure 12) qui représente le point darrêt.
Fig. 12
Il faut ensuite lancer le débogage, à laide du bouton à gauche de celui qui lance lexécution, représentant une punaise (bug) :
Fig. 13
Lexécution est alors lancée et se déroule normalement jusquà atteindre le point darrêt. Eclipse demande alors la permission de changer de perspective (ensemble et disposition des vues montrées) et adopte lapparence de la figure 14 :
Fig. 14
La vue Debug, en haut à gauche de la fenêtre, montre la pile dexécution, cest-à-dire, pour chaque thread, lempilement des méthodes qui se sont mutuellement appelées (méthodes commencées et non terminées). Dans la figure 14, par exemple, on attire notre attention sur la méthode Bidon.main, plus précisément la ligne 8 du fichier source, où a été appelée la méthode Bidon.maxi, dans laquelle lexécution est arretée, à la ligne 3.
Fig. 15
En haut de cette vue (figure 15) se trouvent des boutons très utiles. Parmi les principaux :
En haut et à droite de la fenêtre principale se trouvent les vues Variables et Expressions. La première affiche les valeurs courantes des variables locales de la méthode en cours, la deuxième affiche les valeurs courantes des expressions sélectionnées avec la commande Watch (cliquer avec le bouton droit sur lexpression à surveiller).
Le debogueur declipse possède bien dautres commandes très puissantes, comme les points darrêt conditionnels et la possibilité de modifier les valeurs des variables du programme. Prenez un peu de temps pour les explorer, cest payant.
Réusiner (refactor) un programme correct cest modifier son texte source sans changer son fonctionnement et ses résultats. Par exemple, changer le nom dune variable ou dune méthode parce que, par suite de lévolution du programme ou du programmeur , le nom initialement choisi est devenu moins adapté ou expressif quun autre.
Le refactoring se traduit généralement par des opérations globales, fastidieuses, quil nest pas facile dautomatiser. Heureusement eclipse offre de puissantes fonctions pour effectuer ce travail. Voici leur description, directement traduite de laide en ligne du logiciel.
Nom |
Description |
||||||
Rename |
Renomme lélément selectionné et (si activé) corrige toutes les références à cet élément, y compris dans les autres fichiers.
|
||||||
Move |
Déplace lélément sélectionné et (si activé) corrige toutes les références à cet élément, y compris dans les autres fichiers.
|
||||||
Change Method Signature | Change les noms des paramètres dune méthode, leur type, leur ordre et met à jour toutes les références à cette méthode. De plus, des paramètres peuvent être enlevés ou ajoutés et le type du résultat et la visibilité de la méthode peuvent être modifiés.
|
||||||
Extract Method | Crée une nouvelle méthode contenant les instructions ou expressions couramment sélectionnées et remplace la sélection par un appel de la nouvelle méthode. Cette fonctionnalité est utile pour nettoyer les méthodes trop longues, imbriquées ou excessivement complexes.
|
||||||
Extract Local Variable | Crée une nouvelle variable initialisée par lexpression couramment sélectionnée et remplace la sélection par une référence à cette nouvelle variable.
|
||||||
Extract Constant | Crée une variable statique finale initialisée avec lexpression couramment sélectionnée et remplace cette expression par une référence à la variable créée. De manière optionnelle, réecrit également les autres expressions où apparaît lexpression extraite.
|
||||||
Inline | Développe « en ligne » une variable locale, une méthode ou un constante : dans le cas dune constante, cela signifie que les occurrences de son nom sont remplacées partout par lexpression utilisée pour initialiser la variable (la déclaration de cette dernière doit être associée à une initialisation). dans le cas dune méthode, cela signifie que ses appels sont remplacés partout par le corps de la méthode, après substitution textuelle des paramètres formels par les paramètres effectifs. dans le cas dune constante, cela signifie que les occurrences de son nom sont remplacées partout par la valeur de la constante.
|
||||||
Convert Anonymous Class to Nested | Convertit une classe interne anonyme en une classe membre (cest-à-dire une classe interne nommée).
|
||||||
Convert Member Type to Top Level |
Crée une nouvelle unité de compilation Java (cest-à-dire un fichier source) pour le type (classe, interface, enum...) interne sélectionné, en mettant à jour toutes les références nécessaires. Pour les types internes qui ne sont pas statiques, un champ est ajouté si nécessaire pour permettre laccès à linstance qui était précédemment englobante. Pour comprendre ce charabia, sélectionnez ClasseInterne dans lexemple suivant, exécutez la commande "Refactor" > "Convert Member Type to Top Level" et examinez le code produit.
public class ClasseEnglobante { Object membreDeClasseEnglobante; class ClasseInterne { void methodeDeClasseInterne() { membreDeClasseEnglobante = 0; } } }
|
||||||
Convert Local Variable to Field |
Convertit une variable locale en un champ (c.-à-d. une variable dinstance). Si la variable est initialisée lors de sa déclaration, alors lexpression dinitialisation est transportée soit dans la déclaration du champ soit, si nécessaire, dans les constructeurs de la classe.
|
||||||
Extract Superclass | Extrait une super-classe commune à un ensemble de classes apparentées, lesquelles deviennent alors des sous-classes directes du la nouvelle super-classe.
|
||||||
Extract Interface | Crée une nouvelle interface avec un ensemble de méthodes, à choisir parmi les méthodes publiques de la classe, et déclare la classe en question comme une implémentation de linterface nouvelle.
|
||||||
Use Supertype Where Possible | Remplace les occurrences dun type par une de ses super-classes après avoir identifié tous les endroits où cela est possible.
|
||||||
Push Down | Déplace un ensemble de méthodes et variables dinstance dune classe vers une de ses sous-classes.
|
||||||
Pull Up | Déplace vers une super-classe une variable dinstance ou une méthode. Pour une méthode, on a le choix entre déplacer la méthode vers la super-classe, ou bien déclarer dans cette dernière une méthode abstraite.
|
||||||
Introduce Indirection | Crée une méthode de classe (statique) délègant sa tâche à la méthode dinstance sélectionnée.
Par exemple, si dans une classe UneClasse on a sélectionné une méthode de signature resultat uneMethode(arguments) alors cette commande crée une méthode static resultat uneMethode(UneClasse unObjet, arguments) dont le corps est réduit à lappel unObjet.uneMethode(arguments).
|
||||||
Introduce Factory | Crée une méthode « usine » (factory method) correspondant à un constructeur sélectionné. Cest-à-dire si on a sélectionné un constructeur de signature UneClasse(arguments), ajoute une méthode telle que static UneClasse createUneClasse(arguments) { return new UneClasse(arguments); }. De plus, remplace les expressions de la forme new UneClasse(arguments) par des expressions UneClasse.createUneClasse(arguments).
|
||||||
Introduce Parameter Object | Remplace lensemble des paramètres dune fonction par un unique objet, instance dune classe nouvellement définie à cet effet, dont les variables dinstance sont les paramètres originaux.
|
||||||
Introduce Parameter | Remplace une expression par un argument formel ajouté à la méthode où elle apparaît et met à jour tous les appels de cette méthode en leur ajoutant un nouveau paramètre effectif qui nest autre que lexpression en question.
|
||||||
Encapsulate Field | Remplace toutes les références à un champ (variable dinstance) par des méthodes « get » et « set ».
|
||||||
Generalize Declared Type | Permet de choisir un des super-types (classes, interfaces) du type de la référence couramment sélectionnée, en vérifiant quil ny aura pas de problème si le type de cette dernière est changé vers le type sélectionné ; le changement est ensuite effectué.
|
||||||
Infer Generic Type Arguments | Remplace les occurrences brutes de types génériques par des types paramétrés, après avoir identifié tous les endroits où ce remplacement est possible.
|
||||||
Migrate JAR File | Met à jour un fichier JAR appartenant au « build path » dun projet de votre espace de travail (workspace) en essayant dutiliser linformation sur le refactoring effectué, afin déviter des erreurs provoquées par ce refactoring.
|
||||||
Create Script | Crée un « script » avec les opérations de refactoring qui ont été appliquées dans le espace de travail (workspace). Ces scripts peuvent être enregistrés dans un fichier ou bien copiés dans le presse-papiers. Voyez "Apply Script".
|
||||||
Apply Script | Applique un script fait dopérations de refactoring aux projets de votre espace de travail (workspace). Les scripts de refactoring peuvent être chargés depuis un fichier ou bien depuis le presse-papiers. Voyez "Create Script".
|
||||||
History | Feuillette lhistorique des refactorings en permettant den effacer certains.
|