Desenvolvimento

18 nov, 2016

JavaScript – A linguagem perfeita para a Internet das Coisas (IoT)

Publicidade

JavaScript: quer você goste ou não, é uma linguagem de programação para muitos, principalmente porque é incrivelmente fácil de aprender. E se você é um desenvolvedor web, é praticamente um requisito saber JavaScript para disputar esse tipo de emprego.

Devido à sua natureza ubíqua, é natural que ela seja considerada uma linguagem ideal nessa novidade chamada “Internet das Coisas”.

Qual o papel do JavaScript na Internet das Coisas?

Você não precisa ser um fanático por JavaScript para aproveitar os benefícios que ele oferece aos desenvolvedores quando se trata de Internet das Coisas.

JavaScript é fácil de aprender. É uma linguagem de programação incrivelmente fácil de aprender, então é fácil começar rapidamente com o mínimo conhecimento. Na realidade, se você tem experiência em tecnologia, é de se imaginar que consiga aprender o básico em um final de semana.

JavaScript já é uma linguagem comum pela Internet. O JavaScript já é uma linguagem popular na Internet, então faz sentido incluí-lo em dispositivos que farão parte dela.

Há uma comunidade enorme de desenvolvedores. O JavaScript já possui uma enorme comunidade de desenvolvedores que contribuem para a linguagem. E há, literalmente, milhares de fontes – vídeos do YouTube, artigos, tutoriais e até mesmo sites dedicados – destinadas a pessoas que querem aprimorar os conhecimentos sobre a linguagem.

Sua arquitetura orientada a eventos se encaixa perfeitamente na forma como o mundo funciona. Nós vivemos em um mundo baseado em eventos. Nós agimos e reagimos a diferentes acontecimentos diariamente e, curiosamente, essa é a forma como o JavaScript opera. Essa modalidade orientada a eventos também é mais eficiente quando se trata de sensores – e para a vida da bateria e uso da CPU.

JavaScript vs C para sistemas embarcados

Independentemente das vantagens, existe ainda um debate compreensível sobre a capacidade do JavaScript para essa tarefa. Vamos dar uma olhada em uma comparação entre o JavaScript, a linguagem da Internet, e a C, a linguagem padrão para programação de sistemas embarcados.

JavaScript: é uma linguagem de alto nível. Se por um lado isso geralmente significa que ela seja de mais fácil leitura para humanos e consequentemente mais amigável, a desvantagem é que isso também pode torná-la mais lenta de alguma forma. E a lentidão definitivamente significa que ela pode não ser adequada para situações em que o tempo e a velocidade são pontos críticos.

Contudo, se a velocidade é um requisito, Petter Hoddie afirma que usar um compilador JIT (Just-In-Time) ou um subset otimizado para JavaScript chamado “asm.js” pode ajudar a ter o aumento de performance necessário. Enquanto isso pode exigir memória adicional no microcontrolador, existem novas linhas de placas de microcontrolador que estão surgindo e foram projetadas com essa ideia em mente, oferecendo aos desenvolvedores o melhor dos dois mundos.

A arquitetura orientada a eventos do JavaScript também é perfeita para escutar e reagir a eventos de entrada e saída, como cliques no botão e informações recebidas de sensores. Outra grande vantagem é a drástica redução no consumo de energia e uso da CPU, uma façanha extremamente importante levando em consideração o pequeno tamanho dos microcontroladores de hoje.

C: a linguagem C é tipicamente usada para programação de sistemas embarcados. A principal razão para isso é que ela é uma linguagem de nível baixo, o que significa que ainda que ela seja fácil de ler por humanos, é muito mais próxima de uma linguagem de máquina do que JavaScript. Essa proximidade com a linguagem de máquina faz com que ela seja extremamente rápida, eficiente e confiável. Há algumas desvantagens, no entanto. Isso pode não ser um grande bloqueio para desenvolvedores ávidos, mas para os amadores isso pode ter um peso enorme se um projeto será concluído ou não.

Não esquecer a segurança

Bem-vindos à era da Internet das Coisas, em que os aparelhos conectados digitalmente estão ganhando relevo em cada aspecto das nossas vidas, inclusive nos nossos lares, escritórios, carros e até em nosso corpo. Hoje, um hacker com intenções maliciosas pode acessar seu Facebook até por meio de uma torradeira. Já imaginou? “Quando você coloca tecnologia em artigos que não a tinham antes, você se depara com questões de segurança em que você nunca pensou antes.”[5], disse o hacker Runa Sandvik à WIRED.

Como estamos utilizando JavaScript para IoT, é necessário lembrar que essa é uma linguagem muito dinâmica que pode ser facilmente adulterada. O comportamento desse JavaScript pode ser alterado, influenciando o comportamento dos dispositivos controlados por ele. Assim, deveremos procurar soluções para proteger esse JavaScript através de processos que permitam evitar que a lógica incluída no código seja facilmente acessível. Existem alguns cuidados, nomeadamente:

  1. Usar Content Security Policy (CSP) para sublinhar os recursos que permitem que o seu aplicativo pode usar.
  2. Rodar testes de integridade nos recursos que correm fora do seu aplicativo através do Subresource Integrity.
  3. Implementar autoproteção de aplicativo de tempo de execução (em inglês, Runtime Application Self-Protection, ou RASP).
  4. Forçar seu aplicativo a usar apenas HTTPS utilizando HTTP Strict Transport Security (HSTS).
  5. Usar Static Analysis Security Testing (SAST) e Dynamic Analysis Security Testing (DAST) para descobrir vulnerabilidades tanto do lado do server como do cliente.
  6. Implementar uma tecnologia de detecção e remoção de injeção de código do lado do cliente.
  7. Aplicar forte encriptação SSL no seu aplicativo web.
  8. Fazer o seu código do lado do cliente ser polifórmico, evitando ameaças de tampering.
  9. Usar certificate pinning nos seus aplicativos móveis.

A Internet das Coisas já está aqui

Se você está pensando em se iniciar com alguns eletrônicos simples – e se você não está a fim de aprender uma linguagem complicada para isso -, você está com sorte! Aqui estão alguns exemplos de placas de desenvolvimento habilitadas para JavaScript para você começar.

Espruino
O Espruino é um pequeno microcontrolador que roda JavaScript. Ele tem uma potência muito baixa, fazendo com que sua bateria dure até um ano. Ele não exige um Ambiente de Desenvolvimento Integrado (IDE, na sigla em inglês) complicado; tudo o que você precisa é de um terminal. A melhor parte é que, dependendo das necessidades de seu dispositivo, você pode até mesmo compilar seu código JavaScript em C! Infelizmente, há apenas suporte limitado para isso no momento.

Tessel 2
A Tessel 2 é uma placa de desenvolvimento que vem com Wi-Fi integrado, uma porta ethernet, duas portas USB e duas portas de módulo Tessel. Cada módulo Tessel tem uma biblioteca complementar para baixar por meio do Node Package Manager, e há vários tutoriais e instruções disponíveis online para você conseguir fazê-la funcionar e rodar rapidamente.

Kinoma Create
A Kinoma Create, apelidada como “o kit de construção de Internet das Coisas movido a JavaScript”, é uma ferramenta completa de prototipagem com várias capacidades de plug-and-play (ligar e usar) – tudo isso na caixa! Uma das funções mais interessantes inclui uma tela sensível ao toque, Wi-fi e bluetooth, e um slot para micro-SD.

Hora de começar

O JavaScript para sistemas embarcados ainda está na infância, mas acreditamos que grandes avanços estão por vir. Se você é um amador ou se está procurando desenvolver aquele protótipo que sempre sonhou, o JavaScript é uma boa pedida para começar e aprender uma coisa ou outra – e, claro, se divertir!

Links (artigos em inglês)

  1. Por que JavaScript é o Futuro da Programação
  2. A Internet das Coisas está revolucionando nossas vidas, mas padrões são obrigatórios
  3. JavaScript para dispositivos embarcados
  4. Esta é a rapidez com que a IoT pode ser hackeada
  5. Como a IoT foi hackeada
  6. Espruino
  7. Tessel
  8. Kinoma