Java, editores colaborativos de código y compiladores en línea


¿Cuál es la mejor forma de ayudar a un novato que tiene problemas con un programa Java? agreguemos una par de características:

  • el novato está en otro lugar, físicamente alejado de donde te encuentras.
  • no queremos solicitar permisos “especiales” en la red que nos conecta a Internet.

Una de las primeras alternativas es utilizar medios como el correo electrónico o almacenamiento en la nube; es decir compartir el código fuente. Lamentablemente esta alternativa tiene algunas limitaciones como las siguientes:

  • quien revisa tiene muchas dificultades para leer el código, principalmente por que la herramienta utilizada no brinda las facilidades necesarias como por ejemplo: indentación o resaltado de sintaxis, por mencionar sólo un par. ¿Han leído código Java enviado en el texto de un email? o ¿a través de un mensaje de chat?
  • hay que usar mayor tiempo para encontrar los errores. Tal vez los errores de sintaxis sean los más obvios, pero los errores en la lógica del programa serán siempre los más completos.
  • imposibilidad de encontrar errores relacionados con el entorno de desarrollo. ¿Y si el error no está en el código? Tal vez el error se encuentre en una mal configuración del IDE que usamos, confusión entre JDK y JRE, etc., no olvidemos que usuario neófitos en programación.
  • complejidad para incluir explicaciones. Al no contar, con todas las facilidades que un IDE posee, como por ejemplo con números en cada una de las líneas del código, el indicar en donde están las fallas es un reto que exige que empleemos muchas más palabras. Ejemplo: la condición del if (el que tiene la siguiente forma if (a = 2) { .. ) no es correcta ya el operador de comparación es el ==.

Existen otras alternativas que se pueden emplear y que sin lugar a dudas ayudan en la búsqueda de respuesta a la pregunta plantea. Las he clasificado según su propósito en:

  • editor colaborativo de texto, es decir que permiten editar un documento simultáneamente por varios usuarios.
  • ide web, que permite editar, compilar y ejecutar programas, pero no el trabajo colaborativo.
  • ide web colaborativo, igual que el anterior con la diferencia que posee medios para realizar trabajo colaborativo.
  • emuladores de máquinas virtuales con interfaz web, aplicaciones que emulan a un sistema operativo y que poseen: mecanismos de administración de archivos, editores de código y terminal.

Finalmente por cada uno de las alternativas menciono al menos una aplicación, sus características vistas como ventajas y algunas desventajas que he podido encontrar. Ésta lista no es de ninguna manera ni completa ni está finalizada, sólo resumen un búsqueda que he realizado.

Nombre Tipo Ventajas Desventajas
TitanPad editor colaborativo de texto
  • No se necesita crear una cuenta para empezarlo a usar.
  • No es necesario compartir el documento (por defecto es público).
  • El editor posee líneas para cada una de las filas.
  • La sintaxis no se resalta y la indentación es opcional.
  • No existe opciones para compilar/ejecutar el código.
ideone.com ide web
  • No es necesario suscripción.
  • Resaltado de sintaxis.
  • Números en las líneas del editor.
  • Es posible descargar o copiar el código
  • Existe un mecanismo para el ingreso de datos.
  • Soporta más de 60 lenguajes de programación.
  • Se puede escribir comentarios, no directamente en el código sino al estilo post de un blog
  •  El mecanismo de ingreso de datos es poco intuitivo para alguien que recién está empezando.
  • No existe autocompletado de sintaxis.
  • Aparentemente no es posible trabajar con varias clases en diferentes archivos
codingground ide web
  • No es exclusivo para Java y soporta otros lenguajes.
  • No es necesario suscripción.
  • Resaltado de sintaxis.
  • Números en las líneas del editor.
  • Se puede compartir el proyecto.
  • Es posible trabajar con varias clases
  • Existe un terminal que parece ser bastante completo. Ejecuté comandos como ls, cd, java, javac, pwd, git clone.
  • Se puede clonar proyectos publicados en git.
  • Se puede guardar e importar proyectos desde varias fuentes: Git, Google Drive, DropBox, One Drive
  • Existen un conjunto de tutoriales que se puede seguir.
  • El proceso de compilación no toma en cuenta la ruta del archivo que muestra el editor, sino que usa el directorio del terminal. Es decir usando comando nos dirigimos hacia otro directorio y enviamos a compilar y obtendremos errores de archivo no encontrado.
  • No es existe mecanismo para recibir comentarios.
 coderpad ide web colaborativo
  • Soporta varios lenguajes de programación
  • Existe la posibilidad de iniciar un google Hang outs.
  • Resaltado de sintaxis.
  • Números en las líneas del editor.
  • Es posible compartir el editor.
  • Es de pago.
  • No se puede tener más de una clase.
  • Si queremos usar la demostración tenemos que tomar en cuenta que existe un control. Si terminas un trial y quieres volver a ingresar aparece un mensaje que te lo impide (control vía cookies)
codebunk ide web colaborativo
  • Soporta varios lenguajes de programación
  • Resaltado de sintaxis.
  • Números en las líneas del editor.
  • Es posible compartir el editor.
  • Es posible grabar un “vídeo” que muestra la construcción del programa.
  • Es de pago.
  • Las opciones colaborativas únicamente están disponibles una vez se realice el pago.
  • No es posible tener varias clases abiertas de forma simultánea.
  • El nombre de la clase no es editable.
 kobra editor colaborativo de texto
  • Es posible transmitir audio y vídeo.
  • Soporta varios lenguajes de programación
  • Resaltado de sintaxis.
  • Números en las líneas del editor.
  • Es de pago
  • Las opciones colaborativas están disponibles cuando se compre el servicio.
 cloud9 emulador de máquinas virtuales con interfaz web
  • Emula a un computador con Ubuntu.
  • Soporta Java a través de comandos por el terminal.
  • Posee un servidor Web para ejecutar aplicaciones Web.
  • Soporta varios lenguajes de programación
  • Resaltado de sintaxis.
  • Números en las líneas del editor.
  • Autocompletado de sintaxis mientras se escribe.
  • Integración con GitHub y Bibucket.
  • Varios opciones del IDE: Full, Minimal, tipo Sublime.
  • Posee sinippets de código, algo así como los shortcuts de Netbeans.
  • Es pago, aunque la versión gratuita tiene las prestaciones suficientes para alguien que empieza.
 koding emulador de máquinas virtuales con interfaz web
  • Soporta varios lenguajes de programación
  • Resaltado de sintaxis.
  • Números en las líneas del editor.
  • Autocompletado de sintaxis mientras se escribe.
  • Posee sinippets de código, algo así como los shortcuts de Netbeans.
  • Posee un terminal bastante completo que permite integrarse con repositorios Git.
  • Vídeo chat (beta) para trabajo colaborativo.
  • Es pago, aunque la versión gratuita tiene las prestaciones suficientes para alguien que empieza (1 GB de RAM, 3GB de disco y 1CPu).
codeanywhere  emulador de máquinas virtuales con interfaz web
  • Permite seleccionar entre Ubuntu y CentOS
  • Soporta varios lenguajes 75 lenguajes.
  • Resaltado de sintaxis.
  • Varias opciones de personalización.
  • Consola de terminal.
  • Compartir código.
  • Trabajo colaborativo.
  • Visualización de diferencias tipo GIT.
  • Entornos de desarrollo per-construidos.
  • Es de pago, la versión gratuita tiene 2GB de disco y 256 de RAM.

De seguro existen otras herramientas que aún no conozco, por eso este post aún no está cerrado. Otro tema pendiente son las pruebas de las características colaborativas, por ahora sólo hice pruebas con koding, veamos como me va en el mundo real, con estudiantes novatos.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s