Integre Redes Sociais nas Nuvens com o Framework Play



Documentos relacionados
Omega Tecnologia Manual Omega Hosting

MULTIACERVO - VERSÃO 17.*

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

Passo-a-Passo para Criação de Conta no site Griaule e Download do Programa SDK e da Licença Fingerprint SDK 2009

Desenvolvendo Websites com PHP

Play. Aumente sua produtividade com o framework. No ano de 2007 o desenvolvedor Guillaume Bort

MULTIACERVO - VERSÃO 18.* MANUAL PARA CONVERSÃO DA VERSÃO 17.* PARA 18.*

Maker Planet Manual do Usuário

Web Design Aula 11: Site na Web

Projeto Amadeus. Guia de Instalação Windows

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH!

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Está apto a utilizar o sistema, o usuário que tenha conhecimentos básicos de informática e navegação na internet.

Introdução ao Tableau Server 7.0

Instalando o WordPress em localhost

Manual de configuração do sistema

Guia de instalação para ambiente de Desenvolvimento LINUX

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

Portal Sindical. Manual Operacional Empresas/Escritórios

MANUAL DO INSTAR-MAIL 1.0. Pagina de login e senha do Instar-Mail

Módulo e-rede OpenCart v1.0. Manual de. Instalação do Módulo. estamos todos ligados

MULTIACERVO - VERSÃO 19.* MANUAL PARA CONVERSÃO DA VERSÃO 18.* PARA 19.*

Manual Administrador - Mídia System

INTRODUÇÃO: 1 - Conectando na sua conta

Procedimentos para Reinstalação do Sisloc

Módulo e-rede OpenCart v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Guia de usuário do portal de acesso SSH

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2.

GEPLANES GESTÃO DE PLANEJAMENTO ESTRATÉGICO MANUAL DE INSTALAÇÃO DO GEPLANES EM UM AMBIENTE WINDOWS

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5.

02 - Usando o SiteMaster - Informações importantes

MANUAL DE INSTALAÇÃO E CONFIGURAÇÃO. Motor Periférico Versão 8.0

LINUX EDUCACIONAL 3.0

Ambientação JAVA. Versão 0.1 MICHEL CORDEIRO ANALISTA DE NEGÓCIO (NTI 2014) 1 UNIVERSIDADE CEUMA 08/01/2014

ÍNDICE 1.CONHECENDO OS APLICATIVOS NECESSÁRIOS PARA O FUNCIONAMENTO DO SISTEMA URANO INTEGRA...

Manual de Atualização Versão

MANUAL DO SISTEMA. Versão 1.00

MANUAL DO ANIMAIL Terti Software

MANUAL DE UTILIZAÇÃO. HELP SUPORTE e HELP - REMOTO (Versão de usuário: 2.0)

BLACKBERRY - PME e PL Passo a Passo Registro Site BIS BlackBerry PME e Profissional Liberal

O sistema que completa sua empresa Roteiro de Instalação (rev ) Página 1

Manual do Google agenda. criação e compartilhamento de agendas

TUTORIAL PRÁTICO SOBRE Git. Versão 1.1

VIAÇÃO SÃO BENTO LTDA.

Lazarus pelo SVN Linux/Windows

Processo de Envio de

Acessando um Banco de Dados

Módulo e-rede Prestashop v1.0. Manual de. Instalação do Módulo. estamos todos ligados

LICENCIAMENTO V14 USANDO REPRISE LICENSE MANAGER

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco).

Manual das funcionalidades Webmail AASP

Manual de Utilização das Funções Básicas do Sistema ClinicWeb

Instalando servidor Apache com MySQL e as linguagens ColdFusion e PHP. XAMPP (xampp-win installer.exe), veja aqui.

Manual do usuário. v1.0

MANUAL DE INSTALAÇÃO DO ODONTO TECHNOLOGY

WF Processos. Manual de Instruções

Manual de Atualização DDBroker

Aula 03 - Projeto Java Web


Índice: CMS 3 O que é Content Management System? Clientes 4 O que é o Cliente? 4 Configurando o i-menu/i-view para trabalhar. com o CMS.

Google Drive. Passos. Configurando o Google Drive

A barra de menu a direita possibilita efetuar login/logout do sistema e também voltar para a página principal.

Está apto a utilizar o sistema, o usuário que tenha conhecimentos básicos de informática e navegação na internet.

Módulo e-rede OSCommerce v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Módulo e-rede Prestashop v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Laboratório - Exploração do FTP

Parte I. Demoiselle Mail

Procedimentos para Instalação do Sisloc

Construtor de sites SoftPixel GUIA RÁPIDO - 1 -

Como criar uma conta gratuita e subir uma foto no Windows Azure

2. INSTALAÇÃO E CONFIGURAÇÃO

Tutorial do administrador do HelpCenterLive (Sistema de Ajuda)

Manual de Instalação SystemFarma AutoCred

SSE 3.0 Servidor de Notificação por . Cadastrando

Introdução. Olá! Seja bem-vindo ao manager. O melhor sistema de marketing do mercado.

Manual de instalação, configurações e uso do LiveZilla

OPERADORA ON-LINE Manual de funcionamento do sistema para agente de viagens

Anote aqui as informações necessárias:

Manual TIM PROTECT BACKUP. Manual do Usuário. Versão Copyright TIM PROTECT BACKUP

ÍNDICE MANUAL SITE ADMINISTRÁVEL TV. 1. Introdução 2. Acessando o site administrável/webtv SITE ADMINISTRÁVEL 3. CONFIGURAÇÕES

e-ouv Passo-a-passo Sistema de Ouvidorias do Poder Executivo Federal Junho, 2015 Controladoria-Geral da União

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

CARTILHA DE ORIENTAÇÕES PARA USUÁRIOS DO HÁBIL EMPRESARIAL

Configurando um Grupo Doméstico e Compartilhando arquivos no Windows 7

Instalação: permite baixar o pacote de instalação do agente de coleta do sistema.

Guia de administração para a integração do Portrait Dialogue 6.0. Versão 7.0A

Manual Xerox capture EMBRATEL

Cartilha da Nota Fiscal Eletrônica 2.0 Hábil Empresarial PROFISSIONAL & Hábil Enterprise

Passo 1: Abra seu navegador e digite Passo 2: Na tela que surgir, clique em Get Started.

Manual do Visualizador NF e KEY BEST

Integração entre o IBM HTTP SERVER, APACHE WEB Server e IBM Websphere Application Server

Easytrade Admin Client

INTRODUÇÃO À TECNOLOGIA SERVLETS

MANUAL DE UTILIZAÇÃO

Projeto Amadeus. Guia de Instalação Linux

Manual do Painel Administrativo

Transcrição:

play_ Integre Redes Sociais nas Nuvens com o Framework Play Use as redes sociais no seu sistema Play e faça o deploy nas nuvens de maneira totalmente gratuita. Na edição 57 mostramos como criar uma aplicação simples utilizando o framework Play. Se não conseguiu ler esse artigo, não se preocupe, os conceitos básicos estão disponíveis no site, e será possível executar a aplicação de exemplo sem conhecimento prévio. Nesta edição será explicado e exemplificado com detalhes dois aspectos importantes de sua aplicação, em primeiro lugar como se integrar nas redes sociais (Facebook), e depois como colocar para rodar nas nuvens (Heroku). Projeto de exemplo O projeto que utilizaremos será o NetCitacoes, mesmo da edição 57, mas as instruções podem ser aplicadas à sua aplicação sem que você precise se preocupar com o projeto que utilizamos. O link para download do projeto está nas referências no final do artigo. Escolhendo o módulo A maioria dos grandes sites que acessamos não usa um mecanismo próprio de autenticação, e sim alguns já famosos do mercado, como o OpenID, usado pelo Yahoo!, ou o OAuth2 usado pelo GitHub e Facebook. Acessando a url www.playframework.com/modules você encontrará várias opções de módulos que fazem integração com Facebook, Twitter, Linkedin etc, e também encontrará opções que fazem integrações com os mecanismos de autenticação OAuth versão 1 e 2, OpenID, entre outros. Existem mais de 130 módulos, o melhor a fazer é identificar quais que atendem às suas necessidades de projeto. O módulo que vamos usar neste artigo chama-se Secure Social. Instalando o módulo Secure Social Primeiramente, precisamos instalar e baixar as dependências necessárias para a execução do módulo, para isso edite no seu projeto o arquivo dependencies.yml Adicione a seguinte linha ao final do arquivo. - play -> securesocial {versao onde, {versao deverá ser substituído pela versão do módulo desejado. Usaremos para esse exemplo a versão 0.2.6, então a linha que devemos adicionar no arquivo ficará dessa forma: - play -> securesocial 0.2.6 Não utilize a tecla TAB para identação do arquivo, caso contrário, ao tentar instalar as dependências, será exibida mensagem de erro. No projeto NetCitacoes da edição 57, utilizamos o módulo Secure, porém com o módulo SecureSocial / 48

Eduardo Cerqueira eduardo@webstart.com.br formado pela Universidade Ibirapuera, trabalha com java desde 2005 e sócio-diretor da WebStart Solutions, empresa com foco na prestação de serviços de desenvolvimento de software, atualmente trabalhando no desenvolvimento de startups. Fernando Boaglio fernando@boaglio.comr formado pela Unesp em BCC, foi instrutor oficial da Sun Microsystems e da Oracle Education. Atualmente contribui para alguns projetos open source, como KDE e Mentawai, e é da equipe de arquitetura da Discover Technology, prestando serviços para a Tokio Marine Seguradora. Depois da visão geral do Play Framework na MundoJ 57, vamos partir para opções mais avançadas. Como deixar o seu site popular se ele não se integra às principais redes sociais? E para publicá-lo em um ambiente robusto, no seu servidor de aplicação preferido ou nas nuvens, como proceder? Segure os seus commits e prepare-se para enriquecer sua aplicação rapidamente! não precisaremos mais dele, então a linha que se refere ao módulo Secure poderá ser excluída. Salve o arquivo agora no terminar, dentro do diretório do projeto. Execute o comando: play deps --sync Esse comando fará a leitura das informações contidas no arquivo dependencies.yml e efetuará o download dos arquivos necessários para serem utilizados no seu projeto (será exibida uma saída semelhante à Listagem 1 ). Listagem 1. Saída do comando play deps sync. $ play deps --sync _ \ / _ _ / _ \ \ (_) _ / play! 1.2.5, http://www.playframework.org Resolving dependencies using /Users/eduardocerqueira/ materiamj/netcitacoes/conf/dependencies.yml, play->scaffold head (from playcontributedmodules) play->securesocial 0.2.6 (from playcontributedmodules) Downloading required dependencies, downloaded http://www.playframework.org/modules/ securesocial-0.2.6.zip Installing resolved dependencies, modules/scaffold-head modules/secure -> /Users/eduardocerqueira/projetos/ ambiente/play-1.2.5/modules/secure modules/securesocial-0.2.6 Done! Após o término do download, precisamos incluir as bibliotecas no projeto e no build path, para isso, execute o comando: play eclipsify Pronto, já instalamos o módulo necessário e também já configuramos nosso projeto para utilização do mesmo. 49 \

É possível que algumas classes fiquem com erro de compilação, isso acontece porque existem várias referências ao módulo secure que não estamos utilizando mais, por esse motivo, as linhas com erro poderão ser comentadas sem qualquer problema. Agora, precisamos adicionar algumas diretrizes para que o módulo instalado seja efetivamente utilizado pela aplicação. Nessa etapa, precisaremos editar o arquivo conf/ application.conf para informar ao módulo quais as redes sociais e, consequentemente, os protocolos e as chaves de acesso a essas redes que serão utilizados. Para obtenção das chaves, cada serviço possui uma forma diferente, mas utilizando o Facebook como exemplo, precisamos acessar o endereço http:// developers.facebook.com e configurar uma nova aplicação. A explicação de como configurar uma nova aplicação não está dentro do escopo deste artigo (a edição 55 no artigo Integrando Aplicações Java com o Facebook mostrou como fazer isso), mas acessando o endereço acima, não será nenhum desafio, acredite! Depois de criada a sua aplicação, o Facebook fornece uma identificação da sua aplicação (App ID) e um código secreto (App Secret), apenas para garantir que é você mesmo que está usando essa aplicação e mais ninguém. Essas mesmas informações precisaremos para configurar o NetCitacoes. Edite o arquivo conf/application.conf e inclua as informações da Listagem 2. Listagem 2. Itens de configuração do módulo SecureSocial. securesocial.providers=facebook,userpass securesocial.facebook.authorizationurl= https://graph.facebook.com/oauth/authorize securesocial.facebook.accesstokenurl= https://graph.facebook.com/oauth/access_token securesocial.facebook.clientid=app_id securesocial.facebook.secret=secret_app securesocial.facebook.scope=email securesocial.mailer.subject=ative a sua conta securesocial.mailer.from=app@netcitacoes.com.br securesocial.logout.redirect=application.index Aqui tem uma série de informações que precisamos comentar, mas que de certa forma são auto- -explicativas. A propriedade securesocial.providers é responsável por dizer ao módulo quais os provedores de login utilizaremos na aplicação, como pode ser observado, mais de um provedor pode ser configurado para ser utilizado em conjunto. Usaremos os provedores de login do Facebook e o nosso velho conhecido padrão login e senha. As propriedades securesocial.facebook.authorizationurl e securesocial.facebook.access- TokenURL não precisam ser alteradas e referem-se ao endereço utilizado pelo Facebook para realizar autorização e verificação de token de acesso, bem auto-explicativo. Agora utilizaremos as informações que o Facebook nos forneceu para editar as propriedades securesocial.facebook.clientid e securesocial. facebook.secret substituindo os valores APP_ID e SECRET_APP por seus respectivos valores fornecidos quando criamos a nossa aplicação (App ID e App Secret, lembre-se que eles garantem que a aplicação foi criada exclusivamente por você). Na propriedade securesocial.logout.redirect informamos a action que será chamada quando o usuário efetuar logout no site. No nosso caso, estou executando a action que retorna para o ponto de entrada da aplicação. O Secure Social, além da autenticação, também proporciona o cadastro de usuário no seu sistema e ativação do mesmo por e-mail. Para configurar essa opção, informe duas propriedades: securesocial. mailer.subject, que é o assunto para o e-mail de ativação e securesocial.mailer.from, que define qual o endereço de e-mail remetente (From). Para finalizarmos a configuração do módulo, edite o arquivo conf/routes e troque o módulo de autenticação que usamos no artigo anterior, de secure para securesocial, conforme a última linha da Listagem 3. Listagem 3. Arquivo routes. # Routes # This file defines all application routes (Higher priority routes first) # # Home page GET / Application.index GET /listarcomentarios/{id Comentarios.listar # 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 { c o n t r o l l e r. {action # Secure social * /auth module:securesocial Adicionando segurança aos controllers No SecureSocial, podemos definir se nossas classes de controle terão acesso público ou restrito, que / 50

precisam de autenticações do usuário. Para informar ao módulo qual tipo de acesso uma classe controller terá, usaremos a anotação de classe @With() informando qual a classe que será aplicada. Para classes de acesso público utilizamos a anotação com a classe SecureSocialPublic.java e para acesso restrito, usamos a classe SecureSocial.java Baseado nesse conceito, alteramos a classe Application.java para usar a classe que permite o acesso público, para isso abra o arquivo Application.java e inclua a anotação de classe @ With(SecureSocialPublic.class) conforme Listagem 4. Listagem 4. Classe Application.class. package controllers; import play.mvc.controller; import play.mvc.with; import controllers.securesocial.securesocialpublic; @With(SecureSocialPublic.class) public class Application extends Controller { public static void index() { render(); public static void sair() throws Throwable { Agora, precisamos alterar as classes que terão acesso restrito e, por consequência, deverão redirecionar para a tela de login, caso sejam acessadas. Iremos alterar a classe Usuarios conforme a Listagem 5. Listagem 5. Classes Usuarios. ackage controllers; import java.util.list; import models.usuario; import play.data.validation.valid; import play.i18n.messages; import play.mvc.before; import play.mvc.controller; import play.mvc.with; import controllers.securesocial.securesocial; @With(SecureSocial.class) public class Usuarios extends Controller { @Before static void user() { p public static void index() { List<Usuario> entities = models.usuario.all().fetch(); render(entities); public static void create(usuario entity) { render(entity); public static void show(java.lang.long id) { Usuario entity = Usuario.findById(id); render(entity); public static void edit(java.lang.long id) { Usuario entity = Usuario.findById(id); render(entity); public static void delete(java.lang.long id) { Usuario entity = Usuario.findById(id); entity.delete(); public static void save(@valid Usuario entity) { if (validation.haserrors()) { flash.error(messages.get( scaffold.validation )); render( @create, entity); entity.save(); flash.success(messages.get( scaffold.created, Usuario )); public static void update(@valid Usuario entity) { if (validation.haserrors()) { flash.error(messages.get( scaffold.validation )); render( @edit, entity); entity = entity.merge(); entity.save(); flash.success(messages.get( scaffold.updated, Usuario )); Ajustando a segurança nas views Como estamos usando o módulo Secure Social, no arquivo index.html precisamos remover algumas linhas que tínhamos com referência ao módulo secure antigo (duas linhas com secure.check), então edite esse arquivo conforme a Listagem 6. Listagem 6. Alteração no arquivo index.html. #{extends main.html / <h2>controllers</h2> <a href= @{Citacaos.index >Citações </a><br/> <a href= @{Comentarios.index >Comentários </a><br/> <a href= @{Usuarios.index >Usuários</a><br/> #{list citacoes, as: citacao ${citacao.descricao #{/list 51 \

Acessando a aplicação e testando o funcionamento Pronto, agora com tudo configurado, basta executar o servidor do play com o comando: play run E acessar a URL de entrada da aplicação: http://localhost:9000 Ao acessar o sistema, não será solicitado nenhum login, pois está com acesso público na controller, porém ao acessar o item de menu usuários, será exibida uma tela semelhante à figura 1. Figura 1. Tela de usuários acessando o sistema com integração ao Facebook. Ao clicar no ícone do Facebook, a aplicação utilizará o login integrado para identificar o usuário, caso ele preencha as informações nos campos de username e password, o sistema buscará as informações no banco de dados da própria aplicação. Publicando sua aplicação É muito comum termos uma configuração diferente em desenvolvimento e produção, não só as senhas de banco, mas algumas vezes em desenvolvimento é MySQL e em produção Oracle. No play todas as configurações ficam no application.conf, e com um prefixo conseguimos diferenciar os ambientes. Exemplo: %producao.application.mode=prod db=mem %producao.db=postgres://postgres:postgres@localhost/ netcitacoes Nesse exemplo, temos no ambiente de desenvolvimento sem banco de dados (usando na verdade HSQL internamente) e em produção PostgreSQL. Para executar essa aplicação no ambiente de desenvolvimento, faça o de sempre: play run Para executar a aplicação em produção, especifique na linha de comando o ambiente desejado: play run --%producao Ao executar em um ambiente de produção, o hot deploy é desativado e antes de subir todos os fontes Java e os templates são compilados. A facilidade do Play também está na publicação (deploy). Nas referências você encontra o link da documentação oficial com os principais ambientes, aqui teremos as três opções mais utilizadas. 1. Standalone (apenas na sua máquina) Para publicar em uma só máquina ou em uma rede pequena, a melhor alternativa é utilizar o servidor disponível dentro do play o mesmo que é utilizado para o desenvolvimento, apenas suba a aplicação com play run. Esse servidor embutido no play suporta milhares de requisições simultâneas, e com certeza não será o gargalo de seu sistema. 2. Em um servidor Java EE O play consegue exportar sua aplicação para os principais contêiners JEE do mercado, como JBoss, Jetty, Tomcat, Websphere e Glassfish. play war netcitacoes -o netcitacoes.war --zip E as bibliotecas do Hibernate? E as bibliotecas dos drivers do banco de dados? Não se preocupe, de acordo com o que está configurado no arquivo de configuração, o play gera o pacote com todas as dependências necessárias. 3. Nas nuvens O Heroku.com é um excelente provedor de serviços que permite a publicação gratuita de sua aplicação em Play, desde que obedeça a algumas restrições. Para publicarmos o NetCitacoes, precisamos fazer alguns ajustes para o novo ambiente: a. as publicações funcionam via Git, portanto é necessária a instalação do cliente do controle de versão Git (veja nas referências onde baixar). b. converter o seu banco de dados para o PostgreSQL. É bem mais simples do que parece, vamos começar entrando no Heroku utilizando a linha de comando: > heroku auth:login Enter your Heroku credentials. Email: boaglio@gmail.com Password (typing will be hidden): Authentication successful. Agora vamos criar o nosso ambiente no servidor: dentro do diretório do NetCitacoes digite: > heroku create creating pure-badlands-1151... done stack is cedar http://pure-badlands-1151.herokuapp.com/ git@heroku. com:pure-badlands-1151.git Git remote heroku added / 52

Foi criado o ambiente lá no Heroku, e o diretório do seu projeto no Git foi ligado ao do servidor, para poder publicar sua aplicação. Como esse nome aleatório não é interessante, vamos renomear para um nome mais amigável: > heroku apps:rename netcitacoes Renaming pure-badlands-1151 to netcitacoes... done Se você não está acostumado com linha de comando, não se preocupe, tudo o que fizermos até agora pode ser feito via web browser conforme a figura 2. Vamos adicionar o suporte ao PostgreSQL versão gratuita de desenvolvimento (limite de 10000 linhas): > heroku addons:add heroku-postgresql:dev Adding heroku-postgresql:dev on netcitacoes... done v3 (free) Attached as HEROKU_POSTGRESQL_PINK_URL Database has been created and is available! This database is empty. If upgrading you can transfer! data from another database with pgbackups:restore. Use `heroku addons:docs heroku-postgresql:dev` to view documentation. Vamos importar as nossas tabelas para o servidor (o script cria-banco.sql está junto com o código-fonte, consulte as referências no final do artigo): >psql -h compute-1.amazonaws.com -U jihxebfy -d dvju -p 5432 < cria-banco.sql Senha para usuário jihxebfy: CREATE TABLE... ALTER TABLE Figura 2. Renomeando a aplicação NetCitações no Heroku. A partir de agora o subdomínio http://netcitacoes. herokuapp.com/ está registrado para a nossa aplicação, mas sem nenhuma aplicação por enquanto (conforme figura 3). Isso significa que o nosso ambiente está pronto, só aguardando uma publicação do nosso lado, que será feita via git. No conceito de nuvem, as aplicações funcionam com o mínimo possível e qualquer coisa que for necessário é preciso adicionar o módulo específico. Por exemplo, se a sua aplicação vai mandar e-mails, é preciso adicionar um módulo para isso (por exemplo, o Mailgun). Como precisamos de um banco de dados, vamos adicionar uma opção gratuita. Depois do banco de dados pronto, vamos configurar o servidor de aplicação. Ao contrário dos provedores que acessamos remotamente, aqui especificamos o que o servidor deve fazer em um arquivo de comandos, chamado Procfile. No nosso caso vamos colocar a instrução de subir uma aplicação em Play, portanto o arquivo contém apenas uma linha: web: play run --http.port=$port $PLAY_OPTS Agora faça o deploy de sua aplicação... FTP? SSH? Copiar arquivos? Reiniciar servidor web? Não precisa! O git faz tudo isso para você com uma linha de comando: Figura 3. Subdomínio registrado no Heroku sem nenhuma aplicaçã., 53 \

fb@cascao /workspace-play/netcitacoes [18:23:21]> git push heroku master Counting objects: 398 done. Delta compression using up to 4 threads. Compressing objects: 100% (221/221) done. Writing objects: 100% (398/398) 203.02 KiB 211 KiB/s done. Total 398 (delta 153) reused 385 (delta 150) -----> Play! app detected -----> Installing OpenJDK 1.6...done -----> Installing Play! 1.2.5...... -----> Launching... done v6 http://netcitacoes.herokuapp.com deployed to Heroku To git@heroku.com:netcitacoes.git * [new branch] master -> master Perceba o que aconteceu, o git pegou os seus arquivos e mandou para o servidor do Heroku, depois disso o servidor leu a linha de comando do arquivo Procfile e subiu a sua aplicação, simples assim. Agora está disponível a aplicação na nuvem do Heroku pelo endereço: http://netcitacoes.herokuapp. com (figura 4). Com essa postura dos responsáveis do Play, talvez o branch instável 1.3.0 nunca fique pronto, pois existe essa tendência quase que imposta que nos leva à nova versão, apesar dos problemas reportados todos os dias na lista de discussão oficial. Se não desejar aprender Scala e continuar no Java, não se preocupe! A maioria dos usuários continua na versão um e a Typesafe promete deixar a utilização da nova versão mais atraente para programadores Java. Considerações finais O framework Play é bastante extensível e provê de forma fácil acesso a facilidades que normalmente demandariam muito esforço para serem realizados manualmente em Java. Essas e muitas outras facilidades estão disponíveis para serem utilizadas sem muita complicação resultando em muita produtividade com baixo esforço para serem implementados. Após um roteiro de integração de uma aplicação Play integrar-se ao Facebook com poucas configurações, foi demonstrado também como publicar a sua aplicação na sua rede social ou nas nuvens no Heroku. O código-fonte e demais referências estão no final do artigo. Vale a pena dar uma olhada em outros módulos que o framework disponibiliza no site do projeto e tirar o máximo proveito do Play. Um grande abraço a todos e até a próxima! /referências Figura 4. Aplicação NetCitações nas nuvens. E o Play 2.x? Acessando o site oficial do Play Framework, parece que a primeira versão é coisa do passado distante e que a nova versão 2 está pronta para produção. Não é bem assim, para resumir a história o principal responsável pelo framework Play agora trabalha para a Typesafe, a empresa que mantém a linguagem Scala e vende produtos e serviços. Portanto, o Play 2 foi totalmente reescrito em Scala e o Play em Java colocado em segundo plano. Apesar do esforço da equipe da Typesafe, a adesão à nova versão pelos mantenedores dos módulos é muito baixa, e juntando com o pré-requisito de programar em Scala, atualmente essa versão não é muito popular. > https://github.com/egcerqueira/netcitacoes - códigofonte do exemplo do artigo > http://tinyurl.com/playdeploy - documentação oficial para publicação de aplicações > http://tinyurl.com/playprod - documentação oficial para ambiente de produção > http://git-scm.com/downloads - download do Git para Windows, MacOS e Linux > http://tinyurl.com/playheroku - documentação do Play no Heroku > http://playdocpt.herokuapp.com/ - tradução da documentação do Play em português > http://tinyurl.com/listaplay - lista de discussão oficial do Play / 54