Redescobrindo Java com Play! Framework

PorDaniel Schmitz em

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!

Deixe um comentário! 28

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Comentando como Anônimo

  1. Parabéns pelo post Daniel.
    Como sugestão poderia se fazer um pequeno controle de contas, dessa forma poderíamos ver inclusive registros mestre/detalhe na aplicação.

  2. Como java evangelista que sou, não poderei deixar de dizer que “tão fácil que nem parece java” é uma frase de quem desconhece até mesmo o básico de java. Fora esse minúsculo detalhe, ficou ótimo! Meus parabéns

  3. Estou estudando o Play 2.0 há algumas semanas e cheguei a conclusão que devo “voltar” ao Play 1.2.4 e continuar nele. Próximos artigos serão sobre Play 1.2, que continuará em desenvolvimento, até mesmo porque venho acompanhando o progresso no gitHub.

    O Play 2.0 mudou tudo, e ainda está mais lento por causa (principalmente) do scala/sbt. Então, até que ele melhore isso, não mudo de versão não.

    1. Completamente de acordo, não tem nada que me faça ,mudar do 1.2.x pro 2.x no momento, seria interessante se houvesse um fork realmente pra dar continuidade a evolução do play 1.2.x ja que o 1.2.5 ja esta vindo apenas com correções de bugs e performance!

  4. pena que ainda esta mt longe do RAZOR! eu fique entusiasmado e pense fazer alguma coisa em java com o PLAY… mais ainda não fazem nada de qualidade em java…. :(

  5. Pessoal,

    Como faz pra rodar os testes no browser na versão 2.0.4?

    A única documentação que encontrei no site em relação a isso funciona na versão 1.x, mas não na mais recente.

    Valeu obrigado

  6. Pessoal, eu não entendi porque esse artigo “voltou” como dia 27/11, ele foi publicado em agosto eu acho, na época que existia somente o o 1.0.2 e que estava prometendo muito! Depois saiu a versão 2.0 totalmente diferente e que eu não gostei.

  7. Seria muito interesante se postasse como iniciar no Play! colocar link para baixar o aplicativo para darmos iniciativa. Gostei do post. mais sou estudante de sistemas, do 7 periodo, e gostaria de aprender mais sobre o desenvolvimento. Se vale a pena eu iniciar por aqui ou aprender a fundo o Java, depois passar para o Play!.

  8. “mais ainda não fazem nada de qualidade em java…. :(”
    Cara, cada figura que aparece… Queria saber quais são esses padrões de qualidade enormes que algumas pessoas tem pra falar um negócio desses.
    Se o java não tivesse qualidade, os sistemas desenvolvidos para todo o governo, por exemplo, eram feitos em .NET e não são…

  9. Pessoal tudo bem?

    Sei que o post é antigo, mas quem tiver interesse…

    Nós da Webstart possuímos diversos projetos com play e temos oportunidades em aberto para trabalhar conosco.

    Quem tiver interesse, é só entrar em contato pelo site da webstart solutions e dizer que viu o meu comentário aqui tudo bem?

    Daniel, caso seja proibido esse tipo de abordagem por aqui, peço que me indique a melhor maneira para divulgar a oportunidade no seu post, tudo bem?

    O site é http://www.webstart.com.br

    Um grande abraço à todos e boa sorte.

leia mais