30 11 2008

Une semaine avec Netbeans 6.5

Suite à l’annonce faite sur TSS et aux nombreux commentaires en faveur de cet IDE, j’ai voulu l’essayer et voir ce qu’il avait à m’offrir par rapport à Eclipse. J’ai déjà eu l’occasion de m’en servir durant un an chez Club Internet en 2005 (la version 5.0 à l’époque) et j’en garde un assez bon souvenir, malgré quelques manques. Aujourd’hui, où en sommes nous ?

Fonctionnalités

Après avoir lu la release note, Netbeans ne semble pas avoir à rougir de son concurrent…

Premier pas…

Contrairement à Eclipse qui se décompresse tout simplement, Netbeans s’installe. La première méthode a le mérite d’être simple et de ne pas nécessiter les droits administrateurs, problématique chez certains clients…




Une fois installé, Netbeans consomme rapidement plus de 100 mo de RAM, 150 pour Eclipse. L’interface est assez jolie et intuitive.

Plugins

On fait souvent l’éloge des nombreux plugins disponibles pour Eclipse et effectivement ils sont nombreux. Le problème, c’est que la plupart ne fonctionnent pas, ou pas sur notre version d’Eclipse ou bien encore rendent l’environnement instable, bref c’est pas la panacé !

Je me lance donc à la recherche des plugins que j’ai l’habitude d’utiliser :

Maven

J’ai entendu beaucoup de bien à propos du plugin Maven. Je m’empresse de l’installer via le menu Tools/Plugins. Tout comme son copain Eclipse, il faut le redémarrer pour prendre en compte l’update… dommage. Je créé une webapp maven en quelques clicks :

En moins de temps qu’il n’en faut pour le dire, je peux déployer l’application sur un glassfish installé pour l’occasion avec Netbeans. Deux petites modifications dans l’index.jsp, un refresh dans le browser et magie, mes modifications sont là sans redéploiement. Ca me plait bien, je verrai après ce que ça donne pour le rechargement de classes à chaud !

Revenons-en à nos moutons et ajoutons Spring à nos dépendances. Intuitivement je fais un click droit sur Libraries, et je trouve mon bonheur avec « Add Library ». Monsieur a même profité du temps que je passais à jouer pour m’indexer le repo central et ainsi me proposer les groupId, artifactId et version :

J’importe un projet multi module existant sans problème, quelques clicks pour lancer des goals maven, bref la base est là. Par contre, pas d’éditeur avancé du pom (même si je ne m’en sers jamais), pas d’analyse graphique des dépendances (très pratique pour faire du ménage), des absences que propose m2eclipse. Cependant, l’ensemble est bien mieux intégré à l’éditeur : j’ai souvent des problèmes avec m2eclipse et je dois désactiver la gestion des dépendances puis la réactiver…

Spring

J’ai passé un peu de temps à chercher un équivalent de Spring IDE. J’en trouve un sur la page des plugins mais ne parvient pas à l’installer. Finallement, je me dis que c’est peut être déjà intégré, sait-on jamais ? Et effectivement, il est bien là !

Navigation dans les beans, autocomplete, les basiques encore une fois mais intégrés directement à l’éditeur. Je retrouve mon Ctrl + click pour aller directement dans les classes Spring (après récupération du code à l’aide de Maven) ou dans mes propres beans.

Contrôle qualité

J’aime bien disposer sur mon IDE des différents outils dont on dispose sur l’intégration continue. Cela me permet de découvrir un problème dès le moment où il est écrit, plutôt que d’attendre le retour du maven site quotidien effectué sur l’intégration continue. Bref…

Checkstyle

Le plugin Checkstyle (que je peux configurer avec mon fichier de règles) me permet d’avoir quelques alertes sur la qualité de mon code.

PMD

Tout comme checsktyle, PMD s’installe très facilement et fonctionne ! Sur Eclipse, je ne sais plus trop où nous en sommes à ce niveau étant donné que ça ne marche jamais avec ma version et donc j’avais un peu abandonné l’idée… Là, j’ai mes alertes (configurées avec les mêmes règles que l’intégration continue) et en plus c’est joli :


Seul bémol, l’outil ne me propose aucune correction, mais rare sont ceux qui le font.

Niveau plugins, je suis donc plutôt satisfait et grâce à ces quelques outils supplémentaires (mais très bien intégrés), je vais pouvoir être productif et efficace !

A l’utilisation

Rapidité de l’IDE

Les déplacements de fichiers (refactoring) sont lonnnnnnnngs, chaque action (ctrl + espace, click droit, …) bloque l’éditeur quelques secondes, à la longue ça devient fatiguant ! Assez étrange pour un outils de cette facture… Je test donc sur un autre PC (sans vista cette fois ;) ) et là rien à voir, quelques lenteurs « habituelles » pour du java, mais ça reste du niveau d’Eclipse. Grosse frayeure !

Raccourcis claviers et refactoring

Je parviens à retrouver mes raccourcis préférés :

  • Ctrl + O remplace le Ctrl + Shift + T pour rechercher un type. Alt + Shift + O remplace Ctrl + Shift + R pour une ressource.
  • Le raccourci Alt + Insert propose quelques « générateurs automatiques » :
  • On peut remonter dans la hiérarchie (classe mère ou interface) d’une classe avec Alt + F12 ou Ctrl + Shift + P pour une interface.
  • L’optimisation des import se fait avec Ctrl + Shift + I (Ctrl + Shift + O sous Eclipse).
  • Le Ctrl + Shift + V est une belle alternative au copier-coller puisqu’il permet de coller du code directement formaté. Plus besoin de faire Ctrl + V, Ctrl + A puis Alt + Shift + F (Ctrl + Shift + F sous Eclipse).
  • Niveau exécution et debug on peut vite s’emmêler les pinceaux : F11 buid sous Netbeans et debug sous Eclipse, F6 run sous Netbeans et step over sous Eclipse, Ctrl + F5 debug sous Netbeans et F5 step into sous Eclipse !
  • … Netbeans propose un pdf regroupant les différents raccourcis (disponibles sur la version 6.1 mais qui pour la plupart fonctionnent aussi sur la 6.5), très pratique quand on découvre l’outil.

Quelques critiques :

  • Le quick fix (Alt + Entrée) est loin d’être si évolué que le Ctrl + 1 contextuel d’Eclipse.
  • Je n’ai pas trouvé comment rechercher les implémentations d’une interface (Ctrl + T sous Eclipse), on doit faire un Find Usage (Alt + F7) puis rechercher les sous-types.

Ecriture / Formatage du code

Concernant l’aide à la saisie et malgré l’absence du Ctrl + 1, Netbeans fournit de nombreux templates de code. Tapez « forl » puis Tabulation, il vous génèrera une jolie boucle for… C’est juste dommage qu’on ne puisse pas utiliser le Ctrl + Espace au lieu de la tabulation.
J’ai été déçu de ne pas trouver « sysout », mais Netbeans permettant d’ajouter ses propres templates, j’ai rapidement résolu le problème.

D’autre part, vous avez comme dans Eclipse tout un module de gestion du formatage, pour ajouter des espaces après les ; dans les boucles for, aligner les paramètres de méthodes sur plusieurs lignes, j’en passe et des meilleurs.

Rien de bien extraordinaire mais l’essentiel est là.

Warnings

Au niveau des alertes, on peut comme sous Eclipse personnaliser le niveau. On retrouvera quelques problèmes que peuvent remonter checkstyle, findbugs ou PMD :


Par contre, on a rarement la correction disponible. Alors on prend ses mains et on corrige !

Actions à la sauvegarde

Malheureusement aujourd’hui, Ctrl + S ne fait rien de plus que sauvegarder votre fichier dans Netbeans. C’est déjà pas mal me direz vous mais comparé à Eclipse qui permet de formater le code, organiser les imports et plus encore, c’est assez décevant. On perd donc pas mal de temps avec les raccourcis de formatage et d’organisation des imports…
Il y a une issue sur le sujet ouverte chez eux depuis… juillet 2008. Mais pourquoi ne pas l’avoir intégré à la version 6.5 ?! :(

Gestionnaire de sources

Pour le coup, j’ai utilisé le gestionnaire de source de mon client (Clearcase UCM) et je suis assez content de voir qu’il existe un plugin clearcase (disponible dans l’IDE sans googler !).
Pour ceux qui ne connaissent pas, tous les fichiers sur le poste de travail sont en lecture seule. Lorsqu’on veut travailler sur un fichier, on le « checkout » en précisant une activité (une sorte de tâche). Il est alors possible de le modifier puis de faire un « checkin » pour le remettre au source control.
Le problème que j’ai rencontré, c’est l’impossibilité de choisir mon activité lors du checkout ! Du coup, je modifie du code avec la dernière activité créée.

NB : CVS, SVN et Mercurial sont directement intégrés.

Tests unitaires

Je ne suis pas aidé pour faire du TDD : la création de classes se fait dans le même package que le test, donc dans le répertoire src/main/tests/… Pas de problème pour refactorer et déplacer ma classe mais c’est un peu gênant. Pour la création des méthodes manquantes, pas de problème.

Par contre, je suis agréablement surpris lorsque je vois que l’exécution des tests est faite avec Maven (mvn -Dtest=EmptyJUnitTest test-compile surefire:test) et le résultat est disponible dans l’interface (pas besoin d’aller dans les fichiers surefire). Plus de différence de comportement entre mon IDE et mon build :) .

Debug / Exécution

Concernant le debug, tout est là, j’attache mon debugger par dt_socket sur le port qui va bien et roulez jeunesse. Nous avons vu plus haut que nous disposons de nombreux raccourcis pour le pas à pas mais si vous êtes habités à Eclipse, vous risquez de vous embrouiller les premières fois…

Pour en revenir au rechargement à chaud des classes modifiés dans ma webapp, ça ne marche pas, je dois arrêter et relancer le serveur.

Conclusion

Après quelques jours d’utilisation en remplacement d’Eclipse, je suis assez content. J’avais un peu peur des lenteurs chez moi sur un Vista mais au boulot sur XP ou sur Ubuntu, tout roule. Pour le reste, pas mal d’éléments bien intégrés (maven, spring) peuvent servir d’exemple à Eclipse.

De surcroît, il fournit pas mal de fonctionnalités en plus (que je n’ai pas testées) : php, groovy & grails, un éditeur swing sympa, le profiling, un designeur html/ jsp / jsf à étudier, un éditeur avancé de web.xml ou de faces-config.xml… bref pas mal d’éléments pour commencer rapidement à développer.

Par contre, il manque quelques raccourcis pour faciliter la navigation, les actions à la sauvegarde également. On perd donc un peu de temps de ci de là.
De même, j’ai été assez gêné avec le plugin clearcase : obligé de créer une activité en dehors de l’IDE avant de modifier des fichiers… Je ne doute pas que CVS et SVN soient bien mieux gérés.

Alors, abandon d’Eclipse ou pas ? Si le plugin clearcase me permettait de créer mes activités, je pense que j’essaierai. Malgré quelques raccourcis manquant, il est très agréable à utiliser, relativement fluide au final et répond à mes besoins. J’essaierai au moins dans un premier temps pour valider cette semaine de test et si tout va bien, souhaiterai bon vent à Eclipse. Donc à voir sur un projet sans Clearcase ;)

Prochaine étape : tester IntelliJ. Affaire à suivre sur javasioux !

3 Comments

Tomnovembre 30th, 2008 at 19:57

Est-ce que tu as pu comparer les refactorings par rapport à Eclipse ?
Par exemple, extraction d’une méthode, monter un méthode dans sa classe mère, changement de l’ordre des paramètres…
Pour toi, est-ce que Eclipse est plus complet que Netbeans à ce sujet ?

Merci,
Tom

jeromevdlnovembre 30th, 2008 at 20:37

Globalement, tu t’y retrouves. Extraction de méthode, oui. Monter ou descendre une méthode, oui. Changer l’ordre des paramètres aussi. Changer la visibilité d’une méthode ou d’un attribut… Tout n’est pas forcément accessible via un raccourci clavier mais au moins au click droit sur l’élément à refactorer.

Jérômedécembre 28th, 2008 at 11:55

Dzone a publié un article sur le sujet : http://java.dzone.com/news/top-10-new-java-features-netbe

Leave a comment

Your comment

CAPTCHA image