Em Arte, o Classicismo refere-se, geralmente, à valorização da Antiguidade Clássica como padrão por excelência (...), que os classicistas pretendem imitar.
Até 2 semanas atrás, estava estudando / exercitando GWT 2.0 em um módulo de uma aplicação web que desenvolvo.
Naquele momento, o cliente fez uma solicitação que demandaria processamento local, algo como o usuário selecionar arquivos em sua máquina e os enviar para um servidor FTP. Porém esta funcionalidade deveria ser disponibilizada e integrada com as telas / workflows da aplicação (não bastava ensinar ao usuário como usar um cliente FTP).
Apesar de nunca ter desenvolvido applets para sistemas em produção, escolhi esse caminho. "Forçado" a desbravar o mundo das applets, fiquei surpreso com o grau de similaridade entre as API do GWT e do Swing. Foi possível usar uma arquitetura semelhante, adotar os mesmos padrões, etc...
Gostei de trabalhar com o Swing também pelo fato de as IDEs (Netbeans ou Eclipse VE) possuirem suporte visual para construção das UIs.
Caso a view seja pouco acoplada com o resto da aplicação (por exemplo adotando o padrão MVP), é possível desenhar toda a UI através desses editores visuais, sem que isso afete a lógica da aplicação.
Desta forma, foi possível construir toda a aplicação, desacoplada da View; enquanto, na base da experimentação, tentativa/erro, fazia e refazia a UI, até que ela chegasse ao formato desejado.
Algumas conclusões no final do trabalho - No Swing:
- A curva de aprendizado pareceu menor (API madura e boa disponibilidade de documentação);
- O suporte das IDEs (tanto Netbeans quanto Eclipse/VE) é bom;
- Pode-se usar recursos locais da máquina do usuário - coisa difícil de se obter em uma aplicação web;
- O tempo de download do applet (tanto pela página quanto pelo JWS) é similar ao tempo de download das bibliotecas-base do GXT;
- Swing parece estável, enquanto no GXT já experimentei alguns bugs;
- Menos problemas com licenças (o GXT é GPL);
- O produto final ficou muito bom - visualmente e funcionalmente;
- A barreira de instalação da JVM parece ser da mesma ordem de grandeza quanto a barreira de instalar o Flash ou de garantir que a aplicação se comportará de forma idêntica entre todos os navegadores disponíveis.
Depois de listar tantas qualidades, comecei a procurar defeitos, daí nasceu a pergunta que originou esse post no RioJUG.
Em nenhum momento estou dizendo que uma abordagem é boa e a outra ruim; apenas não consegui entender o porquê de uma tecnologia tão madura como Swing / JWS / Applets ser pouco utilizada nas aplicações atuais.
Também fiquei surpreso ao perceber que novas tecnologias, como o GWT/GXT se assemelham às antigas, e que as decisões de design para programar numa (web) ou noutra (swing) são muito parecidas.
Estaríamos vivenciando um momento de classicismo tecnológico, buscando inspiração em tecnologias do passado para ajudar a resolver os problemas do futuro?