Accédez à votre IDE à distance avec Projector
Aujourd’hui, nous avons le plaisir de vous annoncer le lancement de Projector : un outil et framework qui vous permet d’exécuter les IDE JetBrains et les applications Swing à distance sur votre réseau.
Comme vous le savez peut-être, Swing est un kit d’outils de widgets graphiques pour Java. Les IDE de JetBrains utilisent Swing pour créer l’interface utilisateur. Il en va de même pour les autres IDE basés sur IntelliJ, comme Android Studio.
Même si les IDE JetBrains et les applications Swing sont généralement des applications de bureau, un certain nombre de cas particuliers, comme les clients légers, requièrent une approche différente. C’est là que Projector entre en jeu.
Projector est une technologie auto-hébergée qui exécute les IDE basés sur IntelliJ et les applications basées sur Swing sur le serveur, vous permettant d’y accéder de n’importe où à partir de navigateurs et d’applications natives.
Cas d’utilisation
Il existe de nombreuses situations qui requièrent l’exécution d’un IDE sur un serveur. C’est particulièrement courant dans les grandes entreprises ayant une énorme infrastructure. Voici une liste non exhaustive des cas dans lesquels Projector est particulièrement utile :
- Exécuter le code à proximité de l’environnement d’exécution ou de la base de données pour réduire les allers-retours.
- Environnements d’entreprise hautement sécurisés.
- Très grands projets.
- Interdiction de copie locale de code source.
- Contraintes en matière de matériel informatique (hardware) pour l’utilisateur.
- Clients légers.
- Nécessité d’exécuter l’IDE dans un environnement GNU/Linux sur des machines Windows ou sur des systèmes d’exploitation non conventionnels comme ChromeOS.
- Nécessité d’éteindre votre ordinateur pendant que votre application continue de fonctionner sur le serveur.
- Débogage à distance côté serveur (devtest, devprod).
- Images VM ou Docker avec sources de débogage et un IDE préconfiguré.
- Configuration nécessitant un accès à distance.
Veuillez noter que Projector ne prend pas en charge le développement collaboratif. Si vous avez besoin d’un outil de collaboration, essayez Code With Me. Nous travaillons également sur une nouvelle solution de développement à distance qui combine les fonctionnalités de Code With Me et de Projector. Elle permettra d’aller encore plus loin dans la résolution des problèmes de latence du réseau.
Open Source
Chaque composant de Projector est publié sous une licence Open Source. Les entreprises qui le souhaitent peuvent ainsi élaborer des solutions personnalisées sur la base de cette technologie. Nous utilisons les trois licences les plus populaires :
- Client : MIT License (Expat)
- Serveur : GNU GPL v2.0 + Classpath Exception
- Dockerfiles : Apache License 2.0
N’hésitez pas à contribuer à l’ajout de nouvelles fonctionnalités et à la correction de bugs via des requêtes pull GitHub. Vous trouverez ci-dessous les liens GitHub vers les différents projets.
Architecture
Projector est un logiciel client-serveur. Vous exécutez l’IDE sur votre serveur, puis vous pouvez vous y connecter sur le réseau. La connexion entre le client et le serveur est extrêmement rapide et légère.
Cela peut faire penser à une solution de bureau à distance comme VNC, mais avec Projector, seules les fenêtres de l’IDE sont affichées et il est optimisé pour offrir un débit maximal pour les applications basées sur Java.
Projector offre de multiples options pour la configuration d’un serveur ou d’un client.
Applications client
Vous pouvez utiliser un navigateur ou une application native pour vous connecter à l’IDE. L’application native offre de meilleures fonctionnalités (des raccourcis clavier, par exemple), mais elle n’est disponible que pour les systèmes d’exploitation de bureau. Actuellement, l’utilisation d’un navigateur est la seule option pour les appareils mobiles, mais nous prévoyons de créer des clients natifs pour les plateformes mobiles également.
Client Web
L’expérience avec le navigateur est très proche de l’utilisation d’un site web interactif. Il existe toutefois une option permettant de passer en mode plein écran, qui offre une expérience plus proche de l’application native.
Vous pouvez contrôler les propriétés du client web en modifiant les paramètres de l’URL. Par exemple, sur les appareils mobiles, vous pouvez ajouter le paramètre "mobile" à l’URL pour activer la superposition de boutons, y compris la possibilité d’ouvrir un clavier virtuel.
Le client web est implémenté avec l’API HTML5 Canvas et devrait fonctionner dans tout navigateur compatible avec cette API. Il a été testé sur Chrome/Chromium, Firefox et Safari.
Aucune installation du client web n’est requise : il est déjà inclus dans la partie serveur web de Projector. Il vous suffit de saisir l’URL. Tout le code est disponible sur GitHub.
Application native
Vous pouvez utiliser une application native pour macOS, Windows et Linux. Les binaires sont disponibles ici et les sources sont publiées sur GitHub.
En plus des avantages attendus, comme l’intégration au dock/barre de tâches, cette application prend en charge les raccourcis clavier tels que Ctrl+W/Cmd+W, qui ne sont généralement pas disponibles dans le client web.
Côté serveur
Script d’installation Python
Notre script d’installation offre une certaine souplesse pour l’installation des composants côté serveur. Il s’agit d’une distribution autonome, actuellement disponible seulement pour les hôtes GNU/Linux. Vous pouvez choisir quel IDE vous souhaitez installer, sa version, ses options de sécurité, etc.
Images Docker
L’utilisation de Docker est la façon la plus simple d’exécuter Projector dans un environnement Cloud. Nous avons un exemple de script qui vous permet de générer des images Docker contenant des IDE JetBrains et Projector. Vous pouvez ainsi exécuter les IDE partout où Docker est disponible. L’IDE sera exécuté sans interface graphique et isolé et vous n’aurez pas à installer X11 sur le serveur. L’image est autonome.
Au lieu d’utiliser DockerHub, nous publions des images préconstruites à l’aide de notre Docker Registry personnalisé. Par exemple, cet extrait vous permet d’obtenir IntelliJ IDEA Community Edition :
docker pull registry.jetbrains.team/p/prj/containers/projector-idea-c
Plugin d’IDE
Enfin, vous pouvez installer le plugin directement dans votre IDE sans avoir à déployer les éléments côté serveur sur un serveur distinct. Avec ce plugin, votre appareil est le serveur. Vous pouvez trouver le code source sur GitHub.
Cependant, le plugin est beaucoup moins isolé, des interactions avec le système d’exploitation peuvent donc survenir. Par exemple, nous ne pouvons pas fournir le rendu du menu global sur macOS.
Do It Yourself
Projector est une technologie plutôt qu’une solution pour utilisateur final. Vous pouvez l’utiliser pour personnaliser votre infrastructure afin de répondre aux besoins de votre entreprise. Ansible ? Bien sûr. Kubernetes ? Pas de problème .
Vous pouvez construire tout ce que vous voulez, en fonction de votre niveau de compétences techniques. Le code est open source, donc rien ne vous empêche de modifier ce que vous voulez ou même de contribuer ! Vous pouvez trouver plus d’informations, ainsi que le code côté serveur le plus important, sur GitHub.
Bien que Projector soit une technologie toute récente, nous pensons qu’elle a le potentiel pour devenir l’une des meilleures solutions pour l’accès à distance aux IDE. Faites-nous part de vos commentaires. Vous pouvez nous contacter à tout moment via YouTrack et Twitter.
— L’Équipe Projector
Auteur de l’article original en anglais : Oleg Chirukhin