02 décembre 2010

En voila une bonne Idea !

Depuis des années je bosse sous Eclipse, et j'entend cet IDE se faire critiquer à tout va.

Je dois bien reconnaitre que j'ai quelques reproches à lui faire, entre autre la médiocrité de son intégration Maven pendant des années, et son incontournable "building workspace" dès qu'on touche à un fichier sur un projet un tant soit peu ambitieux.

Profitant du passage sur Mac et sous Git (@glaforge sur ou sous ?) qui me déstabilise déjà un peu, j'en profite pour essayer sérieusement Idea. La règle est simple, l'étude que je réalise en ce moment sera développée sous Idea ou ne sera pas ! L'intérêt d'une étude est qu'on réfléchit beaucoup avant de coder, alors ne pas être au top de la performance dans l'IDE n'a pas beaucoup d'impact :P

License Jug-Leader récupérée j'installe l'engin et je peine quelques jours à apprivoiser les menus, fenêtres et raccourcis. Après une première semaine, je commence à me débrouiller. Idea est clairement très différent d'Eclipse.

La philosophie d'Eclipse est d'intégrer les outils pour les rendre invisibles. Avec m2eclipse, on ne lance jamais un build Maven (à moins d'être maso), car l'IDE le lance lui-même dans le cadre de son build incrémental - bouffant au passage un bon paquet de cycles CPU. Avec WebTools, on ne lance pas un serveur d'application, l'IDE redéployant l'application à chaque modification - fonctionnalité qu'on désactive si on a pas un core i7 sous le capot. Au final, l'IDE cherche à nous faire croire que tout est magique et qu'on peut se contenter de vivre dans l'éditeur Java. Idée intéressante si nous avions tous une réserve de CPU hors norme, mais en pratique on passe beaucoup de temps à attendre que l'IDE termine ses tâches. Là où ça devient pénible, c'est qu'il interdit de sauver un fichier en cours d'édition tant que la tâche précédente n'est pas terminée, d'où les frustrations et les critiques.

Eclipse est - en gros - conçu pour des développeurs qui ne maitrisent pas leur environnement. Je ne veux pas savoir ce que fait maven lors d'un build, je ne veux pas savoir comment on déploie un war sur Tomcat, je veux juste coder. La logique "clic bouton" en est la signature, même s'il existe tout de même quelques raccourcis clavier.

La philisophie d'Idea est de proposer un environnement de pilotage des outils, et un éditeur 100% orienté développeur. De très nombreux raccourcis clavier permettent de ne (presque) jamais toucher à sa souris (ex : Pomme+W pour sélectionner des blocs logiques de plus en plus large, variable, expression logique, ligne, bloc, méthode, classe ...). L'éditeur interprète le code Java 100% à la volée sans passer par une compilation comme le fait Eclipse. Il n'y a du coup pas de notion de "sauvegarde". De très nombreux assistants ("intentions") permettent de faciliter le développement : ajouter un import statique, ajouter une dépendance Maven, ...

Lorsqu'on désire lancer un build Maven ou déployer sur le serveur d'application, il faut le demander explicitement, via l'interface dédiée à l'outil dans l'IDE. Au final, l'environnement est globalement bien plus rapide puisqu'il n'a pas ce surcout à gérer. Et même s'il faut lancer et attendre le build Maven pour avoir le résultat attendu, beaucoup de développeurs Eclipse le lancent aussi car ils sont confrontés à des couacs dans leur environnement !

Je suis encore très peu efficace sous Idea, et je découvre un nouveau raccourci clavier toutes les heures en me demandant comment je vais mémoriser tout ça, mais j'ai peur que le retour sous Eclipse que je connais bien fasse mal. Un point délicat tout de même : avec ce nom "idea", il n'est pas facile de faire des recherches Google pertinentes pour trouver de l'info (il vaut mieux ajouter "intellij"), sans compter qu'on est une minorité ! Le côté positif, c'est que Twitter est ton amis pour demander de l'aide ;)

Si vous n'avez pas de licence, demandez à votre Jug local de vous en obtenir une (s'il n'organise pas déjà un tirage au sort).