Uso regularmente tres ordenadores diferentes (casa, trabajo y viajes). Poder usar un buen IDE (Integrated Development Environment) en la nube me iría de perlas para evitar tener que instalar y configurar un entorno de programación (editor, plugins,…) en cada ordenador. De ahí mi interés en todo lo que haga referencia a editores de código online.
Pero IDEs de verdad, no me interesan aquellos editores en el navegador que sólo ofrecen un editor de texto con, como mucho, syntax highlighting. Quiero un editor en la web que sea comparable (o yo me crea que puede llegar a serlo) a los Eclipse, JetBrains, Visual Studio Code y compañía (aunque no lleguen a ser editores de código inteligentes). Os presento los entornos de programación online más interesantes:
AWS Cloud 9
AWS Cloud 9 es mi primera opción. Ya seguía con atención la evolución de Cloud9 incluso antes de qué Amazon la comprara. AWS Cloud9 es un entorno de programación en la nube que te permite escribir, ejecutar y depurar tu código en el navegador. Como tal, incluye un editor de código pero también un debugger y un acceso a terminal.
Cloud9 viene ya con soporte para los lenguajes más populares, lo que te permite empezar a programar sin tener que configurar nada. Y por supuesto, siendo un producto de Amazon, es muy fácil también escribir código que utilice todos los servicios de Amazon (e.j. puedes crear y testear rápidamente funciones AWS Lambda). Tienes acceso directo a la instancia Amazon EC2 que aloja tu entorno desarrollo. Además, el editor permite la colaboración en tiempo real (ver la imagen que encabeza el post).
Visual Studio Online
Amazon no es la única gran empresa tecnológica que entiende que hay que tener presencia en la nube, también para la propia actividad de desarrollo. De una forma más “light” también Microsoft hace sus pinitos. Microsoft ofrece el editor Monaco, una versión de Visual Studio Code capaz de ejecutarse dentro del contexto del navegador. Stackblitz es otro editor de código online que utiliza VSCode como “motor”. Coder sigue una aproximación diferente. Más que ofrecerte una “versión online” de VS Code, lo que te ofrece es un entorno de desarrollo remoto que viene cargado con Visual Studio Code.
Y el futuro parece aún más prometedor para Visual Studio. Microsoft acaba de anunciar Visual Studio Online, la evolución de intentos anteriores destinados a facilitar la colaboración de programadores remotos con VS Code. Visual Studio Online ofrecerá la misma experiencia que Visual Studio (con todos los complementos y extensiones a los que estás acostumbrados) pero permitiendo el acceso a tus workspaces desde cualquier dispositivo.
Codeanywhere
Codeanywhere es otro competidor fuerte en este espacio. Viene configurado para dar soporte a todo tipo de lenguajes. Aún mejor, Codeanywhere también viene con varios entornos / proyectos preconfigurados. Por ejemplo, puedes programar en PHP pero si el código PHP es para un plugin de WordPress, tienes también la opción de decir que quieres programar un proyecto WordPress y tener soporte específico para ese entorno.
Además, más allá de todas las funcionalidades esperadas, como su nombre indica, Codeanywhere está diseñado para cuando estás de viaje, tienes que tocar algo de tu código y no tienes más remedio que utilizar tu tablet o teléfono para eso. Como podéis ver, es un editor “responsive”.
Editores online que se integran con GitHub
CodeSandbox es un editor online especializado en el desarrollo web. Una funcionalidad muy útil de CodeSandbox es que cada vez que guardas el proyecto, puedes compartir la URL del proyecto y cualquiera, sólo con esa URL, puede acceder a él y modificarlo. Ésta fue de hecho la motivación original que llevó a su creador a empezar el proyecto (más sobre la historia de CodeSandbox en esta entrevista al fundador de CodeSandbox)
Tiene también otras funcionalidades muy interesantes (como el soporte a NPM y la gestión de dependencias) pero la razón que me convenció a incluirlo en esta lista fue su integración perfecta con GitHub. Basta con copiar la URL de tu proyecto en GitHub y copiar esa URL en CodeSandbox para tener un nuevo entorno de programación ligado al proyecto para empezar a modificarlo, y que además se mantendrá actualizado con todos los cambios que otros hagan directamente en GitHub.
GitPod sigue una filosofía similar. Un simple click en la página de una issue, pull request o branch (o prefijando la url de GitHub con ‘gitpod.io#’) y Gitpod lanza un entorno de programación asociado a esa issue o pull request. El editor en ese entorno de programación online es Theia del que hablamos a continuación.
No llega al mismo nivel de integración pero vale la pena que os miréis también GitHub for Atom.
Y, finalmente, mención especial a CodeMirror, un editor de texto para el navegador creado en JavaScript. Fácilmente extensible via su API y sistema de plantillas CSS. La verdad es que, por sí mismo, CodeMirror no es un editor potente pero si la base de otras herramientas más interesantes. Por ejemplo, es el editor que usa GitHub para que puedas crear tus Gists (una de las mejores maneras de compartir código online). Creo que sólo esto es más que suficiente como para concederle a CodeMirror un lugar en esta lista.
Editores online para Eclipse
Eclipse se toma muy en serio la misión de proporcionar un editor de código online basado en Eclipse. De hecho, el Eclipse Cloud development proyecto es el punto de entrada a todas las iniciativas Eclipse en este campo.
Y es que no hay un editor online para Eclipse, hay tres, que compiten y se complementan:
- Eclipse Che intenta ser la traducción online del Eclipse al qué estás ya acostumbrado.
- Eclipse Orion es una visión más tipo “tabula rasa” que busca proporcionar la mejor experiencia con un editor más nativo para la web y que usa tecnologías más “modernas” como NodeJS y JavaScript. A cambio, tiene menos funcionalidades y soporta menos lenguajes que Che.
- Eclipse Dirigible es más una plataforma en la nube que intenta facilitar la creación de software empresarial. Ayuda por ejemplo en la modelización de la base de datos la generación de la interfaz de usuario, la creación de servicios REST,…
¿Te ha quedado claro la diferencia entre los tres editores online de Eclipse? ¿No? Pues a mi tampoco. Échale un ojo a este FAQ sobre las diferencias entre Eclipse Che, Eclipse Orion y Eclipse Dirigible a ver si te aclara las cosas.
La buena noticia es que como mínimo están mirando de estar cada vez mejor alineados. Che va a usarse como la infraestructura básica sobre la que otros van a poder ejecutarse (Orion y Dirigible pero también otros editores como Theia, basado en el language server protocol, ver más abajo) para así combinar las ventajas de cada uno. Por ejemplo, la imagen enseña el plugin de Dirigible ejecutándose en Che.
IDEs sociales
Si tu objetivo principal al usar un entorno de programación en la nube es el compartir código con otros como parte de un proceso de aprendizaje y construcción colectiva, entonces Glitch es tu opción. Glitch es una plataforma para programar colaborativamente donde cada proyecto tiene además asociado una cuenta para su alojamiento web. Con Glitch cualquiera puede crear, compartir y reutilizar proyectos de otros (lo que en Glitch se llama “remix”, la idea es que mires qué proyectos te gustan y los puedas utilizar como punto de partida para el tuyo propio).
Glitch fue creado por Fog Creek Software (que acaba de cambiar su nombre a Glitch, lo que dice mucho sobre hasta qué punto creen en el producto).
Y si no te gusta Glitch, puedes probar Plunker. CodePen es otra opción, más especializado en la creación de código front-end. CodePen viene con una visualización en tiempo real del resultado del código que estás tocando. CodeSandbox, del que ya hemos hablado antes, también se puede ver como un ejemplo de programación social. Runkit es otra alternativa que se especializa en desarrollo para node ofreciendo un entorno “sandboxed” para JavaScript con paquetes npm preinstalados.
Por último, Repl.it viene con algunas funcionalidades muy útiles para compartir código. Por ejemplo, en el contexto de un curso, el profesor puede organizar un entorno virtual a compartir con los alumnos. O aún, mejor puedes incrustar directamente un trozo de código (y ejecutarlo) directamente en tu web, como se ve a continuación:
Language server protocol
No, no es un editor. Pero el language server protocol (LSP) es cada vez más el componente clave para crear nuevos IDEs online.
La idea detrás de LSP es simple. Para simplificar el esfuerzo de crear un nuevo entorno de programación, hay que separar lo que es la edición del código de la semántica de ese mismo código. Si el editor no tiene qué entender la semántica de cada lenguaje de programación, podemos ahorrar mucho esfuerzo y esforzarnos en proporcionar la mejor experiencia de edición. Eso sí, entonces, este editor agnóstico (en lo que se refiere al lenguaje) necesita un servidor específoco para el lenguaje que utiliza el usuario. Este servidor proporcionará todos los servicios que el cliente no es capaz de proporcionar (ej. verificar la corrección del programa). Cliente y servidor se sincronizan gracias a un protocolo de comunicación específico. El Language Server Protocol es la estandarización de este protocolo de mensajes entre el editor y el servidor.
Tenemos ya un servidor LSP para casi cualquier lenguaje (ver esta lista de servidores LSP) con lo que crear un nuevo editor de código online puede usar LSP para olvidares de implementar ningún tipo de soporte específico a cada lenguaje individual. Esto es así incluso para lenguajes gráficos.
El porqué no uso ningún IDE online
Como decía al principio, me encantaría programar todo el tiempo sin salir de mi navegador. Pero no lo hago. Sigo con mi Eclipse y mis Jetbrains instalados.
¿Porqué? La razón es muy simple (¡y triste!): soy un programador muy malo. Y necesito toda la ayuda del mundo para configurar, escribir y depurar mi código. Para la gente como yo, los IDEs clásicos son todavía la mejor opción, también por su gran ecosistema de plugins (incluyendo plugins externos) que permiten fácilmente tener la configuración y soporte óptimo para el tipo exacto de proyecto que te ocupe.
Pero hay esperanza. A lo mejor mejoro ni nivel de programación. O, más probablemente, los editores de código online seguirán mejorando a pasos agigantados.
Gracias por este artículo.
Yo soy más de NetBeans que de Eclipe. Conoces si hay alguna iniciativa libre/gratuita de un IDE-cloud basado en NetBeans?
Gracias de nuevo.
Pues me temo que no hay ninguna (que me corrija alguien si me equivoco). Si no te gustan los basados en Eclipse tendráns que probar alguno de los otros que menciono en el post, a ver si alguno te convence.
Hola, muchas gracias por la informacion. Me podrias indicar si en alguno de ellos puedo desarrollar java web?, con servlet y eso? seria de gran ayuda saberlo ya que se me estropeo el computador y solo me quedan los navegadores y los ides de la nube. Y trabajo en varios proyectos. Gracias.
No tengo una respuesta exacta pero yo empezaría por probar con Eclipse Che
Conocéis https://github.com/Codiad/Codiad/wiki
yo lo comencé a utilizar hace muy poco en un server dedicado que tengo y tambien en un servidor casero que tengo en casa montado en una Raspberry PI usando Nginx + PHP + MariaDB y de momento va muy bien. Me gustaría conocer otras opiniones.
Hola, conoces algun programa o pagina, donde se puede transcribir el codigo en un lenguaje y que me lo tradusca a otro lenguaje? desde ya gracias
Así traductor “universal” no conozco ninguno. Si buscas una combinación de lenguajes específica (ej. de Ruby a Java) sí que podrás encontrar alguna cosa
Buenos días,
creo que hay muchos lenguajes y posiblemente las parejas de traducción ‘desde-hasta’ podrían ser numerosas pero por si te sirve de algo, te dejo aquí alguna muestra:
de C# hacia Visual Basic .Net
https://converter.telerik.com/
de Java hacía Kotlin
https://www.codeconvert.ai/java-to-kotlin-converter
de JavaScript hacia TypeScript
https://www.codeconvert.ai/javascript-to-typescript-converter
no sé si entendí bien la pregunta pero espero que te pueda ayudar en lo que buscas.
Saludos
Excelente aporte, no existe mal Programador, no existe persona que no conozca todo, yo aun estoy en la universidad, pero ya trabajo en programación, ahora voy a utilizar uno de estos ides online para ejecutar mis proyectos de forma remota o poder avanzar en algo mientras tenga tiempo libre en el trabajo. No decaigas que la comunidad depende de ti,
un abrazo desde paraguay
Mi IDE favorito es Codelobster – http://www.codelobster.com
Gracias maestro, por el aporte y por dejar claro que para cosas más complejas y específicas mejor el ide instalado. Soy nuevo en la programación, estudiante en formación.