Choisir votre IDE Java

Mis à jour: décembre 2018 .

Chaque développeur Java a besoin d'un éditeur de programmation ou d'un IDE qui peut aider avec les parties les plus grincheuses de l'écriture de Java et de l'utilisation de bibliothèques de classes et de frameworks. Le choix de l'éditeur ou de l'EDI qui vous conviendra le mieux dépend de plusieurs facteurs, notamment la nature des projets en cours de développement, votre rôle dans l'organisation, le processus utilisé par l'équipe de développement, votre niveau et vos compétences en tant que programmeur. Des considérations supplémentaires sont de savoir si l'équipe a normalisé les outils et vos préférences personnelles.

Les trois IDE les plus souvent choisis pour le développement Java côté serveur sont IntelliJ IDEA, Eclipse et NetBeans. Ce ne sont pas les seuls choix, cependant, et cet examen inclura également des IDE légers.

Pour ce tour d'horizon, j'ai fait de nouvelles installations d'IntelliJ IDEA Ultimate 2018.3, Eclipse IDE 2018‑09 pour les développeurs Java EE et Apache NetBeans (incubation) IDE 9 sur un Mac. J'ai également vérifié plusieurs projets Java open source afin de pouvoir tester tous les IDE sur les mêmes projets.

À propos de cette mise à jour

Cette revue IDE a été publiée pour la première fois en septembre 2016 et a été mise à jour en décembre 2018. Au cours de ces années, le langage Java, les API, l'écosystème JVM et certains frameworks ont considérablement évolué. Java EE 8 a introduit ou mis à jour de nombreuses spécifications technologiques Java, notamment JSON-B (JavaScript Object Notation Binding), Java EE Security, Servlet 4.0 et JSF (JavaServer Faces) 2.3 pour la création d'interfaces utilisateur côté serveur. Java EE 8 était également la dernière version d'entreprise Java d'Oracle: la Fondation Eclipse a pris en charge la gestion de la technologie, qu'elle a rebaptisée Jakarta EE. Pendant ce temps, JUnit est passé à la version 5, interrompant les intégrations; IDEA et Eclipse ont tous deux un support natif pour JUnit 5, mais à ce jour, NetBeans n'en a pas.

Tous ces changements devraient faire partie de votre évaluation d'un IDE, que ce soit pour un usage général ou pour un projet particulier.

NetBeans 10 ajoute la prise en charge de JUnit 5 et JDK 11

Sorti en janvier 2019, NetBeans 10 ajoute la prise en charge de JDK 11 et JUnit 5.

Bases: ce dont vous avez besoin d'un IDE Java

Au minimum, vous espérez que votre IDE prend en charge Java 8 et / ou 11 (les versions LTS), Scala, Groovy, Kotlin et tout autre langage JVM que vous utilisez régulièrement. Vous voudriez également qu'il prenne en charge les principaux serveurs d'applications et les frameworks Web les plus populaires, notamment Spring MVC, JSF, Struts, GWT, Play, Grails et Vaadin. Votre IDE doit être compatible avec tous les systèmes de contrôle de construction et de version utilisés par votre équipe de développement; les exemples incluent Apache Ant avec Ivy, Maven et Gradle, ainsi que Git, SVN, CVS, Mercurial et Bazaar. Pour un crédit supplémentaire, votre IDE doit être capable de gérer les couches client et base de données de votre pile, prenant en charge JavaScript intégré, TypeScript, HTML, SQL, JavaServer Pages, Hibernate et l'API Java Persistence.

Enfin, vous espérez que votre IDE Java vous permettra d'éditer, de construire, de déboguer et de tester vos systèmes avec facilité et grâce. Idéalement, vous auriez non seulement une complétion de code intelligente, mais aussi une refactorisation et des métriques de code. Si vous êtes dans une boutique qui fait du développement piloté par les tests, vous souhaitez prendre en charge vos frameworks de test et vos stubbing. Si votre groupe utilise un système de ticket et CI / CD, il est préférable que votre IDE puisse s'y connecter. Si vous devez déployer et déboguer sur des conteneurs et des clouds, votre IDE devrait vous aider à le faire.

Avec cette base à l'esprit, considérons les prétendants.

IDÉE IntelliJ

IntelliJ IDEA, le premier IDE Java en termes de fonctionnalités et de prix, se décline en deux éditions: l'édition Community gratuite et l'édition Ultimate payante, qui possède des fonctionnalités supplémentaires.

L'édition Community est destinée au développement JVM et Android. Il prend en charge Java, Kotlin, Groovy et Scala; Android; Maven, Gradle et SBT; et Git, SVN, Mercurial, CVS et TFS.

L'édition Ultimate, destinée au développement Web et d'entreprise, prend en charge Perforce en plus des autres systèmes de contrôle de version; prend en charge JavaScript et TypeScript; prend en charge Java EE, Spring, GWT, Vaadin, Play, Grails et d'autres frameworks; et inclut des outils de base de données et un support SQL.

L'idée est que l'édition commerciale (Ultimate) gagnera sa place sur le bureau d'un professionnel, justifiant un abonnement payant grâce à une productivité accrue des programmeurs. Si vous gagnez entre 50 000 $ et 100 000 $ par an en tant que développeur Java, il ne faut pas beaucoup de productivité pour vous donner un retour sur investissement rapide sur un abonnement Business IDEA de 500 $ / an. Le prix diminue les années suivantes pour les entreprises, est beaucoup plus bas pour les startups et les particuliers, et est gratuit pour les étudiants, les enseignants, les «champions Java» et les développeurs open source.

IntelliJ vante IDEA pour une compréhension approfondie de votre code, de l'ergonomie des développeurs, des outils de développement intégrés et d'une expérience de programmation polyglotte. Voyons ce que ces fonctionnalités signifient et comment elles peuvent vous aider.

Martin Heller

Un aperçu approfondi de votre code

La coloration syntaxique et la complétion simple du code sont une donnée pour les éditeurs Java. IDEA va au-delà de cela pour fournir une «complétion intelligente», ce qui signifie qu'il peut afficher une liste des symboles les plus pertinents applicables dans le contexte actuel. Ceux-ci sont classés en fonction de votre fréquence d'utilisation personnelle. "L'achèvement de la chaîne" va plus loin et affiche une liste de symboles applicables  accessibles via des méthodes ou des getters  dans le contexte actuel. IDEA complète également les membres statiques ou les constantes, ajoutant automatiquement toutes les instructions d'importation nécessaires. Dans toutes les complétions de code, IDEA essaie de deviner le type de symbole d'exécution, d'affiner ses choix à partir de cela et d'ajouter des casts de classe si nécessaire.

Le code Java contient souvent d'autres langages sous forme de chaînes. IDEA peut injecter des fragments de code SQL, XPath, HTML, CSS et / ou JavaScript dans des littéraux Java String. Pour cette question, il peut refactoriser le code dans plusieurs langues; par exemple, si vous renommez une classe dans une instruction JPA, IDEA mettra à jour la classe d'entité et les expressions JPA correspondantes.

Lorsque vous refactorisez un morceau de code, l'une des choses que vous voulez généralement faire est également de refactoriser tous les doublons de ce code. IDEA Ultimate peut détecter les doublons et fragments similaires et leur appliquer également la refactorisation.

IntelliJ IDEA analyse votre code lors de son chargement et lors de la saisie. Il propose des inspections pour signaler les problèmes éventuels et, si vous le souhaitez, une liste de solutions rapides au problème détecté.

Ergonomie du développeur

IntelliJ a conçu IDEA  en gardant à l'esprit le flux créatif du développeur - alias «être dans la zone». La fenêtre de l'outil Projet illustrée à gauche dans la figure 1 disparaît de la vue d'un simple clic de souris, afin que vous puissiez vous concentrer sur l'éditeur de code. Tout ce que vous voulez faire lors de l'édition a un raccourci clavier, y compris afficher les définitions de symboles dans une fenêtre contextuelle. Bien que l'apprentissage des raccourcis demande du temps et de la pratique, ils deviennent finalement une seconde nature. Même sans connaître les raccourcis, un développeur peut apprendre à utiliser IDEA facilement et rapidement.

La conception du débogueur IDEA est particulièrement agréable. Les valeurs de variable s'affichent à droite dans la fenêtre de l'éditeur, à côté du code source correspondant. Lorsque l'état d'une variable change, sa couleur de surbrillance change également.

Outils de développement intégrés

IntelliJ IDEA fournit une interface unifiée pour la plupart des principaux systèmes de contrôle de version, notamment Git, SVN, Mercurial, CVS, Perforce et TFS. Vous pouvez effectuer toute votre gestion des changements directement dans l'EDI. En testant IDEA, j'ai souhaité que la dernière modification d'un bloc de code source apparaisse dans la fenêtre de l'éditeur sous forme d'annotation (comme dans Visual Studio). En fait, il existe un plugin pour cela.

IDEA intègre également des outils de construction, des exécuteurs de test et des outils de couverture, ainsi qu'une fenêtre de terminal intégrée. IntelliJ n'a pas son propre profileur, mais il prend en charge plusieurs profileurs tiers via des plugins. Il s'agit notamment de YourKit, créé par un ancien développeur principal d'IntelliJ, et de VisualVM, qui est une version reconditionnée du profileur NetBeans.

Le débogage de Java peut être pénible lorsque des choses mystérieuses se produisent dans des classes pour lesquelles vous n'avez pas de code source. IDEA est livré avec un décompilateur pour ces cas.

La programmation de serveur Java implique souvent de travailler avec des bases de données, c'est pourquoi IDEA Ultimate inclut des outils de base de données SQL et NoSQL. Si vous avez besoin de plus, un IDE SQL dédié (DataGrip) est disponible dans le cadre d'un abonnement tous produits qui n'est qu'un peu plus cher qu'un abonnement IDEA Ultimate.

IntelliJ IDEA prend en charge tous les principaux serveurs d'applications JVM et peut effectuer un déploiement et un débogage sur les serveurs, ce qui résout un problème majeur pour les développeurs Enterprise Java. IDEA prend également en charge Docker via un plugin qui ajoute une fenêtre d'outil Docker. (En parlant de plugins, IntelliJ en a beaucoup.)

Programmation polyglotte

IDEA a étendu l'assistance au codage pour Spring, Java EE, Grails, Play, Android, GWT, Vaadin, Thymeleaf, Android, React, AngularJS et d'autres frameworks. Ce ne sont pas tous des frameworks Java. En plus de Java, IDEA comprend de nombreux autres langages prêts à l'emploi, notamment Groovy, Kotlin, Scala, JavaScript, TypeScript et SQL. Si vous avez besoin de plus, il existe actuellement des centaines de plugins de langage IntelliJ, y compris des plugins pour R, Elm, Go, Rust et D.

IDE Eclipse

Eclipse, longtemps l'IDE Java le plus populaire, est gratuit et open source et est écrit principalement en Java, bien que son architecture de plugins permette d'étendre Eclipse dans d'autres langues. Eclipse a vu le jour en 2001 en tant que projet IBM visant à remplacer la famille d'EDI IBM Visual Age basée sur Smalltalk par un IDE portable basé sur Java. Un objectif du projet était d'éclipser Microsoft Visual Studio, d'où son nom.

La portabilité de Java permet à Eclipse d'être multiplateforme: Eclipse fonctionne sous Linux, Mac OS X, Solaris et Windows. La boîte à outils Java Standard Widget (SWT) est au moins partiellement responsable de l'apparence et de la convivialité d'Eclipse, pour le meilleur ou pour le pire. De même, Eclipse doit ses performances (ou, selon certains, son absence) à la JVM. Eclipse a la réputation de fonctionner lentement, ce qui rappelle le matériel plus ancien et les JVM plus anciens. Même aujourd'hui, cela peut sembler lent, surtout lorsqu'il se met à jour en arrière-plan avec de nombreux plugins installés.

Une partie de la surcharge d'Eclipse est son compilateur incrémentiel intégré, qui s'exécute chaque fois qu'il charge un fichier et chaque fois que vous mettez à jour votre code. C'est dans l'ensemble une très bonne chose et fournit des indicateurs d'erreur au fur et à mesure que vous tapez.

Indépendamment du système de construction, un projet Java Eclipse gère également un modèle de son contenu, qui comprend des informations sur la hiérarchie des types, les références et les déclarations des éléments Java. C'est également dans l'ensemble une bonne chose, et permet plusieurs assistants d'édition et de navigation ainsi que la vue d'ensemble.

La version actuelle d'Eclipse est 2018-09. J'ai installé l'EDI Eclipse pour les développeurs Java EE, mais il existe de nombreux autres packages d'installation, y compris la possibilité d'installer le SDK Eclipse minimal et d'ajouter des plugins uniquement si nécessaire. La dernière option n'est cependant pas pour les âmes sensibles: il n'est pas difficile d'introduire des conflits entre des plugins qui ne  disaient pas  qu'ils étaient incompatibles.

Martin Heller

Prise en charge des outils extensibles

L'écosystème de plugins est l'une des forces d'Eclipse, en plus d'être une source de frustration occasionnelle. Le marché Eclipse contient actuellement plus de 1 600 solutions et les plugins fournis par la communauté peuvent ou non fonctionner comme annoncé. Pourtant, les plugins Eclipse incluent la prise en charge de plus de 100 langages de programmation et de près de 200 frameworks de développement d'applications.

La plupart des serveurs Java sont également pris en charge: si vous définissez une nouvelle connexion serveur depuis Eclipse, vous arriverez à une liste de dossiers de fournisseurs, sous laquelle vous trouverez environ 30 serveurs d'applications, dont neuf versions d'Apache Tomcat. Les fournisseurs commerciaux ont tendance à regrouper leurs offres: par exemple, il n'y a qu'un seul élément sous Red Hat JBoss Middleware, qui comprend WildFly et EAP Server Tools, ainsi que JBoss AS.

Modification, navigation, refactorisation et débogage

La première expérience d'un développeur avec Eclipse peut être déconcertante, voire déroutante. En effet, votre première tâche est de vous adapter à l'architecture conceptuelle d'Eclipse des espaces de travail, des perspectives et des vues, dont les fonctions sont déterminées par les plugins que vous avez installés. Pour le développement de serveurs Java, par exemple, vous utiliserez probablement les perspectives de navigation Java, Java EE et Java; la vue de l'explorateur de paquets; la perspective de débogage; une perspective de synchronisation d'équipe; outils Web; une perspective de développement de base de données; et une perspective de débogage de base de données. En pratique, tout cela commencera à avoir un sens une fois que vous aurez ouvert les vues dont vous avez besoin.

Il existe souvent plusieurs façons d'effectuer une tâche donnée dans Eclipse. Par exemple, vous pouvez parcourir le code avec l'explorateur de projet et / ou la perspective de navigation Java; que vous choisissez est une question de goût et d'expérience.

La prise en charge de la recherche Java vous permet de rechercher des déclarations, des références et des occurrences de packages, types, méthodes et champs Java. Vous pouvez également utiliser l'accès rapide pour rechercher et utiliser des vues rapides pour afficher des éléments tels que les plans de classe.