Hace poco empece a hacer una aplicacion , que basicamente es apenas un ABM, y decidí probar un framework web nuevo, ya se que esta colmado de frameworks web, la idea de Google Web Toolkit – Google Code de que el lenguaje de deploy sea javascript , y se codifique en java, probablemente sea una deficiencia mia por no adentrarme tanto en javascript, por ahi es poco de miedo ( lo admito ), sin embargo, al ver Google Web Toolkit , lease GWT de aqui en adelante, me encontré con un problema de dificil integracion con maven, y la verdad que despues de 3 o 4 años de utilizar maven , no me imagino otra forma de hacer builds, entonces mirando los frameworks que referencia google en la wiki de GWT http://gwtgallery.appspot.com/ empecé a utilizar Vaadin viendo que utiliza GWT pero solo para el renderizado, hace una especie de compilacion del código java que genera la presentacion en runtime y le pasa esa presentacion compilada a javascript al cliente, la verdad que me sentí muy comodo dentro de lo que es Java, y programar al estilo Swing, problemas con anonymous inner classes, pero dentro de todo eso, haciendo uso de un IoC como google guice , logre generar codigo más o menos aceptable para la construcción del sitio en cuestión, la verdad que debo reconocer que me convenció mucho como framework a diferencia de wicket este framework no necesita de un template para renderizarse, sino que se utiliza, modificaciones a los css predeterminados del framework para modificarlo a gusto del usuario, tambien utilize por primera vez en un proyecto una base de datos de objetos como neodatis , volviendo a el tema del framework tengo que destacar tambien que esta muy bien documentado, y tienen un libro gratis en pdf para poder descargarlo, posee licencia apache 2.0 .
En cuanto a las contras, tengo que admitir que no es facil diseñar una navegacion , en wicket es muy sencillo , en el return un mensaje se puede devolver un objeto Page y el framework direcciona la navegación, aquí hay que reemplazar la main window de una application que es instanciada por cada usuario conectado, la abstraccion dificulta un poco esto ya que el que codifica tiene que modificar el estado de el objeto Application para poder cambiar de ventana.