{"id":142689,"date":"2021-04-26T13:15:00","date_gmt":"2021-04-26T12:15:00","guid":{"rendered":"https:\/\/blog.jetbrains.com\/blog\/2021\/03\/11\/projector-is-out\/"},"modified":"2021-05-17T09:28:28","modified_gmt":"2021-05-17T08:28:28","slug":"projector-is-out","status":"publish","type":"blog","link":"https:\/\/blog.jetbrains.com\/de\/blog\/2021\/04\/26\/projector-is-out\/","title":{"rendered":"Fernzugriff auf Ihre IDE mit Projector"},"content":{"rendered":"\n\n\n<p>Wir k\u00fcndigen die erste Version von Projector an \u2013 ein Tool und Framework, mit dem Sie JetBrains-IDEs und Swing-Applikationen per Fernzugriff \u00fcber Ihr Netzwerk aufrufen k\u00f6nnen.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/03\/Blog_1280x720.png\" alt=\"Projector-Logo\" \/><\/p>\n<p>Wie Sie vielleicht wissen, ist Swing ein grafisches Widget-Toolkit f\u00fcr Java. Alle aktuellen JetBrains-IDEs verwenden Swing, um die Benutzeroberfl\u00e4che zu erstellen. Dies gilt auch f\u00fcr andere IntelliJ-basierte IDEs, wie Android Studio.<\/p>\n<p>Obwohl es im Allgemeinen von Vorteil ist, dass JetBrains-IDEs und Swing-Apps Desktop-Anwendungen sind, gibt es eine Reihe von Sonderf\u00e4llen, wie z.B. Thin-Clients, die einen speziellen Ansatz erfordern. Hier kommt Projector ins Spiel.<\/p>\n<p>Projector ist eine selbstgehostete Technologie, die IntelliJ-basierte IDEs und Swing-basierte Apps auf dem Server ausf\u00fchrt, so dass Sie von \u00fcberall aus mit Browsern und nativen Apps auf sie zugreifen k\u00f6nnen.<\/p>\n<h1><strong>Einsatzbereiche<\/strong><\/h1>\n<p>Es gibt zahlreiche Sonderbedingungen, die die Ausf\u00fchrung einer IDE auf einem Server erfordern k\u00f6nnen. Besonders in gro\u00dfen Unternehmen mit riesiger Infrastruktur sind einige dieser F\u00e4lle h\u00e4ufig anzutreffen. Hier ist eine kurze Liste von Problemen, f\u00fcr die Projector besonders geeignet ist:<\/p>\n<ul>\n<li>Ausf\u00fchrung von Code <strong>nahe der Runtime<\/strong> oder der <strong>Datenbank<\/strong>, um Roundtrips zu reduzieren.<\/li>\n<li><strong>Hochsichere<\/strong> Unternehmensumgebungen.<\/li>\n<li>Besonders <strong>gro\u00dfe Projekte<\/strong>.<\/li>\n<li>Eine lokale Kopie des <strong>Quellcodes<\/strong> ist verboten.<\/li>\n<li><strong>Hardware-Einschr\u00e4nkungen<\/strong> f\u00fcr Benutzer.<\/li>\n<li><strong>Thin-Clients<\/strong>.<\/li>\n<li>Die Verwendung der IDE in einer GNU\/Linux-Umgebung auf Windows-Rechnern oder sogar auf <strong>nicht-konventionellen Betriebssystemen<\/strong> wie ChromeOS.<\/li>\n<li><strong>Der Bedarf, Ihren Computer auszuschalten<\/strong>, w\u00e4hrend Ihre App auf dem Server weiterarbeitet.<\/li>\n<li>Serverseitiges <strong>Remote-Debugging<\/strong> (devtest, devprod).<\/li>\n<li><strong>VM- oder Docker-<\/strong>Images mit Debug-Quellen und einer vorkonfigurierten IDE.<\/li>\n<li>Eine Konfiguration, die <strong>Fernzugriff<\/strong> erfordert.<\/li>\n<\/ul>\n<p><em>Bitte beachten Sie, dass Projector keine kollaborative Entwicklung unterst\u00fctzt. Wenn Sie ein Tool f\u00fcr die Zusammenarbeit ben\u00f6tigen, probieren Sie <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/code-with-me.html\" target=\"_blank\" rel=\"noopener\">Code With Me<\/a> aus. Wir arbeiten au\u00dferdem an einer neuen Remote-Entwicklungsl\u00f6sung, die die Funktionalit\u00e4t von Code With Me und Projector kombiniert. Dies wird helfen, die Probleme mit der Netzwerklatenz weiter zu l\u00f6sen.<\/em><\/p>\n<h1><strong>Quelle \u00f6ffnen<\/strong><\/h1>\n<p>Jeder Aspekt von Projector wird unter einer Open-Source-Lizenz ver\u00f6ffentlicht. Dies ist sehr wichtig f\u00fcr Unternehmen, die eigene L\u00f6sungen auf dieser Technologie aufbauen wollen. Wir verwenden die drei beliebtesten Lizenzen:<\/p>\n<ul>\n<li>Client: MIT-Lizenz (Expat)<\/li>\n<li>Server: GNU GPL v2.0 + Classpath Exception<\/li>\n<li>Dockerfiles: Apache License 2.0<\/li>\n<\/ul>\n<p>Wir laden Sie auch dazu ein, neue Funktionen und Bugfixes \u00fcber GitHub-Pull-Requests beizutragen. Die GitHub-Links zu den einzelnen Projekten finden Sie unten.<\/p>\n<h1><strong>Architektur<\/strong><\/h1>\n<p>Projector ist eine Client-Server-Software. Sie f\u00fchren die IDE auf Ihrem Server aus, und dann k\u00f6nnen Sie sich \u00fcber das Netzwerk verbinden. Die Verbindung zwischen dem Client und dem Server ist extrem schnell und leichtgewichtig. <\/p>\n<p>Sie k\u00f6nnen sich das als eine Remote-Desktop-L\u00f6sung wie VNC vorstellen, aber es werden nur die IDE-Fenster angezeigt und es ist auf maximalen Durchsatz f\u00fcr Java-basierte Anwendungen abgestimmt.<\/p>\n<p>Projector bietet mehrere Optionen zum Einrichten eines Servers oder Clients. <\/p>\n<h1><strong>Client-Apps<\/strong><\/h1>\n<p>Sie k\u00f6nnen entweder einen Browser oder eine native App verwenden, um sich mit der IDE zu verbinden. Die native App bietet eine bessere Funktionalit\u00e4t (sie bietet z.B. Tastenkombinationen), ist aber nur f\u00fcr Desktop-Betriebssysteme verf\u00fcgbar. Derzeit ist ein Browser die einzige Option f\u00fcr mobile Ger\u00e4te, aber wir planen, in Zukunft auch native Clients f\u00fcr mobile Plattformen zu erstellen.<\/p>\n<h2><strong>Web-Client<\/strong><\/h2>\n<p>Das Browser-Erlebnis ist sehr \u00e4hnlich wie bei einer interaktiven Website. Es besteht jedoch die M\u00f6glichkeit, in den Vollbildmodus zu wechseln, der ein desktop\u00e4hnlicheres Erlebnis bietet.<\/p>\n<p>Sie k\u00f6nnen die Eigenschaften des Webclients einstellen, indem Sie die URL-Parameter \u00e4ndern. Auf mobilen Ger\u00e4ten k\u00f6nnen Sie zum Beispiel den Parameter <em>&quot;mobile&quot;<\/em> zur URL hinzuf\u00fcgen, um Overlay-Schaltfl\u00e4chen zu aktivieren, einschlie\u00dflich der M\u00f6glichkeit, eine virtuelle Tastatur zu \u00f6ffnen.<\/p>\n<p>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.<\/p>\n<p>Sie m\u00fcssen 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 <a href=\"https:\/\/github.com\/JetBrains\/projector-client\/tree\/master\/projector-client-web\" target=\"_blank\" rel=\"noopener\">GitHub<\/a> verf\u00fcgbar.<\/p>\n<h2><strong>Native Anwendung<\/strong><\/h2>\n<p>Sie k\u00f6nnen eine native Anwendung f\u00fcr macOS, Windows und Linux verwenden. Die Bin\u00e4rdateien sind <a href=\"https:\/\/github.com\/JetBrains\/projector-client\/releases\" target=\"_blank\" rel=\"noopener\">hier<\/a> verf\u00fcgbar, und die Quellen sind auf <a href=\"https:\/\/github.com\/JetBrains\/projector-client\/tree\/master\/projector-launcher\" target=\"_blank\" rel=\"noopener\">GitHub<\/a> ver\u00f6ffentlicht.<\/p>\n<p>Zus\u00e4tzlich zu den erwarteten Vorteilen wie die Dock\/Taskbar-Integration unterst\u00fctzt diese App Tastenk\u00fcrzel wie Strg+W\/Cmd+W, die im Browser-Client normalerweise nicht verf\u00fcgbar sind.<\/p>\n<h1><strong>Auf der Serverseite<\/strong><\/h1>\n<h2><strong>Python-Installationsskript<\/strong><\/h2>\n<p>Unser <a href=\"https:\/\/github.com\/JetBrains\/projector-installer\" target=\"_blank\" rel=\"noopener\">Installationsskript<\/a> bietet Flexibilit\u00e4t bei der Installation von serverseitigen Komponenten. Dies ist eine eigenst\u00e4ndige Distribution, die derzeit nur f\u00fcr GNU\/Linux-Hosts verf\u00fcgbar ist. Sie k\u00f6nnen w\u00e4hlen, welche IDE Sie installieren m\u00f6chten, zusammen mit deren Version, Sicherheitsoptionen und mehr.<\/p>\n<h2><strong>Docker-Images<\/strong><\/h2>\n<p>Docker ist die einfachste M\u00f6glichkeit, Projector in einer Cloud-Umgebung auszuf\u00fchren. Wir haben <a href=\"https:\/\/github.com\/JetBrains\/projector-docker\" target=\"_blank\" rel=\"noopener\">ein Beispielskript<\/a>, mit dem Sie Docker-Images generieren k\u00f6nnen, die JetBrains-IDEs und Projector enthalten. Damit k\u00f6nnen Sie die IDEs \u00fcberall dort ausf\u00fchren, wo Docker verf\u00fcgbar ist. Die IDE wird ohne GUI und isoliert ausgef\u00fchrt, und Sie m\u00fcssen kein X11 auf dem Server installieren. Das Image ist eigenst\u00e4ndig.<\/p>\n<p>Anstatt DockerHub zu verwenden, ver\u00f6ffentlichen wir vorgefertigte Images \u00fcber unsere benutzerdefinierte Docker-Registry. Mit diesem Snippet k\u00f6nnen Sie zum Beispiel IntelliJ IDEA Community Edition ziehen: <\/p>\n<p><code>docker pull registry.jetbrains.team\/p\/prj\/containers\/projector-idea-c<\/code><\/p>\n<h2><strong>IDE-Plug-in<\/strong><\/h2>\n<p>Nicht zuletzt k\u00f6nnen Sie <a href=\"https:\/\/plugins.jetbrains.com\/plugin\/16015-projector\" target=\"_blank\" rel=\"noopener\">das Plugin<\/a> direkt in Ihrer IDE installieren, ohne dass Sie serverseitige Elemente auf einem separaten Server bereitstellen m\u00fcssen. Mit diesem Plugin ist Ihr Ger\u00e4t der Server. Wie immer finden Sie den Quellcode auf <a href=\"https:\/\/github.com\/JetBrains\/projector-server\/tree\/master\/projector-plugin\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>.<\/p>\n<p>Allerdings ist das Plugin viel weniger isoliert, was bedeutet, dass es zu Interaktionen mit dem Betriebssystem kommen kann. Zum Beispiel k\u00f6nnen wir das globale Men\u00fc auf macOS nicht rendern.<\/p>\n<h1><strong>Individuell anpassen<\/strong><\/h1>\n<p>Projector ist vielmehr eine Technologie als eine Endbenutzerl\u00f6sung. Sie k\u00f6nnen es verwenden, um Ihre eigene Infrastruktur an die Bed\u00fcrfnisse Ihres Unternehmens anzupassen. Ansible? Sicher. Kubernetes? Kein Problem. <\/p>\n<p>Sie k\u00f6nnen alles entwickeln, was Sie wollen \u2013 vorausgesetzt, Sie haben genug technisches Know-how. Der Code ist Open-Source. Sie k\u00f6nnen also \u00e4ndern, was Sie wollen, oder sogar selbst etwas dazu beitragen! Weitere Informationen, zusammen mit dem wichtigsten serverseitigen Code, finden Sie hier auf <a href=\"https:\/\/github.com\/JetBrains\/projector-server\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>.<\/p>\n<p>Projector ist noch eine sehr junge Technologie, aber wir glauben, dass sie das Potenzial hat, eine der besten L\u00f6sungen f\u00fcr den Fernzugriff auf IDEs zu werden. Wir w\u00fcrden uns \u00fcber Ihr Feedback freuen. Sie k\u00f6nnen uns jederzeit \u00fcber <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/PRJ\" target=\"_blank\" rel=\"noopener\">YouTrack<\/a> und <a href=\"https:\/\/twitter.com\/ProjectorJB\" target=\"_blank\" rel=\"noopener\">Twitter<\/a> kontaktieren.<\/p>\n<p>\u2014 Ihr Projector-Team<\/p>\n","protected":false},"author":1132,"featured_media":123883,"comment_status":"closed","ping_status":"closed","template":"","categories":[286,89,6505],"tags":[91,6504,1038],"cross-post-tag":[6284],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/blog\/142689"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/users\/1132"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/comments?post=142689"}],"version-history":[{"count":2,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/blog\/142689\/revisions"}],"predecessor-version":[{"id":142692,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/blog\/142689\/revisions\/142692"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/media\/123883"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/media?parent=142689"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/categories?post=142689"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/tags?post=142689"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/cross-post-tag?post=142689"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}