Java Web Fácil com VRaptor

38

description

Palestra apresentada no FLISOL 2013 em Goiânia.

Transcript of Java Web Fácil com VRaptor

Page 1: Java Web Fácil com VRaptor
Page 2: Java Web Fácil com VRaptor

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

Page 3: Java Web Fácil com VRaptor

SOBRE VOCÊS?

Page 4: Java Web Fácil com VRaptor

AGENDA

Como é a Web com Java?

Action Based x Component Based

Os preferidos: JSF e Primefaces

O VRaptor! Vantagens e Desvantagens

Visão Geral do VRaptor

Recursos do Vraptor

OMG! Como aprender mais?

Page 5: Java Web Fácil com VRaptor

COMO É A WEB 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

Page 6: Java Web Fácil com VRaptor

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>");

}

}

Page 7: Java Web Fácil com VRaptor

Está me zoando? E

a manutenção?

Produtividade?

Page 8: Java Web Fácil com VRaptor

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

Page 9: Java Web Fácil com VRaptor

FRAMEWORKS WEB

MVC

Page 10: Java Web Fácil com VRaptor

ACTION BASED X COMPONENT BASED

Page 11: Java Web Fácil com VRaptor

OS PREFERIDOS: JSF E PRIMEFACES

Encapsula a web. É como se fosse desktop.

Especificação. Assim ficamos independentes.

Produtivo. Só seguir os docs do Primefaces.

Page 12: Java Web Fácil com VRaptor

OS PREFERIDOS: JSF E PRIMEFACES

Componentes lindões!

Curva de aprendizado baixa.

Não precisa saber JS, HTML e CSS!

Page 13: Java Web Fácil com VRaptor

SERÁ QUE É TUDO LINDO ASSIM?

Page 14: Java Web Fácil com VRaptor

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?

Page 15: Java Web Fácil com VRaptor

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?

Page 16: Java Web Fácil com VRaptor

JSF NÃO É PRA INICIANTES

Page 17: Java Web Fácil com VRaptor

MAS NÃO ERA SOBRE VRAPTOR?!

Page 18: Java Web Fácil com VRaptor

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.

Page 19: Java Web Fácil com VRaptor

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.

Page 20: Java Web Fácil com VRaptor

DESVANTAGENS DO VRAPTOR

Maior dependência de HTML, CSS e JS.

Pouco utilizado em nosso mercado.

Page 21: Java Web Fácil com VRaptor

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!

Page 22: Java Web Fácil com VRaptor

O RESULTADO É MUITO MELHOR

Page 23: Java Web Fácil com VRaptor

INICIANDO COM VRAPTOR

Baixe o Blank Project do site oficial.

Importe-o na sua IDE.

Comece a desenvolver.

Page 24: Java Web Fácil com VRaptor

INICIANDO DO JEITO “DIFÍCIL”

Baixe o VRaptor do site oficial.

Crie um projeto web na sua IDE.

Adicione o jar do VRaptor 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.

Page 25: Java Web Fácil com VRaptor

CONTROLLERS

@Resource

public class ProdutosController {

}

Page 26: Java Web Fácil com VRaptor

CONTROLLERS

@Resource

public class ProdutosController {

private ProdutoDao dao;

public List<Produto> lista() {

return dao.listaTodos();

}

}

Page 27: Java Web Fácil com VRaptor

VIEW

<ul>

<c:forEach items="${produtoList}" var="produto">

<li> ${produto.id} - ${produto.nome} </li>

</c:forEach>

</ul>

Page 28: Java Web Fácil com VRaptor

INJEÇÃO DE DEPENDÊNCIAS

@Component

public class ProdutoDao { //... }

@Resource

public class ProdutosController {

private ProdutoDao dao;

public ProdutosController(ProdutoDao dao) {

this.dao = dao;

}

}

Page 29: Java Web Fácil com VRaptor

REDIRECIONAMENTOS

public void adiciona(Produto produto) {

dao.adiciona(produto);

result.redirectTo(this).lista();

}

Page 30: Java Web Fácil com VRaptor

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);

}

Page 31: Java Web Fácil com VRaptor

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) {...}

}

Page 32: Java Web Fácil com VRaptor

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();

}

Page 33: Java Web Fácil com VRaptor

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.

Page 34: Java Web Fácil com VRaptor

VRAPTOR! O CAMPEÃO!

Page 35: Java Web Fácil com VRaptor

OMG! ONDE APRENDER MAIS?

Hoje ainda tem Hands on!

GUJ.

Documentão Oficial.

Apostilas da Caelum.

Page 36: Java Web Fácil com VRaptor

DÚVIDAS?

Page 37: Java Web Fácil com VRaptor

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

Page 38: Java Web Fácil com VRaptor

OBRIGADO!

Frederico Maia Arantes

[email protected]

@fredmaia

https://www.facebook.com/WhatsJob

http://www.gojava.org