{"id":135382,"date":"2021-04-09T12:06:38","date_gmt":"2021-04-09T11:06:38","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=blog&#038;p=135382"},"modified":"2021-04-09T12:06:38","modified_gmt":"2021-04-09T11:06:38","slug":"accedez-a-votre-ide-a-distance-avec-projector","status":"publish","type":"blog","link":"https:\/\/blog.jetbrains.com\/fr\/blog\/2021\/04\/09\/accedez-a-votre-ide-a-distance-avec-projector\/","title":{"rendered":"Acc\u00e9dez \u00e0 votre IDE \u00e0 distance avec Projector"},"content":{"rendered":"<p>Aujourd&#8217;hui, nous avons le plaisir de vous annoncer le lancement de Projector\u00a0: un outil et framework qui vous permet d&#8217;ex\u00e9cuter les IDE JetBrains et les applications Swing \u00e0 distance sur votre r\u00e9seau.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/03\/Blog_1280x720.png\" alt=\"Logo Projector\" \/><\/p>\n<p>Comme vous le savez peut-\u00eatre, Swing est un kit d&#8217;outils de widgets graphiques pour Java. Les IDE de JetBrains utilisent Swing pour cr\u00e9er l&#8217;interface utilisateur. Il en va de m\u00eame pour les autres IDE bas\u00e9s sur IntelliJ, comme Android Studio.<\/p>\n<p>M\u00eame si les IDE JetBrains et les applications Swing sont g\u00e9n\u00e9ralement des applications de bureau, un certain nombre de cas particuliers, comme les clients l\u00e9gers, requi\u00e8rent une approche diff\u00e9rente. C&#8217;est l\u00e0 que Projector entre en jeu.<\/p>\n<p>Projector est une technologie auto-h\u00e9berg\u00e9e qui ex\u00e9cute les IDE bas\u00e9s sur IntelliJ et les applications bas\u00e9es sur Swing sur le serveur, vous permettant d&#8217;y acc\u00e9der de n&#8217;importe o\u00f9 \u00e0 partir de navigateurs et d&#8217;applications natives.<\/p>\n<h1><strong>Cas d&#8217;utilisation<\/strong><\/h1>\n<p>Il existe de nombreuses situations qui requi\u00e8rent l&#8217;ex\u00e9cution d&#8217;un IDE sur un serveur. C&#8217;est particuli\u00e8rement courant dans les grandes entreprises ayant une \u00e9norme infrastructure. Voici une liste non exhaustive des cas dans lesquels Projector est particuli\u00e8rement utile\u00a0:<\/p>\n<ul>\n<li>Ex\u00e9cuter le code <strong>\u00e0 proximit\u00e9 de l&#8217;environnement d&#8217;ex\u00e9cution<\/strong> ou <strong>de la base de donn\u00e9es<\/strong> pour r\u00e9duire les allers-retours.<\/li>\n<li>Environnements d&#8217;entreprise <strong>hautement s\u00e9curis\u00e9s<\/strong>.<\/li>\n<li>Tr\u00e8s <strong>grands projets<\/strong>.<\/li>\n<li>Interdiction de copie locale de <strong>code source<\/strong>.<\/li>\n<li><strong>Contraintes en mati\u00e8re de mat\u00e9riel informatique<\/strong> (hardware) pour l&#8217;utilisateur.<\/li>\n<li><strong>Clients l\u00e9gers<\/strong>.<\/li>\n<li>N\u00e9cessit\u00e9 d&#8217;ex\u00e9cuter l&#8217;IDE dans un environnement GNU\/Linux sur des machines Windows ou sur des <strong>syst\u00e8mes d&#8217;exploitation non conventionnels<\/strong> comme ChromeOS.<\/li>\n<li><strong>N\u00e9cessit\u00e9 d&#8217;\u00e9teindre votre ordinateur<\/strong> pendant que votre application continue de fonctionner sur le serveur.<\/li>\n<li><strong>D\u00e9bogage \u00e0 distance<\/strong> c\u00f4t\u00e9 serveur (devtest, devprod).<\/li>\n<li>Images <strong>VM ou Docker<\/strong> avec sources de d\u00e9bogage et un IDE pr\u00e9configur\u00e9.<\/li>\n<li>Configuration n\u00e9cessitant <strong>un acc\u00e8s \u00e0 distance<\/strong>.<\/li>\n<\/ul>\n<p><em>Veuillez noter que Projector ne prend pas en charge le d\u00e9veloppement collaboratif. Si vous avez besoin d&#8217;un outil de collaboration, essayez <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/code-with-me.html\" target=\"_blank\" rel=\"noopener\">Code With Me<\/a>. Nous travaillons \u00e9galement sur une nouvelle solution de d\u00e9veloppement \u00e0 distance qui combine les fonctionnalit\u00e9s de Code With Me et de Projector. Elle permettra d&#8217;aller encore plus loin dans la r\u00e9solution des probl\u00e8mes de latence du r\u00e9seau.<\/em><\/p>\n<h1><strong>Open Source<\/strong><\/h1>\n<p>Chaque composant de Projector est publi\u00e9 sous une licence Open Source. Les entreprises qui le souhaitent peuvent ainsi \u00e9laborer des solutions personnalis\u00e9es sur la base de cette technologie. Nous utilisons les trois licences les plus populaires\u00a0:<\/p>\n<ul>\n<li>Client\u00a0: MIT License (Expat)<\/li>\n<li>Serveur\u00a0: GNU GPL v2.0 + Classpath Exception<\/li>\n<li>Dockerfiles\u00a0: Apache License 2.0<\/li>\n<\/ul>\n<p>N&#8217;h\u00e9sitez pas \u00e0 contribuer \u00e0 l&#8217;ajout de nouvelles fonctionnalit\u00e9s et \u00e0 la correction de bugs via des requ\u00eates pull GitHub. Vous trouverez ci-dessous les liens GitHub vers les diff\u00e9rents projets.<\/p>\n<h1><strong>Architecture<\/strong><\/h1>\n<p>Projector est un logiciel client-serveur. Vous ex\u00e9cutez l&#8217;IDE sur votre serveur, puis vous pouvez vous y connecter sur le r\u00e9seau. La connexion entre le client et le serveur est extr\u00eamement rapide et l\u00e9g\u00e8re. <\/p>\n<p>Cela peut faire penser \u00e0 une solution de bureau \u00e0 distance comme VNC, mais avec Projector, seules les fen\u00eatres de l&#8217;IDE sont affich\u00e9es et il est optimis\u00e9 pour offrir un d\u00e9bit maximal pour les applications bas\u00e9es sur Java.<\/p>\n<p>Projector offre de multiples options pour la configuration d&#8217;un serveur ou d&#8217;un client. <\/p>\n<h1><strong>Applications client<\/strong><\/h1>\n<p>Vous pouvez utiliser un navigateur ou une application native pour vous connecter \u00e0 l&#8217;IDE. L&#8217;application native offre de meilleures fonctionnalit\u00e9s (des raccourcis clavier, par exemple), mais elle n&#8217;est disponible que pour les syst\u00e8mes d&#8217;exploitation de bureau. Actuellement, l&#8217;utilisation d&#8217;un navigateur est la seule option pour les appareils mobiles, mais nous pr\u00e9voyons de cr\u00e9er des clients natifs pour les plateformes mobiles \u00e9galement.<\/p>\n<h2><strong>Client Web<\/strong><\/h2>\n<p>L&#8217;exp\u00e9rience avec le navigateur est tr\u00e8s proche de l&#8217;utilisation d&#8217;un site web interactif. Il existe toutefois une option permettant de passer en mode plein \u00e9cran, qui offre une exp\u00e9rience plus proche de l&#8217;application native.<\/p>\n<p>Vous pouvez contr\u00f4ler les propri\u00e9t\u00e9s du client web en modifiant les param\u00e8tres de l&#8217;URL. Par exemple, sur les appareils mobiles, vous pouvez ajouter le param\u00e8tre <em>&quot;mobile&quot;<\/em> \u00e0 l&#8217;URL pour activer la superposition de boutons, y compris la possibilit\u00e9 d&#8217;ouvrir un clavier virtuel.<\/p>\n<p>Le client web est impl\u00e9ment\u00e9 avec l&#8217;API HTML5 Canvas et devrait fonctionner dans tout navigateur compatible avec cette API. Il a \u00e9t\u00e9 test\u00e9 sur Chrome\/Chromium, Firefox et Safari.<\/p>\n<p>Aucune installation du client web n&#8217;est requise : il est d\u00e9j\u00e0 inclus dans la partie serveur web de Projector. Il vous suffit de saisir l&#8217;URL. Tout le code est disponible sur <a href=\"https:\/\/github.com\/JetBrains\/projector-client\/tree\/master\/projector-client-web\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>.<\/p>\n<h2><strong>Application native<\/strong><\/h2>\n<p>Vous pouvez utiliser une application native pour macOS, Windows et Linux. Les binaires sont disponibles <a href=\"https:\/\/github.com\/JetBrains\/projector-client\/releases\" target=\"_blank\" rel=\"noopener\">ici<\/a> et les sources sont publi\u00e9es sur <a href=\"https:\/\/github.com\/JetBrains\/projector-client\/tree\/master\/projector-launcher\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>.<\/p>\n<p>En plus des avantages attendus, comme l&#8217;int\u00e9gration au dock\/barre de t\u00e2ches, cette application prend en charge les raccourcis clavier tels que Ctrl+W\/Cmd+W, qui ne sont g\u00e9n\u00e9ralement pas disponibles dans le client web.<\/p>\n<h1><strong>C\u00f4t\u00e9 serveur<\/strong><\/h1>\n<h2><strong>Script d&#8217;installation Python<\/strong><\/h2>\n<p>Notre <a href=\"https:\/\/github.com\/JetBrains\/projector-installer\" target=\"_blank\" rel=\"noopener\">script d&#8217;installation<\/a> offre une certaine souplesse pour l&#8217;installation des composants c\u00f4t\u00e9 serveur. Il s&#8217;agit d&#8217;une distribution autonome, actuellement disponible seulement pour les h\u00f4tes GNU\/Linux. Vous pouvez choisir quel IDE vous souhaitez installer, sa version, ses options de s\u00e9curit\u00e9, etc.<\/p>\n<h2><strong>Images Docker<\/strong><\/h2>\n<p>L&#8217;utilisation de Docker est la fa\u00e7on la plus simple d&#8217;ex\u00e9cuter Projector dans un environnement Cloud. Nous avons <a href=\"https:\/\/github.com\/JetBrains\/projector-docker\" target=\"_blank\" rel=\"noopener\">un exemple de script<\/a> qui vous permet de g\u00e9n\u00e9rer des images Docker contenant des IDE JetBrains et Projector. Vous pouvez ainsi ex\u00e9cuter les IDE partout o\u00f9 Docker est disponible. L&#8217;IDE sera ex\u00e9cut\u00e9 sans interface graphique et isol\u00e9 et vous n&#8217;aurez pas \u00e0 installer X11 sur le serveur. L&#8217;image est autonome.<\/p>\n<p>Au lieu d&#8217;utiliser DockerHub, nous publions des images pr\u00e9construites \u00e0 l&#8217;aide de notre Docker Registry personnalis\u00e9. Par exemple, cet extrait vous permet d&#8217;obtenir IntelliJ IDEA Community Edition\u00a0: <\/p>\n<p><code>docker pull registry.jetbrains.team\/p\/prj\/containers\/projector-idea-c<\/code><\/p>\n<h2><strong>Plugin d&#8217;IDE<\/strong><\/h2>\n<p>Enfin, vous pouvez installer <a href=\"https:\/\/plugins.jetbrains.com\/plugin\/16015-projector\" target=\"_blank\" rel=\"noopener\">le plugin<\/a> directement dans votre IDE sans avoir \u00e0 d\u00e9ployer les \u00e9l\u00e9ments c\u00f4t\u00e9 serveur sur un serveur distinct. Avec ce plugin, votre appareil est le serveur. Vous pouvez trouver le code source sur <a href=\"https:\/\/github.com\/JetBrains\/projector-server\/tree\/master\/projector-plugin\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>.<\/p>\n<p>Cependant, le plugin est beaucoup moins isol\u00e9, des interactions avec le syst\u00e8me d&#8217;exploitation peuvent donc survenir. Par exemple, nous ne pouvons pas fournir le rendu du menu global sur macOS.<\/p>\n<h1><strong>Do It Yourself<\/strong><\/h1>\n<p>Projector est une technologie plut\u00f4t qu&#8217;une solution pour utilisateur final. Vous pouvez l&#8217;utiliser pour personnaliser votre infrastructure afin de r\u00e9pondre aux besoins de votre entreprise. Ansible ? Bien s\u00fbr. Kubernetes ? Pas de probl\u00e8me\u00a0. <\/p>\n<p>Vous pouvez construire tout ce que vous voulez, en fonction de votre niveau de comp\u00e9tences techniques. Le code est open source, donc rien ne vous emp\u00eache de modifier ce que vous voulez ou m\u00eame de contribuer\u00a0! Vous pouvez trouver plus d&#8217;informations, ainsi que le code c\u00f4t\u00e9 serveur le plus important, sur <a href=\"https:\/\/github.com\/JetBrains\/projector-server\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>.<\/p>\n<p>Bien que Projector soit une technologie toute r\u00e9cente, nous pensons qu&#8217;elle a le potentiel pour devenir l&#8217;une des meilleures solutions pour l&#8217;acc\u00e8s \u00e0 distance aux IDE. Faites-nous part de vos commentaires. Vous pouvez nous contacter \u00e0 tout moment via <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/PRJ\" target=\"_blank\" rel=\"noopener\">YouTrack<\/a> et <a href=\"https:\/\/twitter.com\/ProjectorJB\" target=\"_blank\" rel=\"noopener\">Twitter<\/a>.<\/p>\n<p>\u2014 L&#8217;\u00c9quipe Projector<\/p>\n<p><em>Auteur de l&#8217;article original en anglais : <a href=\"https:\/\/blog.jetbrains.com\/author\/oleg-chirukhin-jetbrains-com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Oleg Chirukhin<\/a><\/em><\/p>\n","protected":false},"author":813,"featured_media":123882,"comment_status":"closed","ping_status":"closed","template":"","categories":[286,89,6505],"tags":[6504,1038],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/blog\/135382"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/types\/blog"}],"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=135382"}],"version-history":[{"count":2,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/blog\/135382\/revisions"}],"predecessor-version":[{"id":135386,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/blog\/135382\/revisions\/135386"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/123882"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=135382"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=135382"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=135382"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=135382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}