Quand on travaille sur un projet Java dans Eclipse, il est fréquent de vouloir essayer quelques lignes de code avant de les intégrer définitivement dans le projet.
Java étant un langage Orienté Objet (OOL), tous, sans exception se passe dans des classes. Il n'est donc pas possible, l'exécution de lignes de code en dehors d'une classe.
Eclipse offre une solution élégante pour tester une ou plusieurs lignes de code isolées sans toutefois être obligé de construire des classes. Cette solution héritée de Visual Age a pour nom "Scrapbook Page".
"Scrapbook Page" permet d'entrer directement des lignes de codes à essayer, ou un morceau de code à partir d'un autre fichier .java avec des opérations de copier coller.
1.Pas besoin de créer une classe et méthodes pour essayer le code
2.L'assistant de code d'Eclipse est disponible dans "Scrapbook Page"
3.gain de temps
File -> New -> Other
Dans la boîte de dialogue "Select a Wizard"
Sélectionner Java -> Java Run/Debug -> Scrapbook Page
Un clic sur "Next"
Sélectionner le dossier de destination. Par exemple ici "src" du projet en cours
Enter un nom pour le fichier de "Scrapbook Page" au choix. Par exemple ici "test" sans extension (l'extension .jpage est ajoutée automatiquement) -> puis un clic sur "Finish"
Note :
Un autre moyen pour lancer "Scrapbook Page" est de sélectionner un projet -> sélectionner un dossier -> New -> File -> Entrer nom avec l'extension .jpage
Ou
File -> New -> File -> sélectionner projet et dossier -> entrer nom et l'extension .jpage
Un fichier "test.jpage" est créé et ouvert dans l'éditeur d'Eclipse.
Essayons de formater avec System.out.printf()
Entrer le code suivant dans "test.jpage" :
int age=30;
String nom="toto";
System.out.printf("bonjour, %s. l'année prochaine tu auras %d", nom, age);
1.Sélectionner l'ensemble du code dans l'éditeur (avec la souris ou CTRL+A)
2.Un clic droit
3.Un clic sur "Execute"
Note :
Il est possible d'exécuter le code aussi avec Un clic sur le bouton "Execute the selected code" ou "CTRL+U"
Note :
Il n'est pas nécessaire de sauvegarder le fichier pour pouvoir exécuter le code. Par contre il est possible de le sauvegarder pour pouvoir l'utiliser ultérieurement dans une classe Java par exemple.
Note :
Une nouvelle JVM dédiée est lancée lors de l'évaluation de la première expression dans "Scrapbook". Cette instance de la JVM n'est pas terminée automatiquement après l'exécution. Pour terminer cette instance de la JVM un clic sur le bouton "Stop".
Note :
JVM est terminée si la page (ici "test.jpage" est fermée) ou si System.exit() est évaluée.
Le code est exécuté et le résultat est affiché dans le "Console"
Comme indiqué précédemment un clic sur "Stop the Evaluation" permet de terminer la JVM utilisée par "Scrapbook Page"
Les messages d'erreurs générés sont affichés au-dessus du code dans "test.jpage"
Par exemple :
Si on utilise "String name" au lieu de "String nom" un message d'erreur est de suite affiché
Note :
Les exceptions sont affichées aussi dans l'éditeur et dans le "Console" (dans Eclipse 3.4) comme par exemple :
An exception occurred during evaluation: java.lang.NullPointerException
Essayons un deuxième exemple :
System.out.printf("%1$s %2$tB %2$te, %2$tY", "La date:", new Date());
Après avoir entré le code, on essaye de l'exécuter, en sélectionnant le code et en cliquant à droite et sur "Execute". Mais au lieu d'avoir le résultat attendu, un message d'erreur est affiché :
"Date cannot be resolved to a type"
Le problème ici est que la classe "Date" de la bibliothèque standard est dans le package "java.util" et il faut l'importer pour que notre code fonctionne
Note :
Pour effacer une partie d'un code, comme par exemple un message d'erreur -> sélectionner cette partie -> Suppr sur le clavier
Sélectionner le code -> clic droit -> Set Imports
Note :
L'importation d'un package persiste tant que la JVM n'est pas terminée après l'exécution du code dans "Scrapbook Page"
Note :
Importer un package peut se faire aussi avec le bouton "Sets the Import declarations for Running Code" dans la barre d'outils.
Note :
"classpath" et external jar pour la "Scrapbook Page" sont hérités de son projet
Dans la boîte de dialogue qui s'ouvre -> un clic sur le bouton "Add Pakcages" permet d'ajouter un package complet comme par exemple "java.util"
Le bouton "Add Type" permet d'importer une classe comme par exemple "ArrayList"
Dans la boîte de dialogue "Add Packages as Import" -> Enter dans la zone de texte -> "java.util" -> un clic sur OK -> un deuxième clic sur "OK" pour terminer l'importation
Sélectionner le texte dans "test.jpage" -> clic droit -> "Execute"
L'exécution se déroule après l'importation de "java.util" sans problème
"Scrapbook Page" permet d'évaluer aussi des expressions et d'afficher des résultats directement dans l'éditeur.
Essayons un exemple :
1.Entrer le code suivant dans "test.jpage"
int x=2;
int y=5;
x=x*y
2.Sélectionner l'ensemble du code
3.Un clic sur l'icône "J" ou "Display" ou un clic droit sur le code -> "Display" ou "Shift+CTRL+D" pour commencer l'évaluation.
4.Le résultat est affiché suite à "x=x*y" :
int x=2;
int y=5;
x=x*y(int) 10
Note :
Le résultat de "Display" est la valeur de retour de la dernière méthode exécutée
Pour une fonction sans valeur de retour ou "void" l'affichage est :
" (No explicit return value)"
Il est aussi possible avec "Scrapbook Page" de voir les détails d'un objet avec "Inspect". Cette fonction est pratique pour les objets complexes.
Note:
Les fonctions d'"Inspect liées au debugger d'Eclipse n'entre pas dans le cadre de ce tutoriel.
1.Entrer le code suivant dans "test.jpage"
ArrayList
list.add("phrase1");
list.add("phrase2");
list.add("Bonjour");
list
2.Sélectionner l'ensemble du code
3.Un clic sur l'icône "Loupe" ou "Inspect" ou "Shift+CTRL+l" ou un clic droit ->Inspect
Avec "Inspect" l'état interne de l'objet est affiché. Pour chaque champ, son nom et sa valeur sont affichés.
Les triangles bleus : champs protégés
Carrés rouges : champs privés
Cercles verts : champs publiques
Note :
"Inspect" comme "Display" retourne le résultat de la dernière méthode exécutée
"SHIFT+CTRL+I" pendant l'affichage d'une opération "Inspect" permet d'ouvrir une fenêtre d'expression pour le résultat
Show type Name
Permet d'afficher ou non le type d'une variable avant son nom
Scrapbook peut accéder directement aux classes dans le même projet, selon les modificateurs d'accès, bien sûr.
Par exemple en créant la classe "Bonjour" dans le même projet comme suite :
public class Bonjour {
public void dire(String s)
{
System.out.println(s);
}
}
Il suffit d'entrer dans "test.jpag"
new Bonjour().dire("Bonjour le monde !!!");
Pour pouvoir utiliser la méthode "dire(String s)" définie dans la classe "Bonjour"
Note :
Scrapbook Page étant créée à l'intérieur d'un projet Java, les classpath et les fichiers .jar sont ceux du projet.
Scrapbook Page comme les autres éditeurs d'Eclipse permet d'afficher des propositions pour compléter le code en cours "CTRL+Espace"
Note :
Il est possible des modifier les propriétés de l'éditeur avec un clic droit -> Preferences
De la même manière il est possible d'entrer des instructions pour les créations des composants graphiques.
Exemple :
javax.swing.JFrame frame=new javax.swing.JFrame();
frame.setTitle("Test JFrame");
frame.setBounds(0,0,400,300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
Inspect, Display, Set Imports, Stop, Execute sont des boutons dans la barre d'outils
http://www.eclipse.org