MPS 2020.1 est disponible !

Nous avons le plaisir de vous informer que la première version majeure de MPS pour cette année est disponible. Cette version apporte plusieurs nouvelles fonctionnalités et des améliorations de différents sous-systèmes. Découvrez ce que nous avons préparé pour vous.


TÉLÉCHARGER MPS 2020.1

 

Utilisez des séparateurs différents selon la position dans la liste

Lors de la modification de nœuds avec la cardinalité (0, n) ou (1, n), vous aviez la possibilité de fournir un séparateur personnalisé entre les valeurs en implémentant une fonction de requête de séparateur. Cette fonctionnalité étend cette capacité en passant plus d’arguments vers la fonction de requête (à savoir prevNode et nextNode). Ces derniers permettent de fournir un séparateur personnalisé pour chaque paire de valeurs. Dans la capture d’écran suivante, “and” et “, ” sont les séparateurs. Regarder une démo.

séparateur

Light patterns

Un pattern language permet de définir des modèles de structure et de faire correspondre des nœuds avec ces derniers. Il utilise des éditeurs de concept courants qui donnent au modèle une apparence similaire aux nœuds qu’il accepte. Mais pour certains éditeurs complexes qui ne correspondent pas exactement à la structure du concept, il peut être plus confortable d’utiliser des light patterns (constructeurs de modèles) qui décrivent la structure requise littéralement. Consultez la documentation pour en savoir plus ou regardez une démo.

lightPatterns

Saisie par dessus un texte existant

La possibilité de saisir par dessus du texte existant est une nouvelle fonctionnalité de l’éditeur projectionnel, qui le rapproche un peu d’un éditeur de texte. Lors de la saisie dans une cellule de texte, si le caractère que vous venez de saisir était déjà présent à la position du curseur, le curseur se déplacera comme si vous veniez de remplacer le caractère existant. Cette fonctionnalité n’est déclenchée que si la frappe ne peut pas être traitée correctement et serait autrement ignorée (par exemple dans les cellules constantes) ou rendrait le contenu de la cellule invalide. Regarder une démo.

Cette fonctionnalité est activée par défaut et vous pouvez la désactiver dans l’onglet Settings / Editor / General.

Infobulles

L’extension d’éditeur de la plateforme Tooltips from mbeddr a été ajoutée à MPS. La migration est fournie pour les langages mbeddr. Regarder une démo.

tooltips1586943437422

Améliorations de BaseLanguage inspirées de Java

BaseLanguage inclut désormais try with resources, catch multiple exceptions, l’inférence de type pour les variables locales, et les méthodes d’interface par défaut et privées. Pour assurer la compatibilité avec les processus de build qui nécessitent un niveau de langage Java spécifique, chaque solution peut être configurée pour interdire les fonctionnalités de langage non compatibles avec ce niveau.

À l’exception de la fonctionnalité local variable type inference, qui nécessite j.m.baseLanguage.varVariable, ces fonctionnalités ne nécessitent aucune autre importation de langage. Voir le guide de migration ou regarder une démo.

Élimination des extensions de langage inutiles

MPS exigeait auparavant une dépendance ‘extends’ entre les langages lorsqu’un éditeur de langage fournissait des composants d’éditeur pour les concepts d’un autre langage. Ces dépendances ne reflètent pas nécessairement la relation entre les langages et entraînent parfois un traitement exhaustif de la hiérarchie des langages. Prenez par exemple INamedConcept de j.m.lang.core. Tous les langages MPS étendent j.m.lang.core. Par conséquent, les aspects de l’éditeur de tous les langages disponibles sont consultés dès que le concept d’éditeur INamedConcept est utilisé.

Dans la version 2020.1, le générateur détecte les extensions de l’éditeur pour d’autres langages et génère le code respectif qui manifeste la dépendance de façon explicite, afin que les concepteurs de langage n’aient pas à se soucier de ce type particulier de dépendance entre les langages. La dépendance ‘extends’ entre les modules de langage n’est plus nécessaire pour activer les extensions de l’éditeur.

Commentaires Javadoc dans les modèles de stub Java

Les bibliothèques Java sont utilisées dans le monde de MPS à l’aide de modèles de stub Java. Ces modèles sont construits à partir des informations .class et n’ont donc pas de documentation comme javadocs.

Dans la version 2020.1, un nouveau mécanisme permet de spécifier un zip contenant les sources d’une bibliothèque en plus de la bibliothèque .jar, et MPS est capable d’extraire le javadoc des sources pour le présenter en parallèle des informations extraites des fichiers de classe. Cette fonctionnalité est notamment pratique lorsque l’on utilise une bibliothèque Java à partir de MPS et que l’on doit accéder au javadoc de la bibliothèque. Il est beaucoup plus facile de naviguer vers le code concerné et sa documentation directement dans MPS que de basculer vers un emplacement externe pour ensuite lancer une recherche et lire le code. C’est encore plus important pour MPS lui-même, car des parties essentielles de son API sont fournies sous forme de stubs Java. Regarder une démo.

Détection d’erreurs pour les éditeurs défectueux

Si le code dans l’aspect éditeur d’un langage lève une exception, l’éditeur par défaut s’affiche pour une cellule correspondante dans un modèle écrit dans le langage. À partir de la version 2020.1, si ce type de cellule rompue est ouvert dans l’éditeur, une erreur s’affiche dans la fenêtre d’outils Messages. Il est possible d’obtenir la trace de la pile à partir de l’erreur et d’accéder à la cellule problématique. Regarder une démo.

Commentaires multilignes en BaseLanguage

La fonctionnalité de SingleLineComment a été améliorée et le nouveau concept MultiLineComment a été introduit dans BaseLanguage pour prendre en charge les commentaires délimités par les symboles /* … */ de la même manière que le fait Java.Voir le guide de migration ou regarder une démo.

Menus Transform/substitute : fusion des menus nommés et des menus par défaut

Il s’agit d’une amélioration qui simplifie les menus Transformation et Substitution en supprimant les concepts personnalisés des menus d’éditeur nommé (SubstituteMenu_Named) et par défaut (SubstituteMenu_Default). Les deux concepts ont été fusionnés dans leur parent (SubstituteMenu). Le type de menu est maintenant sélectionné dans l’éditeur de menus. La même refactorisation a été appliquée aux menus Transformation. Voir le guide de migration ou regarder une démo.

 

Autres améliorations

Police de caractères JetBrains Mono par défaut

MPS utilise maintenant la toute nouvelle police JetBrains Mono (Preferences / Settings | Editor | Font) par défaut. Découvrez tous les détails sur notre nouvelle police de caractères spécialement conçue pour les développeurs sur notre site web.

La Marketplace arrive dans MPS

La JetBrains Plugin Marketplace est désormais disponible dans MPS. Cela ouvre de nouvelles opportunités car vous pouvez commercialiser vos plugins.

Interface de Commit non modale

Afin de simplifier le flux de commits, nous avons développé une nouvelle fenêtre Commit tool pour gérer toutes les tâches liées aux commits. Elle offre davantage d’espace pour la liste des fichiers modifiés et le diff, et vous permet d’ajouter des modifications à un commit quand elles sont prêtes, de composer un message de commit de manière itérative et de choisir quelle modification échelonnée va dans quel commit.

Cette interface n’est pas activée par défaut. Si vous voulez l’essayer, sélectionnez “Use non-modal commit interface” dans Preferences/Settings | Version Control | Commit.

Mode Zen

Ce nouveau mode vous aide à vous concentrer sur votre code en combinant les modes Plein écran et Sans distraction. Pour essayer le mode Zen, cliquez sur View | Appearance | Enter Zen Mode.

Installer Git depuis l’EDI

Vous n’avez plus besoin de préinstaller Git manuellement . Lorsque vous clonez un référentiel Git, l’EDI recherche l’exécutable Git sur votre machine et vous propose de le télécharger et de le configurer pour vous si l’EDI ne peut pas le localiser.

Chemin d’accès au fichier de configuration

Veuillez noter que dans MPS 2020.1, le chemin d’accès aux fichiers de configuration a changé. En savoir plus.

 

N’oubliez pas de consulter notre Guide de migration. Nous avons également résolu une longue liste de bugs qui nous avaient été signalés par la communauté. Si vous trouvez de nouveaux bugs ou pensez à des fonctionnalités utiles que nous pourrions ajouter, merci de nous en faire part dans notre outil de suivi.

Faites attention à vous et passez une bonne journée !

L’Équipe JetBrains MPS

The Drive to Develop

Auteur de l’article original en anglais : Oscar Rodriguez

blog_footer_bw@2x

Posted in New features, Release Announcements | Tagged , | Leave a comment

YouTrack dispose maintenant d’une Base de connaissances

Vous pouvez lire cet article en anglais, russe, coréen, chinois, japonais, portugais brésilien et espagnol.

Base de connaissances dans YouTrack

Nous avons le plaisir de vous annoncer la sortie de YouTrack 2020.2, qui dispose d’une Base de Connaissances intégrée ! Vous pouvez désormais créer une base de connaissances publique et conserver la documentation interne directement dans YouTrack, aux côtés de vos tâches et projets. YouTrack permet de regrouper les connaissances collectives de votre équipe dans un seul endroit.

Il apporte aussi des améliorations pour les administrateurs de projets, comme la conversion des types de champs et la possibilité de définir un groupe de visibilité par défaut pour vos projets.

Pour une meilleure collaboration entre les équipes, nous avons ajouté de nouvelles options pour partager les balises, les recherches sauvegardées, les tableaux Agiles et les rapports.

Pour améliorer l’expérience utilisateur au niveau du traitement des tickets, nous avons ajouté de nouvelles fonctionnalités qui permettent de configurer des espaces de travail personnels et des listes d’incidents, ainsi qu’une action “Clone issue as draft” pour cloner un ticket en tant que brouillon.

Pour tous ceux qui débutent avec les tableaux Agiles, nous avons simplifié le processus et réduit le nombre d’étapes nécessaires à la création d’un tableau.

Vous voulez en savoir plus ? Poursuivez votre lecture pour découvrir tout ce qui vous attend dans YouTrack 2020.2.

Continue reading

Posted in Features, How-To's, New features, Release Announcements, Tips & Tricks | Tagged , , , , , | Leave a comment

25 choses que nous aimons dans Java

JetBrains aime tous les langages de programmation et tous les types de développeurs, mais aujourd’hui c’est Java que nous mettons en avant car ce mois-ci, en mai 2020, Java fête ses 25 ans ! Nous profitons donc de cette occasion particulière pour partager 25 choses que nous aimons à propos de Java et de la JVM.

25 Things We Love About Java

Rétrocompatibilité

Java est l’un des seuls langages capable d’exécuter du code conçu il y a 25 ans sur une version moderne de Java. Les développeurs du langage prennent la rétrocompatibilité très au sérieux et de nombreuses organisations choisissent Java comme principale plateforme de développement car elles savent que le code fonctionnera encore sur la JVM pour des années.

Maturité

Il y a beaucoup d’avantages à exister depuis longtemps. Au cours des 25 dernières années, les développeurs ont écrit des applications en Java pour un grand nombre de secteurs et types d’entreprises, et pour différentes plateformes. Parallèlement, depuis 25 ans, les développeurs apprennent ce langage dans des écoles, des universités, des boot camps et au travail. Ce vaste écosystème a eu le temps de tirer des enseignements de ses expériences et continue de se développer. Java, et les problèmes qu’il peut résoudre, est bien documenté et largement soutenu par des distributeurs, des associations et des utilisateurs. De plus, la maturité et la large adoption de Java génèrent de nombreuses opportunités d’emplois pour les développeurs souhaitant coder en Java !

Amélioration constante

L’évolution de la plateforme et du langage contraste avec sa rétrocompatibilité et sa maturité. Depuis 2017 (Java 9), une nouvelle version a été publiée tous les six mois, ce qui a permis un flux constant de modifications et d’améliorations du langage. Par ailleurs, avec les fonctionnalités en preview, le langage expérimente de nouvelles syntaxes, bénéficie des retours d’expérience des développeurs et standardise les nouvelles fonctionnalités les plus à même de satisfaire les utilisateurs.

Équilibre

Java a un équilibre difficile à trouver entre la rétrocompatibilité et l’ouverture sur l’avenir. L’approche actuelle qui consiste à valoriser la rétrocompatibilité et à publier une version tous les six mois, avec toutefois une version LTS (long term support) tous les trois ans, semble parvenir à un juste équilibre. Le langage est capable d’évoluer en fournissant des avertissements pour les fonctionnalités obsolètes qui seront supprimées et en prévoyant des remplacements pour tout ce qui est susceptible de disparaître.

Ceux qui souhaitent une plus grande stabilité peuvent rester sur les versions LTS. Pour réduire les risques au moment de la mise à jour, ils peuvent effectuer des tests périodiques sur les versions semestrielles.Ceux qui souhaitent effectuer une mise à jour tous les six mois peuvent passer à la dernière version de Java chaque fois qu’elle est publiée. Les développeurs qui veulent essayer une nouvelle syntaxe avant même qu’elle ne soit standardisée peuvent activer les fonctionnalités en preview et ceux qui veulent le faire dès que possible peuvent même utiliser la version Early Access.Les équipes utilisant des versions modernes de Java peuvent vraiment bénéficier du meilleur de tous les mondes.

Standards

Les standards ne sont peut-être pas aussi intéressants pour un développeur que les fonctionnalités du langage, mais le fait d’avoir des standards pour Java, pour Java EE et Jakarta EE, et pour les cas d’utilisation que les développeurs rencontrent couramment, facilite la vie des développeurs.Comprendre l’utilisation de JDBC pour dialoguer avec une base de données évite d’avoir à se soucier de la manière dont le pilote de la base de données est implémenté, car notre façon d’interagir avec elle est toujours la même.Le JCP est l’un des processus utilisés pour déterminer les standards pour Java.

La documentation Java Language Specification décrit les concepts de Java et comment le compilateur doit fonctionner. Cela comprend le Java Memory Model, qui peut permet d’anticiper comment une application pourrait se comporter, indépendamment de la JVM ou du matériel. La documentation Java Virtual Machine Specification présente les détails de niveau bas dans la JVM. Ces spécifications permettent aux JDK distribués par différents fournisseurs, fonctionnant sur différentes plateformes, de se comporter de manière spécifique et prévisible. Ce qui nous conduit à…

Write once, run anywhere (écrivez une fois, exécutez partout)

WORA était l’une des idées novatrices à l’origine de Java, ce qui semble si évident de nos jours que nous ne réalisons pas à quel point cette idée était révolutionnaire. J’ai travaillé pour une très grande entreprise qui est passée à Java en 2002 principalement parce qu’elle disposait déjà de nombreuses machines différentes : le fait de pouvoir exécuter de nouvelles applications Java sur ces machines au lieu de devoir acheter du matériel spécifique pour les applications l’a décidé à opter pour Java. Aujourd’hui, à l’ère du Cloud, cela peut sembler moins pertinent, mais bien que nous ne voyions pas toujours ce concept de WORA en action nous en tirons toujours profit. Et bien sûr, si vous utilisez IntelliJ IDEA (ou NetBeans), vous profitez des avantages du WORA sur ordinateur.

Performance

Cela surprend parfois ceux qui sont moins familiers avec Java, mais Java est un langage très performant. C’est une plateforme mature qui bénéficie de 25 ans d’amélioration des performances, de nombreux récupérateurs de mémoire avec différents profils de performances ; et la JVM optimise notre code à l’exécution pour nos cas d’utilisation réels en production bien mieux que ne pourraient le faire la plupart des développeurs. Java est par exemple largement utilisé dans le monde de la finance, qui dépend de transactions à faible latence et et requiert des performances prévisibles.

Nettoyage de la mémoire

Le nettoyage automatique de la mémoire est une autre chose que, 25 ans plus tard, nous considérons généralement comme allant de soi. Nous n’avons pas à réfléchir à la manière dont la mémoire est allouée dans nos applications, ni à la manière de la libérer. Chaque JVM a un ou plusieurs algorithmes de nettoyage de la mémoire différents, nous pouvons donc en choisir un qui fonctionne bien pour notre application sans avoir à trop nous préoccuper de son fonctionnement interne, nous pouvons continuer à nous consacrer à l’écriture de la logique du système pour nos applications.

Observabilité et gestion

Si nous souhaitons savoir ce qui se passe pendant le fonctionnement de notre application, nous disposons d’un grand nombre d’outils. Beaucoup d’entre eux sont même gratuits, notamment depuis que Java Flight Recorder et Mission Control ont été intégrés à OpenJDK (depuis Java 11). Des outils comme JMX permettent même une gestion dynamique de nos applications.

La machine virtuelle Java (JVM)

La plupart des fonctionnalités que nous venons de mentionner sont des fonctionnalités de la JVM, mais nous voulons évoquer la JVM spécifiquement, et notamment le fait qu’elle soit séparée du langage Java. Il y a de nombreuses raisons d’aimer la JVM, parmi lesquelles certaines des choses que nous avons déjà évoquées : WORA, l’optimisation de l’exécution, les performances, le choix des distributeurs, etc., dont une grande partie est rendue possible grâce aux standards et aux spécifications. Il est important que la JVM soit séparée du langage Java aussi car cela rend possible la création de différents langages à partir de la plateforme en tirant parti de toutes les fonctionnalités de la JVM, tout en fournissant différents types de caractéristiques syntaxiques et linguistiques.

Autres langages de la JVM

Si Java a survécu, et a même continué d’évoluer, dans les années creuses entre Java 6 et 8 (Java 7 a quelques bonnes fonctionnalités mais n’a pas été considérée comme une version majeure par les développeurs), c’est notamment grâce aux autres langages de la JVM. Chez JetBrains, notre préféré est bien sûr Kotlin, mais la JVM a aussi permis la création d’autres langages populaires tels que Groovy, Scala, Clojure et JRuby, et un grand nombre d’autres langages, nouveaux ou réimplémentés. Dans de nombreux cas, l’interopérabilité entre ces langages et le Java classique nous permet de tirer parti de cette diversité.

Bibliothèques et frameworks

L’un des plus grands avantages est l’énorme choix que nous avons en matière de bibliothèques et de frameworks, dont un grand nombre sont open source et gratuits. Des frameworks populaires tels que Spring, et Spring Boot en particulier, permettent de créer facilement toute sorte d’applications, allant de petits services à des applications plus complexes et de grande envergure. Les standards font qu’il est souvent assez facile de comprendre et d’utiliser une bibliothèque lorsque l’on a déjà utilisé quelque chose de similaire dans un autre contexte. Grâce à la maturité de Java et à l’adoption précoce de l’open source par la communauté, il existe généralement une solution aux problèmes courants et que nous n’avons donc pas à réinventer la roue. Cela signifie également qu’un grand nombre de ces solutions sont utilisées depuis longtemps et qu’elles ont donc déjà été bien testées, comprises et documentées.

Outils de build et gestion des dépendances

Il est loin le temps où un pauvre développeur (comme moi !) devait chercher sur Internet un fichier JAR inconnu contenant une classe apparemment requise pour le code qu’il essaye d’exécuter. Maven et Gradle ont particulièrement facilité la génération et le déploiement d’une application, mais aussi la mise en place d’un projet de manière standard avec toutes les dépendances requises. Il est facile de commencer à coder dans un projet nouveau ou existant. Les référentiels publics comme Maven Central et Bintray simplifient la recherche et la publication de bibliothèques.

JUnit et les tests automatisés

JUnit a été créé en 1997, il est donc presque aussi vieux que Java !C’est de loin le framework de tests automatisés le plus répandu dans le monde de Java, et dans la mesure où l’on suppose qu’un framework de test est nécessaire pour tout nouveau projet Java, JUnit et TestNG sont tous les deux fournis avec IntelliJ IDEA. Il est fort probable que les frameworks de tests modernes pour de nombreux langages soient basés sur les idées de JUnit, que nous considérons aujourd’hui comme des évidences. La culture de la communauté Java en matière de tests automatisés doit beaucoup à cette seule bibliothèque.

EDI

Que vous estimiez que la verbosité de Java nécessite un EDI, ou que Java puisse réellement tirer parti d’un EDI en raison de son typage statique, le fait est que les développeurs Java aiment tout particulièrement les EDI. L’utilisation efficace d’un EDI (qu’il s’agisse d’IntelliJ IDEA, d’Eclipse ou de NetBeans) peut considérablement améliorer la productivité d’un développeur, grâce à la saisie semi-automatique, la génération de code, l’exécution de tests, le débogage, la navigation et un , entre autres fonctionnalités. Les développeurs Java sont généralement très enthousiastes quant aux avantages que peut leur apporter un EDI.

Communauté

La communauté Java est une communauté importante, mature, dynamique et accueillante. Il existe des groupes d’utilisateurs Java dans de nombreuses villes du monde, mais aussi un groupe d’utilisateurs Java virtuel. Les Java Champions sont des leaders techniques reconnus dans le monde de Java, qui se sont fait connaître en partageant des connaissances utiles pour les développeurs Java et JVM. Java a une énorme communauté open source, incluant le JDK lui-même via OpenJDK. La communauté Java valorise l’apprentissage, l’enseignement et l’amélioration constante, se soucie des standards et des bonnes pratiques et les applique de façon pragmatique.

L’aspect humain

Lorsque j’ai demandé aux développeurs ce qu’ils appréciaient le plus à propos de Java, beaucoup d’entre eux ont spécifiquement cité des personnes du monde de Java qui les ont influencés. Il s’agit de collègues, de professeurs, mais aussi de personnes telles que Brian Goetz, Angie Jones, Georges Saab, Mala Gupta, Venkat Subramaniam. Certaines personnes ont même parlé de moi. Personnellement, j’ai initialement rejoint le monde de Java car j’ai appris ce langage à l’université et qu’il donnait accès de nombreuses opportunités d’emploi, mais ce sont les personnes qui en font partie, et l’aide et le soutien qu’elles m’ont apportés, qui m’ont fait rester.

Javadoc et documentation

Java fait de la documentation de l’API un élément essentiel du langage via Javadoc. Les trois différents types de commentaires (Javadoc, bloc et ligne) montrent clairement quel type de commentaire un développeur laisse. Javadoc encourage les développeurs à laisser une documentation utile aux autres développeurs qui appellent une méthode, ou utilisent une classe ou un package. Si un développeur ne peut pas trouver d’informations détaillées sur une bibliothèque ou un fragment de code, il existe généralement un Javadoc qui peut le mettre sur la bonne voie.

De plus, l’écosystème Java semble généralement attendre (et fournir) une documentation de bonne qualité pour les développeurs. Les participants à des projets open source sont encouragés à répondre aux demandes de commentaires Javadoc ou de documentation, et les développeurs du monde entier posent des questions et y répondent sur StackOverflow, ou rédigent des articles sur des solutions à des problèmes spécifiques.

Open source

Non seulement la communauté Java a adopté l’open source très tôt, mais maintenant le JDK lui-même est également open source via OpenJDK. L’open source facilite la participation et la collaboration entre les différents distributeurs et avec les particuliers. Il est également passionnant de pouvoir observer le code de Java lui-même. Le code open source offre une formidable opportunité aux développeurs de tirer profit de l’expérience de personnes ayant travaillé dur pour étudier et résoudre des problèmes complexes.

Gratuité

La plateforme Java et de nombreux outils parmi les plus populaires utilisés dans l’écosystème Java sont accessibles gratuitement aux développeurs comme aux organisations. Même après avoir modifié son modèle de licences et son support avec Java 11, Oracle (et de nombreux autres distributeurs) a continué à fournir un moyen d’utiliser le langage gratuitement en production. Les projets open source, outils de build et EDI mentionnés dans cet article sont gratuits ou disposent aussi d’une version gratuite pour ceux d’entre eux qui sont payants. Cela rend Java particulièrement attrayant pour les développeurs qui se lancent et pour les organisations qui ne disposent pas d’un gros budget.

Langage orienté objet

La programmation orientée objet n’est bien sûr pas la seule pratique valable et chaque paradigme a ses avantages et ses inconvénients. Java a été conçu comme un langage OO dès le début, et de nombreux exemples de modèles de conception et d’autres bonnes pratiques de codage OO sont mis en évidence dans Java. Si vous recherchez un langage de programmation orienté objet, Java devrait figurer en haut de votre liste des langages à essayer.

Évolution et adaptation

Java était et reste un langage de programmation orienté objet. Mais il a également adopté avec succès certains concepts de la programmation fonctionnelle (comme les expressions lambda et les structures de données immuables) et les a bien adaptés au paradigme OO. L’inférence de type (par exemple var) nous permet de conserver les avantages d’un langage typé statiquement, mais avec moins d’artifices. L’informatique est une discipline encore relativement jeune, mais à mesure que nous apprenons des choses, nous pouvons les appliquer à nos outils existants. Java (le langage mais aussi l’écosystème) évolue constamment en fonction des nouvelles tendances et bonnes pratiques, et aussi en observant le fonctionnement des choses dans le monde réel.

Java bénéficie également de la syntaxe et des idées d’autres langages de la JVM, ce qui permet de voir ce qui fonctionne ou non dans un univers Java classique. Même les processus et outils que Java utilise pour continuer d’évoluer, comme le JCP et OpenJDK, s’adaptent pour rester en phase avec cette évolution constante. Cette évolution et cette adaptation font partie de l’équilibre que Java doit trouver.

Focus sur la lisibilité

Le code Java est souvent lisible, même pour les programmeurs n’utilisant pas ce lanagage. Le langage tend à être plus expressif plutôt que trop concis, ce qui facilite la compréhension lors de la lecture. Les développeurs du langage n’ont pas mis en place de fonctionnalités telles que la surcharge d’opérateur, car ils estiment qu’il est important de ne pas être surpris par un comportement personnalisé inattendu. Il y a une tendance à éviter la “magie”, dans le langage comme dans les frameworks. Bien que certains frameworks utilisent des concepts tels que Convention plutôt que configuration pour faire des choses sans qu’un développeur ait à s’en occuper impérativement, on s’éloigne (par exemple) de la pratique de l’AOP avec des annotations, pour se tourner davantage vers l’utilisation d’annotations pour la documentation et les contrôles d’analyse statique. La communauté et l’écosystème ont tendance à aimer les standards et les bonnes pratiques, de sorte que le code Java suit souvent des règles similaires sur des projets très différents.

Fonctionnalités du langage

Nous avons abordé 23 choses que nous aimons à propos de Java mais n’avons pas mentionné une seule fonctionnalité ! En effet, nous limiter à seulement 25 fonctionnalités nous semblait extrêmement difficile et la plupart des choses que nous aimons dans Java ne sont pas forcément liées à la syntaxe ou aux fonctionnalités. Nous souhaitons tout de même citer quelques-unes des fonctionnalités préférées des développeurs :

  • API Collections : cela fait longtemps qu’elle est avec nous et elle nous a été très utile !
  • Méthodes pratiques de fabrication pour les collections : facilite grandement la création de collections non modifiables.
  • API Streams : un très bel ajout à l’API Collections, qui est en évolue constamment depuis Java 8. Les flux parallèles ont ajouté une nouvelle façon d’utiliser les équipements modernes.
  • Expressions lambda : très pratiques et utiles, particulièrement avec l’API Streams.
  • Optional : une belle façon d’exprimer qu’une méthode pourrait ne pas vous donner quelque chose (et nous évite d’avoir à nous protéger contre les NullPointerException !). Et nous sommes toujours ravis de découvrir chaque amélioration apportée à Optional depuis Java 8.
  • java.time : la dernière API pour travailler avec les dates et les heures est une amélioration bienvenue.
  • Exceptions vérifiées : les avis sont partagés entre les exceptions vérifiées et les exceptions d’exécution, mais les exceptions vérifiées sont au moins là pour les personnes qui souhaitent les utiliser.
  • Annotations : les annotations sont (entre autres choses) comme de la documentation que le compilateur peut vérifier ou des notes pour un framework afin de réaliser un gros travail.
  • JShell : on peut maintenant s’amuser avec Java dans un REPL
  • var : l’inférence de type permet de “réduire le bruit” du code si elle est utilisée de manière judicieuse.
  • Modificateurs d’accès et modularité : Java permet (et encore plus depuis Java 9) d’être explicite sur le code qui peut accéder à tel ou tel champ, méthode, classe et module.
  • Expressions Switch : maintenant si on utilise Switch, c’est beaucoup moins moche !
  • NullPointerExceptions utiles : qui n’aime pas une bonne NullPointerException ? Désormais, les exceptions donnent aux développeurs des informations beaucoup plus utiles sur ce qui était null.
  • Fonctionnalités en prévisualisation : on adore les fonctionnalités en prévisualisation ! Nous sommes très enthousiastes concernant les enregistrements, la reconnaissance de schémas pour instanceof et les blocs de texte.

L’avenir

De nouvelles fonctionnalités sont disponibles tous les six mois et chaque nouvelle version LTS offre généralement de meilleures performances à toute application qui l’utilise. Java 15, prévu pour septembre 2020, devrait proposer : les classes cachées, les blocs de texte, la mise à jour des previews pour les Records, le filtrage par motif pour instanceof, ainsi qu’une preview de classes scellées.

Plus tard, nous espérons également voir, entre autres : une utilisation simple et légère avec Project Loom, les types inline avec Project Valhalla, plus de modifications du langage avec Project Amber, telles que les restes de lambda, que Project Panama permette aux programmeurs d’accéder plus facilement aux API étrangères, des temps de démarrage plus courts grâce à Project Leydon, de nouvelles améliorations pour les différents garbage collectors.

L’avenir est prometteur pour Java !

Auteur de l’article original en anglais : Trisha Gee

Posted in Event, News | Tagged | Leave a comment

Kotlin Heroes #4 : la prochaine édition de notre concours de programmation est pour bientôt !

Les inscriptions pour Kotlin Heroes #4 sont ouvertes ! La prochaine édition du concours aura lieu Vendredi 29 mai, à 14h35 UTC.

Pour vous inscrire directement, rendez-vous sur la page d’inscription du site web de Codeforces. Si vous ne connaissez pas encore Kotlin Heroes et souhaitez en savoir plus avant de vous inscrire, lisez ce qui suit.

2000х1000-blog

Qu’est-ce que Kotlin Heroes et pourquoi y participer ?

Kotlin Heroes est un projet collaboratif de JetBrains et Codeforces. JetBrains est le créateur du langage de programmation Kotlin et Codeforces et la plus populaire des plateformes de concours de programmation.

L’objectif des participants à Kotlin Heroes est de résoudre un ensemble de problèmes dans une durée limitée.

Informations et règles du concours :

  • Les précédents concours ont réuni en moyenne 700 participants.
  • Kotlin Heroes #4 durera 2 heures 30.
  • Les participants se verront présenter successivement 7 à 10 problèmes.
  • Le niveau de complexité des problèmes augmente progressivement.
  • Les participants sont uniquement autorisés à utiliser Kotlin pour résoudre les problèmes.
  • Les participants sont classés en fonction du nombre de problèmes correctement résolus.

Des prix à gagner !
Les trois premiers du classement recevront des prix d’une valeur de 512 $, 256 $ et 128 $ respectivement. Les 50 meilleurs candidats recevront un t-shirt Kotlin Heroes. Enfin, chaque concurrent parvenant à résoudre au moins un problème se qualifie pour le tirage au sort permettant de remporter un t-shirt Kotlin Heroes.

green_2_tee

Quel est l’intérêt de Kotlin Heroes pour les programmeurs fans de concours ?

  • En apprendre davantage sur les capacités et fonctionnalités du langage Kotlin.
  • S’entraîner pour la prochaine édition du concours ICPC.
  • Se familiariser avec un nouveau langage performant qui peut vous aider à gagner d’autres concours.

Qui peut participer et comment s’y préparer ?

La participation à Kotlin Heroes est ouverte à tous, il n’est pas requis d’avoir de l’expérience ou d’être un programmeur professionnel. Pour participer, il suffit de s’inscrire au préalable sur la plateforme Codeforces.

Inscrivez-vous à Kotlin Heroes !

Pour les débutants. Peu importe que vous débutiez avec Kotlin ou avec la programmation en général. Kotlin Heroes est un événement qui permet de pratiquer et de se familiariser avec le langage.

Pour les ingénieurs expérimentés. Kotlin Heroes est l’opportunité de relever un défi dans un environnement compétitif, de tester votre compréhension des algorithmes et des structures de données et d’accroître vos connaissances.

Pour les programmeurs habitués des concours : ce concours peut être l’occasion d’essayer un nouveau langage et de vous perfectionner en vue d’autres concours de programmation.

Pour vous préparer, vous pouvez consulter notre tutoriel sur les concours de programmation en Kotlin. Codeforces propose également un tour d’entraînement, qui commencera 9 jours avant le concours. Toutes les solutions sont ouvertes, ce qui signifie que vous pouvez consulter une solution même si vous n’avez pas encore résolu le problème. Si vous cherchez d’autres moyens de vous perfectionner dans la résolution de problèmes en Kotlin, nous vous invitons à consulter les éditions précédentes du concours.

Auteur de l’article original en anglais : Alina Dolgikh

Posted in Event, News | Tagged , , | Leave a comment

Premier aperçu de Kotlin 1.4-M2 : améliorations de la bibliothèque standard

Nous continuons de travailler sur Kotlin 1.1.4 et la prochaine preview 1.4-M2 est pour bientôt. En attendant la preview, nous sommes prêts à vous dévoiler quelques unes de ses principales améliorations.

Dans cet article, nous vous présentons les évolutions de la bibliothèque standard :

Bien que Kotlin 1.4-M2 ne soit pas encore sorti, nous avons déployé sa première version sur Kotlin playground afin que vous puissiez essayer tout ce que vous trouverez dans cet article. Les exemples de code présentés dans cet article fonctionnent également avec la nouvelle version.

Si vous avez hâte d’essayer la version 1.4-M2 à venir, inscrivez-vous à la newsletter du blog Kotlin pour être notifié de sa disponibilité.

 

Extension de la bibliothèque commune

Vous pouvez utiliser la bibliothèque standard dans le code “commun”, c’est-à-dire le code partagé entre différentes plateformes, qu’il s’agisse d’Android et iOS ou de JVM et JS. Nous étendons progressivement la bibliothèque commune et y ajoutons des fonctionnalités.

La précédente implémentation de appendln dans Kotlin/JVM a apporté un séparateur de ligne dépendant du système (\n sur les systèmes UNIX et \r\n sur Windows). Cependant, nous pensons qu’il est important de garantir le même comportement indépendamment du système d’exploitation et de la plateforme sous-jacente si nous parlons de code commun. C’est pourquoi nous avons abandonné la fonction appendln au profit de la nouvelle fonction appendLine, qui termine toujours les lignes avec un caractère unique \n :

Vous pouvez toujours utiliser System.lineSeparator() dans la JVM lorsque vous avez besoin d’un séparateur spécifique à la plateforme.

Les autres fonctions qui peuvent maintenant être utilisées dans le code commun vous permettent d’utiliser la représentation de chaîne de la trace de pile indiquée. L’extension Throwable.stackTraceToString() renvoie la description détaillée de ce throwable avec sa trace de pile, et Throwable.printStackTrace() imprime cette description sur la sortie d’erreur standard.

Dans le code commun, vous pouvez également utiliser la fonction Throwable.addSuppressed(), qui vous permet de spécifier les exceptions qui ont été supprimées afin de délivrer l’exception, et la propriété Throwable.suppressedExceptions, qui renvoie une liste de toutes les exceptions supprimées.

Nouvelles fonctions de tableau

Nous avons ajouté de nouvelles fonctions d’extension pour les tableaux afin de vous proposer une expérience plus harmonieuse lorsque vous travaillez avec différents types de conteneurs  :

  • shuffle() – place les éléments du tableau dans un ordre aléatoire.
  • onEach() – effectue l’action indiquée sur chaque élément du tableau et retourne le tableau lui-même.

Ces fonctions devraient être familières à ceux qui utilisent les listes ; elles fonctionnent de la même manière pour les tableaux.

Nous avons également ajouté de nouvelles fonctions pour le tri des sous-plages de tableaux. Auparavant, la fonction sort() avec les paramètres fromIndex et toIndex, était limitée à la JVM. Cette fonction est désormais commune, et non plus limitée à la JVM, de même que deux nouvelles fonctions connexes, qui sont des versions sous-plages de reverse() et sortDescending(). Chacune d’entre elles prend deux index et réordonne les éléments entre eux (en incluant fromIndex mais en excluant toIndex), de la manière indiquée par leur nom :

  • reverse() pour les sous-plages de tableau inverse l’ordre des éléments dans la sous-plage.
  • sortDescending() pour les sous-plages de tableau trie les éléments de la sous-plage par ordre décroissant.

Nouvelles fonctions de l’API des collections

Dans la version 1.4-M2, nous continuons à développer l’API des collections dans la bibliothèque standard pour couvrir davantage de cas d’utilisation réels :

  • Une nouvelle fonction setOfNotNull() crée un ensemble composé de tous les éléments non null parmi les arguments fournis.

  • shuffled() est maintenant disponible pour les séquences.

  • onEachIndexed() et reduceIndexedOrNull() ont été respectivement ajoutés comme équivalents de onEach() et reduceOrNull(). Comme vous le savez peut-être déjà, Indexed dans le nom d’une fonction de traitement de collection signifie que l’opération appliquée a l’index d’élément comme paramètre.

  • runningFold() et runningReduce() ont été ajoutés comme synonymes de scan() et scanReduce(). Ces noms sont plus cohérents avec les fonctions connexes fold() et reduce(). À l’avenir, scan() sera disponible avec runningFold() car c’est un nom couramment utilisé pour cette opération. Cependant, la fonction expérimentale scanReduce() sera bientôt abandonnée et supprimée.

Amélioration de l’API existante

Kotlin 1.4 étant une version majeure, nous pouvons apporter de nouvelles fonctionnalités au langage et de nouvelles fonctions ou interfaces à la bibliothèque standard. Nous n’ajoutons de nouvelles déclarations expérimentales que dans les versions incrémentielles (comme la version 1.3.70). Si vous écrivez du code avec Kotlin 1.3.70 et que vous n’utilisez pas de déclarations expérimentales, votre code sera très bien compilé pour vos collaborateurs utilisant Kotlin 1.3.40.

Les versions majeures n’ont pas besoin d’obéir aux mêmes règles strictes que les versions mineures, ce qui signifie que si vous utilisez une nouvelle fonctionnalité ou API, le compilateur Kotlin de la version 1.3 ne peut pas compiler le code écrit en Kotlin 1.4. Cela nous permet d’apporter des modifications à l’API afin de l’améliorer. Nous veillons à la rétrocompatibilité afin que le code écrit pour l’ancienne version continue de se compiler et de fonctionner comme auparavant.

Dans Kotlin 1.4, nous avons assoupli plusieurs fonctions pour accepter des valeurs null :

Kotlin 1.3 ne compilera pas ce code car il exige que le récepteur de String.toBoolean() soit non-nullable. Kotlin 1.4 change le recepteur en une chaîne nullable : String?.toBoolean(). Néanmoins, tout le code que vous avez écrit auparavant continue de compiler et de fonctionner avec Kotlin 1.4.

La même logique s’applique au récepteur Array des fonctions contentEquals, contentHashCode et contentToString : il est maintenant nullable. De même, String.format() permet désormais d’utiliser null comme argument locale, auquel cas aucune localisation n’est appliquée.

Les constantes suivantes définies dans Double et Float sont désormais des constantes “réelles” :

Elles sont maintenant définies comme des variables const , vous pouvez donc les utiliser comme arguments d’annotation.

SIZE_BITS et SIZE_BYTES sont de nouvelles constantes dans Double et Float ; elles contiennent le nombre de bits et d’octets utilisés pour représenter une instance du type sous forme binaire.

Notez que nous avons également modifié les valeurs Float.MAX_VALUE et Float.MIN_VALUE dans Kotlin/JS. Auparavant, elles étaient égales au Number.MAX/MIN_VALUE de JavaScript, ou de manière équivalente, à Double.MAX/MIN_VALUE, car Float est sensiblement équivalent à Double dans Kotlin/JS. Désormais, ces constantes Float sont les mêmes pour toutes les plateformes.

maxOf() et minOf() avec vararg

Les fonctions maxOf() et minOf() de la bibliothèque standard trouvent la plus grande et la plus petite de deux valeurs. À partir de la version 1.4-M1, maxOf() et minOf() peuvent accepter un nombre variable d’arguments (vararg), ce qui vous permet de les utiliser sur n’importe quel ensemble de nombres ou autres éléments comparables.

Améliorations de la délégation de propriété

Dans Kotlin, les propriétés déléguées fonctionnent via des conventions, et non des interfaces : le type que vous voulez utiliser en tant que délégué doit définir une fonction d’opérateur plutôt que d’implémenter l’interface requise. Cela donne une certaine flexibilité (car nous ne sommes pas liés par des interfaces spécifiques), mais en pratique, il est utile d’utiliser des interfaces dans de nombreux cas.

Dans Kotlin 1.4, nous avons amélioré le fonctionnement de ces interfaces complémentaires en introduisant une nouvelle interface PropertyDelegateProvider et ReadWriteProperty hérite désormais de ReadOnlyProperty. Poursuivez votre lecture pour en savoir plus.

Expression Delegate

Les interfaces ReadWriteProperty et ReadOnlyProperty sont pratiques pour définir les délégués de propriété car votre classe personnalisée ou votre objet anonyme peut les implémenter :

À partir de la version 1.4, ReadWriteProperty hérite de ReadOnlyProperty. Cela vous donne plus de flexibilité pour travailler avec les expressions delegate. Dans notre exemple, vous pouvez maintenant passer l’appel myDelegate() chaque fois qu’un ReadOnlyProperty est attendu.

Nous voulons souligner ici que “read-only” n’équivaut pas à “non modifiable” dans Kotlin, tout comme une liste en lecture seule n’est pas une liste non modifiable. “Read-only” signifie que “cette interface fournit uniquement un accès en lecture seule à l’objet en question”.

Mise à disposition d’un delegate

En utilisant le mécanisme de mise à disposition d’un delegate, vous pouvez étendre la logique de création d’un objet “délégué”, c’est-à-dire l’objet auquel l’implémentation de la propriété est déléguée. Vous pouvez trouver les détails de son fonctionnement dans la documentation. Dans la version 1.4, pour rendre ce mécanisme un peu plus pratique, nous avons ajouté une nouvelle interface PropertyDelegateProvider. Vous pouvez l’utiliser lorsque vous ne souhaitez pas créer une classe supplémentaire et que vous préférez utiliser un objet anonyme, comme dans l’exemple ci-dessus de myDelegate().

Délégation à une autre propriété

À partir de la version 1.4, une propriété peut déléguer ses getter et setter directement à une autre propriété. Cela peut par exemple être utile lorsque vous souhaitez renommer une propriété de manière rétrocompatible : vous introduisez une nouvelle propriété, vous annotez une ancienne avec l’annotation @Deprecated et vous déléguez son implémentation.

L’optimisation pour les propriétés déléguées compilées décrite précédemment fonctionne dans ce cas. Comme l’implémentation de l’opérateur de délégation n’utilise pas les informations sur la propriété déléguée (oldName), il n’est pas nécessaire que le compilateur génère l’instance KProperty avec ces informations. À l’avenir, il sera également possible de ne pas générer d’instance KMutableProperty supplémentaire pour le délégué (newName).

Comment essayer

Toutes ses modifications seront incluses dans la preview de Kotlin 1.4-M2, mais vous pouvez déjà les essayer en ligne surplay.kotl.in, en sélectionnant la version version 1.4-M2 dans les paramètres.

Notes de pré-version

Veuillez noter que les garanties de rétrocompatibilité ne s’appliquent pas aux versions préliminaires. Les fonctionnalités et l’API peuvent être amenées à changer dans les versions ultérieures en fonction de vos retours.

Faites-nous part de vos commentaires

Nous vous remercions pour tous les rapports de bugs que vous partagez dans notre outil de suivi. Nous ferons de notre mieux pour traiter et solutionner tous les problèmes importants d’ici la sortie de la version finale.

Nous vous invitons à rejoindre le canal \#eap sur le Slack Kotlin (demandez une invitation ici) pour y poser vos questions, participer aux discussions et recevoir en avant-première les notifications sur les nouvelles versions.

Faison évoluer Kotlin ensemble !

Auteur de l’article original en anglais : Pavel Semyonov

Posted in Features, News | Tagged , | Leave a comment

YouTrack est maintenant gratuit pour les équipes de 10 personnes ! Découvrez toutes les bonnes nouvelles concernant nos nouveaux tarifs

YouTrack Now Free For Teams of 10

Afin d’améliorer la tarification des abonnements par nombre d’utilisateurs de YouTrack InCloud, nous y avons apporté quelques modifications, qui entrent en vigueur aujourd’hui.

  • YouTrack InCloud est désormais gratuit pour toutes les équipes de 10 utilisateurs ou moins.
  • Pour les équipes de plus de 10 utilisateurs, nous baissons le tarif mensuel de départ par utilisateur, qui passe de de 5 $ à 4,40 $. La remise augmente avec l’ajout d’utilisateurs. De plus, avec l’abonnement annuel, vous économisez l’équivalent du coût de 2 mois d’abonnement (16%) sur l’année.
  • L’espace disque est passé de 1 Go à 3 Go par utilisateur.

Des changements s’appliqueront également aux forfaits Standalone à compter du 1er août 2020. Les clients Standalone actuels sont invités à utiliser une offre spéciale pour renouveler leur abonnement aux tarifs actuels pour la durée de leur choix.

Nous travaillons activement à l’ajout de fonctionnalités, conformément à notre feuille de route, et nous continuerons à inclure toutes les fonctionnalités sans frais supplémentaires dans les abonnements de licences actives et les forfaits gratuits.

Pour prendre connaissance des informations détaillées sur les changements apportés à la tarification, veuillez lire ce qui suit.

YouTrack InCloud

YouTrack est désormais gratuit pour les équipes de 10 utilisateurs maximum. Le forfait gratuit de YouTrack InCloud couvre désormais jusqu’à 10 utilisateurs, avec un stockage disponible allant jusqu’à 30 Go. Le forfait gratuit offre toutes les fonctionnalités de YouTrack. Cela comprend notamment les projets privés, qui vous permettent de contrôler qui a accès à vos tickets et projets. La seule différence est le logo personnalisé, qui n’est activé que pour les forfaits payants.

Les clients actuels qui ont des forfaits gratuits par nombre d’utilisateurs sont inclus dans cette nouvelle offre. Tous les clients utilisant le forfait gratuit YouTrack InCloud pour 3 utilisateurs maximum bénéficient automatiquement du nouveau forfait gratuit pour 10 utilisateurs maximum. Tous les clients ayant des abonnements payants pour 10 utilisateurs ou moins ont bénéficient également de ce nouveau forfait gratuit et ne paieront donc plus pour leurs 10 utilisateurs.

Pour les équipes de plus de 10 utilisateurs, le prix mensuel de départ par utilisateur a été réduit et passe de 5 $ à 4,40 $ avec l’abonnement mensuel InCloud. De plus, si vous optez pour l’abonnement annuel, vous économisez l’équivalent du coût de 2 mois d’abonnement (16%) sur l’année.

Le coût total est plus facile à calculer. Les différents niveaux de prix des forfaits par utilisateur sont supprimés. Le tarif par utilisateur dépend entièrement du nombre d’utilisateurs dans votre pack d’abonnement. Le prix mensuel est calculé en multipliant le tarif par utilisateur par le nombre d’utilisateurs. À mesure que le nombre d’utilisateurs de votre pack d’abonnement augmente, le tarif par utilisateur baisse et le coût total de votre abonnement est recalculé pour en tenir compte.

Par exemple, supposons que vous souscriviez un forfait d’abonnement mensuel avec 99 utilisateurs. Avec ces 99 utilisateurs, le tarif mensuel est de 4,40 $ par utilisateur, ce qui donne un coût mensuel total de 435,60 $. Vous souhaitez ajouter un utilisateur supplémentaire à votre abonnement. Lorsque vous ajoutez ce centième utilisateur, le tarif par utilisateur passe de 4,40 $ à 4,39 $ et le coût mensuel total sera alors de 439,00 $ (4.39 $ multipliés par 100).

L’ajout de nouveaux utilisateurs à votre abonnement mensuel ou annuel s’accompagne également d’une réduction de tarif si le nombre total d’utilisateurs de cet abonnement atteint le seuil à partir duquel le prix par utilisateur diminue. Supposons que vous avez initialement 50 utilisateurs dans votre abonnement, ce qui correspond à un tarif mensuel de 4,40 $ par utilisateur. Puis, au cours d’un mois donné, vous avez besoin d’ajouter plus d’utilisateurs, jusqu’à 100. Avec un abonnement mensuel, le coût total devient 4,39 $ x 100 utilisateurs, soit 439,00 $. Avec un abonnement annuel pour 50 utilisateurs, tous les utilisateurs supplémentaires ajoutés ce mois-là se verront appliquer le tarif réduit, soit 4,39 $ x 50 utilisateurs, le coût sera donc de 219,50 $.

Estimez vos coûts grâce à notre calculatrice.

L’espace disque est passé de 1 Go à 3 Go par utilisateur. Chaque utilisateur de votre forfait gratuit ou d’un abonnement par utilisateur ajoute désormais 3 Go d’espace disque à votre instance YouTrack. Le forfait gratuit de 10 utilisateurs maximum offre 30 Go d’espace disque et 3 Go supplémentaires sont ajoutés pour chaque utilisateur de votre abonnement payant. Si vous utilisez davantage de stockage que de comptes d’utilisateurs, il vous sera demandé d’ajouter d’autres utilisateurs à votre abonnement.

Ces changements ont pris effet le 14 mai 2020. Une fois que votre forfait a basculé vers le nouveau forfait gratuit jusqu’à 10 utilisateurs, il n’est plus nécessaire de régler les commandes impayées pour 10 utilisateurs ou moins par votre abonnement mensuel ou annuel. L’espace de stockage est également ajouté automatiquement à votre instance.

Clients avec des abonnements en cours comprenant des packs d’utilisateurs : si vous avez actuellement un pack d’abonnement à l’ancien YouTrack InCloud, avec des paiements par pack d’utilisateurs, vous pourrez conserver votre forfait aussi longtemps que vous le souhaiterez. Vous n’êtes évidemment pas obligé de passer au modèle de tarification par utilisateur. Cela dit, nous vous invitons à le faire et nous vous offrons 3 mois gratuits de plus si vous souscrivez à l’option de facturation annuelle !

YouTrack Standalone

YouTrack Standalone reste gratuit jusqu’à 10 utilisateurs. Et pour les équipes plus importantes, des packs de 25, 50, 100, 500 et 2 000 utilisateurs sont désormais disponibles.

Nous vous présenterons les nouveaux tarifs pour les nouveaux clients Standalone le 1er août 2020  :

  • D’autres packs seront disponibles pour 15, 25, 50, 100, 250, 500, 750, 1 000, 2 000 et 10 000 utilisateurs. Le prix d’une nouvelle licence Standalone comprenant une mise à niveau et un abonnement au support d’un an sera équivalent ou légèrement inférieur au coût de l’abonnement annuel dans le modèle InCloud pour le même nombre d’utilisateurs.
  • Le renouvellement de l’abonnement pour chaque nouvelle année sera proposé à 50% du nouveau prix de la licence.

Voici les prochains tarifs d’abonnement Standalone en USD :

Utilisateurs Nouvelle licence, en $ Renouvellement d’abonnement, en $
15 600 300
25 1 100 550
50 2 000 1 000
100 4 000 2 000
250 9 000 4 500
500 12 000 6 000
750 14 000 7 000
1 000 16 000 8 000
2 000 20 000 10 000

Les tarifs pour entreprises et organisations ayant plus de 2 000 utilisateurs sont communiqués sur demande. Veuillez contacter notre équipe commerciale.

Nous considérons que nos clients doivent pouvoir garder le forfait auquel ils ont souscrit.

Les clients existants qui disposeront d’un abonnement Standalone actif au 1er août 2020 auront la possibilité de renouveler leur abonnement aux conditions de leur forfait actuel pour la durée de leur choix.

Offre spéciale pour tous les clients ayant déjà acheté un abonnement Standalone et ne l’ayant pas renouvelé à sa date d’échéance : vous êtes invité.e.s à renouveler votre abonnement avant le 1er août 2020, aux conditions suivantes :

  • Si votre licence a expiré il y a plus d’un an, votre nouvel abonnement vous est proposé avec 15% de réduction sur le nouveau prix de la licence. L’abonnement renouvelé sera prolongé d’un an à compter de la date d’achat.
  • Si votre licence a expiré il y a moins d’un an, votre nouvel abonnement vous est proposé avec 30% de réduction sur le nouveau prix de la licence. L’abonnement renouvelé sera prolongé d’un an à compter de la date d’expiration de la précédente licence.

Si votre abonnement est actif pour le 1er août 2020, vous pourrez le renouveler aux conditions tarifaires actuelles aussi longtemps que vous le souhaiterez.

Après le 1er août 2020, les nouveaux abonnements et renouvellements ayant lieu après la date d’échéance se verront appliquer les nouveaux modèles tarifaires.

En savoir plus

N’hésitez pas à contacter notre équipe commerciale pour toute question concernant vos abonnements et à consulter les Questions Fréquentes InCloud et Standalone pour en savoir plus.

L’Équipe YouTrack

Auteur de l’article original en anglais : Elena Pishkova

Posted in Announcements, News | Tagged , , , , , , , | Leave a comment

La Public Preview de Rider for Unreal Engine est lancée !

Nous avons le plaisir de vous annoncer le lancement de la Public Preview de Rider for Unreal Engine ! Il s’agit d’une nouvelle étape importante pour faire de Rider un EDI autonome, tout-en-un et multiplateforme pour le développement de jeux vidéo !
Rider for Unreal Engine Preview

Avant de vous présenter l’outil et de vous expliquer pourquoi Rider est le bon choix pour développer avec Unreal Engine, revenons sur la famille d’outils C* dont nous disposons.

Voici l’offre d’outils pour C++ et le développement de jeux que nous proposons actuellement :

  1. CLion : un EDI C/C++ multiplateforme qui est utilisé pour le développement natif et cible le secteur financier, les projets d’IA et le développement embarqué. Il est particulièrement adapté pour les configurations à distance ou le débogage sur puces ou Linux distants. Il y a eu une solution de contournement basée sur CMake afin de l’utiliser pour Unreal Engine, mais nous ne l’avons jamais considérée comme une solution complète.
  2. ReSharper C++ : une extension Visual Studio pour développeurs C++. Il cible tous les projets C++ créés dans Visual Studio et en fait un environnement beaucoup plus intelligent et productif. Visual Studio lui-même (souvent avec ReSharper C++ ou Visual Assist) est l’outil le plus utilisé pour les projets Unreal Engine (ce que nous avons pu vérifier dans le cadre de l’enquête que nous avons réalisée lors de la Game Development Conference). C’est pourquoi ReSharper C++ a été le premier outils JetBrains à proposer une prise en charge spécifique d’Unreal Engine.
  3. Rider : un EDI C# multiplateforme rapide et puissant, qui a rapidement été reconnu comme un excellent choix pour Unity. C’est en parlant avec nos utilisateurs faisant du développement de jeux que nous avons réalisé que de nombreux studios de jeux développent à la fois des jeux Unity et Unreal Engine et qu’ils apprécieraient probablement de n’utiliser qu’un seul outil pour tous leurs projets.

Cela nous a fait réfléchir… Rider est un EDI multiplateforme basé sur la plateforme IntelliJ, avec un moteur de langage emprunté à ReSharper. Si on ajoutait le moteur de langage de ReSharper C++ à Rider, qu’on implémentait un débogueur et qu’on optimisait le tout pour Unreal Engine, ne serait-ce pas une solution parfaite pour le développement de jeux UE4 ? Nous avons pensé que cela serait le cas et avons donc décidé de le faire !

La Public Preview de Rider for Unreal Engine est une édition spéciale de Rider disponible en avant-première, actuellement uniquement pour Windows. Si vous êtes prêt à vous lancer et à l’essayer, cliquez sur le bouton et complétez le formulaire :

PARTICIPER À L’EARLY PREVIEW

Vous trouverez ci-dessous plus d’informations sur les fonctionnalités et des réponses aux principales questions que vous pouvez vous poser.

Rider for Unreal Engine : ce qu’il peut vous apporter

Rider for Unreal Engine regroupe toutes les fonctionnalités C++ et Unreal Engine provenant de ReSharper C++. En outre, il connaît les Blueprints, le HLSL, comprend les fichiers de build et les fichiers cibles C#. Dernier point mais non des moindres : il est plutôt rapide.

Notre cher Matt Ellis vous en fait une présentation détaillé dans cette vidéo :

Comme le montre la vidéo, bien que Rider for Unreal Engine ne soit qu’au stade de Public Preview, il offre déjà de nombreux avantages aux développeurs de jeux Unreal Engine.

Un EDI complet avec prise en charge native de C++

ReSharper C++ implémente un analyseur C++ complet possédant une connaissance approfondie du notoirement complexe langage C++. Ses nombreuses fonctionnalités sont désormais disponibles dans Rider for Unreal Engine.
Alt-Enter menu
Voici ce qu’elles vous permettent de faire :

  • Utiliser les refactorisations Rename et Change Signature avec la certitude que toutes les utilisations seront correctement mises à jour.
  • Saisir automatiquement des déclarations qui ne sont pas encore disponibles dans la portée actuelle et obtenir automatiquement l’ajout des #include manquants.
  • Sélectionner les blocs de code sémantiquement corrects et les réorganiser sans avoir à faire de copier-coller.
  • Consulter les résultats de plus de 250 inspections de code réalisées dans votre code au moment même où vous saisissez. Cela vous évitera de nombreuses erreurs critiques et des heures passées en mode panique.
  • Et utiliser de nombreuses autres fonctionnalités innovantes, dont vous pouvez trouver la description dans la documentation en ligne de ReSharper C++.

Pour plus de détails, regardez cette partie de la vidéo de Matt consacrée aux fonctionnalités C++ de base.

Si vous avez l’habitude de travailler avec Visual Studio, vous vous demandez peut-être quelles sont les autres fonctionnalités essentielles qu’ont peut attendre d’un bon EDI. Rider est un EDI complet basé sur la plateforme IntelliJ, ce qui signifie qu’il inclut une intégration VCS, un outil de base de données, une prise en charge étendue des plugins, et des plugins largement utilisées pour émuler Vim et permettre l’intégration avec différents services Cloud.

Les performances comme priorité

Construire un EDI de toutes pièces, sans aucune limitation imposée par Visual Studio (comme c’est le cas avec ReSharper), implique que nous n’avons pas de limites en termes de performances. Nous avons donc tout fait pour aller le plus loin possible !

L’indexation initiale du projet est conçue pour s’effectuer rapidement, avec des mises à jour incrémentales au fur et à mesure que vous travaillez sur votre jeu. Nous comprenons que vous souhaitiez commencer avec vos propres fichiers de jeu (et non le code du moteur de jeu) dans de nombreux cas. Aussi, nous les indexons et activons toutes les fonctionnalités de l’EDI d’abord, puis nous poursuivons avec l’indexation du code source d’Unreal Engine en arrière-plan.

Si vous constatez des décalages lors de votre utilisation de l’édition Preview, faites-le nous savoir !

Connaissance des Blueprints

Chez JetBrains, le code est notre passion, il est donc essentiel pour nous de vous fournir une assistance intelligente au codage. Bien que les Blueprints (BP) offrent une expérience légèrement différente de ce que nous avons l’habitude de vous proposer avec nos outils, les fichiers Blueprint (BP) répondent à nos objectifs. Ces fichiers sont écrits sous forme binaire et sont généralement édités visuellement. Néanmoins, ils contiennent toute une série d’informations utiles pour les développeurs travaillant sur a partie C++ d’un jeu, nous avons donc décidé que Rider devait en avoir connaissance :

  • Il peut y avoir des classes BP dérivées, ce qui est intéressant à voir lorsque vous invoquez Find Usages sur une classe C++ ou lorsque vous lisez simplement du code C++ dans l’éditeur.
  • Il existe des valeurs de propriétés remplacées et il est utile de voir les modifications qui leur ont été apportées récemment dans Unreal Editor.
  • Vous voudrez peut-être naviguer vers des objets BP à partir de votre code C++.

Rider lit les fichiers BP de votre projet et d’Unreal Editor, ainsi que les plugins des deux, et extrait toutes les informations mentionnées ci-dessus :
Dérivés des Blueprints

Pour plus de détails, regardez cette partie de la vidéo de Matt consacrée à la prise en charge des Blueprints.

Comprend le système de réflexion UE4

Si vous êtes un adepte de ReSharper C++, vous avez peut-être déjà vu ceci en action. Pour notre moteur linguistique, le mécanisme de réflexion UE4 est bien plus que de simples macros avec des paramètres de texte en clair.

  • Nous savons que ces macros sont spéciales et importantes, et nous pouvons les analyser et les traiter ces correctement avant même que vous ne lanciez un outil de compilation ou de génération UnrealHeader.
  • Les spécificateurs de réflexion sont plus que du texte, c’est pourquoi la saisie semi-automatique et les infobulles de documentation fonctionnent également pour eux :
    Documentation des macros de réflexion
  • Les macros de réflexion UE4 manquantes ou définies de façon incorrecte seront traités par l’analyse de code intégrée :
    Inspection de macro

Pour plus de détails, regardez cette partie de la vidéo de Matt.

Comprend la sémantique des appels de procédure distants

Si vous ne réglez pas spécifiquement votre analyseur, il sera probablement perturbé par les fonctions d’appels de procédure distants (RPC) UE4 et ne les fera pas correspondre par noms. C’est pourquoi Rider (tout comme ReSharper C++) identifie les RPC UE4 par les mots-clés Client, Server ou NetMulticast dans la déclaration UFUNCTION. Il comprend également si une fonction de validation doit être générée (par le mot-clé WithValidation dans la déclaration UFUNCTION). En pratique, cela donne :

  • Une action Generate actualisée qui générera les fonctions _Validate et _Implementation si nécessaire, ou seulement celle manquant actuellement.
  • Des suggestions pour les deux fonctions dans la navigation :
    Fonctions RPC
  • Et la possibilité de tout mettre à jour lorsque vous utilisez les refactorisations Rename ou Change Signature.

Vous voulez voir cela en action ? Matt en fait une démonstration dans sa vidéo.

Applique les règles de dénomination UE4

Une autre chose que Rider a emprunté à ReSharper C++ est la prise en charge des conventions de nommage UE4. Elle est disponible pour chaque action, de l’introduction d’une variable à la génération de getters et setters. Pendant ce temps, l’inspection Inconsistent UE4 naming détecte les noms qui ne correspondent pas aux conventions et suggère un correctif rapide (qui déclenche une refactorisation Rename).

Comprend les langages HLSL et C#, JSON et les dialectes uprojet/uplugin

Avez-vous souvent besoin de plus que de C++ et des BP pour vos projets Unreal Engine ? Nous imaginons que c’est sûrement le cas !

Vous avez peut-être vu la présentation concernant la prise en charge linguistique initiale des fichiers shader HLSL dans ReSharper C++ 2020.1. Eh bien la même prise en charge est disponible dans Rider for Unreal Engine ! Voici les avantages que nos outils vous offrent pour travailler avec des fichiers HLSL :

  • La navigation vers les fichiers HLSL.
  • La mise en évidence des éléments de syntaxe et des erreurs de syntaxe.
  • Des contrôles d’analyse de code sémantique.
  • Quelques inspections pratiques avec des correctifs rapides.
  • Des refactorisations, encore expérimentales, mais Rename, Inline Variable, Introduce Variable et Change Signature fonctionnent déjà dans de nombreux cas.

Pour en savoir plus, consultez cette partie de la démonstration vidéo.

Rider for Unreal Engine ne serait pas Rider sans la prise en charge des fichiers de build et des fichiers cibles C#, la saisie semi-automatique et la validation pour les noms de modules dans les fichiers .uproject et .uplugin.

Inclut son propre débogueur

C’était le défi le plus difficile à relever et cela nous a empêchés de lancer la Public Preview plus tôt. Personne n’est autorisé à utiliser le débogueur de Microsoft en dehors des outils MS, nous avons donc dû mettre en place notre propre débogueur basé sur LLDB. Et nous avons pu le tester sur des projets grâce aux utilisateurs de CLion, qui ont pu bénéficier de ce débogueur spécifique pour leurs projets Windows il y a quelques temps déjà.

Avec Rider for Unreal Engine, vous pouvez définir des points de rupture de ligne, des points de surveillance, des points de rupture conditionnelle et autres. Vous pouvez également utiliser des expressions d’évaluation ou des valeurs fixes lors des sessions de débogage. Il prend en charge les fichiers NatVis et trouve et charge automatiquement le fichier UE4.natvis, offrant des vues intuitives des types de données d’Unreal Engine.

Découvrez le débogueur en action dans la vidéo de Matt. Veuillez noter qu’il n’en est encore qu’à ses débuts et que nous prévoyons de l’améliorer considérablement au cours de la période de Public Preview.

RiderSourceCodeAccess

Pour faire de Rider for Unreal Engine votre EDI de prédilection dans Unreal Editor, téléchargez le plugin RiderSourceCodeAccess depuis la marketplace. (Consultez cette brève instruction sur son utilisation sur GitHub). Et la version 4.25 rend les choses plus faciles. Unreal Editor reconnaîtra automatiquement Rider et listera toutes les versions compatibles dans la liste déroulante des éditeurs de code source dans les préférences d’Unreal.

Rider for Unreal Engine : Questions fréquentes

L’accès à la Public Preview de Rider for Unreal Engine est-il gratuit ?

facebook_1200x1200
Oui, c’est gratuit. Vous devez simplement vous inscrire pour recevoir une licence pour votre compte JetBrains. Cette licence ne sera valable que pour la Public Preview de Rider for Unreal Engine. Elle ne vous permettra pas d’utiliser la version classique de Rider.

Cette licence est délivrée sous forme d’abonnement individuel valable 1 an. Nous espérons que cette durée sera suffisante pour couvrir toutes les étapes de développement avant la sortie officielle du produit. Il n’y a aucune restriction quant à son utilisation à des fins commerciales, mais cela sera à vos propres risques.

Comment puis-je obtenir une licence ?

Pour obtenir une licence, il vous suffit de compléter ce formulaire. La licence sera automatiquement créée pour vous et ajoutée à votre compte JetBrains, et vous en serez informé par e-mail. Pour activer la licence :

  1. Utilisez le lien fourni dans l’e-mail pour procéder à l’activation du compte et de la licence.
  2. Ensuite, utilisez les identifiants de votre compte JetBrains pour vous inscrire dans le produit.

Je dispose d’une licence pour Rider. Aurai-je accès à Rider for Unreal Engine dès son lancement officiel?

Oui ! Rider for Unreal Engine fera partie de notre EDI JetBrains Rider, que nous considérons comme notre principale offre pour les développeurs de jeux vidéo.

Qui peut avoir accès aux builds de la Public Preview ?

La Public Preview de Rider for Unreal Engine est ouverte à tous. Vous n’avez qu’à remplir le formulaire et récupérer la build et la licence pour commencer à l’utiliser immédiatement.

Puis-je développer mes projets C++ habituels avec Rider for Unreal Engine ?

Rider for Unreal Engine fournit la même prise en charge de C++ que ReSharper C++. Alors, si vous avez une solution VS et que vous voulez l’ouvrir dans Rider, allez-y ! Cependant, l’objet principal cette Public Preview reste Unreal Engine pour le développement de jeux vidéo. Nous attendons donc en priorité des retours d’expérience concernant la prise en charge d’Unreal Engine.

Rider est un EDI multiplateforme. La prise en charge d’UE4 est-elle également disponible sur les 3 plateformes ?

Pour l’instant, Rider for Unreal Engine ne fonctionne que sous Windows. Nous prévoyons de l’étendre à macOS et à Linux dans le futur, si possible dès la première version officielle.

Ai-je besoin d’un modèle de projet spécifique pour commencer à travailler sur mon projet Unreal Engine ?

Vous pouvez simplement ouvrir vos fichiers .sln dans Rider for Unreal Engine. D’ici sa sortie, nous espérons que Rider fonctionnera également nativement avec .uproject, afin de vous éviter l’étape de la génération de fichiers .sln.

Quand la version officielle sera-t-elle disponible ?

Nous ne pouvons pas encore nous prononcer sur ce point. Nous venons de lancer la Public Preview et nous souhaitons recueillir et traiter autant de retours d’expérience que possible. Lorsque nous estimerons que le produit est suffisamment abouti et prêt pour une utilisation avancée en production, nous intégrerons toutes les fonctionnalités dans JetBrains Rider. Cela pourrait se produire avant la fin de l’année 2020, ou non, en fonction des commentaires que nous recueillerons.

Où dois-je envoyer mes commentaires ?

C’est très simple ! Vous avez plusieurs possibilités :

  • Les plugins UnrealLink pour Rider et RiderLink pour Unreal Editor sont là pour aider à l’intégration des Blueprints et de manière générale à la communication entre Rider et Unreal Editor. Tout problème spécifique doit être signalé via GitHub.
  • Pour les problèmes spécifiques à C++ et au code Unreal Engine, veuillez les reporter dans l’outil de suivi d’incidents de ReSharper C++.
  • Les problèmes spécifiques à Rider doivent quant à eux être signalés dans l’outil de suivi d’incidents de Rider. Si vous envoyez un ticket au mauvais endroit, pas de souci. Nous le replacerons au bon endroit.
  • Vous pouvez envoyer un e-mail aux ingénieurs du support et aux développeurs de Rider for Unreal Engine à rider-cpp-support@jetbrains.com.
  • Nous contacter sur Twitter (@JetBrainsRider) en utilisant le tag #RiderForUnrealEngine.

Il est maintenant temps d’essayer Rider for Unreal Engine ! Cliquez sur le bouton et remplissez le formulaire :

PARTICIPER À L’EARLY PREVIEW

L’Équipe Rider
JetBrains
The Drive to Develop

L’article La Public Preview de Rider for Unreal Engine est lancée ! a été publié pour la première fois sur le blog .NET Tools.

Auteur de l’article original en anglais : Anastasia Kazakova

Posted in Announcements, How-To's, News | Tagged , , , , , | Leave a comment

JetBrains Toolbox 2020.1 est disponible : Mettez à jour vos outils

Le temps est venu de mettre à jour vos outils et de commencer à utiliser leurs nouvelles fonctionnalités. Les nouvelles versions de tous les EDI de JetBrains sont maintenant disponibles pour vous permettre d’être encore plus efficace.

Voici un résumé de ce que vous pouvez trouver dans les nouvelles versions des EDI de JetBrains.
Pour rappel, le moyen le plus simple de mettre à jour vos outils est de passer par l’application Toolbox.

Télécharger l’applicationToolbox

IntelliJ IDEA

IntelliJ IDEA 2020.1 apporte la prise en charge de Java 14 et de nouvelles fonctionnalités pour plusieurs frameworks, met à niveau le débogueur avec une assistance d’analyse des flux de données, ajoute le nouveau mode LightEdit, et télécharge et configure le JDK pour vous. Vous découvrirez également de nouvelles refactorisations Rename et Change Signature, le rendu des Javadocs sur l’éditeur, de nombreuses améliorations VCS, et bien d’autres choses encore.
WebStorm

WebStorm 2020.1 offre une ergonomie plus soignée, une prise en charge native de Vuex et de l’API Vue Composition, une option pour exécuter Prettier lors de l’enregistrement et plusieurs améliorations pour JavaScript et TypeScript.
Rider

Rider 2020.1 propose la nouvelle édition de .NET Core et le rechargement à chaud pour Xamarin. Le profilage est désormais plus facile grâce à la toute nouvelle fonctionnalité Dynamic Program Analysis. Les degrés de gravité de l’éditeur peuvent désormais être configurés en un clic et les développeurs Unity bénéficient de nombreuses mises à jour et corrections majeures.
PhpStorm

PhpStorm 2020.1 fournit la prise en charge native de composer.json, des améliorations de l’inférence de types PHP, la couverture du code avec PCOV et PHPDBG, une boîte à outils PHPUnit, le vérificateur grammatical de Grazie, et biens d’autres améliorations.
GoLand

GoLand 2020.1 comprend diverses mises à niveau pour la prise en charge des modules Go, des fonctionnalités d’édition de code nécessitant peu ou pas d’interaction de l’utilisateur, une gamme étendue de saisie semi-automatique du code et plus encore !
PyCharm

PyCharm 2020.1 apporte beaucoup de nouveautés qui facilitent le développement, notamment le rebasage interactif et le débogage intelligent. Il est maintenant possible de convertir la boîte de dialogue de commit en une fenêtre d’outils s’ouvrant à côté de votre code. Dans le débogueur, ce qui était auparavant le Smart Step Into est devenu encore plus intelligent et est maintenant le Step Into par défaut.
CLion

CLion 2020.1 apporte des dizaines d’améliorations pour de nombreuses fonctionnalités de l’EDI. Cela inclut la prise en charge de CUDA, des améliorations du formatteur et des refactorisations, une intégration plus poussée avec les outils basés sur Clang et de nouvelles options dans les configurations Run/Debug. Pour les développeurs Windows, la nouvelle version comprend la prise en charge du compilateur Clang-cl et CLion ajoute la prise en charge du compilateur IAR et un plugin PlatformIO expérimental pour les projets embarqués.
RubyMine

RubyMine 2020.1 améliore la navigation entre les entités Rails et apporte une assistance au code plus intelligente. La mise en place des configurations d’exécution, du SSH et de Docker est maintenant plus pratique. Le nouveau mode LightEdit vous permet d’éditer rapidement des fichiers sans charger de projet. Cette mise à jour comprend également des améliorations pour le contrôle de version, le terminal, JS et les outils de base de données.
icon_AppCode

AppCode 2020.1 apporte la saisie semi-automatique pendant l’indexation, une assistance au codage plus rapide dans les projets Swift purs et mixtes, la génération de commentaires dans la documentation, de nouvelles inspections et intentions, la vue Type Hierarchy pour Swift et de nouveaux modes de tri pour la vue Structure de Swift.
ReSharper

ReSharper Ultimate 2020.1 offre la prise en charge de fonctionnalités C# 8.0 et C++20 supplémentaires, l’analyse des flux de données pour les valeurs entières et plusieurs améliorations des performances de ReSharper. De plus, ReSharper C++ apporte une saisie semi-automatique du code améliorée, de nouvelles inspections avec des correctifs rapides et la prise en charge native du HLSL.
ReSharperC++

ReSharper C++ 2020.1 fournit une meilleure prise en charge des fonctionnalités de C++ 20, une saisie semi-automatique du code améliorée et de nouvelles inspections avec des correctifs rapides. Pour les développeurs de jeux, cette version s’aligne mieux avec les directives d’Unreal Engine 4 et inaugure la prise en charge initiale du HLSL.
DataGrip

DataGrip 2020.1 permet d’exécuter des configurations et d’exporter vers Excel. Il inclut également les résultats dans l’éditeur, la visionneuse geo viewer et plus encore !

Dans le même temps, toutes les équipes produits ont commencé à travailler sur les nouvelles fonctionnalités et les prochains Programmes d’Accès Anticipé pour la version 2020.2. Consultez les blogs dédiés aux différents produits pour vous tenir au courant des dernières avancées. Et suivez-nous sur Twitter.

Restez chez vous, prenez soin de vous, mais continuez à vous amuser !
L’ Équipe JetBrains

Auteur de l’article original en anglais : Marina Kovaleva

Posted in News | Tagged , | Leave a comment

Le Guide WebStorm : une nouvelle ressource d’apprentissage pour progresser rapidement

Nous avons le plaisir d’annoncer la publication du Guide WebStorm : un espace unique regroupant tous nos conseils et astuces pour une utilisation optimale de WebStorm . L’objectif de ce guide est de vous aider à améliorer votre productivité et la qualité de votre code rapidement, sans que cela n’empiète trop sur le temps que vous devez consacrer à vos projets.

Découvrir le Guide WebStorm

Alors, en quoi consiste ce guide WebStorm ? Nous avons rassemblé les conseils que nous avions publiés sur Twitter, les avons enrichis avec des informations supplémentaires et classés en deux catégories : Topics et Technologies.

webstorm-guide-tip

Examinons-les d’un peu plus près.

  • Technologies. Imaginez que vous découvriez un conseil sur la puissance de la prise en charge de React par WebStorm et que vous vous ayez alors pensé : “Je ne savais pas cela ! Je me demande quelles autres infos sur les boosters de productivité pour React j’ai pu manquer ?”. Si cela vous parle, la section Technologies du guide est faite pour vous. Toutes les ressources qui s’y trouvent sont organisées en groupes de technologies spécifiques, tels que les frameworks courants, les bibliothèques, etc.
  • Topics. Parfois, vous tombez sur un conseil utile concernant la meilleure façon d’effectuer une tâche spécifique dans l’EDI, par exemple comment ajouter un point d’arrêt conditionnel lors du débogage, et vous voudriez approfondir le sujet. Pour vous y aider, nous avons regroupé les ressources par thème. Chaque thème comprend une explication et une liste de ressources pertinentes.

Le guide étant récent, il est encore assez succinct, mais nous prévoyons de l’enrichir progressivement si nous constatons que cela apporte une valeur ajoutée à nos utilisateurs.

Le Guide WebStorm est un projet ouvert, avec un référentiel dans GitHub hébergeant tout le contenu. Nous écrivons tout le contenu dans Markdown et utilisons GatsbyJS pour obtenir un site statique. Si vous souhaitez y contribuer, consultez le README pour plus d’informations.

N’hésitez pas à nous faire part de vos retours ! Pour ce faire, laissez-nous simplement un commentaire ci-dessous ou répondez à ce court questionnaire.

L’Équipe WebStorm

Auteur de l’article original en anglais : Ekaterina Ryabukha

Posted in News, Tips & Tricks | Leave a comment

Rider 2020.1 est disponible !

Nous avons le plaisir de vous annoncer la publication de Rider 2020.1 ! Voici une présentation des principales nouveautés que nous vous proposons dans cette version.

Rider 2020.1 est disponible

Le backend se lance sur le runtime NET Core

Le backend se lance enfin sur le runtime .NET Core par défaut sous macOS et Linux, au lieu du runtime Mono. Le passage à l’environnement d’exécution .NET Core permet d’améliorer sensiblement les performances, de réduire l’empreinte mémoire et de restaurer NuGet en mode multithread.

 

lin_mac-perf-TotalTime

Il s’agit d’un changement important pour les développeurs utilisant Rider sous MacOS et Linux, mais c’est aussi une bonne nouvelle pour les développeurs sous Windows car l’amener sous Windows sera la prochaine grande étape que nous allons réaliser.

Voyons maintenant les autres fonctionnalités et améliorations notables de cette première version majeure de l’année.

Rechargement à chaud de Xamarin

Désormais, Rider applique automatiquement les modifications apportées dans Xamarin Forms XAML à l’application en cours de débogage sur un appareil ou un simulateur, sans reconstruire ni redéployer l’application entière.

Analyse de programme dynamique

Chaque fois que vous exécutez votre projet dans Rider, la fonctionnalité Dynamic Program Analysis (DPA) commence à collecter les données d’allocation de mémoire. Une fois que vous fermez l’application, DPA vous montrera une liste des problèmes détectés : fermetures et allocations à des tas d’objets petits et grands. Pas besoin de lancer une quelconque session de profilage et d’obtenir des instantanés – travaillez simplement comme d’habitude et toutes les données seront recueillies en arrière-plan, avec une surcharge quasi nulle.
dpa-blog@2x

Analyse du flux de données des valeurs entières

Grâce à ReSharper, cette version de Rider est livrée avec un nouveau type d’analyse qui suit la façon dont les valeurs de toutes les variables locales int changent et vérifie l’exactitude de toutes les opérations courantes sur ces variables pour détecter les morceaux de code inutiles ou erronés.
int-dataflow-blog@2x

Indexation différée des ressources pour les projets Unity

Nous avons considérablement amélioré l’utilisation de la mémoire et la vitesse d’indexation des ressources. Rider indexe désormais l’intégralité de votre code avant d’examiner vos ressources, ce qui signifie que toutes les fonctionnalités de productivité, telles que la saisie semi-automatique, la mise en évidence du code et les inspections, sont disponibles plus rapidement qu’auparavant. Et ce n’est là que l’une des nombreuses améliorations apportées par l’équipe Rider Unity dans cette version.


Télécharger Rider 2020.1

Encore plus de fonctionnalités et d’améliorations

Si vous avez encore besoin d’être convaincu de la richesse en fonctionnalités de cette nouvelle version, voici quelques bonus qui devraient faire pencher la balance :

  • L’analyse de code C# signale les avertissements de compilation liés aux types de référence nullables et propose des correctifs rapides pour la plupart d’entre eux.

nrt-rider-blog@2x

  • La fenêtre contextuelle de saisie semi-automatique s’affiche maintenant beaucoup plus vite après que vous ayez commencé votre saisie; en particulier dans les grandes solutions.
  • Nous avons complètement remanié l’interface utilisateur de la fenêtre d’outils Debug pour la rendre aussi propre et épurée que possible. La disposition des onglets a été simplifiée : tous les onglets sont désormais sur un seul niveau et nous avons combiné les vues Threads et Frames.

debug-window-1-blog@2x

  • Le moteur de débogage prend désormais en charge le détachement d’un processus initialement lancé sous le débogueur sans arrêter l’application, prend en charge l’environnement d’exécution .NET Core x86, et Smart Step Into est activé par défaut pour l’action Step Into.
  • Comme mentionné précédemment, il y a beaucoup d’autres améliorations dans la prise en charge de Unity : pour n’en citer que quelques-unes, l’indexation des ressources comprend l’utilisation de votre code dans les préfabriqués imbriqués et de variantes, la découverte des tests unitaires fonctionne désormais mieux pour les projets Unity, et la saisie semi-automatique du code ne suggère plus de Boo.Lang.List ou System.Diagnostics.Debug.

unity-blog@2x

  • Si notre client TFS est sélectionné dans Settings/Preferences, l’activation de Version Control Integration fonctionne désormais pour les espaces de travail TFS créés localement avec Visual Studio
  • Pour les tests unitaires, nous avons modifié les barres d’outils des fenêtres de tests unitaires et ajouté de nouvelles fonctionnalités avancées de regroupement, un nouveau filtrage des tests unitaires par le framework cible, et l’exportation/importation pour les sessions de tests unitaires.

unit-testing-blog@2x

  • Nouvelle fenêtre contextuelle non modale où vous pouvez modifier les niveaux de mise en évidence de l’éditeur.
  • Refactorisation d’Extract Class.
  • Filtres de couverture pour les résultats de couverture des tests unitaires.

coverage-filters-blog@2x

  • Deux nouveaux dossiers dans Solution Explorer : Implicit references et MSBuild import targets.
  • Prise en charge des projets WIX (Windows Installer XML Toolset).
  • Des tonnes d’améliorations et de corrections de la prise en charge F# pour vous aider dans votre routine quotidienne : nouvelles inspections et corrections rapides, une nouvelle action Send project references to F# Interactive, l’infobulle d’évaluation au survol de la souris fonctionne pour plus d’expressions lorsque vous déboguez, et plus encore.

fsharp-blog@2x

  • Une nouvelle action Cancel build.

La liste ci-dessus ne couvre pas toutes les fonctionnalités, améliorations et corrections sur lesquelles notre équipe a travaillé au cours des quatre derniers mois. Pour voir tout ce que cette version a à offrir et trouver encore plus de choses intéressantes, consultez les Nouveautés dans Rider 2020.1 sur notre site web.

La liste complète des corrections effectuées au cours du cycle de publication de la version 2020.1 est disponible sur YouTrack.

Vous disposez de plusieurs méthodes pour télécharger Rider 2020.1 :

  • Télécharger et installer sur www.jetbrains.com.
  • Mettre à jour directement depuis Rider en sélectionnant Help | Check for updates.
  • Utiliser notre application Toolbox App.
  • Utiliser ce package snap de la boutique SnapCraft si vous utilisez une distribution Linux compatible.

Testez-la dès aujourd’hui et n’hésitez pas à nous faire part de vos impressions et réflexions !

Auteur de l’article original en anglais : Alexander Kurakin

Posted in New features, Release Announcements | Tagged , , , , , , , , , , , , , , , , | Leave a comment