Java Web Fácil com VRaptor

2,579 views
2,447 views

Published on

Palestra apresentada no FLISOL 2013 em Goiânia.

Published in: Technology
1 Comment
3 Likes
Statistics
Notes
No Downloads
Views
Total views
2,579
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
63
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide
  • 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?
  • Java Web Fácil com VRaptor

    1. 1. SOBRE MIM5 anos de experiência em Desenvolvimento deSoftware, 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
    2. 2. SOBRE VOCÊS?
    3. 3. 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?
    4. 4. COMO É AWEB COM JAVA?Baseado em Servlets, Filters, Request e ResponseServlets foram a primeira forma de criar páginasdinâmicas com JavaCriava-se um Servlet por página HTMLServlet significa “servidorzinho” e possui afunção de receber uma request e devolver umresponse
    5. 5. SHOW ME THE CODE!public class OiMundo extends HttpServlet {protected void service(HttpServletRequest request,HttpServletResponse response) throwsServletException, 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>");}}
    6. 6. Está me zoando? Ea manutenção?Produtividade?
    7. 7. OS SERVLETSO uso dos Servlets ainda evoluiu bastanteSurgiram os JPS`s e não era mais uma boaprática escrever HTML dentro dos ServletsOs Servlets passaram a ser um controladorSeparação da lógica de apresentação, da lógicade negócio e infraestrutura
    8. 8. FRAMEWORKS WEBMVC
    9. 9. ACTION BASED X COMPONENT BASED
    10. 10. OS PREFERIDOS: JSF E PRIMEFACESEncapsula a web. É como se fosse desktop.Especificação.Assim ficamos independentes.Produtivo. Só seguir os docs do Primefaces.
    11. 11. OS PREFERIDOS: JSF E PRIMEFACESComponentes lindões!Curva de aprendizado baixa.Não precisa saber JS, HTML e CSS!
    12. 12. SERÁ QUE É TUDO LINDO ASSIM?
    13. 13. 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?
    14. 14. 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?
    15. 15. JSF NÃO É PRA INICIANTES
    16. 16. MAS NÃO ERA SOBREVRAPTOR?!
    17. 17. VRAPTOR E VANTAGENSFramework MVC brasileiro e open source.Traz alta produtividade e facilidades de outrosmundos (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.
    18. 18. VRAPTOR E VANTAGENSDocumentação em português. Desenvolvedoresestão a um tópico do GUJ de distância.Baixa curva de aprendizado.Não interfere em como serão suas outrascamadas (mas te ajuda bastante com elas). Integração com outros sistemas (SOA, REST).Plugins, scaffold, baseado nas melhores práticas.
    19. 19. DESVANTAGENS DOVRAPTORMaior dependência de HTML, CSS e JS.Pouco utilizado em nosso mercado.
    20. 20. SOLUÇÃO PARA AS DESVANTAGENSAprenda HTML, CSS e JS. Para desenvolverboas app’s pra web, que tal aprender web?Twitter Bootstrap, JQuery, JQuery UI,YUI,ExtJS,AngularJS.Use!
    21. 21. O RESULTADO É MUITO MELHOR
    22. 22. INICIANDO COM VRAPTORBaixe o Blank Project do site oficial.Importe-o na sua IDE.Comece a desenvolver.
    23. 23. 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 pastalib/mandatory em seu classpath (WEB-INF/lib).Escolha um framework de IoC, como Spring.Adicione os jars da pasta lib/containers.Comece a desenvolver.
    24. 24. CONTROLLERS@Resourcepublic class ProdutosController {}
    25. 25. CONTROLLERS@Resourcepublic class ProdutosController {private ProdutoDao dao;public List<Produto> lista() {return dao.listaTodos();}}
    26. 26. VIEW<ul><c:forEach items="${produtoList}" var="produto"><li> ${produto.id} - ${produto.nome} </li></c:forEach></ul>
    27. 27. INJEÇÃO DE DEPENDÊNCIAS@Componentpublic class ProdutoDao { //... }@Resourcepublic class ProdutosController {private ProdutoDao dao;public ProdutosController(ProdutoDao dao) {this.dao = dao;}}
    28. 28. REDIRECIONAMENTOSpublic void adiciona(Produto produto) {dao.adiciona(produto);result.redirectTo(this).lista();}
    29. 29. VALIDAÇÃO FÁCILpublic void adiciona(Funcionario funcionario) {if (funcionario.getNome().isEmpty()) {validator.add(new ValidationMessage("nome.invalido","erro"));}validator.onErrorUsePageOf(this).formulario();dao.adiciona(funcionario);}
    30. 30. REST FÁCILpublic class ProdutosController {@Get("/produtos")public List<Produto> lista() {...}@Post("/produtos")public void adiciona(Produto produto) {...}@Get("/produtos/{produto.id}")public void visualiza(Produto produto) {...}}
    31. 31. AJAX FÁCILpublic void loadJson(Cliente cliente {result.use(json()).from(cliente).serialize();}public void loadXml(Cliente cliente) {result.use(xml()).from(cliente).serialize();}
    32. 32. 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.
    33. 33. VRAPTOR! O CAMPEÃO!
    34. 34. OMG! ONDE APRENDER MAIS?Hoje ainda tem Hands on!GUJ.Documentão Oficial.Apostilas da Caelum.
    35. 35. DÚVIDAS?
    36. 36. REFERÊNCIAS RECOMENDADAShttp://vraptor.caelum.com.br/http://www.caelum.com.br/apostila-vraptor-hibernate/http://www.slideshare.net/kaiovalente/vraptor-alta-produtividade-no-desenvolvimento-web-em-javahttp://www.slideshare.net/danielkist/vraptor-ciclo-casin-2011
    37. 37. OBRIGADO!Frederico Maia Arantesfredericomaia10@gmail.com@fredmaiahttps://www.facebook.com/WhatsJobhttp://www.gojava.org

    ×