Revue de l'IDE Jetbrains Intellij Idea 9 Ultimate Edition

Baptiste Wicht

Voici ma revue de l'EDI Jetbrains Intellij Idea 9 Ultimate Edition.

Je présente ici les fonctionnalités de la version Ultimate Edition qui ne sont pas toutes disponibles dans la version open source, Community Edition.

Commentez ♪

Version anglophone de cet article - English version of this article: Review of Jetbrains Intellij Idea 9 Ultimate Edition.

- Titre : Revue de l'IDE Jetbrains Intellij Idea 9 Ultimate Edition

- Auteur : Baptiste Wicht

- Parution : 10 décembre 2009

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2009 Baptiste Wicht. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- I-A. Éditions

- II. Installation

- III. Améliorations générales

- IV. Interface graphique

- V. Support de Maven

- VI. Support d'OSGI

- VII. Support de PHP

- VIII. Gestion de contexte

- IX. Divers

- X. Conclusion

- X-A. Liens

- X-B. Remerciements

I - Introduction

JetBrains vient de publier la version 9 d'IntelliJ Idea. Cette version est disponible en deux éditions :

- Community Edition : version open source et gratuite comprenant seulement une partie des fonctionnalités de l'IDE ;

- Ultimate Edition : version complète de l'IDE, commerciale cette fois. C'est cette version que je vais présenter ici.

Cet IDE est fait principalement pour le développement, mais supporte maintenant de nombreux langages en plus de Java : JavaScript/Flex, HTML/XHTML/CSS, XML/XSL, Ruby/JRuby, Groovy, SQL, FreeMarker/Velocity et PHP.

Pour le développement Java, il supporte de très nombreux frameworks et technologies : JSP, JSF, EJB, AJAX, GWT, Struts, Struts 2, JBoss Seam, Spring, JPA/Hibernate, Web Services, Rails, Grails, Java ME MIDP/CLDC, Tapestry, Google App Engine, Android ou encore OSGi.

Je vais vous présenter certaines des nouvelles fonctionnalités et vous donner mon avis sur les différents thèmes.

Splash screen d'IntelliJ Idea 9

I-A - Éditions

Voici un tableau présentant les fonctionnalités et les versions qui les fournissent :

Fonctionnalité

Ultimate Edition

Community Edition

Historique local

Support Ant/Maven

Support JUnit/TestNG

Éditeur wysiwyg

Vérification syntaxique

Support des projets Eclipse

Support Java ME

IDE Talk

Gestion de contexte

Diagrammes UML

Couverture de code

Matrice de dépendances

Support Android

Recherche de code dupliqué

Recherche/Remplacement structurel(le)

Débugging JSP/Javascript

Voici les langages supportés par les différentes versions :

Langage

Ultimate Edition

Community Edition

Java

Groovy

XML

Regex

Scala

Clojure

Ruby/JRuby

Python

SQL

HTML, XHTML, CSS

XSL, XPath

Python

Freemarker/Velocity

JavaScript/ActionScript

PHP

Support des SCM :

SCM

Ultimate Edition

Community Edition

CVS

Subversion

Git

Team Foundation Server

ClearCase

Perforce

StarTeam

Visual SourceSafe

Ensuite, les frameworks et technologies :

Framework/Technologie

Ultimate Edition

Community Edition

OSGi

Rails/Grails

JSP/Servlets

JavaServer Faces 1.0, 1.2

EJB 3.0, 3.1

Web Beans

Bean validation

Flex, Air

GWT 1.X, 2.0

Struts 1.2, 2

Spring 2.5, 3.0

JBoss Seam

Hibernate/JPA 1.0, 2.0

JAX-WS, Apache AXIS

REST WebServices

Tapestry

Google App Engine

Et enfin, voici ce qu'il en est pour les serveurs d'application :

Serveurs d'application

Ultimate Edition

Community Edition

Tomcat

GlassFish v2, v3

JBoss

WebLogic

WebSphere

Geronimo

Resin

II - Installation

L'installation est des plus simples. On retrouve donc uniquement les étapes de base qu'on retrouve dans toute installation de base : licence, dossier, options de raccourcis, menu démarrer et procédure d'installation. Rien de bien spécial à ce niveau-là.

Une fois l'installation terminée, il nous faut rentrer la licence et choisir les modules à activer, comme c'était déjà le cas dans les précédentes versions.

III - Améliorations générales

La première chose que l'on constate est une nette amélioration des performances. Beaucoup plus de tâches se déroulent en arrière-plan. C'est notamment le cas pour l'indexation qui se lance au démarrage, mais qui ne bloque pas l'interface. On peut donc commencer à travailler pendant l'indexation, mais certaines actions ne sont pas disponibles, comme le refactoring.

Indexage en arrière-plan

On constate également beaucoup moins de freeze de l'interface graphique qui est également plus réactive. Le retour sur action (feedback à l'utilisateur) des différentes vues a été amélioré. C'est-à-dire qu'on se rend compte maintenant qu'une action a été lancée et on n'est plus à se demander si quelque chose se passe ou non comme cela pouvait arriver avec Idea 8.

IV - Interface graphique

Comme dit précédemment, la réactivité de l'interface graphique a été grandement améliorée.

Les vues n'ont pas connu de changements majeurs, mais on peut tout de même constater quelques nouvelles fonctionnalités intéressantes.

Premièrement, on peut maintenant déboguer et lancer des classes directement via des raccourcis clavier :

- Alt+Shift+F9 : ouvre la fenêtre de débugging ;

- Alt+Shift+F10 : ouvre la fenêtre de lancement.

Voici les nouvelles vues en questions :

Ensuite de cela, on a également une gestion de marque-pages dans n'importe quelle partie du code, que ce soit une classe ou une ligne d'une classe. On a pour cela les raccourcis suivants :

- F11 : crée un marque-page sur l'élément sélectionné (fichier dans l'arborescence ou ligne dans l'éditeur) ;

- Shift + F11 : présente les différents marque-pages et permet de se déplacer vers un de ces derniers.

Un exemple de marque-page sur une ligne d'un fichier :

Marque-page sur une ligne

Et la vue des marque-pages :

Affichage des marque-pages

Et dernièrement et non des moindres, on peut maintenant copier des fichiers depuis le système d'exploitation et les coller directement dans l'IDE et vice-versa. Ce qui est très pratique et n'était pas présent dans les précédentes versions de l'IDE.

V - Support de Maven

La vue des projets Maven a subi quelques modifications. Dans le dossier « LifeCycle », seuls sont maintenant affichés les goals les plus importants (clean, validate, compile, test, package, install, site et deploy) au lieu de la liste complète, ce qui est plutôt intéressant. On peut bien sûr toujours afficher l'ensemble des goals avec une option de la barre d'outils.

Toujours au niveau de cette vue, on peut maintenant voir les profils (au sens Maven 2) qui sont configurés au niveau de settings.xml et accéder rapidement au fichier settings.xml de Maven 2. En plus des profils, on peut également visualiser directement les dépendances d'un projet Maven 2 :

Dépendances Maven

On a également accès à un graphe des dépendances d'un module Maven :

Graphe des dépendances Maven

Il est possible de faire un réimport automatique après un changement dans un fichier pour ne pas avoir besoin de lancer manuellement pour prendre en compte les changements.

À propos du réimport, on peut maintenant faire des reimports seulement pour le(s) projet(s) qui a (ont) été changé(s) au lieu de devoir tout réimporter et en plus de cela, les performances de cette opération ont été grandement améliorées. Je dirais d'un facteur 3 à 4 pour ce que j'ai pu en voir.

VI - Support d'OSGI

Depuis cette nouvelle version, Idea intègre nativement un plugin OSGI, Osmorc. Ce plugin permet de faciliter le développement d'applications modulaires avec OSGi dans Idea. Je vais tenter de vous présenter les principales fonctionnalités qui ont été intégrées à Idea.

La première chose à faire est de configurer le projet pour OSGi. Pour cela, il suffit d'activer le facet OSGi pour le(s) module(s) nécessaire(s). Ensuite de quoi (ou avant, c'est selon), il faut configurer les instances d'OSGi qui sont installées :

Configuration des instances OSGi installées

Ensuite de quoi, il faut configurer l'instance à utiliser pour le projet :

Configuration de l'instance d'OSGi à utiliser pour le projet

On peut ensuite passer à la création d'un petit projet OSGi.

La première fonctionnalité à noter est bien entendu la complétion automatique sur les fichiers MANIFEST.MF :

Complétion des entêtes OSGi

À noter que dès que vous ajoutez l'entête Import-Package, on peut utiliser les classes de ce package depuis le projet sans faire autre chose.
Mais on peut également définir un manifest via Idea :

Configuration d'un manifest

Et on enchaine avec un activator :

package com.pragprog.hello;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;

public class HelloWorld implements BundleActivator{
@Override
public void start(BundleContext bundleContext) throws Exception {
System.out.println("I'm in OSGi :)");
}

@Override
public void stop(BundleContext bundleContext) throws Exception {
System.out.println("I'm leaving OSGi :(");
}
}

Pour finir, on crée une nouvelle configuration de lancement « OSGi Bundles ». Il suffit d'ajouter le bundle à la liste et dans l'onglet « Parameters » de choisir la bonne instance OSGi à lancer :

Configuration de lancement d'OSGi

Et on lance la chose, ce qui nous donne l'affichage suivant :

Lancement d'une application OSGi

Par contre, on ne peut pas interagir avec l'instance OSGi depuis Idea, ce qui est un peu dommage. On ne peut donc pas stopper des modules ou même les gérer depuis la console d'Idea, ce qui aurait été très pratique. Néanmoins le développement OSGi en lui-même est facilité par Idea.

VII - Support de PHP

Voici une fonctionnalité qui n'est peut-être pas intéressante pour tout le monde, mais qui le sera certainement pour les développeurs Java qui gèrent un site PHP ou alors pour les développeurs PHP qui désirent changer d'IDE. Pour ma part, je suis dans le premier cas et jusqu'à présent j'utilisais d'autres IDE et éditeurs pour modifier mon site PHP, mais maintenant, je vais pouvoir le faire directement depuis mon IDE favori.

Premièrement et bien entendu, on a une coloration syntaxique d'un fichier PHP :

Coloration syntaxique d'un fichier PHP

On a également droit à de la complétion automatique des fonctions PHP :

Complétion automatique

Mais il fait plus que de la simple complétion, en effet, il découvre automatiquement les champs et méthodes qui font partie d'une classe qu'on a déclarée ainsi que les méthodes/champs d'une classe de la librairie standard. Vous pouvez voir ces fonctionnalités dans les images suivantes :

Complétion contextuelle pour PHP

Complétion avancée pour PHP

En plus de cela, Idea supporte également la documentation PHPDoc et fait de l'autocomplétion en fonction de cette documentation :

Autocomplétion depuis PHPDOC

On peut également noter qu'il est possible de faire du debugging du code PHP et qu'il est possible de faire des tests unitaires avec PHPUnit. Mais cela sort du cadre de cet article et je ne vais pas m'épancher sur le sujet.

VIII - Gestion de contexte

Cette fonctionnalité n'est à mon avis pas des plus majeures, mais elle reste toutefois intéressante. Cette nouvelle fonctionnalité permet d'enregistrer l'état de la vue.

Cela est possible via l'enregistrement de tâches. Une tâche enregistre l'état actuel de la liste de changements, des éditeurs ouverts, de l'état de la vue arborescente des modules, des configurations de lancement et des points d'arrêt activés pour le debug.

Création d'une tâche

Ensuite de quoi, il est possible de revenir à une tâche précédente, ce qui aura pour effet de restaurer l'état enregistré de la tâche à ouvrir.

Ouverture d'une tâche

Il est également possible de synchroniser les différentes tâches avec YouTrack ou Jira.

IX - Divers

En plus de ces grosses nouveautés, il y a également eu de nombreux autres changements que je ne détaillerai pas ici parmi lesquels :

- il est maintenant possible de créer un module depuis un projet Grails ou Griffon déjà existant de la même façon qu'il est possible d'importer un projet Eclipse. On peut également créer des modules Griffon/Grails ainsi que des applications ;

- on maintenant le droit à de la vérification orthographique dans le code via une nouvelle inspection activée par défaut avec la nouvelle version ;

- les méthodes et classes publiques qui ne sont pas utilisées sont maintenant directement grisées à l'instar des variables et méthodes privées ;

- amélioration du support de Grails avec le support de Griffon et Gradle ;

- support d'Android ;

- amélioration du support de Flex.

X - Conclusion

En conclusion, JetBrains nous a encore une fois fait preuve de sa grande expertise dans le domaine des IDE Java en présentant une excellente nouvelle version pleine de nouvelles fonctionnalités et d'améliorations par rapport aux versions précédentes.

La seule chose que j'aie eu à déplorer jusqu'à maintenant, c'est le manque de documentation sur le plugin OSGi et les limitations de ce dernier.

Vous pouvez télécharger IntelliJ Idea 9 sur le site officiel.

N'hésitez pas à me donner votre avis sur cet article sur le forum : Commentez

X-A - Liens

Review des anciennes versions d'Idea

- Critique de la version 8 par Gildas Cuisinier

- Critique de la version 7 par Gildas Cuisinier

- Ma critique de la version 6

- Critique de la version 6 par Valère Déjardin

X-B - Remerciements

Un grand merci à Furr pour sa relecture.