Porém o aprendizado não tem sido fácil. Em 2010, a principal referência de como arquitetar uma App GWT era a aprensentação de Ray Ryan, no Google I/O 2009. Ainda assim, os padrões apresentados mais pareciam peças de um quebra-cabeças, que precisavam ser experimentadas para encontrar o melhor encaixe, antes da grande figura se revelar e "cair a ficha" de como se tornar produtivo usando a tal caixinha de ferramentas...
Foi uma excelente experiência, onde extrapolei meus skills de programação, por 5 anos viciados no J2EE old-style modo de desenvolver. Este estudo rendeu frutos:
- Artigos publicados na Revista MundoJ
- Mar/2010 - Edição 40: Hello GWT!
- Mai/2010 - Edição 41: GWT: Uma arquitetura MVP
- Jan/2011 - Edição 45: GWT 2.1 e o Framework MVP Oficial da Google
- Mai/2011 - Edição 47: Top Secret ("Aguarde e confie", parodiando o "grande trapalhão"...)
- Sistemas Desenvolvidos:
- Módulo de Planejamento de Tarefas de Manutenção da Webjet Linhas Aéreas (Abril a Julho/2010)
- Módulo de Estoques da Webjet (Julho a Novembro/2010)
- Sudoku-Solver, passatempo num fim de semana (https://github.com/fabiolnm/Sudoku-Solver)
- Contacts-GWT, aplicação construída para a MundoJ (https://github.com/fabiolnm/Contacts-GWT)
Neste momento, estou tentando inserir a API RequestFactory na arquitetura. Já investi umas boas 30 horas tentando... Ela é mais intrusiva que as demais APIs - fornece facilidades tanto na integração com os Widgets, com a framework MVP, ainda que seu principal papel seja melhorar a comunicação cliente-servidor, viabilizando uma arquitetura baseada em DTOs. É uma API que dá um medo de começar a usar "de qualquer jeito", e criar pequenos frankesteins...
Para "piorar", sei que, depois desse aprendizado, ainda terei que investir mais umas boas horas para aprender a usar o GWT Designer e o Spring Roo, que prometem para o desenvolvedor benefícios tanto em usabilidade quanto em produtividade.
A API RequestFactory
De todos os desafios para aprender GWT, de longe o maior enigma está sendo a API Request Factory. Sua documentação é superficial, mostrando apenas como fazer a comunicação cliente-servidor. No release do GWT 2.2, a documentação foi complementada, mostrando como se usar uma abordagem ServiceLayer como alternativa à abordagem ActiveRecord introduzida pelo GWT 2.1. Mas a documentação ainda não ajuda muito a encaixar as peças da API com o restante do quebra-cabeças.
Depois de muito tentar e ainda não se sentir tão seguro com esta API, decidí debulhar a principal fonte de documentação disponível: o código-fonte da aplicação Expenses, distribuída no diretório samples do GWT. Minha expectativa é que, tentando refazer a aplicação, passo-a-passo, consiga finalmente compreender todo o poder e as facilidades que ela oferece.
O código-fonte será disponibilizado em https://github.com/fabiolnm/Expenses-GWT.
Happy GWTting!
Depois de muito tentar e ainda não se sentir tão seguro com esta API, decidí debulhar a principal fonte de documentação disponível: o código-fonte da aplicação Expenses, distribuída no diretório samples do GWT. Minha expectativa é que, tentando refazer a aplicação, passo-a-passo, consiga finalmente compreender todo o poder e as facilidades que ela oferece.
O código-fonte será disponibilizado em https://github.com/fabiolnm/Expenses-GWT.
Happy GWTting!
Fábio, acho que esses teu "feeling" sobre o GWT e, em especial, a API RequestFactory são uma unanimidade. Não se trata de "apenas" aprender uma nova API. Se faz necessário aprender um novo approach para arquitetura de sistemas. Confesso que esse desafio torna-se uma barreira para adotar o GWT em larga escala, pois para um software-house é um custo significativo investir umas 300 horas em cada membro da equipe para reaprender a trabalhar. Além disso, temos que lembrar que nem tudo são flores. O GWT e suas API ainda possuem sérias limitações e alguns trade-off impostos são muito ruins. Devo citar, em especial, o acréscimo de complexidade para adotar uma boa separação entre "designer" e o programação uma vez que os CSS também são "empacotados" no WAR da aplicação.
ResponderExcluirKra.. vc escreveu exatamente o que estou passando no momento...
ResponderExcluirEstou tentando fazer um simples CRUD de um cadastro de Cidade>Estado>Pais mas já são dois dias lendo e relendo documentação oficial e até agora nada de conseguir implementar o tal do RequestFactory, em especial porque estou adotando DAO a parte das classes entidades diferentemente do que a documentação sugere.
Você conseguiu algum progresso? Teria algum material para me ajudar? Qualquer coisa seria bem vinda pois seus links atuais estão quebrados...
Desde já agradeço...
[email/msn: dipold[arroba]gmail.com]