O Play é um framework open source para aplicações web, escrito em Java, que possibilita o desenvolvimento de aplicações web que seguem o padrão MVC. Tem por objetivo otimizar a produtividade do desenvolvedor através do uso de configuração sobre convenção (CoC). Com recompilação feita durante a execução da aplicação, e caso ocorra algum erro, o respectivo é exibido no browser, indicando a linha do erro.
Atenção: o objetivo desse post é realizar uma visão geral do que se tratá o Play Framework que temos ouvidos os comentários na internet.
O Play Framework torna o desenvolvimento de aplicações Java e Scala uma tarefa fácil para o desenvolvedor.
Site: Play Framework
Descubra uma alternativa limpa e leve para as atuais aplicações Java Enterprise. O Play é focado na produtividade do desenvolvedor e tem por alvo a arquitetura RESTFul.
Apesar do Play ter sido escrito em Java, ele suporta a linguagem Scala desde a versão 1.1 (hoje[Dezembro/2011] está na versão 1.2.4). Este ano a empresa Typesafe (responsável pela linguagem Scala), anunciou a aquisição do Play Framework e este será mantido pela empresa. Uma das novidades relacionado a este anuncio é que a versão 2.0 o núcleo do Play Framework está sendo totalmente reescrito em Scala.
Um vídeo para uma breve apresentação do Play Framework: Desenvolcendo uma aplicação web em 10 minutos
Motivação
O Play foi muito inspirado no Ruby on Rails e Django. Um desenvolvedor familiarizado com qualquer um desses 2, irá se sentir em casa.
Algo que é fato, Ruby on Rails e Django são produtivos, então por que não ter o mesmo nível de produtividade com java?
O Play utiliza do poder das aplicações Java, porém sem o "sofrimento" necessário para o desenvolvimento de aplicações centradas no modelo Java Enterprise. Libertando das metodologias e ideologias relacionadas ao desenvolvimento de aplicações Java EE, o Play prove para os desenvolvedores uma maneira fácil e elegante de trabalhar, visando o aumento da produtividade.
Caso você queria, basta um editor de código e será mais que o suficiente para o desenvolvimento de aplicações, chega a ser incrível pensar que conseguiremos desenvolver aplicações Java Web sem a necessidade de um IDE (Eclipse, Netbeans, …), mas vale lembrar, que estas IDE's ainda possuem seus atratívos e auxiliam em nossa produtividade.
Apesar de que as aplicações desenvolvidas com o Play, foram projetadas para executar dentro do JBoss Netty Web Server, as aplicações podem ser empacotadas em arquivos WAR e distribuídas para outros servidores de aplicações Java EE (ex.: Apache Tomcat).
Maiores diferenças com os demais frameworks
Stateless: o Play é totalmente RESTful – não existe conexão por sessão Java EE. Isto torna o Play muito mais escalável que os demais frameworks.
Sem configuração: realizar o download, descompactar e desenvolver.
Fácil ida e volta: sem necessidade de deploy no servidor de aplicação, apenas edite o código e atualize o browser.
Teste unitário integrado: suportes nativos para JUnit e Selenium.
API elegante: raramente um desenvolvedor terá a necessidade de importar alguma lib. O Play já disponibiliza a maioria dos recursos necessários para o desenvolvimento de uma aplicação.
Métodos estáticos: todos os controles de entrada e métodos de negócio são declarados como estáticos. E isto é de fato bem diferente o que vemos nos demais frameworks Java.
I/O Assíncrona: através do uso do servidor web JBoss Netty, o Play consegue disponibilizar e tratar uma enorme quantidade de requisições assíncronas.
Arquitetura Modular: assim como Rail e Django, o Play utiliza o conceito de módulos. O que possibilida um meio elegante e simples de expandir o core do Play.
Módulo CRUD: fácil construção de UI administrativas com pouco código.
Módulo Scala: disponibiliza um suporte completo para Scala.
Componentes
O Play utiliza massivamente algumas bibliotecas populares:
- JBoss Netty para o servidor web.
- Hibernate para a camada de dados.
- Groovy para a os templates.
- O compilador do Eclipse para atualização da aplicação sem necessidade de realizar um deploy da aplicação para testar as alterações (hot-reloading).
- Apache Ivy para gerencimanto de dependencias.
Funcionalidades presentes no núcleo do Play:
- Um framework RESTful limpo e leve.
- CRUD: um módulo para simplicifar a edição de modelos de objetos.
- Secure: um módulo para habilitar um sistema de autentificação de usuários.
- Um framework de validação baseado em anotações.
- Um Job Scheduler (agendamento de tarefas).
- Suporte para emails SMTP de maneira simples.
- Suporte para JSON e XML.
- Uma camada de persistência baseada em JPA.
- Uma base de dados embutida para rápido deploy e testes da aplicação.
- Um framework completo para realização de testes.
- Funcionalidade para upload de arquivos.
- Suporte para múltiplos ambientes de desenvolvimento.
- Uma poderosa engine de templates baseadas em Groovy com templates, hierarquias e tags.
- Arquitetura modular, que possibilita criar novas funcionalidades para o núcleo facilmente.
- Suporte para OpenID e clientes de Web Service.
Links úteis
Informações a mais da Wikipedia
Overview do Play Framework 1.2.4
Documentação Play Framework 1.2.4
A documentação foi algo que achei interessante, me parece bem completa com bastante exemplos e informações de como utilizar as funcionalidades presentes no Play Framework.
Suporte para a linguagem Scala
Utilize a IDE de sua preferência (Eclipse, Netbeans, …)
Se por um acaso você utilize o Sublime Text 2, veja esse suporte para este editor de código [github]
Dentre eles temos: MongoDB, GAE, Geração de PDF, GWT, SASS e SCSS, entre outros.
E agora?
Bom agora que já temos uma boa idéia do que se trata o Play Framework é baixar e começar a testar e ver se na prática ele é bom mesmo.
Hora de fazer o download, instalar e colocar a mão no código: Tutorial para seguir e ver uma aplicação do início até o "fim"
Eu particularmente ainda possuo algumas questões em aberto para descobrir as respostas, dentre elas está uma: – Como é que eu utilizo o Play Framework em um projeto com uma equipe? Até o momento só tenho visto casos onde são apresentados desenvolvimetno de aplicações rápidas, porém com um único desenvolvedor…
No meu caso eu vou atrás dessa reposta.
Pingback: Alta produtividade em Java | DesenvolvedorSA()