ICEFaces

Já vinha planejando escrever sobre ICEFaces (http://www.icefaces.org) há algum tempo, mas estava esperando experimentar mais com a biblioteca. Há algum tempo através me solicitaram buscar uma solução para desenvolvimento de interfaces de usuário para web que fosse ágil e fácil de programar e, se possível, que permitisse edição visual. Com essas características eu pensei no projeto (agora extinto) Woodstock da parceria Sun/Netbeans que permitia a edição visual de telas baseado em tecnologia JSF, quando comecei a ler descobri que a Sun estava abandonando o projeto e passaria a apoiar a implementação ICEFaces, da ICESoft, que também provia uma forma visual de editar as páginas e estaria incorporando a compatibilidade com projetos Woodstock.
Na época o Netbeans estava na versão 6.5.1, fiquei animado e experimentei a ferramenta, fácil de usar, fácil de integrar, mas logo em seguida o Netbeans mudou a estrutura do núcleo e o resultado foi que cortaram o suporte a edição visual, mas a Sun continuou apoiando a implementação ICEFaces, embora a Sun forneça uma implementação de referência de JSF, existem por aí outras opções as mais expressivas são MyFaces (Apache), RichFaces (JBoss) e ICEFaces (ICESoft.)
A primeira coisa que me levou a considerar a implementação ICEFaces foi a questão de a própria Sun apoiar esse desenvolvimento, a partir disso eu comecei a procurar os componentes, na versão 1.8.2, que é a que estamos usando em projeto, existem mais de 54 componentes gratuitos, isto porque a ICESoft oferece um modelo de licenciamento para empresas que dá acesso a alguns outros componentes, além disso a parte de tutorial e exemplos é muito fácil de entender e usar.
Ao longo do projeto fomos descobrindo outras funcionalidades o que só confirmou a escolha acertada que fizemos em usar o ICEFaces, a parte de layout e de panéis e muito funcional, a demonstração dos componentes pode ser encontrada em ICEFaces Component Showcase e como era de se esperar o site deles é todo feito em ICEFaces. Outra característica interessante é o uso intenso de ajax de forma totalmente transparente, o usuário não precisa se preocupar, além disso os componentes funcionam em diversos browsers sem que seja necessário escrever nada de javascript.
O fórum também é bem ativo é costuma ser fácil de conseguir as respostas para os problemas mais comuns que temos, utilizamos o Facelets junto com o ICEFaces, sendo que já vem uma biblioteca de integração fácil de usar, uma ressalva importante é que foi muito mais fácil de fazer funcionar no Glassfish do que no JBoss, isto porque no JBoss já existem as bibliotecas do RichFaces então torna-se necessário indicar no web.xml que estamos fornecendo as bibliotecas de implementação. Um outro problema é que o JBoss (5.1) não consegue injetar dependências (tipo EJB3) em managed beans, apenas em classes que foram declaradas no web.xml tais como Servlets e Listeners, isso é uma coisa realmente incomoda (até porque no Glassfish isso funciona facilmente.)
Finalmente a única pendência que está me incomodando fortemente é que não temos uma solução de testes unitários funcionando corretamente, comecei a testar o JSFUnit desenvolvido pela JBoss, mas ele entra em loop durante o processamento, embora seja possível testar alguns componentes de tela eu estava mais interessado em testar os managed beans e isso ainda não é possível, está na minha lista de trabalho recompilar o JSFUnit com algumas modificações, mas isso está longe do topo de prioridades.
No total é uma ferramenta muito boa e fácil de usar, recomendo fortemente. Em breve vou começar as experiências com a versão 2.0 que implementa a especificação JSF 2.


[...] é, há algum tempo eu coloquei aqui um post sobre o framework ICEFaces, uma implementação do Java Server Faces. Eu relatei a minha experiência com o framework, que [...]