TP Netbeans
I. Introduction à Netbeans
Netbeans (http://netbeans.org) est un EDI (Environnement de Développement Intégré) ou IDE en Anglais (Integrated Development Environment). C’est un produit issu de chez Sun (maintenant supporté par Oracle), qui est OpenSource depuis plus de dix ans.
1. Netbeans : outil, plateforme et communauté
Netbeans est à la fois un outil (un environnement de développement) et une plateforme (un ensemble de composants que l’on peut réutiliser pour développer ses propres applications). Dans ce deuxième cas, on parle de RCP (Rich Client Platform). On retrouve le même principe sous Eclipse, avec Eclipse RCP. L’intérêt de telles approches de réutilisation de composants est que, une fois l’outil maîtrisé, on gagne beaucoup de temps dans la phase de développement. Ceci est particulièrement pratique dans les phases de prototypage, mais permet aussi le développement d’applications robustes, homogènes en termes d’interfaces (bien intégrées dans un environnement graphique), et interopérables (utilisation de standards largement partagés).
Les outils OpenSource tels que Netbeans ou Eclipse sont souvent bien documentés, et surtout, ils reposent sur une communauté d’utilisateurs très riche. Il est donc assez facile (et assez immédiat) d’obtenir de l’aide de la part de la communauté d’utilisateurs.
2. Les fonctionnalités de Netbeans
Netbeans contient une grande partie des fonctionnalités que l’on est en droit d’attendre dans un EDI : éditeur de code, coloration syntaxique, exécution pas à pas, gestion de projets, saisie intuitive, auto-complétion, etc.
3. Les plugins
Netbeans peut être étendu grâce à des plugins (extensions). Les plugins, permettent de répondre à des besoins non couverts initialement par l’outil (par exemple un client de gestion de versions). En général, les plugins sont développés par ceux que l’on appelle les « 3rd party developers », c’est-à-dire par des développeurs qui ne font pas officiellement partie de l’équipe de développement de Netbeans, mais qui contribuent néanmoins à son amélioration.
Netbeans embarque également des frameworks connus pour Java ou pour PHP, facilitant ainsi grandement la tâche des développeurs. Un framework est un ensemble de composants logiciels réutilisables qui permet d’accélérer le développement d’applications. Enfin, Netbeans peut prendre en charge l’exécution de serveurs (Glassfish, Tomcat, etc.).
II. Premiers pas sous Netbeans
Ouvrez l’EDI Netbeans afin de repérer les différentes fonctionnalités offertes en standard par Netbeans. En particulier, faites bien attention aux éléments suivants.
- La notion de projet : il est nécessaire de configurer un nouveau projet avant de commencer à programmer, en indiquant où sont stockés les fichiers du projet.
- Le squelette de la classe Java est automatiquement créé, ce qui inclut les commentaires de base.
- L’auto-complétion quand on saisit du code, la coloration syntaxique, le matching des parenthèses et des accolades.
- L’aide fournie par la barre de gauche en cas d’erreur (erreur ou suggestion d’auto-complétion).
- La possibilité de plier / déplier des méthodes et ou des commentaires.
- L’interface configurable (déplacer les onglets, redimensionner les fenêtres, double-click sur un onglet pour switcher en plein écran, passer un onglet d’un bloc à l’autre, etc.).
- Les différentes vues : projet, fichiers, services, console, etc.
- Le navigateur (qui permet de voir les méthodes et les objets quand on clique dessus).
- Comment afficher d’autres fenêtres (menu Windows).
- Repérer les boutons Build et Run, repérer les différentes façons de faire un Run (bouton « flèche », bouton droit sur le nom de la classe, raccourcis clavier). Run exécute le code en cours. Build génère un .jar qui embarque toutes les librairies nécessaires à l’exécution du projet.
- La mise en forme automatique de code (Source ⇒ Format).
- Les raccourcis clavier pour commenter / décommenter (Shift + Ctrl + C).
Dossiers et fichiers associés à un projet
Le répertoire build
contient les classes compilées, dist
contient le .jar
de l’application s’il a été créé (via build
, ou après une sauvegarde du projet), nbproject
contient des fichiers propres à Netbeans pour la configuration de l’espace projet (ce qui soulève de nombreux problèmes en cas de mauvaise mise en place d’une gestion de versions), src
contient les fichiers sources (les .java). À la racine, build.xml
contient les instructions de compilation.
Tout ceci est hautement configurable, dans l’onglet Projet, bouton droit ⇒ Project / properties. Lorsque plusieurs VM (Virtual Machine) sont installées sur le système, il est possible de définir des configurations différentes, utilisant des VM (ou des options de VM) différentes. Ce système de gestion de configurations pour la compilation et l’exécution est très utile pour tester la compatibilité d’un programme.
III. Netbeans par la pratique
Les sources (Sudoku.zip) utilisées dans ce TP sont mises à disposition par Patrick Chan (31/12/05) et très légèrement modifiées par Amélie Cordier.
Mise en route
- Décompressez l'archive Sudoku.zip à l'endroit de votre choix.
- Ouvrez Netbeans et créez un nouveau projet (Java Application simple).
- Importez les deux fichiers sources (uniquement les .java) de l'archive dans votre projet. Attention : sous Netbeans, il n'est pas possible “d'importer” des fichiers sources. Le glisser-déposer ne fonctionne pas, mais le copier/coller de fichiers fonctionne. Vous pouvez aussi créer deux nouveaux fichiers et copier/coller le contenu.
Question 1
Le fichier contient des erreurs de syntaxe. Repérez-les rapidement et corrigez-les. Quel outil avez vous utilisé pour cela ?
Question 2
Exécutez le programme. Si la classe main n'est pas définie, définissez-la. Que se passe-t-il ? A quelle ligne l'erreur se produit ? Rendez-vous à cette ligne et essayez de comprendre la cause de l'erreur.
Question 3
Configurez l'exécution du programme pour passer le fichier sudokus.txt en paramètres.
Question 4
Essayez à nouveau d'exécuter le programme. Que se passe-t-il ? Pourquoi ? Au besoin, utilisez l'exécution pas à pas pour comprendre ce qui se passe. Corrigez l'erreur. Insérez un point d'arrêt dans la boucle qui pose problème et utilisez le mode d'exécution pas à pas pour comprendre le dysfonctionnement.
Quelques aides pour comprendre l'exécution pas à pas :
- Débogage avec NetBeans, http://www-etud.iro.umontreal.ca/~gottif/bdeb/A09/DebogageNetbeans.pdf
- Débogage de Programmes Java, https://fr.netbeans.org/edi/35/utilisation/debug.html
- Guide Pratique EDI NetBeans, Débogage Applications Java, https://netbeans.org/project_downloads/fr/Guide%20Pratique%20EDI%20NetBeans/NBbook-debugging_fr.pdf
Managing Breakpoints (manager les points d’arrêt), http://docs.oracle.com/cd/E40938_01/doc.74/e40142/run_debug_japps.htm#BABIIDHH
Question 5
Si tout va bien, le programme compile enfin. Malheureusement, il semble qu'il ne fasse pas exactement ce qu'il est supposé faire. Avant de chercher l'erreur, nous allons essayer d'avoir rapidement une vision synthétique de sa structure. Pour cela, utilisez ArgoUML pour faire une rétroconception du code.
Question 6
Maintenant que vous avez une vision plus schématique du code de ce SudokuSolver, utilisez tous les outils que Netbeans met à votre disposition pour trouver la portion de code incorrecte et la corriger.
Question 7
En Utilisant la fonctionnalité de refactoring, trouver et renommez la variable « ch » en « character ».
Question 8
Générer la Javadoc de votre projet. Après l’avoir généré, où se trouve cette documentation dans votre projet ?
Question 9
À votre avis, quelle est la partie du code qui consomme le plus de temps d'exécution ? Et le plus de mémoire ? Utilisez les outils de profiling.
Combien de fois la méthode solve est-elle invoquée ? Et la méthode create ? Comment expliquez-vous cette différence ? Aide pour comprendre comment utiliser les outils de profiling dans NetBeans: Introduction to Profiling Java Applications in NetBeans IDE, https://netbeans.org/kb/docs/java/profiler-intro.html
Question 10
Utilisez la bibliothèque Swing de Java pour créer une interface graphique qui vous permet d’ajouter un sélecteur de fichier. Ce dernier doit vous permettre de charger le résultat du sudoku dans une zone de texte. Pour cela vous pouvez suivre le tutoriel fournit.