quarta-feira, 2 de abril de 2014

Tendência das aplicações corporativas: Javascript de ponta a ponta

Há uma forte tendência em utilizar um "stack" composto por ferramentas baseadas em Javascript, de ponta a ponta, nas aplicações corporativas. Desde a camada Cliente até a Servidora, e tudo baseado em padrões modernos, como: REST e JSON. A base disso tudo é o node.js, do qual já falamos aqui. Agora, vamos fazer um painel de tudo que se fala sobre a adoção dessas ferramentas, base do MEAN stack (para o qual estamos preparando um tutorial).




Como assim "Javascript"?

É isso mesmo! Javascript. Desde que Ryan Dahl criou o "node.js", em 2009, ele vem ganhando popularidade, pois bate todos os records de performance para aplicações servidoras. Ele é uma camada que usa o engine Javascript V8, do Chrome, para executar operações assíncronas, baseadas em eventos.

Em benchmarks, as aplicações feitas com node.js chegam a ser 20% mais rápidas do que as equivalentes em Java EE, e 100% do que as equivalentes em PHP. É isso mesmo que você leu! O desempenho, a facilidade e a escalabilidade das aplicações node.js é escorchante e acachapante! Nós, desenvolvedores Java EE, simplesmente não temos argumentos para contestar isso. O melhor é se render de vez.

Eu fiz um micro tutorial sobre node.js, e mostrei uma aplicação completa também. Dê uma olhada e me diga se não ficou envergonhado(a). É um verdadeiro deboche!

Mas, não é só isso! Engines como o "express.js" ajudam a criar servidores REST de maneira fácil e organizada, jogando ao chão as críticas dos defensores do Java EE, de que o desenvolvimento com node.js é desorganizado. O "express.js" cria "rotas" baseadas em requests HTTP (podem ser RESTful) e aplica templates de páginas HTML (Jade ou EJS) para gerar as respostas, tudo de forma muito organizada e extremamente mais simples do que aquela "complicometria" do JSF!

Porém, a parte Cliente ainda carecia de algo... É muito complexo escrever código Javascript/jQuery para modificar o DOM a cada request Ajax. Eu reconheço isso. Então, a Google publicou o "Angular.js", que é simplesmente fantástico! O Angular.js é um framework Javascript que estende o HTML, através de diretivas. Com ele, você não precisa manipular o DOM para criar páginas dinâmicas, pois ele tem o recurso de "two-way data binding", ou seja, se o modelo foi alterado, ele ajusta automaticamente a "view", e vice-versa.

Essas três ferramentas são a base do stack "MEAN" (M - MongoDB, E - Express.js, A - Angular.js e N - Node.js).

Mas eu não quero entrar em detalhes técnicos nesse artigo.


Será que o povo tá usando isso mesmo, ou é um "caô"?

Boa pergunta! Eu gosto de basear minhas afirmações em fatos, e, para minha felicidade, a Internet está cheia de informações de razoável confiabilidade, distribuídas gratuitamente. É claro que eu adoraria pesquisar no Gartner ou no Forrester (Alô! Que tal uma conta de cortesia?), porém, infelizmente, não tenho grana suficiente... Também, postando tudo de graça... Minha esperança é aumentar as vendas dos meus livros!

De qualquer forma, eu corri atrás e pesquisei sobre o uso de stack baseado em Javascript nas aplicações corporativas, e descobri indícios de que realmente há uma grande procura por essa tecnologia.

TIOBE, Março de 2014

Segundo a pesquisa de popularidade TIOBE, Javascript aparece na nona posição, "encoxando" o Python. Ano passado, em Março de 2013, estava na décima primeira posição. Além disso, apresenta o viés de alta, ou seja, as pessoas estão pesquisando mais sobre Javascript, o que denota o aumento de interesse.

HotFrameworks

Segundo o site "HotFrameworks", que se baseia em pesquisa no GitHub e no StackOverflow, o "Angular.js" aparece na quarta posição, bem próximo do RoR e do ASP.NET MVC, e o "Express.js" aparece na oitava posição. O Express é usado APENAS com Node.js, já o Angular.js pode ser usado com qualquer coisa. Mas isso significa que aplicações Node.js já estão pelo menos no oitavo lugar, enquanto que o JSF amarga o décimo-sexto lugar (caiu mais uma posição).

Techonogy Radar, Janeiro de 2014

O relatório "Technology Radar", emitido pela Thoughtworks, de Janeiro de 2014, recomenda a adição da plataforma "Node.js". Note que ele também recomenda "MongoDB". Eis o que ele fala sobre o Node.js:
"O Node.js é um container web leve, que é uma forte opção para desenvolvimento de micro serviços, e como um servidor para aplicações mobile e de página única (single-page web). Devido à sua natureza assíncrona, os desenvolvedores estão prometendo bibliotecas para simplificar o código de sua aplicação. Conforme o uso das promessas vai amadurecendo dentro da comunidade node.js, nós esperamos ver mais aplicações desenvolvidas com essa plataforma. Para as equipes que estão relutantes em experimentar o node.js em produção, ainda vale a pena considerar node.js para tarefas de desenvolvimento, como execução de testes JavaScript fora do navegador, ou gerar conteúdo estático web a partir de ferramentas como: CoffeScript, SASS e LESS. "

 WhalePath

A empresa de pesquisas WhalePath produziu um relatório muito interessante sobre o Node.js e seu ecossistema: "Node at a Glance  : Technology, Market and Ecosystem". Eles incluem uma análise SWOT sobre a adoção do Node.js em aplicações corporativas, e explica a arquitetura e a visão do mercado.

Entre outras coisas, o relatório fala sobre o Node.js:
"Suportado pela empresa Joyent e outras organizações líderes de tecnologia, o Node.js é uma tendência, e uma plataforma para a próxima geração de desenvolvimento Web. É uma ferramenta que vai revolucionar o mercado para desenvolvedores e empreendedores no mundo todo; a plataforma de software permite criar aplicações servidoras altamente escaláveis, com níveis de eficiência sem precedentes. O "Non-blocking I/O" e o loop de eventos de único thread, em combinação com uma biblioteca de servidor HTTP, permite aos desenvolvedores alcançarem um alto "throughput", sem necessidade de containers (por exemplo, Apache Web Server), colocando o controle do servidor Web de volta nas mãos dos desenvolvedores. "

O uso do Node.js de 2012 a 2013 cresceu muito, dando um verdadeiro salto. E, segundo a pesquisa Google de interesse (google trend):


Conclusão

Agora, além de uma tendência, o uso de stack baseado em Javascript, de ponta a ponta, parece ser uma realidade. Empresas como: LinkedIn, DowJones, Yahoo, Groupon, PayPal e Google já estão adotando soluções baseadas nessa plataforma, transformando radicalmente a maneira como oferecem seus serviços.

Você pode até desgostar do Javascript, mas deveria avaliar e considerar o uso de stack baseado em Javascript, como o MEAN, nas suas próximas decisões arquiteturais.