Java Web Fácil com VRaptor

Post on 29-Jun-2015

2.073 views 4 download

description

Palestra apresentada no FLISOL 2013 em Goiânia.

Transcript of 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

SOBRE VOCÊS?

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?

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

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

}

}

Está me zoando? E

a manutenção?

Produtividade?

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

FRAMEWORKS WEB

MVC

ACTION BASED X COMPONENT BASED

OS PREFERIDOS: JSF E PRIMEFACES

Encapsula a web. É como se fosse desktop.

Especificação. Assim ficamos independentes.

Produtivo. Só seguir os docs do Primefaces.

OS PREFERIDOS: JSF E PRIMEFACES

Componentes lindões!

Curva de aprendizado baixa.

Não precisa saber JS, HTML e CSS!

SERÁ QUE É TUDO LINDO ASSIM?

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?

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?

JSF NÃO É PRA INICIANTES

MAS NÃO ERA SOBRE 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.

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.

DESVANTAGENS DO VRAPTOR

Maior dependência de HTML, CSS e JS.

Pouco utilizado em nosso mercado.

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!

O RESULTADO É MUITO MELHOR

INICIANDO COM VRAPTOR

Baixe o Blank Project do site oficial.

Importe-o na sua IDE.

Comece a desenvolver.

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.

CONTROLLERS

@Resource

public class ProdutosController {

}

CONTROLLERS

@Resource

public class ProdutosController {

private ProdutoDao dao;

public List<Produto> lista() {

return dao.listaTodos();

}

}

VIEW

<ul>

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

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

</c:forEach>

</ul>

INJEÇÃO DE DEPENDÊNCIAS

@Component

public class ProdutoDao { //... }

@Resource

public class ProdutosController {

private ProdutoDao dao;

public ProdutosController(ProdutoDao dao) {

this.dao = dao;

}

}

REDIRECIONAMENTOS

public void adiciona(Produto produto) {

dao.adiciona(produto);

result.redirectTo(this).lista();

}

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

}

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

}

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

}

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.

VRAPTOR! O CAMPEÃO!

OMG! ONDE APRENDER MAIS?

Hoje ainda tem Hands on!

GUJ.

Documentão Oficial.

Apostilas da Caelum.

DÚVIDAS?

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

OBRIGADO!

Frederico Maia Arantes

fredericomaia10@gmail.com

@fredmaia

https://www.facebook.com/WhatsJob

http://www.gojava.org