Gerenciando bookmarking e browser history em aplicações AJAX

Sempre que participo de qualquer palestra sobre aplicações em AJAX, como as do Christiano Milfont por exemplo, com as belas aplicações funcionando perfeitamente em uma única página, tudo sendo carregado e atualizado nesta única página através de javascript e AJAX, é incrível, contudo eu sempre pergunto aos palestrantes:

“E se o usuário der refresh na página? E se o usuário teclar F5, a página volta para o estado inicial? A aplicação perde o estado da página atual?”

Na maioria das vezes os palestrantes não implementam o gerenciamento de bookmarking e browser history nas aplicações exibidas em suas palestras, porém eles sempre comentam que existem inúmeros frameworks para resolver isso, um deles é o Ext, na qual nos permite manter o estado atual da tela depois de um refresh na página e navegar entre as atualizações ocorridas na aplicação.

As vezes necessitamos gerenciar o estado da tela em aplicações web comuns (não 100% AJAX), e não queremos imbutir (depender) um framework ou API AJAX robusta em nossas aplicações simplesmente para gerenciar o estado de uma ou duas telas, logo acabei encontrando este framework que foi desenvolvido somente para resolver este problema, o nome dele é reallysimplehistory (RSH), -o nome já diz tudo-, na qual ele tem como objetivo ser simples, fácil de usar e sem dependências de outros frameworks AJAX.

Enfim, fica aí a dica para os fãs de aplicações AJAX e para quem está passando por problemas em manter o estado atual das telas :)

Ext4JSF, por onde tu andas?

Há algumas semanas atrás um amigo me mostrou uma discussão no fórum do Ext em que estavam comentando sobre uma versão (conjunto de componentes) para JSF baseado nesse framework, na qual se chamaria Ext4JSF, eu fiquei muito feliz com a notícia pois o Ext é uma framework JavaScript muito robusto e até simples para criar aplicações web ricas. Já vi algumas aplicações 100% Ext (+ DWR para AJAX) desenvolvidas por este mesmo amigo que é um cara muito safo em aplicações web ricas e web2.0, e posso dizer que enche os olhos de lágrimas de qualquer um que veja tal aplicação.

Para quem não conhece o Ext, aqui está o texto retirado do próprio site:

Ext is a client-side, JavaScript framework for building web applications. In early 2006, Jack Slocum began working on a set of extension utilities for the Yahoo! User Interface (YUI) library. These extensions were quickly organized into an independent library of code and distributed under the name “yui-ext.” In the fall of 2006, Jack released version .33 of yui-ext, which turned out to be the final version of the code under that name (and under the open source BSD license). By the end of the year, the library had gained so much in popularity that the name was changed simply to Ext, a reflection of its maturity and independence as a framework. A company was formed in early 2007, and Ext is now dual-licensed under the LGPL and a commercial license. The library officially hit version 1.0 on April 1, 2007.

Então ontem depois de ver o preview do Oracle ADF Faces Rich Client eu procurei saber como estava o andamento do Ext4JSF, contudo não encontrei muita informação sobre o mesmo, mas graças ao Milfont eu acabei chegando a um conjunto de componentes JSF que se utilizam do Ext, estou falando do Lilya, e eu “chorei” ao ver os componentes do Ext funcionando sob componentes JSF, simplemente é perfeito.

Eu sempre mantive um pé atrás em usar APIs ou frameworks JavaScript para criar GUIs, mesmo as mais robustas como o Ext ou YUI (Yahoo! User Interface Library), acredito que trocar os velho HTML de guerra por componentes JavaScript seria algo complicado durante a fase de manutenção do sistema (minha opinião), mas depois de ver o Lilya não há mais porquê deixar o Ext de lado.

A única coisa que não entendi direito sobre o Lilya é sua licença, ele se diz LGPL, mas no site também diz que não podemos utiliza-lo para fins comercias, isso me deixou confuso! Quem entender da licença LGPL por favor me explique, pois estou realmente confuso.

Enquanto o Ext4JSF não chega poderemos nos deliciar com os componentes do Lilya 😀 Eu ainda não tive tempo de baixar e fazer os devidos testes com a framework, pois estou acertando os últimos detalhes para a palestra de amanhã, mas assim que conseguir um tempinho eu faço alguns testes e posto aqui sobre o que achei.

No próprio site você vê um demo dos componentes, código fonte completo, download da framework, de um blank do projeto e demais informações, é incrível.

Site do Lilya: http://www.qlogic.ma/lilya/