IntelliJ

A bas Eclipse !

Vous connaissez tous Eclipse et l’utilisez probablement dans la plupart de vos projets. Mais si vous commencez à utiliser de nouveaux langages et/ou technologies, il n’est pas toujours l’IDE le plus adapté.

Prenons l’exemple de Grails/Groovy. Il existe effectivement un IDE dérivé d’Eclipse développé par SpringSource, qui conçoit également Grails/Groovy. On pourrait donc croire que cet IDE est parfaitement adapté au développement d’une application dans ces technologies.

Et bien non !

J’utilise dans mon environnement professionnel IntelliJ IDEA et j’ai voulu comparer ces deux IDE.

enum ToutCeQuiVaPasDansEclipse{
NAVIGATION, RENOMMAGE, AUTOCOMPLETION, GENERATION_CODE
}

Explicitons tout ça :

ToutCeQuiVaPasDansEclipse.NAVIGATION

Eclipse ne va pas interpréter les chaines de caractères.

Si on a le code suivant :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class BookController {

  [...]

  def save() {
    def bookInstance = new Book(params)
    if (!bookInstance.save(flush: true)) {
      render(view: "create", model: [bookInstance: bookInstance])
      return
    }

    flash.message = message(code: 'default.created.message', args: [message(code: 'book.label', default: 'Book'), bookInstance.id])
    redirect(action: "show", id: bookInstance.id)
  }

  def show() {
    def bookInstance = Book.get(params.id)
    if (!bookInstance) {
      flash.message = message(code: 'default.not.found.message', args: [message(code: 'book.label', default: 'Book'), params.id])
      redirect(action: "list")
      return
    }

    [bookInstance: bookInstance]
  }
}

Action lors du Ctrl-clic (ou autre raccourci pour “Go to declaration”)

Exemple Eclipse IntelliJ IDEA
Code i18n default.not.found.message Ne fait rien Emmène dans le fichier i18n définissant ce code (ou propose la liste des fichiers i18n si plusieurs le définissent)
Nom d’action redirect action: “list” Ne fait rien Emmène sur l’action du Controller correspondant
Nom de vue render view: “create” Ne fait rien Emmène dans la GSP* create.gsp
* Une GSP (Groovy Server Page) est l’équivalent Grails d’une JSP

ToutCeQuiVaPasDansEclipse.RENOMMAGE

Dans Eclipse, le renommage ne s’étend pas jusqu’aux GSP : si on renomme une classe du domaine, les GSP auront toujours l’ancien nom. Il faut donc repasser dans chacune d’elles si besoin.

ToutCeQuiVaPasDansEclipse.AUTOCOMPLETION

Que serions-nous sans l’autocomplétion ? Rappelez-vous de toutes les fautes de frappe, les ‘s’ oubliés… Et bien, avec Grails par Eclipse, revenez à vos débuts !

  • Eclipse ne propose aucune des méthodes dynamiques à l’autocomplétion. De même pour les contraintes.
  • Eclipse ne fait pas le lien entre le modèle retourné par le controller et la vue correspondante. Il ne sait donc pas de quel type sont les objets de la vue et ne propose aucune autocomplétion. IntelliJ arrive à faire le lien si l’action du controller renvoie directement la Map du modèle. Si cette Map est construite dans une autre méthode, il ne va pas faire le lien non plus, mais laisse la possibilité à l’utilisateur de spécifier lui-même le type des objets non reconnus. On peut ainsi profiter de l’autocomplétion.
  • et bien d’autres…

avec Eclipse :

avec IntelliJ :

ToutCeQuiVaPasDansEclipse.GENERATION_CODE

Trop de clics tue le clic !

Pour générer un controller “CRUD” avec Eclipse, il faut “juste” faire : clic droit -> Grails Tools -> Grails Command Wizard -> generate-controller -> Type Person -> Finish
Avec IntelliJ, clic sur l’onglet Controller de la classe Person -> Generate Controller. C’est tout.

Conclusion

Il y a plusieurs autres facilités dans IntelliJ, que je n’ai pas mentionnées. Par exemple, l’écriture de GSP est simplifiée (taper div.toto va automatiquement créer le div avec la classe CSS toto (je viens d’apprendre qu’un plugin propose ça également pour Eclipse, mais IntelliJ le gère par défaut))

On m’a fait découvrir IntelliJ lors de ma mission, et j’ai été agréablement surprise par les facilités offertes.
Je m’en sers également pour du Java pur, et j’ai l’impression qu’il est aussi puissant qu’Eclipse pour ce langage. Mais j’avoue l’utiliser surtout pour Grails/Groovy, il faudrait étudier ça plus en détail.
Seul bémol : la version d’IntelliJ gérant Grails est payante… Mais je pense que pour les avantages qu’il procure, ça vaut le coup si on utilise régulièrement Grails. Une version d’essai de 30 jours est disponible si vous voulez le tester :)

VN:R_U [1.9.22_1171]
Rating: 0 (from 0 votes)
Share
Ce contenu a été publié dans Grails, Outils. Vous pouvez le mettre en favoris avec ce permalien.

4 réponses à IntelliJ

  1. Baptiste Pagnier dit :

    Merci pour cet article !
    Tu recommandes IntelliJ pour travailler avec Grails/Groovy, mais qu’en est-il du Java ?
    Qu’est-ce qui fait que tu as “l’impression qu’il est aussi puissant qu’Eclipse pour ce langage” ?

    VN:R_U [1.9.22_1171]
    Rating: 0 (from 0 votes)
  2. Audrey Romanet dit :

    Pour le Java, je ne pourrais pas recommander l’un ou l’autre.
    Je me sers aussi d’IntelliJ pour le Java dans ma mission, et je n’ai pas remarqué de facilités qu’Eclipse offre et qu’IntelliJ non. Ce qui me fait dire qu’à mes yeux, ils sont équivalents pour le Java.
    Après, je n’ai pas une utilisation très poussée d’IntelliJ en Java…

    VN:R_U [1.9.22_1171]
    Rating: 0 (from 0 votes)
  3. S’il est payant, c’est qu’il y a une raison :) L’awesomeness n’est pas gratuite, je conseille à tout développeur Java de tester sans hésiter IntelliJ. Que ce soit pour le support natif des projets Maven, les plugins d’excellente qualité de n’importe quel gros framework Java, l’auto-complétion dans le HQL, dans les templates Freemarker, le refactoring sans peur de tout casser, la rapidité et la puissance de l’indexation des classes, etc. franchement ça vaut largement le coup d’essayer ! Tout est intégré de manière transparente, on n’a jamais l’impression qu’un plugin vient se greffer un peu à l’arrache (le plugin SVN par exemple affiche les zones de code modifiées avec un code couleur très discret mais très pratique). Seul bémol, il utilise pas mal de mémoire (mais c’est largement pardonné par tout le gain de temps qu’il offre).

    VN:R_U [1.9.22_1171]
    Rating: 0 (from 0 votes)
  4. mgrenonville@excilys.com dit :

    Je plussoie à 100% Bastien, le plugin pour git a plus de 4 ans d’avance sur celui de eclipse.

    VN:R_U [1.9.22_1171]
    Rating: 0 (from 0 votes)

Laisser un commentaire