No soy un desarrollador al uso. No me siento atraído por un lenguaje o tecnología, ni por su belleza intrínseca, ni por la teórica potencia de su diseño o sintaxis, sino por la aplicación práctica y real de los mismos para construir cosas. Cosas reales.
Aún sigo asistiendo atónito a luchas infantiles sobre la calidad de tal o cual lenguaje, librería, framework o sistema de control de versiones. Idioteces. Casi todas las tecnologías me parecen interesantes, pero, últimamente, he de reconocer que hay una que me llama la atención mucho más que el resto: node.js
Node.js es una librería de lectura y escritura, orientada a eventos, que se ejecuta sobre V8, el rapidísimo interprete de JavaScript de Google. Simplificando: permite ejecutar JavaScript en servidor con capacidad de consultar y persistir datos por cualquier canal de lectura/escritura como un fichero,un socket o una base de datos. Simplificando de nuevo: con las nuevas capacidades de lectura y escritura, aparece la posibilidad de crear aplicaciones completas desarrolladas completamente en JavaScript.
[no_blockquote text=»JavaScript es un lenguaje de juguete que sólo utilizan bohemios, gente de mal vivir o, peor aún… ¡diseñadores!» text_color=»» title_tag=»h3″ width=»» line_height=»» background_color=»» border_color=»» show_quote_icon=»yes» quote_icon_color=»» quote_icon_size=»»]
«¿Y qué?» -pensaréis muchos- «JavaScript es un lenguaje de juguete que sólo utilizan bohemios, gente de mal vivir o, peor aún… ¡diseñadores!«. Puede ser, yo antes creía algo parecido, pero os contaré el proceso mental que me llevo a convencerme de que estaba equivocado.
The path of Bo: el camino del guerrero
Ya he comentado que, para mi la tecnología no es el fin, sino el camino. Así que, os contaré donde empezó el camino que me llevo a node.js: movilidad. Creo que el futuro está en los dispositivos móviles y que las nuevas aplicaciones serán móviles desde su concepción.
El gran problema de la movilidad es la variedad de plataformas existentes: iOS, Android, RIM, Windows Mobile… Un equipo pequeño puede hacer grandes cosas en el sector móvil, pero es imposible que pueda asumir el desarrollo multiplataforma.
Pero aparece HTML5 y, con el, un montón de nuevas funcionalidades (base de datos local, posibilidad de trabajar offline, webworkers, websockets, canvas…) que permiten crear aplicaciones increíbles casi tan potentes como las nativas, pero basadas en el navegador. Un navegador que, en el caso de las dos plataformas principales, además está basado en el mismo motor: Webkit, compatible con una gran mayoría de esas funcionalidades avanzadas.
¿De verdad se necesita una aplicación móvil nativa? Yo creo que el 99% de las aplicaciones móviles actuales se podrían hacer con HTML5, ahorrando costes y ampliando el mercado de las mismas.
Además, existen aplicaciones como PhoneGap que empaquetan una aplicación HTML5 para que se distribuya como una aplicación nativa en los markets de todas esas plataformas, haciendo prácticamente indistinguible para el usuario las aplicaciones nativas y las desarrolladas con HTML5.
Una vez convencido de que HTML5 ha revolucionado el desarrollo móvil y comenzar a desarrollador con el… ¿Adivináis como se puede trabajar con sus nuevas funcionalidades? Efectivamente, JavaScript.
Y al aprender JavaScript en serio como parte del proceso que te llevará a dominar HTML5, es donde empiezas a ver todo el sentido a node.js porque ¿No os parece elegante y revolucionario poder utilizar -por primera vez en el desarrollo web- el mismo lenguaje de programación en el cliente y en el servidor?
Mucho más sobre node.js
Por supuesto, node.js es mucho más que JavaScript ejecutado en servidor. Su diseño permite crear aplicaciones ultraescalables, al estar basado en programación asíncrona y orientado a eventos en vez de a hilos de ejecución. Podéis aprender muchas más cosas geniales sobre node.js en este genial artículo del amigo Gimenete.
Bonilla, no tienes ni idea: conclusión
Siempre hay alguien que piensa distinto que tú. Las críticas constructivas son positivas y yo no intento adoctrinar sobre el uso de node.js. He intentado explicar como he llegado hasta el y porque me gusta desde una perspectiva personal.
No soy un gurú, pero tampoco hay que confundir el intento de concreción -sólo intento, que este artículo ya va por las 1000 palabras- con la falta de unos conocimientos técnicos mínimos:
- Sí, ya sé que si se aplica el mismo paradigma de programación en Java, por ejemplo, esta es tan rápida o más que node.js y consume la misma memoria o menos.
- También admito que la idea de «JavaScript en el servidor» no es nueva y que ya hubo otros intentos antes.
- Reconozco que querer desarrollador con el mismo lenguaje en cliente y servidor es algo muy personal y subjetivo. Y no tiene porque ser lo más óptimo.
- Sé que hay aplicaciones para móviles con todo el sentido del mundo que sean nativas, como los que hacen un uso intensivo de los gráficos o de las posibilidades del dispositivo en si. Cuando digo que la mayoría de aplicaciones pueden hacerse con HTML5, me refiero a las típicas aplicaciones corporativas que sólo manejan formularios, listados y gráficos estadísticos.
- Y sí, no hay una compatibilidad uniforme de las características en los navegadores actuales. Es más, la gran mayoría de la base instalada de navegadores de escritorio, aún no son compatibles con HTML5.
Siempre habrá peros a cualquier stack tecnológico que alguien elija, pero este me parece un buena base de partida para el desarrollo de aplicaciones móviles. Estoy expectante por conocer las propuestas y alternativas de la gente en los comentarios.
Bola Extra
- Cientos de recursos sobre node.js
- 3 libros gratis sobre node.js
- Un chapuzon de node.js
- Entendiendo node.js
- Cloud9: un IDE para node.js
- Nodejitsu: hosting de aplicaciones node.js
- Primeros pasos en OS X y Linux