New Products News Projector

Fernzugriff auf Ihre IDE mit Projector

Read this post in other languages:

Wir kündigen die erste Version von Projector an – ein Tool und Framework, mit dem Sie JetBrains-IDEs und Swing-Applikationen per Fernzugriff über Ihr Netzwerk aufrufen können.

Projector-Logo

Wie Sie vielleicht wissen, ist Swing ein grafisches Widget-Toolkit für Java. Alle aktuellen JetBrains-IDEs verwenden Swing, um die Benutzeroberfläche zu erstellen. Dies gilt auch für andere IntelliJ-basierte IDEs, wie Android Studio.

Obwohl es im Allgemeinen von Vorteil ist, dass JetBrains-IDEs und Swing-Apps Desktop-Anwendungen sind, gibt es eine Reihe von Sonderfällen, wie z.B. Thin-Clients, die einen speziellen Ansatz erfordern. Hier kommt Projector ins Spiel.

Projector ist eine selbstgehostete Technologie, die IntelliJ-basierte IDEs und Swing-basierte Apps auf dem Server ausführt, so dass Sie von überall aus mit Browsern und nativen Apps auf sie zugreifen können.

Einsatzbereiche

Es gibt zahlreiche Sonderbedingungen, die die Ausführung einer IDE auf einem Server erfordern können. Besonders in großen Unternehmen mit riesiger Infrastruktur sind einige dieser Fälle häufig anzutreffen. Hier ist eine kurze Liste von Problemen, für die Projector besonders geeignet ist:

  • Ausführung von Code nahe der Runtime oder der Datenbank, um Roundtrips zu reduzieren.
  • Hochsichere Unternehmensumgebungen.
  • Besonders große Projekte.
  • Eine lokale Kopie des Quellcodes ist verboten.
  • Hardware-Einschränkungen für Benutzer.
  • Thin-Clients.
  • Die Verwendung der IDE in einer GNU/Linux-Umgebung auf Windows-Rechnern oder sogar auf nicht-konventionellen Betriebssystemen wie ChromeOS.
  • Der Bedarf, Ihren Computer auszuschalten, während Ihre App auf dem Server weiterarbeitet.
  • Serverseitiges Remote-Debugging (devtest, devprod).
  • VM- oder Docker-Images mit Debug-Quellen und einer vorkonfigurierten IDE.
  • Eine Konfiguration, die Fernzugriff erfordert.

Bitte beachten Sie, dass Projector keine kollaborative Entwicklung unterstützt. Wenn Sie ein Tool für die Zusammenarbeit benötigen, probieren Sie Code With Me aus. Wir arbeiten außerdem an einer neuen Remote-Entwicklungslösung, die die Funktionalität von Code With Me und Projector kombiniert. Dies wird helfen, die Probleme mit der Netzwerklatenz weiter zu lösen.

Quelle öffnen

Jeder Aspekt von Projector wird unter einer Open-Source-Lizenz veröffentlicht. Dies ist sehr wichtig für Unternehmen, die eigene Lösungen auf dieser Technologie aufbauen wollen. Wir verwenden die drei beliebtesten Lizenzen:

  • Client: MIT-Lizenz (Expat)
  • Server: GNU GPL v2.0 + Classpath Exception
  • Dockerfiles: Apache License 2.0

Wir laden Sie auch dazu ein, neue Funktionen und Bugfixes über GitHub-Pull-Requests beizutragen. Die GitHub-Links zu den einzelnen Projekten finden Sie unten.

Architektur

Projector ist eine Client-Server-Software. Sie führen die IDE auf Ihrem Server aus, und dann können Sie sich über das Netzwerk verbinden. Die Verbindung zwischen dem Client und dem Server ist extrem schnell und leichtgewichtig.

Sie können sich das als eine Remote-Desktop-Lösung wie VNC vorstellen, aber es werden nur die IDE-Fenster angezeigt und es ist auf maximalen Durchsatz für Java-basierte Anwendungen abgestimmt.

Projector bietet mehrere Optionen zum Einrichten eines Servers oder Clients.

Client-Apps

Sie können entweder einen Browser oder eine native App verwenden, um sich mit der IDE zu verbinden. Die native App bietet eine bessere Funktionalität (sie bietet z.B. Tastenkombinationen), ist aber nur für Desktop-Betriebssysteme verfügbar. Derzeit ist ein Browser die einzige Option für mobile Geräte, aber wir planen, in Zukunft auch native Clients für mobile Plattformen zu erstellen.

Web-Client

Das Browser-Erlebnis ist sehr ähnlich wie bei einer interaktiven Website. Es besteht jedoch die Möglichkeit, in den Vollbildmodus zu wechseln, der ein desktopähnlicheres Erlebnis bietet.

Sie können die Eigenschaften des Webclients einstellen, indem Sie die URL-Parameter ändern. Auf mobilen Geräten können Sie zum Beispiel den Parameter "mobile" zur URL hinzufügen, um Overlay-Schaltflächen zu aktivieren, einschließlich der Möglichkeit, eine virtuelle Tastatur zu öffnen.

Der Web-Client ist mit der HTML5 Canvas API implementiert und sollte in jedem Browser funktionieren, der mit dieser API kompatibel ist. Er wurde auf Chrome/Chromium, Firefox und Safari getestet.

Sie müssen den Web-Client nirgendwo installieren: Er ist bereits im Webserver-Teil von Projector enthalten. Sie brauchen nur noch die URL einzugeben. Der gesamte Code ist auf GitHub verfügbar.

Native Anwendung

Sie können eine native Anwendung für macOS, Windows und Linux verwenden. Die Binärdateien sind hier verfügbar, und die Quellen sind auf GitHub veröffentlicht.

Zusätzlich zu den erwarteten Vorteilen wie die Dock/Taskbar-Integration unterstützt diese App Tastenkürzel wie Strg+W/Cmd+W, die im Browser-Client normalerweise nicht verfügbar sind.

Auf der Serverseite

Python-Installationsskript

Unser Installationsskript bietet Flexibilität bei der Installation von serverseitigen Komponenten. Dies ist eine eigenständige Distribution, die derzeit nur für GNU/Linux-Hosts verfügbar ist. Sie können wählen, welche IDE Sie installieren möchten, zusammen mit deren Version, Sicherheitsoptionen und mehr.

Docker-Images

Docker ist die einfachste Möglichkeit, Projector in einer Cloud-Umgebung auszuführen. Wir haben ein Beispielskript, mit dem Sie Docker-Images generieren können, die JetBrains-IDEs und Projector enthalten. Damit können Sie die IDEs überall dort ausführen, wo Docker verfügbar ist. Die IDE wird ohne GUI und isoliert ausgeführt, und Sie müssen kein X11 auf dem Server installieren. Das Image ist eigenständig.

Anstatt DockerHub zu verwenden, veröffentlichen wir vorgefertigte Images über unsere benutzerdefinierte Docker-Registry. Mit diesem Snippet können Sie zum Beispiel IntelliJ IDEA Community Edition ziehen:

docker pull registry.jetbrains.team/p/prj/containers/projector-idea-c

IDE-Plug-in

Nicht zuletzt können Sie das Plugin direkt in Ihrer IDE installieren, ohne dass Sie serverseitige Elemente auf einem separaten Server bereitstellen müssen. Mit diesem Plugin ist Ihr Gerät der Server. Wie immer finden Sie den Quellcode auf GitHub.

Allerdings ist das Plugin viel weniger isoliert, was bedeutet, dass es zu Interaktionen mit dem Betriebssystem kommen kann. Zum Beispiel können wir das globale Menü auf macOS nicht rendern.

Individuell anpassen

Projector ist vielmehr eine Technologie als eine Endbenutzerlösung. Sie können es verwenden, um Ihre eigene Infrastruktur an die Bedürfnisse Ihres Unternehmens anzupassen. Ansible? Sicher. Kubernetes? Kein Problem.

Sie können alles entwickeln, was Sie wollen – vorausgesetzt, Sie haben genug technisches Know-how. Der Code ist Open-Source. Sie können also ändern, was Sie wollen, oder sogar selbst etwas dazu beitragen! Weitere Informationen, zusammen mit dem wichtigsten serverseitigen Code, finden Sie hier auf GitHub.

Projector ist noch eine sehr junge Technologie, aber wir glauben, dass sie das Potenzial hat, eine der besten Lösungen für den Fernzugriff auf IDEs zu werden. Wir würden uns über Ihr Feedback freuen. Sie können uns jederzeit über YouTrack und Twitter kontaktieren.

— Ihr Projector-Team

image description