Desde hace tiempo me preocupa que buena parte del trabajo y esfuerzo que mucha gente hemos empleado en los años pasados para hacer aplicaciones educativas sea esfuerzo inútil. Viendo el uso que los profesores hacen de los ordenadores pareciera que lo que no está en el navegador no existe. Es más, un altísimo porcentaje de los profesores nunca han navegado por los menús: arrancan el ordenador, y entre los iconos del escritorio suelen ir al navegador casi directamente.

Sin embargo, realizar aplicaciones realmente útiles y vivas en el navegador significa programar usando javascript, lo que es un dolor de xxxxx. Nada que ver con realizar aplicaciones para el escritorio. Buscando soluciones, es decir: realizar aplicaciones para el navegador, que tuvieran la vitalidad del escritorio y que me permitieran programar sin sudar sangre con javascript, empecé a probar GWT (Google Web Toolkit), hará algo más de un año. Los señores de Google puede que quieran conquistar el mundo, pero son realmente brillantes en muchos de sus proyectos. GWT permite que programes  en Java casi como si estuvieras trabajando en un aplicación estándar, con las herramientas de profiling y depuración de Java (mezcladas con algo del mundo web, como hojas de estilo para el aspecto de la aplicación). Y cuando acabas tu aplicación le das a un botón y te proporciona la aplicación en javascript optimizado para los navegadores web más importantes.

Nunca me ha entusiasmado Java como lenguaje de programación, me sigue pareciendo sobredimensionado y algo lento para el escritorio (por no hablar sobre sus mentiras a la hora de hacer programación orientada a objetos). Sin embargo, hay que reconocer que el código es limpio, relativamente fácil de leer y bastante elegante, por no hablar de la multitud de patrones y documentación existente para ayudarte. En fin, que al final he hecho un par de cosillas, en las que hice el backend con CakePHP (un framework espléndido, excelente a la hora de trabajar con php sin código espaguetti y que la gestión de bases de datos o autenticación sea un “paseo”) y el frontend con Java. Esto, gracias a la magia de GWT se convierte en una buena aplicación tipo 2.0 en el navegador con todo el ajax del mundo y sin haber escrito una línea en javascript por mi parte. En fin, que parecía haber encontrado un camino para ir haciendo cosas nuevas que los profesores podían usar en el navegador.

Sin embargo, no acabo de estar a gusto, meter php + servidor web en el ordenador, y programar en Java…. no me acaba de convencer. Y estos días voy y me encuentro algo llamado Pyjamas. Y encima va un tipo y hace Pyjamas-desktop, y encima resulta que ya está todo esto en Debian (GWT es software libre pero no está en Debian por su enorme dificicultad a la hora de compilarlo y luchar con la mezcla de tecnologías que usa). Y ¿qué es Pyjamas? Pues así, usando palabras no muy exactas: GWT en Python. Es decir: ahora haces la aplicación en Python, le das al compilador de Pyjamas y la tienes en javascript. Pero es que encima con Pyjamas-desktop puedes ejecutar la aplicación como si fuera una aplicación de escritorio. Es decir, puedes tomar una aplicación de escritorio ya hecha en python-gtk , convertirla en aplicación web para usarla en el navegador, y después, si quieres, puedes convertirla en aplicación de escritorio para usarla en Gnome, donde fue creada ¡o en KDE e incluso Windows!. A ver, lo repito: un sólo código fuente hecho como una aplicación de escritorio de Gnome, que puede convertirse en aplicación web, y en aplicación para cualquier escritorio disponible (para esta última posibilidad el proyecto usa de fondo la magia de Webkit)

En resumen, que la cosa está muy movida en estos tiempos, con proyectos interesantísimos que cada día te vuelven un poco más loco, te hacen darte cuenta de lo poco que sabes y te animan a seguir investigando y aprendiendo. Al final con un poco de suerte todo parece converger, y puedes estudiar un sólo lenguaje, digamos Python o Java, y programar para la web y/o para el escritorio.


6 Respuestas a “Saliendo del…. escritorio ¿o no?”

  1. 1 danicafe

    Discrepo, hoy en día programar interfaces web con HTML Javascript es muy sencillo, y más aún si se tiene en mente el uso a través de un navegador estándar, quiero decir, cualquiera menos IE. Si se saca a IE de las especificaciones – y es realmente sencillo, solo tienes que indicar al usuario que se instale otro navegador gratis, o mejor aún, ponerlo por defecto en la corporación de que se trate – todo el proceso es mucho más rápido que hacerlo con GTK por ejemplo, que ese sí, es un verdadero dolor, o hacerlo con QT que duele menos pero no deja de fastidiar.

    Además, si restringes la interfaz a XUL (Firefox/Mozilla) o bien a HTML SVG Tag Canvas JavaScript ( Firefox/Mozilla/WebKit/Apple/Google), puedes realizar cosas realmente sorprendentes e interactivas en muy poco tiempo.

    Y si rizas el rizo para optimizar, olvidate de Apache y mete un servidor web “custom” que no te cierre el socket cada dos por tres: tienes todo lo que necesitas para hacer software de escritorio y compartible a la vez.

  2. 2 José L. Redrejo Rodríguez

    Daniel: estás de coña, no?
    Cualquiera de estos ejemplos:
    http://code.google.com/intl/es-ES/webtoolkit/examples/
    llevarían varios días o incluso semanas en javascript puro y duro. Por no decir nada de las diferencias que luego hay entre navegadores, incluso entre los que “cumplen” los estándares.
    Usando gwt o pyjamas, programarlo y, sobre todo: depurarlo es sencillo, se puede hacer en un día y las diferencias entre navegadores te traen al pairo.

  3. 3 Mario Nisa

    Hola José Luis;

    Uffff, acabo de leer dicha entrada y cada vez tengo más confusión a la hora de elegir entre una metodología, un lenguaje de programación, un entorno de desarrollo, etc. para hacer una aplicación. Empecé con CakePHP para hacer la aplicación web pero finalmente me he decantado por KumbiaPHP http://www.kumbiaphp.com/blog/ Es un framework con MVC al igual que cakePHP pero con todo el soporte en castellano. Tiene grupos, foro, wiki y hasta IRC. La metodología es similar a la de CakePHP pero tienes algunos aspectos que me gustan más a la hora de programar.

    Dichos framework facilitan la programación de aplicaciones web, ahorrando muchísimo tiempo de desarrollo y haciéndolas muy fáciles de mantener. Todo lo contrario me he encontrado con el desarrollo de aplicaciones web con Struts Spring Hibernate, un motón de ficheros, configuraciones, normas…para empezar a programar.
    Ahora leo Python, Pyjamas y me tiro de los pelos…

    Estoy totalmente de acuerdo con lo movida que está la cosa y que cada día te acabas volviendo más loco…También me he dado cuanta de lo poco que sé y de lo mucho que me motiva leer dichas entradas para aprender algo más.

    Ahora me toca un poco criticar (aunque no se este el sitio) ya que me parece mentira que no tenga ni idea de desarrollar aplicaciones web después de acabar ITI de Sistemas….A ningún profesor de la universidad le he escuchado hablar del MVC, de Struts, GWT, Hibernate, CakePHP, Apache, Spring, Tomcat, y mucho menos de programar en Python ….que viendo código es fácil entenderlo pero otra cosas es programar….Así es normal que aunque seamos ingenieros, el trabajo sea escaso y poco remunerado sino tenemos experiencia, ya que ni hemos visto php….Eso sí, utilizar punteros, programar en ensamblador, depurar en borland 3.1, programar en MIPS, saber para que sirve cada pin del un conector rs-232, utilizar comandos AT…. lo sabemos pero que muy bien. En definitiva, que a este paso seguiremos sin atribuciones….

    Un saludo.

  4. 4 danicafe

    No, hombre, no me has entendido bien, con lo que discrepo es con esto:

    “Sin embargo, realizar aplicaciones realmente útiles y vivas en el navegador significa programar usando javascript, lo que es un dolor de xxxxx. Nada que ver con realizar aplicaciones para el escritorio. ”

    Es decir, que no pienso que hacer aplicaciones para el escritorio (las interfaces) sea más sencillo. Lo otro, pues claro, un buen toolkit es lo mejor que hay.

    Por cierto, que aparte del de Google, el set de Widgets de Yahoo ( YUI ) está muy bien, no depende de Java, es “multinavegador” y libre. Para aplicaciones más sencillas “JQuery” es una delicia, muchas aplicaciones no necesitan realmente de mucho más y salvo por Internet Explorer, las diferencias entre el resto de navegadores utilizables ( Opera y los basados en WebKit ) son mínimas.

  5. 5 m4kdev

    algo parecido vi hace tiempo: ‘Wt’ un Framework de desarrollo web en C
    http://www.webtoolkit.eu/
    si te gusta programara en C en su web hay unos ejemplos muy interesantes.

  6. 6 jesús R.

    Pues ni discrepo ni todo lo contrario, pero suena bien lo q comentáis…. Y cuando oigo hablar dl Webkit, recuerdo viejos tiempos…¡Ay!. Saludos y me alegra veros tan chinches como siempre…



Licencia de Creative Commons

El contenido completo de este wiki está publicado bajo la licencia Creative Commons License.

Entradas RSS y Comentarios RSS