News

IntelliJ IDEA 2019.3 : performances et qualité encore améliorées

Nous avons le plaisir de vous annoncer la disponibilité d’IntelliJ IDEA 2019.3 – la troisième et dernière mise à jour majeure de notre EDI phare cette année !

Pour cette nouvelle version d’IntelliJ IDEA, nous nous sommes concentrés sur les performances et la qualité globale de l’EDI. Nous avons littéralement organisé un marathon de la qualité, dans le cadre duquel notre équipe s’est associée à plusieurs autres équipes de développement de JetBrains pour travailler notamment sur le perfectionnement de l’EDI, l’accroissement de ses performances, la résolution des problèmes de réactivité de l’interface utilisateur, l’améliorations du confort d’utilisation et des fonctionnalités existantes.

Nous nous sommes plus que jamais appuyés sur vos commentaires et retours d’expérience afin de définir les priorités pour ce cycle de développement. Nous tenons à remercier tout particulièrement les personnes qui nous ont fait part de suggestions d’améliorations et signalé des incidents. Notre équipe est parvenue à corriger plus de 1 600 incidents qui ont reçu plus de 3 900 votes dans notre système de suivi.

Nous avons aussi plusieurs projets en cours, comme la prise en charge des nouveaux frameworks de Microservices, parmi lesquels Micronaut, Quarkus et Helidon, ainsi que la prise en charge très attendue de MongoDB.

Nous espérons que tout cela rendra le développement avec IntelliJ IDEA encore plus agréable !

blog@2x (3)

Poursuivez votre lecture pour en savoir plus.

Amélioration des performances

Nos efforts pour améliorer les performances d’IntelliJ IDEA nous ont permis d’obtenir les résultats suivants :

  • Démarrage plus rapide de l’EDI
  • Amélioration de la réactivité globale de l’interface, réduction du nombre de blocages de l’interface et de l’éditeur
  • Réduction de la consommation de mémoire, notamment pour l’importation des projets Gradle

L’une de nos priorités cette année a été d’accélérer le démarrage. Pour y parvenir, nous avons apporté plusieurs modifications significatives à la plateforme IntelliJ, revu certains processus qui s’exécutaient auparavant de façon séquentielle afin qu’ils s’exécutent désormais en parallèle, réorganisé les classes pour que le chargement de la classe initiale soit plus rapide, optimisé le chargement des polices sous macOS, et bien plus encore.

L’amélioration de la réactivité de l’interface utilisateur était un autre point prioritaire pour nous. Nous avons donc résolu les problèmes de blocage de l’interface qui se produisaient à différents niveaux d’IntelliJ IDEA. Nous avons facilité le signalement des blocages de l’interface utilisateurs, et pendant ce cycle de publication, nous avons ainsi pu travailler sur la résolution des signalements que nous avons reçus (Merci !). Nous avons finalement réussi à résoudre les problèmes de blocage provenant de plus de 1 600 tickets.

En outre, il n’y a plus de blocage d’IntelliJ IDEA lorsqu’un schéma d’expression régulière correspond à de très longues chaînes dans “Find in path” ou lors de l’utilisation d’un grand nombre d’onglets de l’éditeur ou du débogueur. L’EDI assure également un rendu plus rapide de l’arborescence du projet.

Nous avons également résolu différents blocages de l’éditeur en travaillant à l’optimisation de l’inférence de type Java. Et en parlant d’améliorations des performances de Java, l’inférence de type Java pour les chaînes d’appel de méthode longues fonctionne désormais beaucoup plus rapidement. Nous avons accéléré le surlignage du code dans les fichiers Java, notamment pour les méthodes avec des arguments de variable génériques (Arrays.asList, Map.ofEntries, etc.) dans lesquelles des dizaines d’arguments sont passés. Les performances de l’action Join Lines, lorsqu’elle est appelée pour plusieurs lignes à la fois, ont également été améliorées.

Nous proposons le plugin Kotlin v1.3.60 avec IntelliJ IDEA, ce qui permet d’accélérer également la mise en évidence de l’éditeur dans les fichiers Kotlin.

Dans le sous-système de contrôle de versions, nous avons optimisé le traitement des événements et des fichiers ignorés. Il y a moins de blocages et la mise à jour du statut se fait plus rapidement dans les grands projets.

Dans le sous-système Build, nous avons réduit le pic de consommation de mémoire lors de l’importation des gros projets Gradle. Pour les projets Maven, nous avons éliminé les blocages lors de la modification des fichiers pom.xml. Par conséquent, l’EDI affiche désormais des suggestions de saisie automatique sans délais.

Nous sommes satisfaits des résultats que nous avons obtenus, mais nous ne comptons pas en rester là ! Nous allons continuer sur cette lancée afin d’accélérer encore le démarrage et d’apporter davantage d’optimisations dans les prochaines versions.

Amélioration de la qualité des fonctionnalités existantes

IntelliJ IDEA dispose d’un riche écosystème de plugins auxquels vous avez accès dans notre référentiel. Toutefois, cela avait pour inconvénient de rendre la gestion des plugins difficile car le chargement et le déchargement de plugins nécessitait à chaque fois le redémarrage de l’EDI. IntelliJ IDEA 2019.3 résout ce problème en implémentant l’infrastructure de base sous-jacente pour la prise en charge de l’installation dynamique des plugins. L’EDI peut ainsi charger et décharger les plugins sans redémarrage. Cela fonctionne actuellement pour les plugins de thème et de carte clavier. Nous prévoyons d’étendre cela à la plupart de nos plugins dans la prochaine version. Il s’agit de l’une des premières étapes pour simplifier la gestion des plugins.

De nombreuses améliorations de l’utilisation ont été apportées dans le sous-système de contrôle des versions. Pour plus de clarté, nous avons amélioré le workflow d’extraction de Git en remplaçant l’action “Checkout as” par 2 nouvelles actions distinctes : ‘New Branch from Selected’ et ‘Checkout’. La nouvelle action “New Branch from Selected’ crée un nouvelle branche et ne définit pas le suivi. L’action ‘Checkout’ crée une nouvelle branche locale, l’extrait, et définit le suivi de la branche distante sélectionnée en l’absence de branche locale du même nom.

Pour unifier l’interface utilisateur et obtenir des projets provenant de différents services d’hébergement VCS, nous avons remanié la boîte de dialogue Clone. Vous pouvez maintenant vous connecter depuis cette boîte de dialogue ou, si vous êtes déjà connecté, l’EDI vous donnera instantanément un aperçu des listes de tous les référentiels regroupés par comptes ou par organisations.

D’autre part, il n’est pas nécessaire d’extraire une branche pour faire un Push : il suffit désormais de rechercher la branche voulue dans la fenêtre contextuelle Branches et d’effectuer un Push. Nous avons également ajouté une colonne de noms de fichiers dans l’historique des fichiers pour les fichiers renommés ou déplacés. Une autre amélioration que vous trouverez sans doute utile, est la capacité de forcer l’ajout d’un fichier à Git (ou Mercurial), même s’il est dans la liste .gitignore ou .hgignore.

Nous avons introduit une prise en charge basique de Java 13 dans IntelliJ IDEA 2019.2, et avec cette version, nous avons amélioré de façon significative la prise en charge des blocs de texte Java13. Nous avons récemment publié un article de blog présentant ces modifications. en détail.

Une nouvelle action Field Call Hierarchy a été ajoutée. Utlisez simplement Ctrl+Alt+H (Windows, macOS, Linux) pour visualiser la hiérarchie d’un champ sélectionné. Cela rend toutes les autres opérations beaucoup plus simples.

Désormais, si la case ‘Show quick documentation on mouse move’ est cochée, le survol d’un avertissement ou d’une erreur avec le pointeur affiche une infobulle unifiée qui décrit l’avertissement ou l’erreur et donne des informations de référence sur le code.
Auparavant, dans ce cas, l’EDI affichait uniquement les infobulles d’inspections au lieu de la documentation ou parfois affichait même 2 fenêtres contextuelles à la fois.

Le comportement par défaut de la boîte de dialogue des intentions a été mis à jour afin que les actions d’intention ne disparaissent pas de la liste de suggestions si vous choisissez une action d’intention puis annulez la boîte de dialogue.

La fenêtre d’outils Services est désormais systématiquement affichée et peut être configurée directement depuis elle-même. De plus, vous pouvez masquer des configurations d’exécution particulières à partir de cette fenêtre d’outils.

Voici les principales améliorations :

  • L’infobulle de discordance des types a été remaniée pour améliorer sa lisibilité.
  • Lors de l’ouverture d’un projet, IntelliJ IDEA affiche désormais le nom du projet.
  • Vous pouvez désormais injecter plus de langages de modèles dans votre code, notamment Plug (ex-Jade), Handlebars, EJS et Slim.
  • Le défilement avec la molette de la souris est désormais plus fluide.
  • La barre de défilement peut être rendue plus visible, grâce à la case à cocher “Use contrast scrollbars” dans la section Preferences/Settings | Appearance & Behavior | Appearance.

Prise en charge de nouveaux frameworks et de nouvelles technologies

Même si cette version a pour principal objectif l’amélioration de la qualité, un certain nombre de fonctionnalités qui étaient en cours de développement ont été finalisées. Veuillez noter que les nouveautés mentionnées ci-dessous sont seulement disponibles dans IntelliJ IDEA Ultimate.

Les microservices faisaient le buzz longtemps avant la préparation de cette nouvelle version. À un certain stade, nous avons pensé que cela rendrait le développement plus agréable et ajouterait la prise en charge des frameworks et des technologies qui sont communément utilisées pour développer des projets Java et Kotlin avec une architecture basée sur les microservices. Cette nouvelle version a bénéficié d’un alignement favorable des planètes et nous avons commencé à travailler sur l’intégration.

Tout d’abord, nous avons enrichi l’assistance au codage et la navigation pour la nouvelle génération de frameworks de microservices, notamment Micronaut, Quarkus et Helidon. Nous avons également pensé aux utilisateurs de services web réactifs en complément de Spring et ajouté la prise en charge de Spring Web Flux.

Habituellement, les microservices communiquent entre eux sur une liaison HTTP/ WebSocket. Par conséquent, l’étape suivante pour nous a consisté à ajouter la prise en charge des API clientes HTTP Java, telles que java.net.URI / URL, Retrofit v2, OkHttp v3, ainsi que les bibliothèques de clients des frameworks côté serveur les plus populaires : Spring Feign, MicroProfile REST Client, etc. Le plus intéressant avec cette nouvelle prise en charge est que l’EDI peut désormais assurer la saisie automatique des URL et la navigation pour les API HTTP/WebSocket.

Pour l’étape suivante, nous avons souhaité fournir un cadre agréable pour la saisie des points de terminaison dans votre projet et avons donc ajouté la fenêtre d’outils “Endpoints”. Cette fenêtre permet de voir à la fois les API client et serveur. Elle a vocation à devenir progressivement un espace central pour toutes vos API, pas seulement HTTP, mais aussi de messagerie, gRPC et GraphQL.

Enfin, nous avons ajouté la prise en charge étendue des spécifications de la documentation des API. Dans cette version, il s’agissait de Swagger v2 et d’OpenAPI Spécification v3. Nous espérons que tous les utilisateurs ayant une approche centrée sur les spécifications apprécieront la prise en charge de la validation par schéma, de la saisie automatique du code, de la navigation, de la recherche des utilisations et de la refactorisation rename dans les fichiers YAML/JSON contenant des descriptions d’API dans leur EDI.

Pour le moment, seuls les projets Java et Kotlin sont pris en charge, mais nous ne comptons pas en rester là et prévoyons d’étendre la prise en charge à de nouveaux langages et frameworks dans la prochaine version.

En complément, IntelliJ IDEA 2019.3 propose la prise en charge très attendue de MongoDB. Pour l’instant, il ne s’agit que d’une prise en charge initiale, mais nous prévoyons de l’améliorer. IntelliJ IDEA vous permet désormais d’afficher des collections et des champs dans l’explorateur de bases de données, d’exécuter des requêtes et d’en vérifier les résultats.

Correctifs de bugs notables

Nous avons corrigé de nombreux incidents, parmi lesquels :

  • IntelliJ IDEA peut désormais localiser le répertoire d’installation de Gradle lorsqu’il a été installé par l’intermédiaire de Homebrew.
  • Il est maintenant plus facile de définir manuellement le répertoire utilisateur de Gradle.
  • L’EDI prend désormais en charge le stockage de mots de passe via KWallet sous Linux.
  • Lorsque vous travaillez sur un projet JavaFX, l’EDI peut afficher un fichier FXML avec Scene Builder intégré dans l’onglet du même nom.
  • Il est maintenant possible de naviguer avec le clavier dans la fenêtre d’outil Debug.
  • Il est ainsi possible de copier le texte sélectionné dans la fenêtre contextuelle d’inspection avec Ctrl+C.
  • Le focus est maintenu lors du basculement entre les fenêtres de l’EDI.
  • Correctifs pour les positions de fenêtres et de fenêtres contextuelles.
  • Les fenêtres macOS appelées sont ouvertes et utilisent le thème sombre si le thème Darcula est sélectionné dans l’EDI.

Nous avons également mis à jour JetBrains Runtime 11 (JBR 11) pour intégrer de très nombreux correctifs.

  • Le problème de rendu des polices sous macOS Catalina a été corrigé.
  • Résolution du problème d’ouverture des projets sous macOS 10.15 Catalina.
  • Réparation des symboles dans la boîte de dialogue Evaluate Expression.
  • Détection des conflits de disposition du clavier avec le système d’exploitation.
  • Résolution du problème d’affichage constant en italiques dans l’éditeur.
  • Réparation de l’écran de bienvenue sous Windows.
  • L’EDI signale désormais les conflits de keymap de l’EDI avec celui du système d’exploitation natif.
  • Correction des polices incorrectes (italique) dans l’éditeur.

Autres évolutions

Cette version reprend également toutes les modifications d’Android Studio 3.5.

Nous avons également retiré les plugins Vaadin et de prise en charge des applets Java. Ils resteront cependant disponibles dans notre référentiel de plugins et peuvent être installés manuellement.

Nous avons essayé d’adopter une approche différente avec cette version et nous espérons que le résultat vous plaira ! Si vous souhaitez vous plonger dans la liste exhaustive d’incidents résolus, nous vous invitons à consulter les notes de publication.

Dîtes-nous ce que vous en pensez ! Vous pouvez nous contacter sur Twitter, Facebook ou en laissant un commentaire ci-dessous.

Consultez la page Nouveautés et regardez la vidéo de présentation.
Téléchargez IntelliJ IDEA 2019.3 et bénéficiez d’une version encore plus stable de votre EDI Java préféré !

Bon développement !

Auteur de l’article original en anglais : Zlata Kalyuzhnaya

image description

Discover more