IntelliJ IDEA 2019.3: optimisation des performances et amélioration de la qualité

Salut

Dans cette version, nous nous sommes concentrés sur les performances et la qualité. Avec d'autres équipes JetBrains, nous nous sommes engagés à optimiser les performances, à augmenter la réactivité de l'interface et à améliorer les fonctionnalités existantes.

Pour prioriser correctement, nous nous sommes appuyés sur vos commentaires et remercions tous ceux qui ont partagé des idées et signalé des bogues dans notre tracker. En conséquence, nous avons résolu plus de 1 600 problèmes, qui ont reçu au total environ 4 000 votes d'utilisateurs.

Nous avons également travaillé pour prendre en charge de nouveaux frameworks de microservices tels que Micronaut , Quarkus et Helidon , et avons réalisé le support tant attendu de MongoDB .


blog @ 2x (3)




Optimisation des performances


Nous avons travaillé dur pour améliorer les performances d'IntelliJ IDEA. Voici ce que nous avons obtenu:


  • IntelliJ IDEA démarre beaucoup plus rapidement.
  • Moins d'éditeur et d'interface se fige.
  • L'IDE consomme moins de mémoire, en particulier lors de l'importation de projets Gradle .




Cette année, l'une des principales tâches a été de réduire le temps de lancement de l'IDE. Nous avons apporté des modifications architecturales importantes à la plate-forme IntelliJ: certains des processus qui se sont produits séquentiellement au démarrage s'exécutent désormais en parallèle. De plus, nous avons réorganisé les classes pour accélérer l'initialisation, optimisé les téléchargements de polices sur macOS, etc.


Nous avons fait attention à augmenter la réactivité de l'interface et nous nous sommes débarrassés de nombreux blocages dans diverses parties d'IntelliJ IDEA. Nous avons réussi à éliminer les causes de gel de plus de 1600 rapports de bogues. De plus, le signalement des blocages est désormais plus facile.


Désormais, IntelliJ IDEA fonctionne beaucoup plus rapidement lorsque de nombreux onglets sont ouverts dans l'éditeur ou le débogueur, et également lorsque l'expression régulière correspond à de très longues lignes dans Rechercher dans le chemin . L'ouverture de l'arborescence du projet prend également moins de temps.


Nous avons accéléré le travail de l'éditeur en optimisant l'inférence de type en Java. L'inférence de type pour les longues chaînes d'appels de méthode est désormais beaucoup plus rapide. La mise en évidence de la syntaxe Java fonctionne également plus rapidement, en particulier avec les méthodes génériques varargs ( Arrays.asList, Map.ofEntries , etc.), qui peuvent contenir des dizaines d'arguments. La jonction de plusieurs lignes avec l'action Joindre les lignes s'est également accélérée.


La prise en charge de Kotlin 1.3.60 a également conduit à des améliorations, par exemple, la mise en évidence accélérée de la syntaxe Kotlin dans l'éditeur.


D'autres corrections ont affecté VCS: elles ont réussi à réduire le temps de traitement des événements et des fichiers ignorés, à éliminer les blocages et à accélérer les mises à jour de statut dans les grands projets.


Dans le sous-système de génération, nous avons réduit la consommation de mémoire maximale lors de l'importation de grands projets Gradle. Nous avons également résolu des problèmes d'édition de fichiers pom.xml dans les projets Maven: désormais, l'EDI propose des options de complétion automatique sans délai.


Nous sommes satisfaits des résultats, mais ne vous arrêtez pas là. Dans les versions futures, nous continuerons à optimiser les performances et à essayer de rendre le lancement de l'IDE encore plus rapide.



Amélioration de la qualité


Plugins

IntelliJ IDEA possède un riche écosystème de plugins, mais il y a un inconvénient: lors de l'installation ou de la suppression d'un plugin, vous devez redémarrer l'IDE. Nous avons commencé à résoudre ce problème et implémenté l'infrastructure de base pour l'installation dynamique de plugins, sans redémarrer l'IDE. Jusqu'à présent, cela ne fonctionne que pour les thèmes d'interface et les raccourcis clavier.


Systèmes de contrôle de version

Beaucoup de nouveautés à l'appui de VCS. Pour simplifier le travail avec les branches, au lieu de l'action Extraire comme ... , nous en avons ajouté deux nouvelles: Extraire et Nouvelle branche de la sélection . L'action Nouvelle branche à partir de la sélection crée une nouvelle branche locale, mais n'active le suivi d'aucune branche distante. Lorsque l'action Checkout est appelée, l'EDI crée une nouvelle branche locale, la récupère du référentiel et active le suivi de la branche distante sélectionnée s'il n'y a pas de branche locale du même nom.





Nous avons repensé la boîte de dialogue Cloner et créé une interface unique pour télécharger des projets à partir de divers hébergements VCS. Vous pouvez maintenant saisir votre compte directement à partir de la boîte de dialogue mise à jour. Si vous êtes déjà connecté, l'EDI affichera des listes de tous les référentiels regroupés par compte ou organisation dont vous êtes membre.


De plus, vous n'avez plus besoin de télécharger une branche pour envoyer des modifications au référentiel: sélectionnez la branche souhaitée dans la fenêtre Branches et cliquez sur Push . Pour les fichiers déplacés ou renommés, nous avons ajouté une colonne avec les noms de fichiers à l'historique des fichiers . Une autre amélioration utile est la possibilité de forcer l'ajout d'un fichier à Git (ou Mercurial), même s'il se trouve sur la liste .gitignore (ou .hgignore).


Autres améliorations

Dans la version précédente, nous prenions en charge la fonctionnalité de Java 13, et cette fois-ci, nous avons considérablement amélioré la prise en charge des blocs de texte Java 13. Nous en avons récemment parlé dans notre blog .


Il existe désormais un moyen simple d'afficher la hiérarchie des appels pour le champ sélectionné: utilisez la nouvelle action Hiérarchie des appels de champs ( Ctrl / Cmd + Alt + H ).


Si la case à cocher Afficher la documentation rapide lors du déplacement de la souris est activée , lorsque vous passez la souris sur un avertissement ou une erreur, un seul indice apparaît avec une description de l'avertissement ou de l'erreur et des informations d'aide sur le code.
Auparavant, dans de tels cas, l'EDI ne montrait qu'un indice d'erreur sans documentation, et parfois deux fenêtres contextuelles entières apparaissaient.


Nous avons mis à jour le comportement de la boîte de dialogue des actions d'intention : les actions ne disparaîtront pas de la liste des phrases si vous en sélectionnez une et fermez la boîte de dialogue.


La fenêtre Services est désormais toujours affichée et son comportement peut être configuré à l'intérieur de la fenêtre elle-même. De plus, vous pouvez masquer certaines configurations de démarrage.


Et aussi:


- Les conseils sur l'inadéquation des types sont devenus plus détaillés et compréhensibles.
- Lors de l'ouverture d'un projet, IntelliJ IDEA affiche son nom.
- Nous avons soutenu l'insertion de fragments de code dans de nouveaux langages de modèles, en particulier Pug (anciennement Jade ), Handlebars , EJS et Slim .
- Il y avait un défilement en douceur avec la molette de la souris.
- Les barres de défilement peuvent être rendues plus visibles à l'aide de la case à cocher Utiliser les barres de défilement de contraste dans Préférences / Paramètres | Apparence et comportement | Apparence .

Prise en charge de nouveaux cadres et technologies


Malgré le fait que dans la préparation de cette version, nous nous sommes principalement concentrés sur la qualité, nous avons également travaillé sur plusieurs nouvelles fonctionnalités et sommes heureux de les présenter. Tout ce qui est décrit ci-dessous est disponible uniquement dans IntelliJ IDEA Ultimate.


Il y a eu beaucoup de conversations autour des microservices bien avant que nous commencions à planifier cette version. À un moment donné, nous avons pensé que nous devrions ajouter la prise en charge des technologies utilisées pour développer des projets Java et Kotlin avec une architecture de microservices. Les stars se sont réunies et nous avons commencé à travailler sur l'intégration.


Premièrement, nous avons étendu nos capacités d'aide à la rédaction de code et de navigation pour les cadres de développement de microservices de nouvelle génération: Micronaut, Quarkus et Helidon. Pour ceux impliqués dans la programmation réactive, nous avons ajouté la prise en charge de Spring Web Flux.




Habituellement, les microservices interagissent les uns avec les autres via HTTP / WebSocket, la prochaine étape pour nous consistait donc à ajouter la prise en charge des API clientes Java HTTP, telles que java.net.URI / URL, Retrofit v2, OkHttp v3, ainsi que des bibliothèques clientes de frameworks de serveurs populaires: Spring Feign, client MicroProfile REST, etc. Il est important de noter que l'EDI fournit désormais l'URL et la navigation pour l'API HTTP / WebSocket.


Deuxièmement, nous avons ajouté une nouvelle fenêtre Endpoints pour faciliter la visualisation des endpoints de votre projet. Cette fenêtre affiche les API client et serveur. Progressivement, non seulement l'API HTTP sera ajoutée ici, mais aussi l'API de messagerie, gRPC et GraphQL.


Enfin, nous avons étendu la prise en charge des spécifications API. Dans cette version, nous avons pris en charge Swagger 2 et la spécification OpenAPI 3. La prise en charge comprend la vérification de la conformité avec le schéma, l'auto-complétion, la navigation, la recherche d'utilisations et la refactorisation Renommer dans des fichiers YAML / JSON contenant des descriptions d'API.


Pour le moment, tout cela ne fonctionne que pour les projets en Java et Kotlin, mais dans les futures versions, nous prévoyons de prendre en charge d'autres langages et frameworks.


De plus, IntelliJ IDEA 2019.3 prend enfin en charge MongoDB. Dans cette version, les collections et les champs sont affichés dans l'explorateur de base de données, vous pouvez exécuter des requêtes et afficher leurs résultats.



Correctifs importants


- L'IDE trouve maintenant le répertoire dans lequel Gradle a été installé via Homebrew.
- Il est devenu plus facile de définir manuellement le répertoire personnel de Gradle.
- IntelliJ IDEA prend désormais en charge le stockage des mots de passe dans KWallet sous Linux.
- Pour les projets JavaFX, l'EDI peut afficher un fichier FXML avec le Scene Builder intégré dans l'onglet Scene Builder .
- Dans la fenêtre de débogage , la navigation au clavier fonctionne.
- Vous pouvez copier le texte sélectionné à partir de la fenêtre d'inspection via Ctrl / Cmd + C.
- La mise au point n'est pas perdue lors du basculement entre les fenêtres IDE.
- Amélioration de l'emplacement des fenêtres et des info-bulles.
- Si le thème Darcula est sélectionné dans l'EDI, les fenêtres du système MacOS s'ouvrent dans un thème sombre lors de l'appel.

Nous avons également mis à jour le JetBrains Runtime 11 (JBR 11).


- Correction du rendu des polices sur macOS Catalina.
- Correction d'un problème avec l'ouverture d'un projet sur macOS 10.15 Catalina.
- Correction des caractères dans la boîte de dialogue Évaluer l'expression .
- IntelliJ IDEA détectera les conflits entre les raccourcis clavier IDE et les raccourcis du système d'exploitation.
- L'éditeur a résolu le problème des polices toujours en italique .
- Correction de l'écran initial sur Windows.

Lisez tous les détails de la nouvelle version sur le site Web ou consultez la critique (en anglais).

Équipe JetBrains

Source: https://habr.com/ru/post/fr479902/


All Articles