Revue de l'IDE Jetbrains Intellij Idea 9 Ultimate Edition

Date de publication : 10.12.2009

Par Baptiste Wicht (Mon site) (Blog)
 

Voici ma revue de l'EDI Jetbrains Intellij Idea 9 Ultimate Edition.
warning 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.
info Version anglophone de cet article - English version of this article: en Review of Jetbrains Intellij Idea 9 Ultimate Edition.

              Version PDF (Miroir)  Version hors-ligne (Miroir)

1. Introduction
1.1. Editions
2. Installation
3. Améliorations générales
4. Interface graphique
5. Support de Maven
6. Support d'OSGI
7. Support de PHP
8. Gestion de contexte
9. Divers
10. Conclusion
10.1. Liens
10.2. Remerciements


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
Support Ant/Maven
Support JUnit/TestNG
Editeur 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

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, 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 :
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 officiel.

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

Review des anciennes versions d'Idea

10.2. Remerciements

Un grand merci à Furr pour sa relecture.



              Version PDF (Miroir)  Version hors-ligne (Miroir)






Java

   Création d'un système de mise à jour en Java
   Création d'éxécutables en Java
   Utilisation d'une base de données embarquée HSQLDB
   Les librairies d'Apache Software Foundation
   Implémentation du pattern MVC
   Les mots réservés du langage Java
   Améliorez l'intégration au système de votre programme Java
   Bien débuter en Java
   Développer une application modulaire en Java
   Créer un site avec Maven 2
   Développer une application modulaire avec JTheque Core
   Installer l'environnement JR sous Windows
   Introduction au langage JR

Swing

   Vos premiers pas dans la création d'interfaces graphiques avec Swing
   Gestion du focus dans vos applications Swing
   Création interface graphique avec Swing : les tableaux (JTable)

Eclipse

   Découverte de WOJ pour Eclipse
   Utilisation de Subversion avec Eclipse
   Calculer les métriques de vos projets avec Metrics

PHP

   Utilisation du DOM en PHP 4 et 5 pour la création d'un fil RSS
   Implémenter le Full Loading sur Zend Framework

SQL

   Débuter en SQL

SQL-Server

   Les procédures et les fonctions avec MS-SQL Server
   Gestion des transactions avec SQL-Server
   Le type DATETIME de SQL-Server

Windows

   Découverte d'IE7 Pro
   Accélérer le démarrage de Windows XP avec Microsoft Bootvis

Outils

   Présentation d'IntelliJ Idea 6.0m, la rolls des EDI Java
   Présentation et utilisation de Launch4j
   Présentation et utilisation de Exe4J
   Présentation et utilisation de JSmooth
   Présentation et utilisation de JExeCreator
   Installer Code::Blocks sous Windows XP et Vista
   Revue de l'IDE Jetbrains Intellij Idea 9 Ultimate Edition

Hardware

   Introduction au réseau
   Comprendre la séquence de démarrage d'un PC
   Quelques conseils pour bien choisir vos disques durs
   Quelques conseils pour bien choisir votre boitier
   Quelques conseils pour bien choisir votre alimentation
   Quelques conseils pour bien choisir vos barrettes mémoire
   Quelques conseils pour bien choisir votre écran
   Quelques conseils pour bien choisir votre carte graphique
   Quelques conseils pour bien choisir une carte mère pour votre PC
   Présentation et test de la souris Logitech MX1000
   Présentation et test du clavier Microsoft Reclusa
   Présentation et test de la webcam Microsoft LifeCam VX7000
   Présentation et test du set clavier/souris Microsoft Wireless Entertainment Desktop 8000
   Présentation et test de la souris Microsoft Wireless Laser Mouse 7000

VBS

   Créer un nouveau format d'entrée pour LogParser en VBScript
   Manipuler des fichiers XML en VBScript avec XPath

Tools

   Review of Jetbrains Intellij Idea 9 Ultimate Edition

Swing

   Creation of Swing User Interface : Tables (JTable)

Java

   Install the JR environment on Windows
   Introduction to JR programming language
   Develop a modular application with JTheque Core 2.0.3

Web

   Développer une communauté autour de votre site avec Google Friend Connect
   Analyser l'audience de votre site web avec Google Analytics




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. Cette page est déposée.

 
 
 
 
Partenaires

Hébergement Web