Artigo do tipo Tutorial
Recursos especiais neste artigo:
Artigo no estilo Solução Completa
Autores: Felipe Pierin e André Roque
Dominando o Play! Framework
Este artigo é um estudo sobre o Play! Framework, uma alternativa aos padrões Java Enterprise que ganha cada vez mais popularidade em serviços PaaS devido ao gerenciamento eficiente de recursos, sistema de build-deploy robusto e a capacidade de promover alta produtividade para os desenvolvedores por meio da detecção antecipada de erros.


Em que situação o tema é útil

Este tema é útil ao desenvolvedor interessado em buscar alternativas de alta produtividade para o desenvolvimento de aplicações web capazes de atender às novas demandas exigidas para a computação em nuvem.

O avanço tecnológico aliado ao processo de expansão da internet vem proporcionando às pessoas melhores experiências para tarefas cotidianas como a procura por oferta e compra de produtos e serviços, tornando mais rápido e prazeroso o que antes já foi muito desgastante principalmente em função dos distanciamentos físicos de um lugar para outro. Em meio a esse processo é notável que as barreiras existentes entre as pessoas foram atenuadas em virtude da facilidade de compartilhar e encontrar informações, abrindo espaço para que a informação e o conhecimento se tornem cada vez mais difundidos. Inseridas nesse cenário, empresas já consolidadas no mercado passaram a revisar seus processos internos, convergindo em direção às metodologias ágeis de desenvolvimento em busca de maior produtividade. Enquanto isso, novas empresas têm usado as vantagens da computação na nuvem, como fácil escalabilidade e agilidade em levar o produto ao mercado, para criar sistemas inovadores e de baixo custo.

O aumento da produtividade é indiscutivelmente um dos fatores atualmente mais almejados pelas empresas de grande ou pequeno porte. Na medida em que uma empresa se torna mais produtiva, seus lucros e esforços para aumentar a qualidade de forma a agregar fatores positivos ao produto tendem a serem maiores. Para isso, é necessário buscar através de metodologias, organização ou ferramentas, uma maneira de tornar a empresa mais eficaz e ágil, de forma que seja capaz de atingir todos que queiram usufruir dos seus serviços antes da concorrência.

Nesse contexto, Play! Framework é uma solução que almeja entregar ao desenvolvedor de software um ambiente mais produtivo para a elaboração e posterior manutenção de sistemas que se encaixam com os novos requisitos exigidos pelas aplicações web atuais. É uma ferramenta singular que disponibiliza formas eficazes para atender sistemas altamente distribuídos, que dependem de informação em tempo real, lidam com alta concorrência, com programação assíncrona ou com os novos paradigmas de armazenamento de informação, tais quais os bancos de dados não relacionais. Além disso, ainda conta com a capacidade tornar um desenvolvedor mais eficiente durante o processo de desenvolvimento do software.

A curva rápida de aprendizado, o sistema de detecção de erros robusto e a capacidade de atualização de código em tempo real são as características que fazem do Play! uma ferramenta de alta produtividade. A organização do projeto em uma estrutura web MVC e o seu modelo RESTful o tornam de fácil entendimento e são características também de outros frameworks, como o Spring MVC e o VRaptor. Por sua vez, o mecanismo de detecção de erros utilizado pelo Play!, que engloba desde arquivos de configuração até o código-fonte propriamente dito, está baseado na força de recursos da linguagem Scala. Já os modelos de compilação, build e deploy, contrastam com os padrões J2EE tradicionais e, por esse motivo, considera-se que o framework é mais parecido com soluções como Django, Grails, ou Rails.

Em meio ao processo de criação de software, um dos fatores que estimulam o incremento da produtividade para o desenvolvedor é a capacidade de identificar possíveis erros o quanto antes, tais como chamadas a métodos incorretos ou até o uso de funções inexistentes. O Play! é uma ferramenta que consegue abordar essas inconsistências semânticas logo nos estágios iniciais do processo de compilação e engloba não só a linguagem de programação usual, mas também abrange os arquivos de configuração, de definição de rotas (rotas são a forma como o Play! liga URLs a métodos dos Controllers) e os templates, que definem as páginas que serão renderizadas. Isso torna plausível encontrar problemas que antes só seriam vistos quando a aplicação já se encontrasse rodando, pois questões como o tipo dos dados que devem ser passados para um template ou a divergência entre os parâmetros usados na URL de uma rota com os respectivos métodos declarados em um dado Controller serão encontrados logo durante o processo de compilação. No entanto, a convergência do Play! para a antecipação da detecção de problemas que envolvem a inter-relação entre código-fonte, arquivos de configuração e templates, não é uma característica herdada do Java, mas sim da relação cada vez mais presente do framework com outra linguagem: a Scala.

A linguagem Scala é o grande segredo por trás das propriedades não usuais da linguagem Java e que estão presentes no pacote oferecido pelo Play!, como é o caso da detecção antecipada de erros. Justamente para aproveitar a força de uma linguagem funcional é que os criadores do framework decidiram pela revisão completa da solução baseada em Java e adotada durante as versões 1.x, migrando-a definitivamente para Scala nas versões 2.x em diante. Apesar disso, a adoção do Scala como coração do framework não necessariamente implica em uma dor de cabeça ao usuário que está habituado com a linguagem Java, afinal, são grandes os indícios de que o suporte ao desenvolvimento com Java será sempre mantido. Até mesmo para a criação de arquivos de configuração, rotas ou templates, onde a linguagem se faz mais presente, não se é exigido um alto grau de conhecimento nela, assim como na versão 1.x não era necessário uma familiaridade com Groovy. Ademais, alguns ganhos podem ser observados pelo maior uso de Scala, já que os arquivos de configuração podem ser reutilizados com maior facilidade e, por serem compilados, podem vir a trazer um ganho significativo de performance.

O Play! torna o desenvolvedor eficiente não só pela detecção de erros otimizada, mas também pela forma com que lida com o processo de recarregamento de código-fonte simultâneo à aplicação rodando, o chamado “hot-reloading”. Hot-reloading permite que o desenvolvedor altere o código sem precisar reiniciar a aplicação, o que torna muito mais curto o ciclo de feedback (o tempo entre fazer uma alteração e verificar se os resultados estão corretos). Esses ciclos curtos de feedback se tornam possíveis por uma API HTTP assíncrona divergente dos padrões Java EE da API de Servlet. Esse é um dos motivos pelos quais o framework possui um servidor HTTP embutido e, dessa maneira, permite o deploy sem a necessidade de um container como o JBoss, Tomcat ou Jetty associados.

Por fim, antes de iniciar os exemplos sobre o uso da ferramenta, é importante salientar que o Play! Framework foi elaborado de forma a ser uma alternativa Stateless, isto é, não possui sessões Java EE atreladas a cada conexão iniciada com o servidor. Além disso, é disponibilizado com uma variedade de bibliotecas populares para prover uma ampla gama de funcionalidades. O uso dessas bibliotecas, porém, requer um breve conhecimento da ferramenta de build SBT (Simple Build Tool), que é similar aos já conhecidos Ant e Maven.

Construindo uma Loja Virtual

Neste artigo, abordaremos a criação de uma loja virtual simples que usa, de forma extensiva, os recursos básicos oferecidos pelo Play! Framework. A partir desse projeto, teremos a oportunidade de explorar um conjunto considerável das capacidades oferecidas pela ferramenta e que são realmente úteis quando se trata do desenvolvimento de sistemas e aplicações voltadas para a ...

Quer ler esse conteúdo completo? Tenha acesso completo