SlideShare ist ein Scribd-Unternehmen logo
1 von 36
O que aprendi com
Play Framework
ObjetivoObjetivo
Compartilhar o Aprendizado com aCompartilhar o Aprendizado com a
tecnologia 'Play Framework' bemtecnologia 'Play Framework' bem
como apresentar um modelo decomo apresentar um modelo de
programação/sistemas reativos paraprogramação/sistemas reativos para
requisitos de alto desempenho erequisitos de alto desempenho e
escalabilidadeescalabilidade
RotaRota
Oque é?Oque é?
Core Play!Core Play!
Synchronous/bloking vs Async/Non-Synchronous/bloking vs Async/Non-
BlockingBlocking
Reactive Systems/ProgrammingReactive Systems/Programming
URL Routing (RESTFul)URL Routing (RESTFul)
Shere-Nothing(Stateless)Shere-Nothing(Stateless)
Template EngineTemplate Engine
Class ReloadingClass Reloading
TestesTestes
Evolution Data BaseEvolution Data Base
WebSocketsWebSockets
Akka(Modelo de Atores)Akka(Modelo de Atores)
Oque é?Oque é?
“Play é baseado em uma leve,
amigável e stateless arquitetura
Web, possui o consumo de
recursos previsíveis e mínimos de
(CPU, Memoria,Threads) para
aplicações altamente escaláveis” [1]
por que?por que?
mais um framework?mais um framework?
Mudanças nos RequisitosMudanças nos Requisitos
É HORA DE MUDAR
Reactive Systems/ProgrammingReactive Systems/Programming
http://www.reactivemanifesto.org/
Core Play!Core Play!
Os mais Usados Synchronous/Bloking IOOs mais Usados Synchronous/Bloking IO
Async/Non-Blocking IO que estão ganhandoAsync/Non-Blocking IO que estão ganhando
popularidadepopularidade
Bloking vs Non Bloking IOBloking vs Non Bloking IO
Non Bloking IO: Você pede
a pizza, a atendente
anota, desliga e atende o
próximo cliente, quando a
pizza estiver pronta ela é
entregue para você
Bloking IO: Você pede a
pizza, a atendente vai
ficar com você até quando
a pizza estiver pronta
NIO BenefíciosNIO Benefícios
• Consomem recursos somente quando
estiverem ativos
• Menor sobrecarga do sistema
• Suporta vários conexões concorrentes
• WebSockets
• Comet
• Server-Send Events
Qualidade com AgilidadeQualidade com Agilidade
• KISS (Keep It Simple, Stupid)
• CoC (Convension Over Configuration)
• DRY (Dont Repeat Youself)
• YAGNI (You Arent Gonna Need It)
• GRASP (General Responsibility Assignment Software Patterns)
• SOLID (Single responsibility, Open-closed, Liskov
substitution, Interfacesegregation and Dependency inversion)
• TDD (Test Driven Development)
• BDD (Behavior Driven Development)
Mão na MassaMão na Massa
URL Routing (RESTFul)URL Routing (RESTFul)
VERB PATH CONTROLLER_METHOD
GET / controllers.Application.index()
GET /foo controllers.Application.foo()
Controllers Share-Nothing(Stateless)
public static Result index() {
return ok(index.render("hello, world"));
}
COMPOSABLE, TYPE-SAFE SCALACOMPOSABLE, TYPE-SAFE SCALA
TEMPLATESTEMPLATES
@(message: String)
@main("Welcome to Play 2.0") {
@message
}
E AGORA REINICIAR O SERVIDOR?E AGORA REINICIAR O SERVIDOR?
Percentual de tempo de codificação
separado para o redeploying
Waiting[2]
TestesTestes
● Controllers
● Templates
● Routes
● Integration Tests
ASSET COMPILERSASSET COMPILERS
●
CoffeeScriptCoffeeScript
●
LESSLESS
●
SASSSASS
●
RequireJSRequireJS
●
JSHintJSHint
●
entre outros...entre outros...
WEBJARSWEBJARS
● Bibliotecas mais usadas no client-side:
jQuery, Bootstrap, etc
● Gerencia a controle de versão através
de gerenciamento de dependência
Evolution Data BaseEvolution Data Base
Controle a versão do seu
Banco
WebSocketsWebSockets
● Introduzido no HTML5
● Define uma full-duplex single socket connection,
através da qual é possível enviar mensagens
entre cliente e servidor
● Simplifica a complexidade em torno da
comunicação web bi-direcional
Akka (Modelo de Atores)Akka (Modelo de Atores)
● Abstrai a programação concorrente
● Mutabilidade isolada
● Imutabilidade Compartilhada
Mas o que é um ator?Mas o que é um ator?
● Modelo criado em 1987 pela
Linguagem Erlang
● Entidades Independentes
● Estado
● Comportamento
● Mailbox
QUEM USA PLAY / SCALA?QUEM USA PLAY / SCALA?
https://typesafe.com/resources/case-studies-and-stories
ConclusãoConclusão
De uma curva de apredizado baixa,
Play! é uma excelente ferramenta para
o desenvolvimento de aplicações web,
principalmente se a cultura ágil é a
marca de sua equipe
ReferenciasReferencias
1.http://presos.jamesward.com/practicing_continuous_delivery/#/4/1
2.http://zeroturnaround.com/rebellabs/java-ee-productivity-report-2011/
3.https://typesafe.com/resources/case-studies-and-stories
DUVIDAS?
OBRIGADO

Weitere ähnliche Inhalte

Ähnlich wie PlayFramework

Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Allyson Barros
 
Inovando na plataforma Java
Inovando na plataforma JavaInovando na plataforma Java
Inovando na plataforma Java
Eteg
 

Ähnlich wie PlayFramework (20)

Google AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGoogle AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
 
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Desenvolvimento Ágil com Play! Framework
Desenvolvimento Ágil com Play! FrameworkDesenvolvimento Ágil com Play! Framework
Desenvolvimento Ágil com Play! Framework
 
Produtividade em Java com Grails
Produtividade em Java com GrailsProdutividade em Java com Grails
Produtividade em Java com Grails
 
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
 
Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks
Apresentacao Ii Encontro Sl Amazonas Integracao De FrameworksApresentacao Ii Encontro Sl Amazonas Integracao De Frameworks
Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks
 
Play - Full Stack Java Web Framework
Play -  Full Stack Java Web FrameworkPlay -  Full Stack Java Web Framework
Play - Full Stack Java Web Framework
 
NoSQL Livre
NoSQL LivreNoSQL Livre
NoSQL Livre
 
React nos Trilhos
React nos TrilhosReact nos Trilhos
React nos Trilhos
 
Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
 
BIG DATA na UFSM
BIG DATA na UFSMBIG DATA na UFSM
BIG DATA na UFSM
 
Inovando na plataforma Java
Inovando na plataforma JavaInovando na plataforma Java
Inovando na plataforma Java
 
Inovando na Plataforma Java
Inovando na Plataforma JavaInovando na Plataforma Java
Inovando na Plataforma Java
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud Platform
 
Automatização Desenvolvimento Web com Gulp
Automatização Desenvolvimento Web com GulpAutomatização Desenvolvimento Web com Gulp
Automatização Desenvolvimento Web com Gulp
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
 
Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014
 
ODI Series - Treinamento
ODI Series - TreinamentoODI Series - Treinamento
ODI Series - Treinamento
 
Introdução Play framework
Introdução Play frameworkIntrodução Play framework
Introdução Play framework
 

PlayFramework

Hinweis der Redaktion

  1. Responsive: O sistema responde em tempo hábil, se possível. Resiliente: O sistema permanece responsivo em face da falha Elastic: O sistema permanece responsivo sob variando carga de trabalho. Sistemas reativos pode reagir a mudanças na taxa de entrada, aumentando ou diminuindo os recursos alocados para atender a esses insumos. Mensagem Driven: sistemas reativos contam com uma passagem de mensagens assíncrona para estabelecer uma fronteira entre os componentes que garante o baixo acoplamento, isolamento, transparência de localização , e fornece os meios para delegar erros como mensagens.
  2. Comunicação Non-blocking permite que os destinatários apenas consumam recursos quando estiverem ativos, levando a uma menor sistema sobrecarga.
  3. Comunicação Non-blocking permite que os destinatários apenas consumam recursos quando estiverem ativos, levando a uma menor sistema sobrecarga.
  4. métodos estáticos são ruins, ele não são testáveis, e assim por diante, mas ele está aqui por uma razão muito importante, um controller é um objeto sem estado, porque o protocole HTTP por si é stateless, você faz uma requisição, você obtêm a resposta... não há relação entre essas conexões
  5. Usa http://www.fluentlenium.org/ Uma facilitador para o Selenium