TP 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.).

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. 


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.