Boas,
Eu já fiz umas quantas coisas algo puxadas em Javascript e umas brincadeiras em GWT, e deixem-me dizer que a produtividade não tem nada a ver.
Em javascript desenvolvi algumas soluções Ajax. A mais fácil de explicar é o browser de videos do Spot (
http://spot.sapo.pt), para quem tiver a pachorra de abrir uma conta.
Resumindo, programei o suficiente com javascript para me sentir bastante confortável com o mesmo ao ponto de - quer acreditem quer não - ter começado a achar que podia ser mais simples fazer uma aplicação web utilizando para o interface javascript + Ajax (via JSON) do que com Struts, JSF, Stripes, etc.(*)
(*) É que, mesmo em javascript directo, o modelo de programação Ajax é muito mais simples do que as "tradicionais" Frameworks Java MVC para Web, logo a começar pela gestão de estado.
Claro que utilizava algumas livrarias para não ter de aprender a conhecer 3 ou 4 browsers como se namorasse com eles (o que eu acharia de uma promiscuidade muito violenta), principalmente com o Prototype e o YUI do Yahoo!, mas também com os templates TrimPath e algum Scriptaculous.
Referências:
Repito: já sentia um enorme à vontade com o Javascript.
Mas quando peguei no GWT!!!!!!......
Para começar, não existem para javascript as funcionalidades de IDE que existem para Java. Eu ainda tentei o Aptana (plataforma Eclipse) e mais um par deles, mas nem chega perto.
Ora pega-se no GWT no Eclipse e temos um Code Completion muito mais sofisticado, todos os refactorings, todos os auxiliares de geração de código, navegação plena sem ambiguidades, Javadoc ao alcance de um par de teclas, etc.
Há dúvida sobre uma rotina: F3 e estamos no source da mesma, segue-se um caminho de execução, volta-se atrás etc. Dúvida sobre a hierarquia de uma classe: pede-se o painel de navegação da mesma. Dúvidas sobre a utilização de um método: pede-se a lista de chamadas ao mesmo.
Tudo fácil!
E o compilador valida continuamente se não estamos a enganar-nos, e o debugger que funciona MESMO e não me crasha o browser a toda a hora, etc.
Para não falar na facilidade de reutilizar o mesmo código no lado do cliente e no lado do servidor. (Sim... como, por exemplo, certas validações....)
O ZK é javascript puro. Além do ZK e do Ext-JS existem outras frameworks javascript muito interessantes, como o SmartClient:
Mas está-se a tornar TÃO evidente que trabalhar em Java é mais eficiente (pelo menos para quem sabe Java) que duas destas frameworks estão a construir versões GWT de si mesmas:
- O Ext Js com a anexação do MyGwt
- O SmartClient através da contratação do Sanjiv Jivan para os ajudar construir um wrapper GWT para o mesmo:
Também tentei a obra anterior do Sanjiv, o gwt-ext:
Os problemas de adaptação de componentes eram imensos e era mais complicado misturar os componentes do gwt-ext com outros componentes GWT do que com o GXT.
É que o GXT (nome que prefiro, para evitar confusões, a Ext GWT)
...é uma cópia em Java, seguindo tanto quanto possível o modelo GWT, do Ext-JS e NÃO um wrapper.
A extensão e adaptação do GXT é muito mais simples e toda a sua integração com outros componentes GWT também. Além disso, a sua evolução tem sido espectacularmente rápida, o que é outra indicação do poder Java/GWT.
O Echo2 já sofre de outro problema: o Java fica todo no servidor. Por exemplo: os eventos do GUI são tratados no servidor. Estão a imaginar o que isto significa em termos de chamadas ao servidor (e respectivo trabalho de manutenção de estado) para uma aplicação com um UI muito sofisticado?
Em GWT o UI só fala com o servidor se precisar mesmo de alguma informação/acção do mesmo. A lógica do UI pode trabalhar indefinidamente em interacções bastante sofisticadas sem dizer nada ao servidor.
E, pelo que li, para as evidentes limitações (ou elevado custo, se preferirem) de escalabilidade do Echo, desconfio que será bem mais complicado criar novos comportamentos de UI em Echo do que em GWT...
Para terem uma noção do potencial de extensibilidade do GWT, apenas alguns exemplos:
Have fun,
PJG