Back-End

27 nov, 2012

Redescobrindo Java com Play! Framework

Publicidade

Durante muito tempo, eu tenho procurado me interessar por Java. Apesar de vários contras, mesmo achando complicado e difícil, com tantos arquivos XML e tanta configuração confusa, venho procurando um framework que chegasse perto do Ruby on Rails, só que em Java. O principal motivo (pessoal) era querer usar Java para algo útil, além melhorar o meu currículo (e como…).

Foram diversos meses estudando alguns frameworks, até que tive a felicidade de encontrar o Play Framework! Durante conversas no twitter, tive até a seguinte resposta: “Tão fácil que nem parece Java”, e estudando o framework mais a fundo pude comprovar isso!

Se você quer dominar um pouco a linguagem Java, mas nunca conseguiu fazer algo entre tantos frameworks, conceitos e siglas, chegou a hora de conhecer este excelente framework, que irá lhe ajudar a criar aplicações Web com mais facilidade e rapidez.

Características

O Play Framework contém diversas semelhanças com o Ruby on Rails, e diversas características, entre as quais podemos destacar:

  • Sem Build demorado: Você altera o código e dá reload na página
  • REST: Roteamento inteligente para suporte a RESTful
  • Templates: Sistema eficiente de templates baseados no Groovy
  • Console: Crie aplicações e faça ajustes no próprio console
  • Fácil de instalar: Baixe e crie a sua aplicação
  • MVC: Claro, baseado no padrão MVC
  • Persistência: Simples de usar, baseado no JPA
  • Diversas APIs: Webservice, oAuth, Acl, OpenID e muito mais
  • Fácil: A principal característica!!!! Nem parece que é Java
  • Orientado a testes

Funcionalidades legais

Antes de instalar e usar o framework, vamos ver algumas funcionalidades bem legais do Play! para que possamos ficar mais motivados a seguir em frente.

Comandos via console

Criar um projeto em Play!. É tão fácil, igual no Rails, basta usar:

$ play new nomeDoProjeto

Toda a estrutura do projeto será criada, incluindo arquivos de configuração e o roteamento inicial da aplicação. Se você deseja abrir o projeto no Eclipse ou no Netbeans, o Play! cria o projeto para você. Basta fazer assim:

 $ play eclipsify nomeDoProjeto

ou:

$ play netbeansify nomeDoProjeto

Dessa forma, você poderá importar o projeto de sua IDE e todas as configurações estarão realizadas. Outro comando importante é a gerador de war (deploy).

$ play war nomeDoProjeto -o nomeDoProjeto.war

Manipulação de erros

Quando existe algum erro de sintaxe no código, ao acessar o sistema, teremos uma tela semelhante a esta:

Com o erro na tela, podemos facilmente corrigir e recarregar a página. Não é preciso recompilar nada!

Padrão MVC

Seguindo o padrão MVC, o seu projeto consiste de três pastas: app/controllers, app/models e app/views. Cada controller possui uma pasta em app/views e cada método do controller geralmente possui arquivo template na pasta.

Por exemplo, o controller Application (criado pelo Play!) possui o método index(), que por sua vez possui o template app/views/Application/index.html.

Vamos ver este controller:
app/controllers/Application.java

package controllers;  import play.*; import play.mvc.*;  import java.util.*;  import models.*;  public class Application extends Controller {      public static void index() {         render();     }  }

O render() irá carregar o template com o nome do método. O template é exibido logo a seguir:
app/views/Application/index.html

#{extends 'main.html' /} #{set title:'Home' /}  <h1>Hello World</h1>

Roteamento REST

O arquivo /conf/routes contém todo o roteamento RESTful da aplicação. Veja:

# Routes # This file defines all application routes (Higher priority routes first) # ~~~~  # Home page GET     /                         Application.index  #USERS GET  /user/{id}   Users.show  # Ignore favicon requests GET     /favicon.ico                            404  # Map static resources from the /app/public folder to the /public path GET     /public/                                staticDir:public  # Catch all *       /{controller}/{action}                  {controller}.{action}

O primeiro item do roteamento diz que a raiz do site irá carregar o método index do controller Application. Outro exemplo é quando acessamos /user/1, redirecionando para o controller Users e o método show. Veja que temos o roteamento baseado no GET, mas podemos ter algo como POST, PUT, DELETE etc.

Persistência de dados

Um dos fatores principais de qualquer framework é persistir dados no banco relacional de forma orientada a objetos. O Play!, juntamente com o JPA, resolve esse problema facilmente. Basta criar as classes usando a nomenclatura JPA e realizar as operações para manipulação de dados.

Locale

Suporte para a tradução de mensagens de forma fácil, bastando apenas usar as template tags disponíveis.

 

Ainda existem outras funcionalidades interessantes ligadas ao Play!, que veremos em um próximo artigo. Até lá, que tal criarmos um “sisteminha” explorando as funcionalidades do Play!? Deixe sugestões aí nos comentários! Até a próxima!