Boas práticas de programação com Object Calisthenics
Java Web Fácil com VRaptor
1.
2. SOBRE MIM
5 anos de experiência em Desenvolvimento de
Software, sendo 3 deles com Java
Desenvolvendo em Java, Scala e Groovy
Oracle Certified Java SE 6 Programmer ( OCJP 6 )
Instrutor de Cursos Java
Fundador do What’s Job?!
JUGLeader do Gojava
4. AGENDA
Como é aWeb com Java?
Action Based x Component Based
Os preferidos: JSF e Primefaces
OVRaptor!Vantagens e Desvantagens
Visão Geral doVRaptor
Recursos doVraptor
OMG! Como aprender mais?
5. COMO É AWEB COM JAVA?
Baseado em Servlets, Filters, Request e Response
Servlets foram a primeira forma de criar páginas
dinâmicas com Java
Criava-se um Servlet por página HTML
Servlet significa “servidorzinho” e possui a
função de receber uma request e devolver um
response
6. SHOW ME THE CODE!
public class OiMundo extends HttpServlet {
protected void service(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {
String nome= request.getParameter("nome");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("Olá " + nome);
out.println("</body>");
out.println("</html>");
}
}
8. OS SERVLETS
O uso dos Servlets ainda evoluiu bastante
Surgiram os JPS`s e não era mais uma boa
prática escrever HTML dentro dos Servlets
Os Servlets passaram a ser um controlador
Separação da lógica de apresentação, da lógica
de negócio e infraestrutura
11. OS PREFERIDOS: JSF E PRIMEFACES
Encapsula a web. É como se fosse desktop.
Especificação.Assim ficamos independentes.
Produtivo. Só seguir os docs do Primefaces.
12. OS PREFERIDOS: JSF E PRIMEFACES
Componentes lindões!
Curva de aprendizado baixa.
Não precisa saber JS, HTML e CSS!
14. OS PREFERIDOS: JSF E PRIMEFACES
Encapsula a web. É como se fosse desktop.
Mas web é igual a desktop? E o HTTP, GET,
POST, PUT, DELETE? REST?
Especificação.Assim ficamos independentes.
Ser especificão é mesmo um critério tão forte?
Na velocidade que precisamos?
Produtivo. Só seguir os docs do Primefaces.
E os componentes que ele não tem?
15. OS PREFERIDOS: JSF E PRIMEFACES
Componentes lindões!
E a customização fina que o cliente pediu?
E o Web Designer que ele contratou?
Curva de aprendizado baixa.
Então você entende bem o ciclo de vida?
Não precisa saber JS, HTML e CSS!
Seu browser (desktop, mobile) entende o que?
18. VRAPTOR E VANTAGENS
Framework MVC brasileiro e open source.
Traz alta produtividade e facilidades de outros
mundos (ex. Grails, Rails).
Encapsula os Servlets, Request e Response.
Baseado em Convention Over Configuration.
Utiliza Injeção de Dependências.Testável.
Altamente flexível.
19. VRAPTOR E VANTAGENS
Documentação em português. Desenvolvedores
estão a um tópico do GUJ de distância.
Baixa curva de aprendizado.
Não interfere em como serão suas outras
camadas (mas te ajuda bastante com elas).
Integração com outros sistemas (SOA, REST).
Plugins, scaffold, baseado nas melhores práticas.
21. SOLUÇÃO PARA AS DESVANTAGENS
Aprenda HTML, CSS e JS. Para desenvolver
boas app’s pra web, que tal aprender web?
Twitter Bootstrap, JQuery, JQuery UI,YUI,
ExtJS,AngularJS.
Use!
24. INICIANDO DO JEITO “DIFÍCIL”
Baixe oVRaptor do site oficial.
Crie um projeto web na sua IDE.
Adicione o jar doVRaptor e os jars da pasta
lib/mandatory em seu classpath (WEB-INF/lib).
Escolha um framework de IoC, como Spring.
Adicione os jars da pasta lib/containers.
Comece a desenvolver.
28. INJEÇÃO DE DEPENDÊNCIAS
@Component
public class ProdutoDao { //... }
@Resource
public class ProdutosController {
private ProdutoDao dao;
public ProdutosController(ProdutoDao dao) {
this.dao = dao;
}
}
30. VALIDAÇÃO FÁCIL
public void adiciona(Funcionario funcionario) {
if (funcionario.getNome().isEmpty()) {
validator.add(
new ValidationMessage("nome.invalido",
"erro"));
}
validator.onErrorUsePageOf(this).formulario();
dao.adiciona(funcionario);
}
31. REST FÁCIL
public class ProdutosController {
@Get("/produtos")
public List<Produto> lista() {...}
@Post("/produtos")
public void adiciona(Produto produto) {...}
@Get("/produtos/{produto.id}")
public void visualiza(Produto produto) {...}
}
32. AJAX FÁCIL
public void loadJson(Cliente cliente {
result.use(json()).from(cliente).serialize();
}
public void loadXml(Cliente cliente) {
result.use(xml()).from(cliente).serialize();
}
33. PONTOS FORTES
Liberdade na view!
Injeção de dependências fácil!
Objetos na view (se quiser).
Desacopla a view e o Controller.
Convenções! Permite configurações.
RESTful fácil! JSON fácil!
Poderoso, pode confiar, aguenta o tranco.
Quemédesenvolvedor?Quemjáprogramaem Java, Java pra Web? Oquejásabem do Vraptor?
Vocêrecebeosparâmetros no request e devolve no responde.Precisa converter todosostiposqueprecisar.Imagine desenvolvertodasua app web escrevendo o html nestas string’s!
Imagine desenvolvertodasua app web escrevendo o html nestas string’s!
Alguémconhecealgum framework Java web?
Quemsabe a diferença?
Encapsula a web. Écomo se fosse desktop.Mas web éigual a desktop? E o HTTP? GET, POST, DELETE, PUT? Integração com outros sistemas? REST?Produtivo. Sóseguiros docs do Primefaces.E oserrosfrom hell? O clientequerumatabelaqueaparecegirandonatela.Especificação. Assimficamosindependentes.E a demorapara se atualizar? E o processamento no server?
Componenteslindões!E a customização do cliente? E o Web Designer queelecontratoupracriar o layout comoelequeria?Curva de aprendizadobaixa.E o ciclo de vida? Vocês o conhecembem?Nãoprecisa saber JS, HTML e CSS! Mas o cliente da suaaplicação (browser, mobile) tambémnãoprecisa? Entãoporqueexiste a W3C e ospadrões web? E o Google e seusmotores de busca?
Voltar Slides…JSF quandobemusadopodeserutilizadoparacriaraplicaçõesincríveis e performáticas.O problemaéque, diferente de outros frameworks, existe a ilusão de queeleéfácil.Quasetodososproblemas/erroscitadosnãosãocometidospelosmaisexperientes.
Encapsula a web. Écomo se fosse desktop.Mas web éigual a desktop? E o HTTP? GET, POST, DELETE, PUT? Integração com outros sistemas? REST?Produtivo. Sóseguiros docs do Primefaces.E oserrosfrom hell? O clientequerumatabelaqueaparecegirandonatela.Especificação. Assimficamosindependentes.E a demorapara se atualizar? E o processamento no server?
Componenteslindões!E a customização do cliente? E o Web Designer queelecontratoupracriar o layout comoelequeria?Curva de aprendizadobaixa.E o ciclo de vida? Vocês o conhecembem?Nãoprecisa saber JS, HTML e CSS! Mas o cliente da suaaplicação (browser, mobile) tambémnãoprecisa? Entãoporqueexiste a W3C e ospadrões web? E o Google e seusmotores de busca?
Componenteslindões!E a customização do cliente? E o Web Designer queelecontratoupracriar o layout comoelequeria?Curva de aprendizadobaixa.E o ciclo de vida? Vocês o conhecembem?Nãoprecisa saber JS, HTML e CSS! Mas o cliente da suaaplicação (browser, mobile) tambémnãoprecisa? Entãoporqueexiste a W3C e ospadrões web? E o Google e seusmotores de busca?