New Products News Newsletter Projector

Acceda a su IDE en remoto con Projector

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.

Logo de Projector

Como quizás ya sepa, Swing es un kit de herramientas de widgets gráficos para Java. Actualmente, los IDE de JetBrains utilizan Swing para diseñar la IU. Lo mismo sucede con otros IDE, como Android Studio.

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 thin clients, que requieren un trato especial. Aquí es donde Projector entra en acción.

Projector es una tecnología 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és de navegadores o aplicaciones nativas.

Casos de uso

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í tiene una breve lista de problemas que Projector puede resolver a la perfección:

  • Ejecutar código cerca del tiempo de ejecución o la base de datos para reducir las idas y vueltas.
  • Entornos corporativos de alta seguridad.
  • Proyectos muy grandes.
  • Está prohibida la copia local del código fuente.
  • Restricciones de hardware del usuario.
  • Thin clients.
  • Necesidad de ejecutar el IDE en un entorno GNU/Linux en máquinas con Windows o incluso en sistemas operativos no convencionales como ChromeOS.
  • Necesidad de apagar el ordenador mientras la aplicación continúa en funcionamiento en el servidor.
  • Depuración remota del lado del servidor (devtest, devprod).
  • Imágenes de VM o Docker con fuentes de depuración y un IDE preconfigurado.
  • Una configuración que requiera acceso remoto.

Atención: tenga en cuenta que Projector no admite desarrollo colaborativo. Si necesita una herramienta de colaboración pruebe Code With Me. También estamos trabajando en una nueva solución de desarrollo remoto que combina la funcionalidad de Code With Me y Projector. Esto le ayudará a resolver otros problemas de latencia de la red.

Código abierto

Todos los aspectos de Projector se han publicado con una licencia de código abierto. Esto es muy importante para empresas que desean crear soluciones personalizadas a partir de esta tecnología. Utilizamos las tres licencias más populares:

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

También le invitamos a contribuir con nuevas funcionalidades y resolución de errores a través de solicitudes de incorporación de cambios de GitHub. Aquí abajo encontrará enlaces de GitHub a proyectos específicos.

Arquitectura

Projector es un software cliente-servidor. Usted ejecuta el IDE en su servidor, para luego poder conectarse a él a través de la red. La conexión entre el cliente y el servidor es extremadamente rápida y ligera.

Piense que es como una solución de escritorio remoto, como VNC, pero solo muestra las ventanas del IDE y está adaptado específicamente para lograr el máximo rendimiento en aplicaciones basadas en Java.

Projector ofrece múltiples opciones para configurar un servidor o cliente.

Aplicaciones cliente

Puede utilizar un navegador o una aplicación nativa para conectarse al IDE. La aplicación nativa ofrece mejores funcionalidades (atajos de teclado, por ejemplo), pero solo está disponible para sistemas operativos de escritorio. Actualmente, la única opción para los dispositivos móviles es utilizar un navegador, pero también
planeamos crear clientes nativos para plataformas móviles.

Cliente web

La experiencia con el navegador es muy similar a la de utilizar una web interactiva. Sin embargo, existe la opción de entrar en modo pantalla completa, que ofrece una experiencia más similar a la de trabajar desde un ordenador.

Puede controlar las propiedades del cliente web con solo cambiar los parámetros de la URL. Por ejemplo, en dispositivos móviles, puede añadir el parámetro "mobile" a la URL para habilitar los botones superpuestos, incluyendo la capacidad de abrir un teclado virtual.

El cliente web se implementa utilizando HTML5 Canvas API, y debería funcionar en todos los navegadores compatibles con esta API. Se ha probado en Chorme/Chromium, Firefox y Safari.

No tiene que instalar el cliente web en ningún lugar: ya está incluido en la parte de servidor web de Projector. Lo único que tiene que hacer es entrar en la URL. Todo el código está disponible en GitHub.

Aplicación nativa

Puede utilizar una aplicación nativa para macOS, Windows y Linux. Los binarios están disponibles aquí, y las fuentes están publicadas en GitHub.

Además de las ventajas esperadas como integración con barra de tareas/dock, está aplicación es compatible con atajos de teclado como Ctrl+W/Cmd+W, que no suelen estar disponibles en el cliente del navegador.

Lado del servidor

Script de Instalación de Python

Nuestro script de instalación ofrece flexibilidad para instalar componentes del lado del servidor. Esta es una distribución independiente, y actualmente solo está disponible para hosts de GNU/Linux. Puede escoger qué IDE desea instalar, junto con su versión, opciones de seguridad, y más.

Imágenes de Docker

Docker es el modo más sencillo de ejecutar Projector en un entorno en la nube. Tenemos un script de muestra que le permite generar imágenes de Docker que contengan IDE de JetBrains y Projector. Esto le permite ejecutar los IDE allá donde esté disponible Docker. El IDE se ejecutará sin interfaz y de forma aislada, y no tendrá que instalar X11 en el servidor. La imagen estará autocontenida.

En lugar de utilizar DockerHub, publicamos imágenes preconstruidas utilizando nuestro Docker Registry personalizado. Por ejemplo, este fragmento le permite hacer pull en la IntelliJ IDEA Community Edition:

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

Complemento del IDE

Y por último, aunque no menos importante, puede instalar el complemento 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á el código fuente en GitHub.

Sin embargo, el complemento está mucho menos aislado, lo que significa que puede que detecte interacciones con el sistema operativo. Por ejemplo, podemos renderizar el menú global en macOS.

Hágalo usted mismo

Projector es más una tecnología que una solución para el usuario final. Puede utilizarlo para personalizar su propia infraestructura para satisfacer las necesidades de su empresa. Ansible? Sí. Kubernetes? No hay problema.

Puede crear lo que quiera; basta con tener las competencias técnicas necesarias. El código es abierto, así que nada le impedirá modificar todo lo que desee, ¡o incluso contribuir a mejorarlo! Encontrará más información, junto con el código más importante del lado del servidor, aquí en GitHub.

Projector sigue siendo una tecnología muy reciente, pero creemos que tiene el potencial para convertirse en una de las mejores soluciones para el acceso remoto a IDE. Nos encantará recibir sus comentarios. Puede ponerse en contacto con nosotros siempre que quiera a través de YouTrack y Twitter.

— Equipo de Projector

Discover more