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.
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.
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.
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.).
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.
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.
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
Le fichier contient des erreurs de syntaxe. Repérez-les rapidement et corrigez-les. Quel outil avez vous utilisé pour cela ?
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.
Configurez l'exécution du programme pour passer le fichier sudokus.txt en paramètres.
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 :
Managing Breakpoints (manager les points d’arrêt), http://docs.oracle.com/cd/E40938_01/doc.74/e40142/run_debug_japps.htm#BABIIDHH
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.
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.
En Utilisant la fonctionnalité de refactoring, trouver et renommez la variable « ch » en « character ».
Générer la Javadoc de votre projet. Après l’avoir généré, où se trouve cette documentation dans votre projet ?
À 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
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.