1. 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
Splash screen d'IntelliJ Idea 9

1.1. Editions

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

Fonctionnalité Ultimate Edition Community Edition
Historique local Image non disponible Image non disponible
Support Ant/Maven Image non disponible Image non disponible
Support JUnit/TestNG Image non disponible Image non disponible
Editeur Wysiwyg Image non disponible Image non disponible
Vérification syntaxique Image non disponible Image non disponible
Support des projets Eclipse Image non disponible Image non disponible
Support Java ME Image non disponible Image non disponible
IDE Talk Image non disponible Image non disponible
Gestion de contexte Image non disponible Image non disponible
Diagrammes UML Image non disponible Image non disponible
Couverture de code Image non disponible Image non disponible
Matrice de dépendances Image non disponible Image non disponible
Support Android Image non disponible Image non disponible
Recherche de code dupliqué Image non disponible Image non disponible
Recherche/Remplacement structurel(le) Image non disponible Image non disponible
Débugging JSP/Javascript Image non disponible Image non disponible


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

Langage Ultimate Edition Community Edition
Java Image non disponible Image non disponible
Groovy Image non disponible Image non disponible
XML Image non disponible Image non disponible
Regex Image non disponible Image non disponible
Scala Image non disponible Image non disponible
Clojure Image non disponible Image non disponible
Ruby/JRuby Image non disponible Image non disponible
Python Image non disponible Image non disponible
SQL Image non disponible Image non disponible
HTML, XHTML, CSS Image non disponible Image non disponible
XSL, XPath Image non disponible Image non disponible
Python Image non disponible Image non disponible
Freemarker/Velocity Image non disponible Image non disponible
JavaScript/ActionScript Image non disponible Image non disponible
PHP Image non disponible Image non disponible


Support des SCM :

SCM Ultimate Edition Community Edition
CVS Image non disponible Image non disponible
Subversion Image non disponible Image non disponible
Git Image non disponible Image non disponible
Team Foundation Server Image non disponible Image non disponible
ClearCase Image non disponible Image non disponible
Perforce Image non disponible Image non disponible
StarTeam Image non disponible Image non disponible
Visual SourceSafe Image non disponible Image non disponible


Ensuite, les frameworks et technologies :

Framework/Technologie Ultimate Edition Community Edition
OSGi Image non disponible Image non disponible
Rails/Grails Image non disponible Image non disponible
JSP/Servlets Image non disponible Image non disponible
JavaServer Faces 1.0, 1.2 Image non disponible Image non disponible
EJB 3.0, 3.1 Image non disponible Image non disponible
Web Beans Image non disponible Image non disponible
Bean validation Image non disponible Image non disponible
Flex, Air Image non disponible Image non disponible
GWT 1.X, 2.0 Image non disponible Image non disponible
Struts 1.2, 2 Image non disponible Image non disponible
Spring 2.5, 3.0 Image non disponible Image non disponible
JBoss Seam Image non disponible Image non disponible
Hibernate/JPA 1.0, 2.0 Image non disponible Image non disponible
JAX-WS, Apache AXIS Image non disponible Image non disponible
REST WebServices Image non disponible Image non disponible
Tapestry Image non disponible Image non disponible
Google App Engine Image non disponible Image non disponible


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

Serveurs d'application Ultimate Edition Community Edition
Tomcat Image non disponible Image non disponible
GlassFish v2, v3 Image non disponible Image non disponible
JBoss Image non disponible Image non disponible
WebLogic Image non disponible Image non disponible
WebSphere Image non disponible Image non disponible
Geronimo Image non disponible Image non disponible
Resin Image non disponible Image non disponible

2. 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éja le cas dans les précédentes versions.

3. 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
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.

4. 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ébuguer et lancer des classes directement via des raccourcis claviers :

  • 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 :

Vue de débugging rapide Vue de lancement rapide


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 marques-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
Marque-page sur une ligne


Et la vue des marques-pages :

Affichage 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.

5. 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
Dépendances Maven


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

Graphe des dépendances Maven
Graphe des dépendances Maven


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

A propos du reimport, 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.

6. Support d'OSGI

Depuis cette nouvelle version, Idea intègre nativement un plugin OSGI, OsmorcSite officiel d'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écessaires. Ensuite de quoi (ou avant, c'est selon), il faut configurer les instance d'OSGi qui sont installées :

Configuration des instances OSGi 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
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
Complétion des entêtes OSGi


A noter que dès que vous ajoutez l'en-tê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
Configuration d'un manifest


Et on enchâine avec un activator :

 
Sélectionnez
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 juste d'ajouter le bundle à la liste et dans l'onglet "Parameters" de choisir la bonne instance OSGi à lancer :

Configuration de lancement d'OSGi
Configuration de lancement d'OSGi


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

Lancement d'une application OSGi
Lancement d'une application OSGi


Par contre, on ne peut pas intéragir 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.

7. 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
Coloration syntaxique d'un fichier PHP


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

Complétion automatique
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 contextuelle pour PHP
Complétion avancée 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
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.

8. 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
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
Ouverture d'une tâche


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

9. 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éja 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

10. 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 officielTélécharger IntelliJ Idea 9.

N'hésitez pas à me donner votre avis sur cet article sur le forum : 1 commentaire Donner une note à l'article (5)

10.1. Liens

10.2. Remerciements

Un grand merci à Furr pour sa relecture.