Dr. AndersonV. de Araújo
about.me/andvicoso
A intenção aqui não é definir qual é o
MELHOR framework MVC para Java web
É dar opções!
Falar um pouco de cada e mostrar e...
Servlets 3.X
JSF 2.X
Struts2
Spring MVC
VRaptor
Play!
Podemos fazer os mapeamentos (Servlets e
Filtros) usando anotações!
UHUUU!
Controller
Deve estender de HttpServlet
Deve se...
Pontos positivos:
Padrão Java EE
Bastante difundido (1.0 em 1997)
Bom para o aprendizado de conceitos básicos:
▪ Request, ...
@WebServlet(urlPatterns = { "/view/user/add.do" })
public class AddUserServlet extends HttpServlet {
@Override
protected v...
Component-based framework
Controller:
Todos devem ser anotados com @ManagedBean para
serem visíveis na view
Deve ser anota...
Pontos positivos:
Padrão Java EE
Bastante difundido (1.0 em 2004)
Alta empregabilidade (ainda)
Várias bibliotecas de compo...
@ManagedBean
@ViewScoped //Poderia ser outro escopo
public class UserController implements Serializable {
private UserDao ...
<html xmlns=http://www.w3.org/1999/xhtml
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h...
Action-based framework
Junção do Struts com oWebWork
Configuração:
Antigamente tinha muita em XML
Atualmente boa parte pod...
Pontos positivos:
Bastante difundido (1.0 – 2000, 2.0 - 2007)
Alta empregabilidade (ainda)
Vários plugins: Bootstrap, Conv...
@Results({ @Result(name = "success",
type = "redirectAction", params = {"actionName", "list”}),
@Result(name = "input", lo...
Action-based framework
As características do Spring podem ser
utilizadas independentemente (DI, Aspects, ...)
Webservices ...
Pontos positivos:
Fácil aprendizado
Não precisa de getters e setters como Struts2 e JSF
Fácil aprendizado
▪ Forma de redir...
@Controller
public class UserController {
@Inject
private UserDao dao;//injetado
@RequestMapping(value = "/user/put", meth...
Caelum
Cursos e apostilas
Brasileiro!
Nasceu em 2003 no IME-USP
Convention over Configuration
Controller:
Deve ser anotado...
Pontos Positivos:
Documentação em português!
Fácil aprendizado
▪ Forma de redirecionamento, REST, validação , injeção de
d...
@Resource
public class UserController {
private UserDao dao;
private Result result;
private Validator validator;
public Us...
Vamos aos fatos!
Servlets** JSF Struts 2 Spring MVC
Livros (Amazon.com) 1,104 334 690 149
Linked in Skills 144k (-7) 77k (-5%) 161k (-10%) ...
Importância dos
frameworks pelos
desenvolvedores
-InfoQ (EUA, Jun13)
Ordem
Matt`s
Weighted
TheServerSide
Java Symposium
The Rich Web
Experience
(RWX) 2010
Devoxx
2010
1 Grails Grails Grails G...
Quem disse que seria fácil?
Que tipo de aplicação que você está
construindo?
Projeto Comunitário?
Manutenção
CaracterísticasTécnicas
Não acredite piamente em blogs e artigos
Tente você mesmo!
Acredite desenvolvedores, não evangelistas
Aqueles que têm expe...
Frameworks têm pontos fracos – a sua
aplicação é/possui um deles?
Escolha 2-3 frameworks para o seu tipo de
aplicação ... ...
Não tenha medo de:
Experimentar novos frameworks
Usar frameworks antigos
Manter o seu framework existente
Não existe MELHOR framework;
É ótimo ter competição!
Os desenvolvedores deveriam saber mais de
um framework
Você deve tent...
Matt Raible
Comparative table;
Esta apresentação no slideshare;
http://www.slideshare.net/andvicoso/como-
escolher-o-frame...
Perguntas?
about.me/andvicoso
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?
Nächste SlideShare
Wird geladen in …5
×

Como escolher o Framework Java para web?

19.638 Aufrufe

Veröffentlicht am

Como escolher o Framework Java para web?
Comparações entre os frameworks: Java, Web, Struts2, Spring MVC, JSF.

Veröffentlicht in: Technologie
4 Kommentare
11 Gefällt mir
Statistik
Notizen
Keine Downloads
Aufrufe
Aufrufe insgesamt
19.638
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
28
Aktionen
Geteilt
0
Downloads
200
Kommentare
4
Gefällt mir
11
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Como escolher o Framework Java para web?

  1. 1. Dr. AndersonV. de Araújo about.me/andvicoso
  2. 2. A intenção aqui não é definir qual é o MELHOR framework MVC para Java web É dar opções! Falar um pouco de cada e mostrar exemplos em código Foco no Controller Matt Raible Compara frameworks desde 2004 Links para algumas comparações dele no final
  3. 3. Servlets 3.X JSF 2.X Struts2 Spring MVC VRaptor Play!
  4. 4. Podemos fazer os mapeamentos (Servlets e Filtros) usando anotações! UHUUU! Controller Deve estender de HttpServlet Deve ser mapeado a uma URL (XML ou anotações)
  5. 5. Pontos positivos: Padrão Java EE Bastante difundido (1.0 em 1997) Bom para o aprendizado de conceitos básicos: ▪ Request, response, session, parameter, filter, ... Pontos negativos: Pegar parâmetros da requisição Validação Mensagens/Internacionalização Etc (muita coisa ruim aqui)
  6. 6. @WebServlet(urlPatterns = { "/view/user/add.do" }) public class AddUserServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest pReq, HttpServletResponse pResp) throws ServletException, IOException { String name = pReq.getParameter("name"); String phone = pReq.getParameter("phone"); boolean valid = StringUtils.isNotBlank(name) && StringUtils.isNotBlank(phone); if (valid) { User user = new User(); user.setName(name); user.setPhone(phone); UserDao dao = new UserDaoJPA();//Poderia ser injetada! dao.create(user); } pResp.sendRedirect(valid ? "list.do" : "add.do"); } }
  7. 7. Component-based framework Controller: Todos devem ser anotados com @ManagedBean para serem visíveis na view Deve ser anotado com uma anotação de escopo na qual o bean vai estar disponível ▪ @NoneScoped, @RequestScoped, @ViewScoped, @SessionScoped, @ApplicationScoped e @CustomScope Os métodos do managed bean são acessíveis na view (xhtml) através das tags do JSF
  8. 8. Pontos positivos: Padrão Java EE Bastante difundido (1.0 em 2004) Alta empregabilidade (ainda) Várias bibliotecas de componentes disponíveis Facilidade no uso de componentes ricos e “Ajax” Pontos negativos: Sopa de tags no jsps ▪ Pode ser ruim para designers Muito acoplamento entreView e Controller Chato de testar “Aprende” menos CSS, HTML e JS FacesContext.getCurrentInstance().getExternalContext()
  9. 9. @ManagedBean @ViewScoped //Poderia ser outro escopo public class UserController implements Serializable { private UserDao dao; private User user; @PostConstruct public void init() { user = new User(); dao = new UserDaoJPA();//Poderia ser injetada! } public String add() { dao.create(user); user = new User(); return "list"; } //getters e setters omitidos
  10. 10. <html xmlns=http://www.w3.org/1999/xhtml xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"> <h:head><title>Cadastro de usuários</title></h:head> <h:body> <h1>Cadastro de Usuário</h1><br /> <h:messages /> <h:form> <h:panelGrid columns="2"> <h:outputText value="Nome" /> <h:inputText value="#{userController.user.name}" /> <h:outputText value="Telefone" /> <h:inputText value="#{userController.user.phone}" /> <h:outputText value="Login" /> <h:inputText value="#{userController.user.login}" /> <h:outputText value="Password" /> <h:inputSecret value="#{userController.user.password}" /> <h:commandButton action="#{userController.add}" value="Cadastrar"/> </h:panelGrid> </h:form> </h:body> </html>
  11. 11. Action-based framework Junção do Struts com oWebWork Configuração: Antigamente tinha muita em XML Atualmente boa parte pode ser feita usando anotações Convention Plugin (CP) facilita muito a vida Convention over configuration (coding by convention) Controller: Convention Plugin: ▪ Deve conter um pacote com um dos nomes: struts, struts2, action ou actions. Nele devem estar as actions ▪ Os paths são definidos por pacotes na hierarquia As actions devem ser anotadas com @Action(“url”) Os resultados (retornos) são definidos com @Result Em geral, estendem de ActionSupport
  12. 12. Pontos positivos: Bastante difundido (1.0 – 2000, 2.0 - 2007) Alta empregabilidade (ainda) Vários plugins: Bootstrap, Convention, JQuery, ... ▪ Com tags de componentes (pode ser um ponto negativo) Interceptor Pontos negativos: Pode ter sopa de tags no jsps Documentação muito espalhada e mal organizada ▪ Fácil confundir com a versão 1 em uma “googlada” Pode ter muito XML na configuração, além do properties
  13. 13. @Results({ @Result(name = "success", type = "redirectAction", params = {"actionName", "list”}), @Result(name = "input", location = "add.jsp") }) public class AddUserAction extends ActionSupport { private User user = new User(); @Action("add") public String add() { return INPUT; } @Action("put") public String put() { UserDao dao = new UserDaoJPA();//Poderia ser injetada! dao.create(user); return SUCCESS; } //getters e setters omitidos }
  14. 14. Action-based framework As características do Spring podem ser utilizadas independentemente (DI, Aspects, ...) Webservices RESTful podem ser criados através de anotações. Controller: Classe deve ser anotada com @Controller Método de ação deve ser anotado com @RequestMapping(“url") Parâmetros com @RequestParam
  15. 15. Pontos positivos: Fácil aprendizado Não precisa de getters e setters como Struts2 e JSF Fácil aprendizado ▪ Forma de redirecionamento, REST, validação , e internacionalização são bem fáceis Comunidade crescendo rapidamente Pontos negativos: Pode ter muito XML na configuração ▪ Configuração com anotações ainda muito incipiente Requer experiência pra configurar inicialmente
  16. 16. @Controller public class UserController { @Inject private UserDao dao;//injetado @RequestMapping(value = "/user/put", method = RequestMethod.POST) public String put(@ModelAttribute User user) { dao.create(user); return “redirect:/user/list”; } @RequestMapping(value = “/user/add") public String add() { return “user/add"; } }
  17. 17. Caelum Cursos e apostilas Brasileiro! Nasceu em 2003 no IME-USP Convention over Configuration Controller: Deve ser anotado com @Resource e o nome da classe deve terminar com Controller Ex.: FuncionarioController. O path de acesso fica “/funcionario/{nomeDoMetodo}” O método pode ser anotado com @Path para alterar
  18. 18. Pontos Positivos: Documentação em português! Fácil aprendizado ▪ Forma de redirecionamento, REST, validação , injeção de dependências e internacionalização são bem fáceis Não precisa de getters e setters como o Struts2 e JSF Interceptor Pontos Negativos: Baixa utilização fora do Brasil Comunidade pequena Baixa empregabilidade
  19. 19. @Resource public class UserController { private UserDao dao; private Result result; private Validator validator; public UserController(UserDao dao, Result result, Validator validator) { this.dao = dao; this.result = result; this.validator = validator; } @Get public void add() {} @Post public void put(User user) { validator.checking(getValidations(user, false)); validator.onErrorUsePageOf(UserController.class).add(); dao.create(user); result.redirectTo(this).list(); } private Validations getValidations(final User user, final boolean isEdit) { return new Validations() {{ that(StringUtils.isNotBlank(user.getName()), "error", "name.empty"); that(StringUtils.isNotBlank(user.getPhone()), "error", "phone.empty"); }}; }}
  20. 20. Vamos aos fatos!
  21. 21. Servlets** JSF Struts 2 Spring MVC Livros (Amazon.com) 1,104 334 690 149 Linked in Skills 144k (-7) 77k (-5%) 161k (-10%) 494k*** (+5%) Índice de pesquisa do Google EUA (jun13) 5 34 11 14 * vraptor - É zero ou não foi possível pesquisar. ** Difícil de mensurar, pode ser utilizado em conjunto com outras tecnologias. *** Foi possível a pesquisa apenas por Spring.
  22. 22. Importância dos frameworks pelos desenvolvedores -InfoQ (EUA, Jun13)
  23. 23. Ordem Matt`s Weighted TheServerSide Java Symposium The Rich Web Experience (RWX) 2010 Devoxx 2010 1 Grails Grails Grails GWT 2 Play GWT GWT Rails 3 Spring MVC Rails Rails Spring MVC 4 Rails / Vaadin Spring MVC Spring MVC Grails 5 GWT Vaadin Tapestry / Vaadin Wicket / Struts 2
  24. 24. Quem disse que seria fácil?
  25. 25. Que tipo de aplicação que você está construindo? Projeto Comunitário? Manutenção CaracterísticasTécnicas
  26. 26. Não acredite piamente em blogs e artigos Tente você mesmo! Acredite desenvolvedores, não evangelistas Aqueles que têm experiência com o framework e tenham usado em produção Cuidado com os interesses corporativos Os livros são um bom sinal! Sempre!
  27. 27. Frameworks têm pontos fracos – a sua aplicação é/possui um deles? Escolha 2-3 frameworks para o seu tipo de aplicação ... e protótipo! Se a prototipagem for dolorosa, mude! Depois de prototipar, pare e compare os frameworks
  28. 28. Não tenha medo de: Experimentar novos frameworks Usar frameworks antigos Manter o seu framework existente
  29. 29. Não existe MELHOR framework; É ótimo ter competição! Os desenvolvedores deveriam saber mais de um framework Você deve tentar um framework antes de ficar falando mal dele Fazer uma boa pesquisa pode economizar tempo e dinheiro no futuro
  30. 30. Matt Raible Comparative table; Esta apresentação no slideshare; http://www.slideshare.net/andvicoso/como- escolher-o-framework-java-para-web http://github.com/andvicoso http://andvicoso.blogspot.com
  31. 31. Perguntas? about.me/andvicoso

×