{"id":220843,"date":"2022-01-17T15:41:14","date_gmt":"2022-01-17T14:41:14","guid":{"rendered":"https:\/\/blog.jetbrains.com\/fleet\/2022\/01\/fleet-below-deck-part-i-architecture-overview\/"},"modified":"2022-06-13T12:00:26","modified_gmt":"2022-06-13T11:00:26","slug":"dans-les-coulisses-de-fleet-vue-d-ensemble-de-l-architecture","status":"publish","type":"fleet","link":"https:\/\/blog.jetbrains.com\/fr\/fleet\/2022\/01\/dans-les-coulisses-de-fleet-vue-d-ensemble-de-l-architecture\/","title":{"rendered":"Dans les coulisses de Fleet, Partie I &#8211; Vue d&#8217;ensemble de l&#8217;architecture"},"content":{"rendered":"\n<p>Nous avons r\u00e9cemment annonc\u00e9 le lancement de <a href=\"https:\/\/www.jetbrains.com\/fr-fr\/fleet\/\" class=\"ek-link\" target=\"_blank\" rel=\"noopener\">Fleet<\/a>, notre IDE nouvelle g\u00e9n\u00e9ration. Il est actuellement disponible en version preview priv\u00e9e et nous avons re\u00e7u de nombreux retours des premiers utilisateurs, qui nous ont permis de commencer \u00e0 travailler \u00e0 son am\u00e9lioration en vue du lancement de sa version preview publique courant 2022.<\/p>\n\n\n\n<p>En attendant, nous allons vous en dire plus sur la conception et le fonctionnement de Fleet. Nous avons pr\u00e9par\u00e9 une s\u00e9rie d&#8217;articles de blog afin de vous pr\u00e9senter toutes les facettes de Fleet, de la vue d&#8217;ensemble de son architecture aux d\u00e9tails concernant la gestion d&#8217;\u00e9tat, les analyseurs, les protocoles, l&#8217;extensibilit\u00e9 et m\u00eame la conception de son logo. Nous esp\u00e9rons que vous appr\u00e9cierez cette visite guid\u00e9e au c\u0153ur de la salle des machines !<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Quels sont les \u00e9l\u00e9ments constitutifs de Fleet ?<\/h2>\n\n\n\n<p>La premi\u00e8re annonce de Fleet a donn\u00e9 lieu \u00e0 des conversations int\u00e9ressantes sur Twitter concernant les technologies utilis\u00e9es. Certains pensaient qu&#8217;il reposait sur JavaScript et Electron. D&#8217;autres esp\u00e9raient que cela n&#8217;\u00e9tait pas le cas. D&#8217;autres encore \u00e9taient soulag\u00e9s qu&#8217;il ne s&#8217;agisse pas du \u00ab bon vieux Java \u00bb. Nous avons \u00e9t\u00e9 surpris de voir toutes les conclusions qui ont pu \u00eatre tir\u00e9es \u00e0 partir de simples captures d&#8217;\u00e9cran&nbsp;!<\/p>\n\n\n\n<p>Fleet repose en r\u00e9alit\u00e9 sur une plateforme fiable et efficace : la JVM. Eh oui. La JVM. Pourquoi&nbsp;? Car malgr\u00e9 certaines id\u00e9es re\u00e7ues, la JVM est en fait tr\u00e8s performante. De plus, elle est multiplateforme, ce qui permet la prise en charge plusieurs syst\u00e8mes d&#8217;exploitation.<\/p>\n\n\n\n<p>La JVM ne se limite pas exclusivement au langage Java et vous n&#8217;\u00eates pas oblig\u00e9 d&#8217;utiliser Swing comme biblioth\u00e8que d&#8217;interface utilisateur (nous reviendrons plus en d\u00e9tail sur l&#8217;interface et l&#8217;utilisation de Skia par Fleet dans un prochain article). Elle permet d&#8217;utiliser diff\u00e9rents langages, parmi lesquels Kotlin. Et c&#8217;est pr\u00e9cis\u00e9ment avec Kotlin que nous avons b\u00e2ti Fleet.<\/p>\n\n\n\n<p>Toutefois, en tant que v\u00e9ritable IDE multilangage, Fleet lui-m\u00eame est bas\u00e9 sur plusieurs langages. En effet, une petite part de Fleet, notamment le Fleet System Deamon, est construite avec Rust&nbsp;!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Architecture de Fleet<\/h2>\n\n\n\n<p>Maintenant que vous savez ce qui a \u00e9t\u00e9 utilis\u00e9 pour construire Fleet, passons \u00e0 son architecture. Fleet comprend les composants suivants&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1361\" height=\"655\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/01\/image-2.png\" alt=\"\" class=\"wp-image-217451\" title=\"Diagramme de l'architecture\"\/><\/figure>\n\n\n\n<p>Examinons chacun de ces composants pour mieux comprendre leur r\u00f4le.<\/p>\n\n\n\n<p><strong>Frontend<\/strong><\/p>\n\n\n\n<p>S&#8217;il peut \u00eatre tentant d&#8217;assimiler le frontend \u00e0 l&#8217;interface utilisateur, il est en fait plus que cela. Il offre \u00e9galement des fonctionnalit\u00e9s comme&nbsp;:<\/p>\n\n\n\n<ul><li>L&#8217;analyse des fichiers<\/li><li>La mise en \u00e9vidence des \u00e9l\u00e9ments de syntaxe et la saisie semi-automatique<\/li><li>La fonctionnalit\u00e9 d&#8217;\u00e9diteur<\/li><\/ul>\n\n\n\n<p>Fleet d\u00e9marre en mode \u00e9diteur par d\u00e9faut et offre la saisie semi-automatique et la navigation de base, ainsi que toutes les fonctionnalit\u00e9s que l&#8217;on peut attendre d&#8217;un \u00e9diteur puissant. Tout ceci est fourni par le frontend de Fleet.<\/p>\n\n\n\n<p><strong>Espace de travail<\/strong><\/p>\n\n\n\n<p>Comme son nom le laisse entendre, l&#8217;espace de travail permet de g\u00e9rer tout ce qui se rapporte \u00e0 la session de travail. Diff\u00e9rents aspects, telles que la gestion de l&#8217;\u00e9tat, sont g\u00e9r\u00e9s par l&#8217;espace de travail. Cette fonctionnalit\u00e9 peut s&#8217;ex\u00e9cuter dans un processus avec Fleet ou en tant que processus distinct, selon qu&#8217;elle s&#8217;ex\u00e9cute localement sur la machine ou non, ce qui donne la possibilit\u00e9 d&#8217;ex\u00e9cuter un espace de travail sur un serveur distant.<\/p>\n\n\n\n<p><strong>Mode intelligent et backend<\/strong><\/p>\n\n\n\n<p>Comme mentionn\u00e9 pr\u00e9c\u00e9demment, Fleet peut s&#8217;ex\u00e9cuter en tant qu&#8217;\u00e9diteur. Mais si vous recherchez des fonctionnalit\u00e9s plus avanc\u00e9es telles que la saisie semi-automatique du code, la navigation avanc\u00e9e, les refactorisations ou les inspections, vous pouvez utiliser le <strong>mode intelligent<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"840\" height=\"402\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/01\/image-1.png\" alt=\"\" class=\"wp-image-217440\"\/><\/figure>\n\n\n\n<p>Ce mode intelligent prend en charge diff\u00e9rentes options, notamment le moteur de traitement de code IntelliJ IDEA par d\u00e9faut, les analyseurs personnalis\u00e9s, et m\u00eame les serveurs de langages, qu&#8217;ils soient bas\u00e9s sur les protocoles de serveur de langage (LSP) ou non.<\/p>\n\n\n\n<p><strong>Fleet System Daemon (FSD)<\/strong><\/p>\n\n\n\n<p>Ce composant \u00e9crit en Rust est notamment responsable des actions de build, de l&#8217;ex\u00e9cution du code et des commandes de terminal.<\/p>\n\n\n\n<p>La combinaison de ces \u00e9l\u00e9ments permet de fournir une solution distribu\u00e9e et \u00e9volutive. Plus tard dans cette s\u00e9rie d&#8217;article, nous examinerons plus en d\u00e9tail les technologies ayant servi \u00e0 cr\u00e9er chacun de ces \u00e9l\u00e9ments et les protocoles utilis\u00e9s pour qu&#8217;ils communiquent entre eux.<\/p>\n\n\n\n<p>Dans le prochain article, nous parlerons de la gestion d&#8217;\u00e9tat et verrons comment assurer la coh\u00e9rence de tous ces services.<\/p>\n\n\n\n<p>Restez \u00e0 l&#8217;\u00e9coute&nbsp;!<\/p>\n\n\n\n<p><em>Auteur de l&#8217;article original en anglais :<\/em><\/p>\n\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                <div class=\"about-author__box-img\">\n                    <img decoding=\"async\" src=\"https:\/\/secure.gravatar.com\/avatar\/?s=200&#038;r=g\" width=\"200\" height=\"200\" alt=\"\" loading=\"lazy\"  class=\"avatar avatar-200 wp-user-avatar wp-user-avatar-200 photo avatar-default\">\n                <\/div>\n                <div class=\"about-author__box-text\">\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":813,"featured_media":217835,"comment_status":"closed","ping_status":"closed","template":"","categories":[623,89],"tags":[],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/fleet\/220843"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/fleet"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/types\/fleet"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/users\/813"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/comments?post=220843"}],"version-history":[{"count":9,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/fleet\/220843\/revisions"}],"predecessor-version":[{"id":232880,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/fleet\/220843\/revisions\/232880"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/217835"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=220843"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=220843"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=220843"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=220843"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}