{"id":128514,"date":"2021-03-29T17:54:57","date_gmt":"2021-03-29T16:54:57","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=blog&#038;p=128514"},"modified":"2021-03-29T17:54:57","modified_gmt":"2021-03-29T16:54:57","slug":"acceda-a-su-ide-en-remoto-con-projector","status":"publish","type":"blog","link":"https:\/\/blog.jetbrains.com\/es\/blog\/2021\/03\/29\/acceda-a-su-ide-en-remoto-con-projector\/","title":{"rendered":"Acceda a su IDE en remoto con Projector"},"content":{"rendered":"<p>Hoy anunciamos el primer lanzamiento de Projector: una herramienta y marco de trabajo para ejecutar IDE de JetBrains y aplicaciones de Swing en remoto en su red.<\/p>\n<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/03\/Blog_1280x720.png\" alt=\"Logo de Projector\" \/><\/p>\n<p>Como quiz\u00e1s ya sepa, Swing es un kit de herramientas de widgets gr\u00e1ficos para Java. Actualmente, los IDE de JetBrains utilizan Swing para dise\u00f1ar la IU. Lo mismo sucede con otros IDE, como Android Studio.<\/p>\n<p>Aunque en general resulta ventajoso que los IDE de JetBrains y las aplicaciones de Swing sean de escritorio, existen algunos casos poco frecuentes, como los <i>thin clients<\/i>, que requieren un trato especial. Aqu\u00ed es donde Projector entra en acci\u00f3n.<\/p>\n<p>Projector es una tecnolog\u00eda autoalojada que ejecuta en el servidor IDE basados en IntelliJ y aplicaciones basadas en Swing, para que pueda acceder a ellos desde cualquier lugar a trav\u00e9s de navegadores o aplicaciones nativas.<\/p>\n<h1><strong>Casos de uso<\/strong><\/h1>\n<p>Existe una amplia variedad de condiciones especiales en las que puede que necesite ejecutar un IDE en un servidor. Algunos de estos problemas son especialmente habituales en empresas grandes con una enorme infraestructura. Aqu\u00ed tiene una breve lista de problemas que Projector puede resolver a la perfecci\u00f3n:<\/p>\n<ul>\n<li>Ejecutar c\u00f3digo <strong>cerca del tiempo de ejecuci\u00f3n<\/strong> o la <strong>base de datos<\/strong> para reducir las idas y vueltas.<\/li>\n<li>Entornos corporativos de <strong>alta seguridad<\/strong>.<\/li>\n<li>Proyectos <strong>muy grandes<\/strong>.<\/li>\n<li>Est\u00e1 prohibida la copia local del <strong>c\u00f3digo fuente<\/strong>.<\/li>\n<li><strong>Restricciones de hardware<\/strong> del usuario.<\/li>\n<li><strong>Thin clients<\/strong>.<\/li>\n<li>Necesidad de ejecutar el IDE en un entorno GNU\/Linux en m\u00e1quinas con Windows o incluso en <strong>sistemas operativos no convencionales<\/strong> como ChromeOS.<\/li>\n<li><strong>Necesidad de apagar el ordenador<\/strong> mientras la aplicaci\u00f3n contin\u00faa en funcionamiento en el servidor.<\/li>\n<li><strong>Depuraci\u00f3n remota<\/strong> del lado del servidor (devtest, devprod).<\/li>\n<li>Im\u00e1genes de <strong>VM o Docker<\/strong> con fuentes de depuraci\u00f3n y un IDE preconfigurado.<\/li>\n<li>Una configuraci\u00f3n que requiera <strong>acceso remoto<\/strong>.<\/li>\n<\/ul>\n<p><em>Atenci\u00f3n: tenga en cuenta que Projector no admite desarrollo colaborativo. Si necesita una herramienta de colaboraci\u00f3n pruebe <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/code-with-me.html\" target=\"_blank\" rel=\"noopener\">Code With Me<\/a>. Tambi\u00e9n estamos trabajando en una nueva soluci\u00f3n de desarrollo remoto que combina la funcionalidad de Code With Me y Projector. Esto le ayudar\u00e1 a resolver otros problemas de latencia de la red.<\/em><\/p>\n<h1><strong>C\u00f3digo abierto<\/strong><\/h1>\n<p>Todos los aspectos de Projector se han publicado con una licencia de c\u00f3digo abierto. Esto es muy importante para empresas que desean crear soluciones personalizadas a partir de esta tecnolog\u00eda. Utilizamos las tres licencias m\u00e1s populares:<\/p>\n<ul>\n<li>Client: MIT License (Expat)<\/li>\n<li>Servidor: GNU GPL v2.0 + Classpath Exception<\/li>\n<li>Dockerfiles: Apache License 2.0<\/li>\n<\/ul>\n<p>Tambi\u00e9n le invitamos a contribuir con nuevas funcionalidades y resoluci\u00f3n de errores a trav\u00e9s de solicitudes de incorporaci\u00f3n de cambios de GitHub. Aqu\u00ed abajo encontrar\u00e1 enlaces de GitHub a proyectos espec\u00edficos.<\/p>\n<h1><strong>Arquitectura<\/strong><\/h1>\n<p>Projector es un software cliente-servidor. Usted ejecuta el IDE en su servidor, para luego poder conectarse a \u00e9l a trav\u00e9s de la red. La conexi\u00f3n entre el cliente y el servidor es extremadamente r\u00e1pida y ligera. <\/p>\n<p>Piense que es como una soluci\u00f3n de escritorio remoto, como VNC, pero solo muestra las ventanas del IDE y est\u00e1 adaptado espec\u00edficamente para lograr el m\u00e1ximo rendimiento en aplicaciones basadas en Java.<\/p>\n<p>Projector ofrece m\u00faltiples opciones para configurar un servidor o cliente. <\/p>\n<h1><strong>Aplicaciones cliente<\/strong><\/h1>\n<p>Puede utilizar un navegador o una aplicaci\u00f3n nativa para conectarse al IDE. La aplicaci\u00f3n nativa ofrece mejores funcionalidades (atajos de teclado, por ejemplo), pero solo est\u00e1 disponible para sistemas operativos de escritorio. Actualmente, la \u00fanica opci\u00f3n para los dispositivos m\u00f3viles es utilizar un navegador, pero tambi\u00e9n<br \/>\nplaneamos crear clientes nativos para plataformas m\u00f3viles.<\/p>\n<h2><strong>Cliente web<\/strong><\/h2>\n<p>La experiencia con el navegador es muy similar a la de utilizar una web interactiva. Sin embargo, existe la opci\u00f3n de entrar en modo pantalla completa, que ofrece una experiencia m\u00e1s similar a la de trabajar desde un ordenador.<\/p>\n<p>Puede controlar las propiedades del cliente web con solo cambiar los par\u00e1metros de la URL. Por ejemplo, en dispositivos m\u00f3viles, puede a\u00f1adir el par\u00e1metro &quot;mobile&quot; a la URL para habilitar los botones superpuestos, incluyendo la capacidad de abrir un teclado virtual.<\/p>\n<p>El cliente web se implementa utilizando HTML5 Canvas API, y deber\u00eda funcionar en todos los navegadores compatibles con esta API. Se ha probado en Chorme\/Chromium, Firefox y Safari.<\/p>\n<p>No tiene que instalar el cliente web en ning\u00fan lugar: ya est\u00e1 incluido en la parte de servidor web de Projector. Lo \u00fanico que tiene que hacer es entrar en la URL. Todo el c\u00f3digo est\u00e1 disponible en <a href=\"https:\/\/github.com\/JetBrains\/projector-client\/tree\/master\/projector-client-web\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>.<\/p>\n<h2><strong>Aplicaci\u00f3n nativa<\/strong><\/h2>\n<p>Puede utilizar una aplicaci\u00f3n nativa para macOS, Windows y Linux. Los binarios est\u00e1n disponibles <a href=\"https:\/\/github.com\/JetBrains\/projector-client\/releases\" target=\"_blank\" rel=\"noopener\">aqu\u00ed<\/a>, y las fuentes est\u00e1n publicadas en <a href=\"https:\/\/github.com\/JetBrains\/projector-client\/tree\/master\/projector-launcher\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>.<\/p>\n<p>Adem\u00e1s de las ventajas esperadas como integraci\u00f3n con barra de tareas\/dock, est\u00e1 aplicaci\u00f3n es compatible con atajos de teclado como Ctrl+W\/Cmd+W, que no suelen estar disponibles en el cliente del navegador.<\/p>\n<h1><strong>Lado del servidor<\/strong><\/h1>\n<h2><strong>Script de Instalaci\u00f3n de Python<\/strong><\/h2>\n<p>Nuestro <a href=\"https:\/\/github.com\/JetBrains\/projector-installer\" target=\"_blank\" rel=\"noopener\">script de instalaci\u00f3n<\/a> ofrece flexibilidad para instalar componentes del lado del servidor. Esta es una distribuci\u00f3n independiente, y actualmente solo est\u00e1 disponible para hosts de GNU\/Linux. Puede escoger qu\u00e9 IDE desea instalar, junto con su versi\u00f3n, opciones de seguridad, y m\u00e1s.<\/p>\n<h2><strong>Im\u00e1genes de Docker<\/strong><\/h2>\n<p>Docker es el modo m\u00e1s sencillo de ejecutar Projector en un entorno en la nube. Tenemos <a href=\"https:\/\/github.com\/JetBrains\/projector-docker\" target=\"_blank\" rel=\"noopener\">un script de muestra<\/a> que le permite generar im\u00e1genes de Docker que contengan IDE de JetBrains y Projector. Esto le permite ejecutar los IDE all\u00e1 donde est\u00e9 disponible Docker. El IDE se ejecutar\u00e1 sin interfaz y de forma aislada, y no tendr\u00e1 que instalar X11 en el servidor. La imagen estar\u00e1 autocontenida.<\/p>\n<p>En lugar de utilizar DockerHub, publicamos im\u00e1genes preconstruidas utilizando nuestro Docker Registry personalizado. Por ejemplo, este fragmento le permite hacer pull en la IntelliJ IDEA Community Edition: <\/p>\n<p><code>docker pull registry.jetbrains.team\/p\/prj\/containers\/projector-idea-c<\/code><\/p>\n<h2><strong>Complemento del IDE<\/strong><\/h2>\n<p>Y por \u00faltimo, aunque no menos importante, puede instalar <a href=\"https:\/\/plugins.jetbrains.com\/plugin\/16015-projector\" target=\"_blank\" rel=\"noopener\">el complemento<\/a> directamente en su IDE sin tener que implementar elementos del lado del servidor en un servidor por separado. Con este complemento, su dispositivo es el servidor. Como siempre, encontrar\u00e1 el c\u00f3digo fuente en <a href=\"https:\/\/github.com\/JetBrains\/projector-server\/tree\/master\/projector-plugin\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>.<\/p>\n<p>Sin embargo, el complemento est\u00e1 mucho menos aislado, lo que significa que puede que detecte interacciones con el sistema operativo. Por ejemplo, podemos renderizar el men\u00fa global en macOS.<\/p>\n<h1><strong>H\u00e1galo usted mismo<\/strong><\/h1>\n<p>Projector es m\u00e1s una tecnolog\u00eda que una soluci\u00f3n para el usuario final. Puede utilizarlo para personalizar su propia infraestructura para satisfacer las necesidades de su empresa. Ansible? S\u00ed. Kubernetes? No hay problema. <\/p>\n<p>Puede crear lo que quiera; basta con tener las competencias t\u00e9cnicas necesarias. El c\u00f3digo es abierto, as\u00ed que nada le impedir\u00e1 modificar todo lo que desee, \u00a1o incluso contribuir a mejorarlo! Encontrar\u00e1 m\u00e1s informaci\u00f3n, junto con el c\u00f3digo m\u00e1s importante del lado del servidor, aqu\u00ed en <a href=\"https:\/\/github.com\/JetBrains\/projector-server\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>.<\/p>\n<p>Projector sigue siendo una tecnolog\u00eda muy reciente, pero creemos que tiene el potencial para convertirse en una de las mejores soluciones para el acceso remoto a IDE. Nos encantar\u00e1 recibir sus comentarios. Puede ponerse en contacto con nosotros siempre que quiera a trav\u00e9s de <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/PRJ\" target=\"_blank\" rel=\"noopener\">YouTrack<\/a> y <a href=\"https:\/\/twitter.com\/ProjectorJB\" target=\"_blank\" rel=\"noopener\">Twitter<\/a>.<\/p>\n<p>\u2014 Equipo de Projector<\/p>\n","protected":false},"author":1086,"featured_media":123888,"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\/es\/wp-json\/wp\/v2\/blog\/128514"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/users\/1086"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/comments?post=128514"}],"version-history":[{"count":1,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/blog\/128514\/revisions"}],"predecessor-version":[{"id":128515,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/blog\/128514\/revisions\/128515"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/media\/123888"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/media?parent=128514"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/categories?post=128514"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/tags?post=128514"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/cross-post-tag?post=128514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}