JavaScript y el Internet de las Cosas

por Ricardo Vega el 18/03/2016

Hace unas pocas semanas hablábamos de Python y del uso que le íbamos a dar para desarrollar aplicaciones reales dentro del Internet de las Cosas. Ya te había comentado que el otro pilar en el que nos íbamos a apoyar desde el punto de vista de la programación era Javascript.

Si te dedicas al mundo de la informática, sobran las presentaciones, pero, incluso si tu relación con ésta disciplina es simplemente a nivel usuario, estoy totalmente convencido que alguna vez has oído hablar de este lenguaje de programación debido a su gran importancia en todo aquello relacionado con la Web.

Javascript IoT

Concretamente, vamos a trabajar en dos direcciones:

  • Por un lado, vamos a emplear Node.js para crear servicios, jugar con diferentes APIs o, incluso, atacar directamente a dispositivos.
  • Por el otro, emplearemos algún framework para generar interfaces de usuario y todo lo que tiene que ver con la experiencia de dicho usuario en nuestra aplicación.

El Javascript "tradicional"

El mundo de Javascript es muy cambiante por lo que he decidido no realizar un mini-curso como hice con Python ya que, sinceramente, en esta ocasión, prefiero tener una visión general de las opciones disponibles de forma que cada uno seleccione aquellas herramientas según lo vaya considerando oportuno.

Más en particular, en cuanto a la parte más visual manejaremos ReactJS o Angular para generar interfaces de usuario. He manejado otras librerías y frameworks, pero creo que su ámbito de aplicación es muy específico a determinados casos y no quiero perder el foco en lo general para que así, todas las enseñanzas que adquieras, las puedas aplicar directamente sobre tus propios proyectos.

React y Angular

Otro aspecto importante que debemos tener en cuenta es la existencia de forma paralela de React-Native e Ionic, frameworks ambos dedicados a la generación de aplicaciones móviles de forma sencilla gracias al uso de ReactJS y Angular respectivamente.

Repito, de momento al menos, no entra dentro de mis objetivos profundizar en este blog en el desarrollo de aplicaciones móviles o en frameworks javascript sino que son herramientas que veremos por encima y usaremos de forma muy superficial para vitaminar la parte visual de nuestros desarrollos ya que considero que el Internet de las Cosas necesita de la intereacción humano-máquina y por tanto creo que, buenas interfaces de usuario son parte de buenas aplicaciones IoT.

Node.js: Javascript en el lado del servidor

Si nos movemos al lado del servidor, emplearemos Node.js y, una vez más, bajo este paragüas nos podemos encontrar casi con cualquier cosa; desde herramientas dedicadas a la robótica hasta librerías específicas para comunicaciones cliente-servidor en tiempo real.

Por ello, en lo que me queda de post, me gustaría dar una pinceladas sobre qué es Node.js para así, en próximos artículos, empezar a entrar en materia con configuraciones reales.

Node y Javascript

Gracias al proyecto Node.js tenemos Javascript en el servidor. Si no lo sabes ya, aprovecho esta ocasión para explicarte dos términos que emplearé con cierta frecuencia en otras entradas. Todo lo que son comunicaciones cliente-servidor, normalmente, se puede diferenciar y separar claramente precisamente en la parte "servidor" y el cliente. A estas dos "piezas" las llamamos backend y frontend respectivamente, presentando cada una serie de particulares que da lugar al uso de herramientas totalmente distintas (aunque las últimas tendencias ponen en jaque algunas de mis afirmaciones).

Para que te quede más claro, podemos poner el ejemplo de una página web. El backend, funcionando en el servidor, se encarga de recoger y contestar a las llamadas que reciba, comunicarse con la base de datos o realizar ciertas operaciones de control y modificación de datos por poner solo unos pocos ejemplos, mientras que el frontend sería tu navegador web o tu móvil, que se descargan cada vez que accedes a una web una serie de contenido con el que pintan la información que reciben del backend.

Una vez echa esta aclaración de terminología, ya puedo decir tranquilamente que Javascript desde sus inicios, ha sido un lenguaje a ejecutar en el navegador, por tanto en el frontend, pero, en 2009, con la llegada de Node.js, podemos emplear javascript también en el backend. Es decir, es importante quedarse con esta idea, Node.js es Javascript en el lado del servidor.

Las librerías en Node.js se llaman módulos y para su gestión empleamos una herramienta llamada npm. Es importante entender que podemos usar Node para desarrollar nuestros propios programas y de echo, existe una gran cantidad de herramientas escritas en Node.js orientadas a la instalación en nuestro ordenador personal gracias a las cuales nuestros flujos de trabajo mejorarán considerablemente.

Javascript e IoT

Precisamente, en el siguiente post, instalemros Node.js en nuestro ordenador y crearemos un sencillo proyecto en el que tendremos que valernos de algunas de estas herramientas escritas en Node y cuya instalación es totalmente gestionable desde npm.

Tengo que aclararte de nuevo que con este post iniciamos una serie de contenidos que buscan generar pruebas de concepto (PoCs) y aplicaciones reales sobre el paradigma del Internet de las Cosas y en ningún caso van a sustituir a otros posts donde me paro a dar mi opinión sobre ciertos análisis, noticias y detalles. La idea es diversificar el contenido de forma que se retroalimente entre sí.

Como siempre, te agradecería enormemente que compartieras esta entrada con tus seguidores a través de tus Redes Sociales.

Espero haber picado tu curiosidad sobre Node.js con este post.

¡Nos vemos la próxima semana!

Apoya al blog


Si te ha gustado este artículo, valora apoyarme económicamente a través de Patreon, una plataforma de Micro-mecenazgo con la que puedes hacerme un donativo que ayude a la continuidad del blog. Una pequeña ayuda significa mucho. 😃

Permanezcamos en contacto!


¿Quieres enterarte de todas las novedades del sector? ¿Te gustaría trabajar conmigo? ¡Puedes contactar conmigo de forma muy sencilla!