3. Desenvolvimento: Java: Desktop (+10 anos) e web (+ 7 anos)
.NET reaAcadmica: Inteligncia Artificial Processamento de imagens
Linguagens de Programao
4. BSc. em Cincia da Computao pela UFMS, 2004 MSc. em
Informtica pela UFPR, 2006 Minerao de Imagens Projeto FootScanAge
DSc. Student no ITA Projeto HARPIA (SRF) IntelignciaComputacional
Aplicada ao Gerenciamento de Risco IntelignciaArtificial
Multi-Agent Learning Jan/2011 Atual: Professor na Fatec SJC
Programao - Java
5. !
6. A inteno aqui no definir qual oMELHOR framework MVC para
Java web; dar opes! Falar um pouco de cada e mostrar exemplosem
cdigo; Foco no Controller; Matt Raible Compara frameworks desde
2004; Links para algumas comparaes dele no final;
7. Servlets 3.X JSF 2.X Struts2 Spring MVC VRaptor Play!
8. Podemos fazer os mapeamentos (Servlets eFiltros) usando
anotaes! UHUUU! Controller : Deve estender de HttpServlet; Deve ser
mapeado a uma URL (XML ou anotaes);
9. Pontos positivos: Padro Java EE; Bastante difundido (1.0 em
1997); Bom para o aprendizado de conceitos bsicos: Request,
response, session, parameter, filter, ... Pontos negativos: Pegar
parmetros da requisio; Validao; Mensagens/Internacionalizao;
Etc;
10. Component-based framework; Controller: Todos devem ser
anotados com @ManagedBean paraserem visveis na view Deve ser
anotado com uma anotao de escopo naqual o bean vai estar disponvel;
@NoneScoped, @RequestScoped, @ViewScoped,@SessionScoped,
@ApplicationScoped e @CustomScope Os mtodos do managed bean so
acessveis na view(xhtml) atravs das tags do JSF
11. Pontos positivos: Padro Java EE Bastante difundido (1.0 em
2004) Alta empregabilidade (ainda) Vrias bibliotecas de componentes
disponveis 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()
12. @ManagedBean@ViewScoped //Poderia ser outro escopopublic
class UserController implements Serializable {private UserDao
dao;private User user;@PostConstructpublic 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
13. Cadastro de usuriosCadastro de Usurio
14. Action-based framework; Juno do Struts com oWebWork
Configurao: Antigamente tinha muita em XML Atualmente boa parte
pode ser feita usando anotaes 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 ouactions. Nele devem estar as
actions Os paths so definidos por pacotes na hierarquia As actions
devem ser anotadas com @Action(url) Os resultados (retornos) so
definidos com @Result Em geral, estendem de ActionSupport
15. Pontos positivos: Bastante difundido (1.0 2000, 2.0 - 2007)
Alta empregabilidade (ainda) Vrios plugins: Bootstrap, Convention,
JQuery, ... Com tags de componentes (pode ser um ponto negativo)
Interceptor Pontos negativos: Pode ter sopa de tags no jsps;
Documentao muito espalhada e mal organizada; Fcil confundir com a
verso 1 em uma googlada Pode ter muito XML na configurao, alm do
properties
16. @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}
17. Action-based framework; As caractersticas do Spring podem
serutilizadas independentemente (DI, Aspects, ...) Webservices
RESTful podem ser criados atravsde anotaes. Controller: Classe deve
ser anotada com @Controller Mtodo de ao deve ser anotado
com@RequestMapping(url") Parmetros com @RequestParam
18. Pontos positivos: Fcil aprendizado No precisa de getters e
setters como Struts2 e JSF Fcil aprendizado Forma de
redirecionamento, REST, validao , einternacionalizao so bem fceis.
Comunidade crescendo rapidamente Pontos negativos: Pode ter muito
XML na configurao Configurao com anotaes ainda muito incipiente
Requer experincia pra configurar inicialmente
20. Caelum Cursos e apostilas; Brasileiro! Nasceu em 2003 no
IME-USP Convention over Configuration Controller: Deve ser anotado
com @Resource e o nome da classedeve terminar com Controller Ex.:
FuncionarioController. O path de acesso fica
/funcionario/{nomeDoMetodo} O mtodo pode ser anotado com @Path para
alterar
21. Pontos Positivos: Documentao em portugus! Fcil aprendizado
Forma de redirecionamento, REST, validao , injeo dedependncias e
internacionalizao so bem fceis. No precisa de getters e setters
como o Struts2 e JSF Interceptor Pontos Negativos: Baixa utilizao
fora do Brasil Comunidade pequena Baixa empregabilidade
22. @Resourcepublic 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;}@Getpublic void add() {}@Postpublic 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");}};}}
23. Vamos aos fatos!
24. Servlets** JSF Struts 2 Spring MVCLivros (Amazon.com) 1,104
334 690 149Linked in Skills 144k (-7) 77k (-5%) 161k (-10%)
494k***(+5%)ndice de pesquisa doGoogle EUA (jun13)5 34 11 14*
vraptor - zero ou no foi possvel pesquisar.** Difcil de mensurar,
pode ser utilizado em conjunto com outras tecnologias.*** Foi
possvel a pesquisa apenas por Spring.
26. OrdemMatt`sWeightedTheServerSideJava SymposiumThe Rich
WebExperience(RWX) 2010Devoxx20101 Grails Grails Grails GWT2 Play
GWT GWT Rails3 Spring MVC Rails Rails Spring MVC4 Rails / Vaadin
Spring MVC Spring MVC Grails5 GWT Vaadin Tapestry / Vaadin Wicket /
Struts 2
27. Quem disse que ia ser fcil?
28. Que tipo de aplicao que voc estconstruindo? Projeto
Comunitrio? Manuteno CaractersticasTcnicas
29. No acredite em blogs e artigos Tente voc mesmo! Acredite
desenvolvedores, no evangelistas Aqueles que tm experincia com o
framework etenham usado na produo Cuidado com os interesses
corporativos Os livros so um bom sinal! Sempre!
30. Frameworks tm pontos fracos a suaaplicao um deles? Escolha
2-3 frameworks para o seu tipo deaplicao ... e prottipo! Se a
prototipagem for dolorosa, mude! Depois de prototipar em mais de
umframework, pare e compare
31. No tenha medo de: Experimentar novos frameworks Usar
frameworks antigos Manter o seu framework existente
32. No existe MELHOR framework; timo ter competio! Os
desenvolvedores devem saber mais que umframework Voc deve tentar um
framework antes de ficarfalando mal dele Fazer uma boa pesquisa
pode economizartempo e dinheiro no futuro
33. Matt Raible Comparative table; Talk at Jfokus 2012;
http://github.com/andvicoso http://andvicoso.blogspot.com