JetBrains es la empresa que está detrás de algunos de los IDE más populares, como IntelliJ IDEA, PyCharm y PhpStorm. Incluso Android Studio, la especie de IDE interno de Google para el desarrollo de Android, se basa en IntelliJ.

Si bien los IDE de IntelliJ son populares por una razón (sonbuenos), a veces pueden ser un poco pesados. IntelliJ y Android Studio pueden consumir muchos recursos simplemente por ser abiertos, por ejemplo. Y si estás compilando algo, van a utilizar incluso más. Tampoco puedes (todavía) ejecutar cosas de JetBrains en dispositivos móviles, ya que JetBrains no tiene compilaciones ARM de fácil acceso. Entonces, ¿qué sucede si no tienes una computadora potente, o ni siquiera tienes una computadora? Normalmente, aquí es donde buscarías otros IDE que funcionen en ARM. Pero JetBrains tiene una especie de solución, y se llama JetBrains Projector.

¿Qué es un proyector?

Probablemente hayas oído hablar de escritorio remoto o VNC antes. Te permite interactuar gráficamente con una computadora a través de una red local o incluso de Internet. JetBrains Projector funciona un poco como un escritorio remoto, pero sin algunas de las desventajas. Para usar JetBrains Projector, necesitas una computadora en algún lugar de Internet para alojarlo. Puede ser una instancia de AWS o un servidor doméstico. Luego puedes conectarte a él desde cualquier navegador compatible, incluidos Chrome y Firefox para dispositivos móviles. Pero en lugar de mostrar un escritorio completo y enviar una señal de video de ese escritorio a un cliente conectado, JetBrains Projector envía la información necesaria para que el cliente muestre un IDE como si lo estuviera mostrando localmente. Esto significa que no hay compresión ni escala de resolución, por lo que el IDE parece casi nativo. Además, JetBrains Projector no se limita solo a los IDE oficiales de JetBrains. Siempre que tengas un IDE que se base estrechamente en uno de JetBrains, puedes usarlo con JetBrains Projector. Eso incluye Android Studio.

¿Por qué un proyector?

La razón más importante por la que podrías querer hacer desarrollo remoto es la que mencioné en la introducción: ¿Qué pasa si no tienes una computadora potente basada en x86? Podrías comprar una semipotente específicamente para el trabajo de desarrollo, o podrías poner en marcha un servidor en la nube y usar JetBrains Projector. También puede ser útil si solo quieres descargar los requisitos de recursos. Por ejemplo, tengo una computadora portátil para juegos bastante potente con un i7-9750H y 32 GB de RAM. Eso es suficiente incluso para los grandes proyectos con los que me ocupo. Pero si quiero hacer algo más además del desarrollo que también requiere muchos recursos, comomirando YouTube¿Estás jugando a un juego? Entonces las cosas empiezan a desmoronarse. Pero tengo un servidor Ryzen 7 5800X con 32 GB de RAM. Así que instalé JetBrains Projector en él. Ahora puedo abrir una nueva ventana de Chrome y conectarme a él desde mi computadora portátil sin preocuparme por hacer malabarismos con los recursos. El servidor también se compila mucho más rápido que mi computadora portátil, por lo que es una situación en la que todos ganan.

¿Cómo es el uso de un proyector?

JetBrains Projector está diseñado para alojarse en una máquina Linux. Eso no significa que no puedas ejecutarlo en macOS o en Windows con WSL, pero es posible que te encuentres con algunos problemas extraños debido a eso. Para configurarlo, todo lo que necesitas hacer es dirigirte alrepositorio de GitHub de Projector Installery seguir las instrucciones que se encuentran allí. Te guiarán a través de la instalación de las dependencias y la configuración de un IDE. Incluso hay algunos pasos para la resolución de problemas de WSL si los necesitas. Luego, puedes conectarte a la dirección de tu servidor usando el puerto y el token correctos (si configuraste uno), y ahora tienes un IDE ejecutándose en tu dispositivo sin ninguna de las complicaciones.

Desarrollo de Android

Soy un desarrollador de Android, por lo que, si bien podría usar IntelliJ IDEA para el desarrollo, Android Studio tiende a funcionar mejor. Si bien JetBrains Projector admite IDE de terceros, ahora es tan simple como usar la interfaz de línea de comandos incorporada para descargarlos e instalarlos. Sin embargo, sigue siendo bastante simple. Para usar Android Studio con JetBrains Projector, todo lo que tiene que hacer es descargar y extraer Android Studio en algún lugar sensato. Luego, puede agregarlo manualmente a Projector a través de la línea de comandos especificando la ruta. También hay otro problema con el desarrollo de Android y Projector: ejecutar aplicaciones. Sin nada adicional, puede codificar aplicaciones y ver vistas previas en Projector, pero no puede usar un emulador ni conectarse a un dispositivo real para ejecutar y depurar aplicaciones. ¿O sí? Es casi como si Google esperara que sucediera este tipo de escenario porque ADB puede conectarse a un servidor remoto a través de Internet. Todo lo que se necesita es un túnel SSH desde el cliente hasta el servidor Projector. Configuré Android Studio en el proyector para que no intente administrar ADB y use el puerto 5038. Luego, simplemente uso algún tipo de cliente SSH (OpenSSH, plink, etc.) para crear un túnel que reenvía el servidor ADB que se ejecuta localmente en el puerto 5037 al servidor en el puerto 5038. ¡Fácil!

Un túnel SSH y X para el proyector JetBrains

Si quieres más detalles sobre cómo hacer que Android Studio y la tunelización SSH funcionen, consulta estedocumento de GitHubde Joaquim Verges. Una nota sobre Android Studio y otros IDE de terceros basados ​​en JetBrains: no puedes actualizarlos desde la pantalla del proyector. Tendrás que acceder de forma remota al servidor directamente y actualizarlos desde allí. Asegúrate de que la instancia del proyector correspondiente esté detenida antes de hacerlo.

Android Desarrollo de Android

Como JetBrains Projector se ejecuta en un navegador y se puede conectar desde algo como un teléfono Android, como un ejemplo completamente aleatorio, quería probar algo. Android 11 introdujo la capacidad dehabilitar ADB inalámbricodirectamente desde el dispositivo. Si bien algunos fabricantes expusieron la configuración antes de eso, no está disponible para todos los dispositivos certificados por Google siempre que tengan Android 11 o posterior. Si bien la depuración inalámbrica está pensada para usarse desde una computadora, no tiene por qué ser así. Aplicaciones comoShizukudemuestran que es posible en Android 11 conectarse con ADB a su dispositivo... desde su dispositivo, sin siquiera pensar en usar una computadora. Si bien Shizuku usa esto para permitir que las aplicaciones ejecuten operaciones elevadas, creo que probablemente pueda ver hacia dónde va esto. ¡Así que hice una aplicación! No sé si alguna vez la haré pública, pero es bastante simple. Tengo una biblioteca SSH junto con un binario ADB ARM64. Uso el binario ADB para conectarme al dispositivo que estoy usando, luego uso la biblioteca SSH para crear un túnel de reenvío desde mi dispositivo al servidor del proyector. Y finalmente, lo uso para almacenar y ejecutar las URL del proyector. ¡Bam, desarrollo para Android... desde Android! Cada vez que no estoy en casa pero quiero hacer algo de trabajo de desarrollo de Android, puedo sacar miSamsung Galaxy Tab S7.Tengo un teclado Bluetooth y un mouse Bluetooth (nota al margen: si estás usando el proyector,realmentequerrás usar un mouse o un panel táctil. No funciona bien con la entrada táctil), así que puedo desarrollar y depurar sin necesidad de cambiar de dispositivo y sin tener que cargar con una computadora portátil mucho más pesada.

Problemas

JetBrains Projector aún se encuentra en una etapa inicial de desarrollo, por lo que no es perfecto.

  1. A veces hay un pequeño retraso al responder a cosas como desplazarse y arrastrar, y los controles pueden volverse torpes.
  2. De forma aleatoria, al visualizar el código de la biblioteca (ya sea descompilado o en la vista de código fuente), el peso de la fuente se vuelve muy pesado y todo se retrasa. Sin embargo, es posible que esto se haya solucionado al momento de escribir esto.
  3. Algunos complementos no funcionarán correctamente. Como no se trata de una transmisión de video directa, los complementos como los navegadores integrados no mostrarán nada.
  4. No hay compatibilidad con servidores X y probablemente no la habrá. Esto puede dificultar el desarrollo de aplicaciones de escritorio y de navegador, pero siempre puedes usar un túnel SSH con reenvío de X y un servidor X local si realmente lo necesitas.
  5. A veces, la interfaz se bloquea y es necesario actualizar la página o incluso reiniciar el servicio del servidor para que vuelva a funcionar.

Y hay más. Pero, ¿todo eso es un factor decisivo? Ciertamente, no para mí. Estoy perfectamente bien con una experiencia un poco menos pulida (después de todo, uso Android Studio Canary), especialmente si eso significa que puedo descargar todo el trabajo de compilación a otra computadora e incluso desarrollar para mi tableta desde mi tableta.


Incluso con sus problemas, JetBrains Projector me sigue gustando mucho. Permite desarrollar desde un dispositivo móvil, mueve la carga de recursos de una computadora local a una remota y, además, es genial. Sé que otros IDE, como Visual Studio, te permiten descargar la compilación a una computadora remota, pero eso aún requiere que tengas el IDE instalado y ejecutándose localmente. Personalmente, estoy muy emocionado por ver hacia dónde va JetBrains Projector a partir de ahora porque ya es bastante increíble en este momento. Con suerte, podrán solucionar algunos de los problemas que describí anteriormente, pero incluso ahora, Projector debería ser seguro de usar para proyectos listos para producción. Si quieres probar JetBrains Projector por ti mismo,aquí está el enlace nuevamenteal instalador y la guía de configuración inicial. Si quieres configurar Android Studio en Projector,aquí está ese enlace nuevamentetambién.