Desarrollo móvil multiplataforma
 

¿Programas web? Apuesta por JavaScript

Cada día lo tengo más claro, la web se está programando en JavaScript.

La evolución de una tecnología

Originalmente JavaScript fue un lenguaje introducido en los navegadores web para poder dotar a las páginas web de ciertas funcionalidades “auxiliares”. Gracias a él se podían hacer cosas como validación simple de formularios, mostrar la hora en tiempo real o hacer que una línea de texto se moviese por la pantalla (ooooh!). Era un lenguaje que estaba ahí y al que nadie tomaba muy en serio, empezando por los navegadores que hacían implementaciones del mismo bastante particularizadas, lo que por otro lado provocaba que fuese bastante pesado ponerse con él.

Desde mi punto de vista fue Google quien nos empezó a mostrar las posibilidades reales de este lenguaje allá por 2004 mostrándonos joyas como GMail o Google Maps , donde conceptos como AJAX empezaron a hacerse muy populares en las comunidades de programadores web. También empezó a popularizarse el concepto web 2.0 donde los usuarios interactuaban mucho más con la web gracias a que éstas ofrecían un mayor número de funcionalidades y un mayor dinamismo. Todo ello conseguido gracias a JavaScript.

Todavía quedaba un gran problema a solventar, y era que la tecnología no había gozado de una estandarización inicial y era muy complicado hacer código compatible con cada uno de los navegadores de la época. Fue entonces cuando empezaron a surgir librerías que nos ayudarían a lidiar con esta complejidad, como son Prototype, jQuery, dojo, MooTools, y un largo etcétera. Gracias a estas librerías, la mayoría de desarrolladores web quedaron impresionados de lo fácil que era incluir funcionalidades realmente avanzadas de una forma relativamente sencilla y sin tener que preocuparse por las particularidades de cada navegador.

Tras estas librerías base han aparecido grandes framworks para la programación de aplicaciones web llenos de widgets listos para utilizar y que consiguen llevar la funcionalidad de las aplicaciones de escritorio a la web. Ejemplos de estos frameworks son ExtJS, jQuery UI o Dojo Toolkit. En este punto es donde descubrimos que gracias a este lenguaje y a estas librerías, podríamos trasladar una ingente cantidad de aplicaciones de escritorio a nuestro navegador.

Toda esta evolución nos ha puesto bien claro a cualquier desarrollador web que JavaScript puede dar mucho de sí. Aunque sea de forma maquillada como nos lo pueden ofrecer las librerías y framework mencionados, sabemos que gracias a JavaScript podremos crear auténticas aplicaciones dentro de nuestro navegador.

Pero esto no es nada comparado con lo que se avecina. Pienso que JavaScript va a tener muchísima más relevancia en el mundo del desarrollo web del que ha tenido nunca gracias a tres nuevos actores: HTML5 , node.js y aplicaciones móviles multiplataforma.

HTML5

Quien se haya adentrado un poco en la nueva tecnología HTML5, habrá comprobado que va más allá de una reestructuración del etiquetado. Es verdad que aporta nuevas formas de estructurar el contenido de la web, añadiendo nuevos controles de formulario y nuevas etiquetas para mejorar la información semántica de una web. Pero la especificación completa de HTML5 no se queda ahí.

HTML5 conlleva otras mejoras muchísimo más importantes y de mayor calado, como pueden ser la persistencia de datos, SQL en el navegador, tratamiento avanzado de ficheros, canvas, websockets, tratamiento de vídeo y audio, …. ¿y cómo se acceden a todas esas funcionalidades? A través de APIs expuestas vía JavaScript.

Gracias a HTML5, los ordenadores se están convirtiendo en auténticos sistemas operativos, y estos sistemas operativos se programan con JavaScript.

node.js

Esta tecnología sí que está marcando la diferencia de cómo vemos a día de hoy el lenguaje JavaScript. Si pensabas que únicamente podías utilizar este lenguaje en el lado del cliente, node.js nos permite llevarlo al lado del servidor.

Gracias a esta tecnología es posible hacer aplicaciones completamente en javascript, sin necesidad de apoyarse en otro lenguaje de programación. Pero no te confundas, esta tecnología va más allá de la simple “comodidad” de utilizar un único lenguaje de programación.

Gracias a node.js, es posible compartir ámbito de variables entre el servidor y el cliente, haciendo que ambos se comuniquen transparentemente y sin necesidad de utilizar variables de sesión ni cookies. Además, el servidor es realtime lo que nos permitirá sacar todo el partido a los websockets de HTML5 de forma directa. Esta funcionalidad no es trivial conseguirla en un típico servidor Apache.

Todavía le queda bastante camino por recorrer, pero hay que admitir que está siendo toda una revolución.

Aplicaciones móviles multiplataforma

Para terminar, un último campo en el que JavaScript está siendo muy relevante es en la aplicación de aplicaciones para móviles. No solo hablo de adaptar aplicaciones web a dispositivos móviles, cosa de la que se encargan muy bien librerías como jQuery mobile o Sencha Touch. Hablo de poder crear aplicaciones “nativas” utilizando JavaScript.

Existen soluciones como PhoneGap o Titanium que nos permiten desarrollar nuestra aplicación utilizando únicamente HTML, CSS3 y JavaScript, para luego poder generar aplicaciones para distintos sistemas móviles: Android, iOS, Blackberry,…

El truco consiste en que tu aplicación realmente es un navegador web donde incrustas todo el código, y estas plataformas se encargan de ofrecerte una API JavaScript para poder hacer uso del hardware específico como pueden ser los acelerómetros, la cámara, el GPS o los contactos.

Obviamente estas plataformas son más limitadas que las aplicaciones nativas reales de cada sistema operativo móvil, pero gracias a ellas se pueden conseguir aplicaciones multiplataforma utilizando tecnologías web, utilizando una vez más JavaScript.

Conclusión

Creo que queda claro mi punto de vista y creo que no me equivoco al pensar que JavaScript se está reinventando a sí mismo alcanzando cada vez un papel muy importante en el mundo del desarrollo. Si todavía no te has puesto con él, te recomiendo encarecidamente que empieces ya.

Si eres perezoso y ya eres bueno en otros lenguajes como Java, Python o Objective-C, existen compiladores que generan código java script a partir de estos lenguajes. GWT o DART para Java, CoffeeScript para Pyhton o Capucchino para Objective-C son algunos ejemplos.

Pero si lo que quieres es entender toda la potencia de este lenguaje, te recomiendo 3 libros esenciales: