¿Por qué usar Javascript para el IoT?
iNUBO
Artículo original en https://www.sitepoint.com/javascript-internet-things/
JavaScript ha demostrado ser un gran lenguaje web tanto en el lado del cliente como del lado del servidor, pero ¿por qué tiene potencial en el Internet de las Cosas (IoT)?
Hay un gran nivel de entusiasmo por JavaScript y el IoT que es genial (bueno saber que no estoy solo en esta pasión), pero muchos desarrolladores hacen una pregunta muy razonable - ¿por qué JavaScript? ¿Cuáles son las ventajas de usar JavaScript con Internet de las cosas? Decidí que sería útil para explorar este tema en un poco más de detalle y poner un montón de mis pensamientos por escrito.
Gran parte de Internet ya habla JavaScript
Toda la idea de Internet de las Cosas es sencilla. Queremos conectar una gama de nuevos dispositivos a Internet para que puedan hablar con servidores y dispositivos de todo el mundo. ¿En qué idioma pueden hablarse nuestras páginas web y aplicaciones web ahora mismo? JavaScript. Tiene sentido extender la misma plataforma estándar a Internet de las Cosas, comunicándose con una gama más amplia de dispositivos que utilizan ese mismo lenguaje.
Podemos compartir funcionalidad
La capacidad de JavaScript para estar en todas partes es enorme. Al conectar una red de dispositivos a su servidor, tenerlos todos hablando el mismo idioma hace la vida más fácil. Si tiene un gran número de dispositivos conectados que entienden JavaScript y tiene un servidor que ejecuta Node.js, ha reducido la complejidad y puede compartir funciones que realizan funciones similares en diferentes dispositivos. Digamos que tienes una lógica empresarial en tu aplicación que necesitas reutilizar para diferentes dispositivos y respuestas de servidor. Con JavaScript, puede reutilizar las mismas funciones para llamadas a diferentes dispositivos con facilidad: construya una vez y vuelva a usar.
Bibliotecas, complementos y API existentes
JavaScript tiene una gama de bibliotecas existentes, plugins y API, muchos de los cuales pueden ser utilizados en Internet de las cosas. Mientras que los plugins de jQuery de la antigüedad no son los más reutilizables para el código del lado no cliente, hay un mundo en evolución de los módulos npm en JavaScript que son reutilizables para una multitud de soluciones en el cliente, servidor y más allá.
Las bibliotecas de utilidades de JavaScript como Underscore.js , lodash , traverse y Async pueden ser perfectas para usar en un rango de situaciones comunes a través de diferentes dispositivos. Hay algunas funciones muy potentes en los módulos anteriores que serían útiles para proyectos IoT.
Otro ejemplo de un gran módulo JavaScript que es perfecto para IoT es Socket.io : un módulo que proporciona comunicación en tiempo real basada en eventos a través de múltiples dispositivos.
En lugar de necesitar construir una serie de nuevas bibliotecas y plugins para algunas de estas cosas básicas, podemos reutilizar y desarrollar aún más las soluciones existentes en uso en la web hoy para implementaciones completamente nuevas.
JavaScript es genial en las aplicaciones impulsadas por eventos
JavaScript es bastante bueno en aplicaciones impulsadas por eventos. Estos son los tipos de aplicaciones en las que cada dispositivo escucha varios eventos y responde cuando ocurren eventos que le preocupan. Socket.io es genial en esto.
El nodo tiene el "bucle de eventos". Aunque no es realmente en el ámbito de este artículo para explicar esto en detalle, nos permite ejecutar una serie de tareas sin necesidad de esperar a que cada tarea se termine antes de pasar a la siguiente. Podemos recibir y responder a eventos, y luego esperar una devolución de llamada de cada evento que nos notifique una vez que esté completo. Esto significa que podemos responder a los eventos a medida que suceden, haciendo malabares muchas tareas simultáneamente a medida que vienen. Múltiples dispositivos también pueden responder a los mismos eventos. Esto funciona muy bien en la Internet de las cosas.
Imaginemos que tienes una casa habilitada para Internet con un jacuzzi elegante que se está llenando de agua mientras caminas a casa. Es un ejemplo bastante aleatorio, pero vamos a ir con él! Su teléfono indica que está a cinco minutos de llegar a casa. La bañera ve este evento y empieza a llenarse de agua automáticamente. Te sientes a la altura de los últimos episodios de Gotham también, por lo que abrir una aplicación móvil y seleccione para descargar y reproducir los últimos episodios de la temporada en una gran pantalla sobre la bañera caliente de su baño cuando llegue. Sí - esta es una bañera de hidromasaje bastante elegante. La bañera recibe este evento y comienza a buscar qué episodios del programa que has visto.
De repente, te das cuenta de que te olvidaste recoger algo de leche en el camino a casa. Al igual que con todos los avances tecnológicos de gozo, su aplicación de tareas pendientes es aún propenso a errores de usuario. Usted había establecido el recordatorio de obtener leche para mañana por accidente y han tenido que confiar en ese cerebro humano primitivo en el último minuto! Usted da la espalda para dirigirse al supermercado más cercano.
Su teléfono detecta el cambio de dirección y le indica que ya no está de camino a casa. La bañera ve este evento y deja de llenarse de agua por ahora. En lugar de esperar hasta que haya recuperado la última lista de episodios de Gotham antes de responder a este cambio, la bañera puede tratar instantáneamente esta solicitud y dejar de llenarse con agua. Una vez que se ha encontrado la lista de episodios no vistos, la tina entonces ve que tenemos esa lista y descarga el próximo episodio mientras viajas por algo de leche. Una vez que vuelva a su casa, su teléfono le indicará esto una vez más. La bañera ve este evento y vuelve a encender el agua mientras sigue terminando su descarga. Llegar a casa con una tina caliente listo y Gotham jugando el momento en que entras en el baño.
JavaScript ha madurado como un idioma
Hay un error común que JavaScript sigue siendo un lenguaje desordenado para trabajar. Estoy en desacuerdo. Es completamente posible construir una base de código muy estable y mantenible usando las prácticas de JavaScript de hoy en día. JavaScript es un lenguaje lo suficientemente maduro como para ser utilizado para mucho más que simples aplicaciones orientadas al cliente. Ya tenemos linters de JavaScript como JSHint para asegurar que el código cumple con un estándar determinado y tienen marcos de prueba de JavaScript como Mocha que tienen el potencial de extenderse para trabajar con sistemas IoT también.
Datos
Cada idioma tiene su idiosincrasia y trabajar con diferentes lenguajes en diferentes dispositivos significa lidiar con estos. A menudo tienes que convertir los datos en formatos que los otros idiomas requieren, y luego volver de nuevo si se pasa en la dirección opuesta. Algunos lenguajes manejan esto mejor que otros y hay maneras generalmente documentadas de pasar datos a través, así que no es imposible de hacer. Sin embargo, ¿no sería bueno si no necesita preocuparse demasiado sobre esto? Imagine que todos sus dispositivos entienden los tipos de datos de la misma manera.
JavaScript está abierto
No es necesario que un desarrollador de JavaScript utilice un IDE concreto o un único sistema operativo. No es necesario pagar una cuota anual para publicar aplicaciones en el idioma. No cerrado mega corporación que está guardando el lenguaje y su desarrollo desde sus profundidades más oscuras. JavaScript es un estándar abierto que se puede implementar usando una variedad de motores de JavaScript. Realmente espero que el estándar abierto de JavaScript conduzca a muchos dispositivos IoT abiertos que pueden colaborar y construir unos sobre otros, manteniendo los ideales de la web abierta viva y bien en una nueva era de Internet.
JavaScript es una opción más agradable para los nuevos desarrolladores
Creo que cuando se trata de las diversas opciones para conseguir desarrolladores involucrados con el Internet de las cosas, JavaScript tiene las barreras más bajas a la entrada. Es un lenguaje más fácil para un principiante de entender, pero hay un mundo entero de maneras avanzadas de estructurar y hacer crecer un proyecto en un sistema verdaderamente escalable.
Una comunidad increíble
La comunidad JavaScript es cada vez más amplia y muy abierta. Nuevos y emocionantes módulos y técnicas salen todo el tiempo, y la comunidad de desarrollo está evolucionando de manera muy positiva. Creo que esta sola razón es una gran razón por la cual JavaScript está bien adaptado a la tecnología en constante evolución en el Internet de las cosas.
Hay algunos talentosos desarrolladores de JavaScript con talento por ahí en esa comunidad que han trabajado con el lenguaje y sus matices durante años. Tienen experiencia en la creación de aplicaciones de JavaScript modulares impulsadas por pruebas. También hay muchos desarrolladores de JavaScript que están muy interesados en mejorar y hacer crecer sus habilidades también. Me encantaría ver a todo este talento tratar de pasar de la web típica a la programación de experiencias interactivas con nuevos dispositivos.
Ya ha comenzado
Ya existen dispositivos IoT habilitados para JavaScript. Vea mi JavaScript más allá de la Web y JavaScript más allá de la Web en 2014 artículos para una visión general de algunos de ellos.