Você está aqui: Página Inicial > Tema > TemaTec > Javascript de ponta a ponta

Notícias

Javascript de ponta a ponta

TemaTec 227

Cleuton Sampaio
Mestre, formado pelo IBMEC RJ, com certificação PMP e SCEA. Além de arquiteto de sistemas, é professor universitário e escritor profissional, com vários livros publicados.

Mestre, formado pelo IBMEC RJ, com certificação PMP e SCEA. Além de arquiteto de sistemas, é professor universitário e escritor profissional, com vários livros publicados.

JAVASCRIPT

"Javascript só serve para validar form". Por muito tempo, o Javascript foi subutilizado, e, na maioria das aplicações, apenas para validar formulário no navegador. Porém, existem "motores" Javascript que podem ser embutidos em aplicações, e vários produtos passaram a exportar mecanismos de " scripting" com essa linguagem, entre eles: MongoDB, Unity Game Engine e Alfresco.

Mas foi com o surgimento das plataformas móveis que o Javascript passou a ocupar um lugar especial no coração de muitas pessoa. Afinal de contas, é melhor criar um app móvel usando HTML 5 + Javascript do que usar a plataforma própria de cada dispositivo. 

Hoje, existe um verdadeiro "ecossistema" em torno do Javascript, suportando desde aplicações servidoras (Node. js: http://nodejs.org/) até software embarcado (Johnny-five: https://github.com/rwaldron/johnnyfive). 

Além de ser um padrão W3C (), Javascript é uma linguagem de tipagem dinâmica, baixa complexidade, e uma das mais populares do mundo (sétimo lugar, TIOBE List, janeiro/2015).

PLATAFORMA JAVASCRIPT

Hoje, não tratamos mais Javascript como apenas uma linguagem para validar forms, pois ela se transformou em uma plataforma de desenvolvimento multicamada: 

  • Na camada Cliente, surgiram, nos últimos anos, várias tecnologias e frameworks que agilizam o desenvolvimento, como: Angular. js, jQuery e jQuery Mobile;
  • No Servidor, temos o Node. js e o Express, que permitem criar servidores HTTP /REST de alto desempenho;
  • E, na persistência, é possível utilizar Javascript em bancos de dados NoSQL, como o MongoDB, de forma a criar e executar, entre outras coisas, operações de "Map Reduce" , muito utilizadas em "big data". 

Além disso, temos que acrescentar duas plataformas computacionais que, nos últimos anos, o desenvolvimento Javascript vem dando notoriedade:

  • Mobile: o uso de frameworks HTML 5, como o Apache Cordova, tem sido muito utilizado para criações de novos apps, de games até ferramentas de produtividade, e a lógica da aplicação tem sido criada em Javascript;
  • Embarcados: surgiram vários frameworks, como o Johnny-five, que permitem controlar hardwares embarcados, como o Arduino, usando Javascript. 

Uma só linguagem e várias plataformas diferentes.

WEB ABERTA E C10K

Se você ainda não se convenceu, então aqui vão dois novos motivos: Javascript é parte da plataforma da Web Aberta, e, com o Node. js, permite criar aplicações servidoras, compatíveis com o "problema C10k" . 

A plataforma da Web Aberta (http://www.w3.org/wiki/Open_Web_Platform) é a coleção de tecnologias abertas (royalty-free), que impulsiona a web, como por exemplo: HTML 5 (e seus associados), Javascript e CSS.

Ao desenvolver sua aplicação em Javascript, você está seguindo uma tendência mundial: a de utilizar apenas padrões abertos, diminuindo o risco de mudanças na plataforma prejudicarem o desenvolvimento e/ou avida útil dos sistemas aplicativos que você desenvolveu. 

Além disto, existe a questão do "problema C10k" . Desde que o primeiro servidor web foi criado, a tecnologia de tratamento de conexões via sockets é a mesma: abrir um Thread por conexão. Tal mecanismo levou a criação de servidores altamente consumidores de recursos. Então, criou-se um movimento para aumentar a eficiência computacional, com várias tendências. Hoje em dia, os mais populares são baseados no uso de um único " thread" , com I/O assíncrono, gerenciado por " loop" de eventos. Entre os mais populares estão: 

  • Node. js: biblioteca servidora para Javascript;
  • NGIX: servidor leve, baseado em C10k.


MEAN STACK

Hoje em dia, um dos " stacks" (conjunto de ferramentas para desenvolvimento) mais populares é o M.E.A.N. , composto por: 

  • M: MongoDB na camada de persistência. Um banco No SQL baseado em JSON;
  • E: Express como framework de servidor REST, para a lógica da aplicação;
  • A: Angular. js, como framework Cliente MVW, para criar páginas web dinâmicas;
  • N: Node. js, para criar a infraestrutra de aplicação servidora, em conjunto com o Express.


POPULARIDADE

O MEAN stack e seus componentes têm se tornando altamente populares, o que pode ser constatado pelos vários relatórios "Technology Radar" (http://assets.thoughtworks.com/assets/technologyradarjan2014pt.pdf), da Thoughtworks, e outros sites de pesquisa, como o Hotframeworks (http://hotframeworks.com/). 

A crescente popularidade deve-se especialmente a: 

  • Pequena curva de aprendizado para usar o Javascript;
  • Simplicidade de desenvolvimento com Angular e Express;
  • Excelente desempenho das aplicações servidoras com Node. js.

Várias empresas estudaram o desempenho das aplicações Javascript, feitas com Node. js, e adotaram suas soluções, entre elas:


DEMONSTRAÇÃO

É claro que eu não poderia falar sobre Javascript, de ponta a ponta, sem apresentar demonstração alguma. Eu tenho um projeto que criei especialmente para isso: Controle de Temperatura (https://github.com/cleuton/CTemp). 

Esse projeto integra quatro plataformas diferentes para promover um controle de temperatura ambiental:

  • Cliente Web: Site para acompanhamento de temperaturas de locais;
  • Servidor REST: Para fornecer dados sobre os locais e atualizar os medidores;
  • Cliente Mobile: Para o técnico de campo ser alertado sobre aumento de temperatura;
  • Dispositivo remoto: Para mediação de temperatura e envio de dados ao Servidor REST.

 

cleuton1.jpgNa figura 1 , temos a arquitetura dessa aplicação distribuída em vários nós. O dispositivo embarcado é formado por:

 1 - Controlador baseado em "Raspberry PI" , rodando Linux, Node. js e uma aplicação que usa o " Johnny-five" (pasta: "embarcado/ctemp. js" );

2 - Arduino, com sensor de temperatura, que envia as medições ao Raspberry;


 Os dispositivos embarcados enviam as médias de temperaturas por minuto ao Servidor REST. Quando uma média passa de um valor limítrofe, um alerta é enviado. O Servidor REST armazena as médias e, se houver alerta, envia uma mensagem "push" usando o serviço Google Cloud Message para os técnicos. O diagrama de montagem do dispositivo embarcado pode ser visto neste artigo:

http://www.obomprogramador.com/2014/11/arduinoetilico3internetdascoisas.html                                          

cleuton2.jpg

O técnico recebe a notificação na aplicação móvel (pasta: "mobileapp" ), feita com Apache Cordova, verifica o ponto onde a temperatura subiu e comanda o desligamento do alerta para o Servidor REST. Isto pode ser visto na figura 2.      

O supervisor pode acompanhar tudo isso usando a aplicação Cliente Web (pasta: " controleTemp" ). Podemos ver isto na figura 3.

Em uma das consultas, o Servidor REST solicita uma operação de "Map Reduce" ao servidor MongoDB, demonstrando que, de fato, o Javascript está sendo utilizado em todas as camadas e plataformas da aplicação.

cleuton3.jpg

COMO RODAR O APLICATIVO

Primeiramente, você tem que ter os seguintes softwares instalados em sua máquina:

  • MongoDB;
  • Node. js;
  • NPM;
  • PhoneGap;
  • Cordova.

E deve cadastrar seu projeto na Google API Console, obtendo o seu número de projeto e chave de API. O artigo abaixo ensina a cadastrar sua aplicação para uso do Google Cloud Messaging:

 http://www.obomprogramador.com/2014/11/arduinoetilico3internetdascoisas.html

CONCLUSÃO

Neste artigo, demonstrou-se a viabilidade de uso do Javascript em várias camadas e plataformas de uma aplicação com um exemplo prático (que não foi possível demonstrar no evento do ConSerpro). Se você tiver dúvidas ou sugestões, é só me encaminhar que eu terei prazer em responder.