Java Web Fácil com VRaptor
-
Upload
frederico-maia-arantes -
Category
Technology
-
view
2.071 -
download
4
description
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
@fredmaia
https://www.facebook.com/WhatsJob
http://www.gojava.org