JetBrains a récemment publié la première itération majeure de Projector, une technologie qui permet aux développeurs d'exécuter et d'utiliser les applications Swing GUI à distance. Les applications gourmandes en ressources telles que Android Studio peuvent s'exécuter sur un serveur puissant tandis que les développeurs n'ont besoin que d'un navigateur Web sur un client léger.
JetBrains a détaillé dans la release note la justification de Projector :
Comme vous le savez peut-être, Swing est une boîte à outils de widgets graphiques pour Java. […] Même si c'est généralement une bonne chose que les IDE de JetBrains et les applications Swing soient des applications de bureau, il existe un certain nombre de cas secondaires, comme les clients légers, qui nécessitent une approche particulière. C'est là que Projector entre en jeu.
Projector est une technologie auto-hébergée qui exécute des IDE basés sur IntelliJ et des applications basées sur Swing sur le serveur, vous permettant d'y accéder de n'importe où à l'aide de navigateurs et d'applications natives.
JetBrains estime que les applications exécutées à distance sur un serveur avec Projector peuvent être utiles dans des contextes de haute sécurité, des projets volumineux et d'autres contextes où les clients légers sont précieux. La combinaison d'un serveur puissant et de clients légers est souvent moins chère et offre un avantage de mobilité par rapport à une configuration équivalente qui exploite des ordinateurs portables haut de gamme. Les clients légers peuvent également être moins chers à exploiter, à entretenir et à sécuriser. Les utilisateurs n'ont pas besoin d'installer de logiciel ni de stocker des fichiers sur leur appareil. L'exécution des applications Swing à partir d'un navigateur libère les développeurs de la réflexion sur les détails de leur environnement informatique (par exemple, le système d'exploitation, le processeur, la mémoire).
Un développeur a expliqué sur Twitter comment Projector l'aidait à éviter les problèmes liés au sous-système Windows pour Linux (WSL) :
Vous savez, je pense que # WSL2 est génial… sauf pour son utilisation avec @phpstorm. Mais WOW, maintenant @jetbrains a publié Projector. C'est génial dans tant de contextes, ça ouvre de nouvelles choses. Mais le plus évident est … vous exécutez simplement Projector sur WSL2 et tous vos problèmes de #ddev WSL2 sont terminés.
Joaquim Verges, responsable Android chez Twitch, a signalé l'exécution d'Android Studio sur son mobile :
Mon ordinateur portable personnel, un Razer Blade de 4 ans avec 16 Go de RAM, commence à VOLER dès que j'ouvre Android Studio sur l'un de mes projets personnels avec seulement une poignée de modules. Les ventilateurs soufflent plus fort qu'en jouant à un jeu vidéo 3D, cela me rend fou.
[…] Avec l'approche de [JetBrains Projector], vous pouvez coder en toute transparence à partir de n'importe quel appareil pouvant exécuter un navigateur. En fait, voici Android Studio "en cours d'exécution" sur mon téléphone, car pourquoi pas.
(Source: Blog post)
[J'ai] choisi [d'exécuter une instance AWS] EC2 avec 8 cœurs, 32 Go de RAM et 100 Go de stockage. […] Même si je l'utilisais 8 heures par jour, 5 jours par semaine, cela me coûterait environ 64$/mois. Pas mal, étant donné que je n'ai plus besoin d'un ordinateur portable coûteux.
Quand je veux travailler sur mes projets, je démarre simplement mon instance EC2, j'exécute Projector dessus, puis j'ouvre un onglet Chrome et je suis prêt à coder. Plus de fans fous, plus de surchauffe!
[…] Je suis allé un peu plus loin et j'ai mis en place le débogage WiFi entre mon téléphone et mon ordinateur portable, ce qui signifie que je n'ai pas à gérer de câbles USB.
JetBrains a également mentionné que les développeurs peuvent réaliser du pair-programming à distance, car plusieurs clients peuvent se connecter à un serveur et interagir avec lui à tour de rôle. Les projets énormes qui nécessitent beaucoup de temps pour redémarrer peuvent être laissés sur le serveur pendant que les développeurs éteignent leurs ordinateurs portables.
Projector exploite une implémentation personnalisée du moteur graphique AWT et intercepte les commandes de dessin qui émanent d'une application Swing. Les commandes sont sérialisées et envoyées via WebSockets aux clients, qui les exécutent ensuite localement. D'autre part, le client renvoie les événements utilisateur (par exemple, clics de souris, redimensionnement de la fenêtre) au serveur, événements qui sont ensuite traduits en commandes AWT.
Contrairement à d'autres solutions de bureau à distance génériques, qui peuvent diffuser des pixels directement, Projector peut rendre les polices et interface utilisateur même sur des connexions lentes car il spécialise son protocole de sérialisation aux applications Java et aux polices vectorielles. Cependant, certaines touches de raccourci sont interceptées par le navigateur (par exemple, Ctrl+Q
sous Windows/Linux, cmd+w
sous macOS). Bien qu'il puisse y avoir une solution de contournement consistant à ouvrir une page Web en mode application, JetBrains fournit également des applications natives distinctes pour macOS, Linux et Windows comme alternative au client navigateur.
Projector est un projet open-source qui se compose de plusieurs modules sous la licence Apache 2.0, GNU GPL v2.0 et la licence MIT. Les contributions sont les bienvenues, à condition qu'elles respectent les consignes de contribution.