Você já ouviu falar em Thinwire? Se ainda não ouviu certamente vai ouvir! Trata-se de um Framework JAVA para camada de apresentação de aplicações WEB. O Thinwire é bastante semelhante ao Java Swing com a diferença de renderizar os elementos visuais em um browser. Sua plataforma é toda baseada em AJAX e a aparência dos componentes é simples, bonita e eficiente. A forma de fazer a composição dos elementos visuais é idêntica a de aplicações desktop (Swing, SWT) simplificando assim o processo de criação de interfaces RIA (Rich Internet Application).
Apesar do foco da aplicação esta na maioria das vezes na arquitetura que será utilizada (n camadas, componentes distribuídos, transação, monitores), a camada de apresentação de uma aplicação WEB é notadamente a vilã, quando estamos falando em produtividade. Isto porque por mais complexa que seja a arquitetura, com algumas definições e técnicas como MDA (Model Driven Architecture), pode ser gerada automaticamente. Seu ponto de modificação é facilmente localizado restando para o programador somente implementar a lógica do negocio.
Já a camada de apresentação é muito relativa, pois é a ponte entre o usuário do sistema e a aplicação. No caso do JAVA existem várias especificação e um conjunto de padrões de projetos destinados a tornar isto mais fácil como: JSP, MVC, JSF. Cada uma destas especificações possui uma forma muito particular de se trabalhar, mas sua contribuição esta mais associada ao desacoplamento da interface da lógica do negócio. O JSF (Java Server Faces) por ser mais moderno vai além e torna o desenvolvimento de aplicações WEB parecida com a desktop, mas por trás das cortinas ainda temos todo processo de enviar e receber grandes requisições quando queremos alterar o conteúdo de um componente visual.
Uma boa solução para este problema é utilizar AJAX e fazer requisições assíncronas colocando um pouco do processamento no cliente e evitando, por exemplo, uma requisição de página inteira para cada mudança no componente visual. Baseado neste conceito é que funciona o Thinwire. Além de trabalhar com AJAX o framework cria os objetos visuais em um arquivo .java (assim como no desktop). Com isto não é necessário nenhum conhecimento em JSP, HTML, etc…
Cada componente é um objeto e pode ser adicionado a outro fazendo composições de elementos visuais que serão renderizados no browser através de um Servlet implementado pelo framework. Além disto, o processo é bastante simples e bem semelhante ao já conhecido. Só para ter uma idéia no arquivo web.xml é preciso identificar a classe que possui o método “public static void main” que inicia a aplicação.
O Framrwork esta em versão Release Candidate e vale a pena testar. Para saber mais visite: http://www.thinwire.com





















Essa tal de camada de apresentação, que vive diminuindo a produtividade dos codificadores, vive levando mérito aos homologadores e vive levando stress para nossos clientes. Eu acho que precisamos é de uma IDE que deixe a camada de apresentação simples de trabalhar, um bom exemplo de IDE para o que eu estou falando é o visual studio da Microsoft, ela aumenta muito a produtividade de projetos .NET.
Quando definimos a arquitetura dos sistemas da empresa que eu trabalho, deixamos a camada de apresentação sem uma framework definida. Isso me deixa com a possibilidade de trabalhar com Struts, MyFaces ou qualquer outra framework. Testamos aqui o JSF é rápido e funciona bem, mas eu não gostei da implementação do CSS dele. Também testamos o GWT, da Google, também é rápido funciona bem, mas na nossa arquitetura ele precisava usar DTO que ficavam dentro da pasta do projeto de apresentação, isso fugia nossa arquitetura. Mas pelo comentado por Takenami, essa nova framework é bem parecida com a GWT.
Concordo com Robson. A camada de aplicação sempre foi nosso calcanhar de Aquiles. Talvez porque não temos muita vontade de ser webdesign
Aparentemente esse framework é uma ideia interessante. Por ser parecido com o swing a curva de aprendizado pode ser bem menor e isso ajuda a desenvolvermos mais rápido no período inicial da implantação da arquitetura.
Vou testar.
Lendo os posts acima, vejo que a sensação que sinto ao desenvolver com Java, no que diz respeito a interface/camada de apresentação, não é só uma coisa minha…rsrs. Participo de um projeto de migração de um sistema Swing para a versão web. Na linha do que postou Róbson, sobre a limitação das IDE’s Java, que deixam muito a desejar e pra completar são muito pesadas.
Estamos utilizando JSF para a migração, especificamente o Tomahawk. Esbarramos na quantidade limitada de componentes visuais e com isso perdemos muito tempo na produtividade, tendo que “se virar” dentro dessa limitação e em alguns casos fazer os nossos próprios componentes. Nisso, o java tem que evoluir muito para alcançar a produtividade do .Net.
Voltando ao meu projeto, vendo esse projeto Thinwire, chegar a dar uma dorzinha no peito… nossa versão desktop é Swing e estamos fazendo uma versão Web que já não tem como se mudar a tecnologia, devido a fase avançada que já se encontra o projeto. Pq só agora aparece uma espécie de “Swing para Web?! Não tem jeito, somos escravos do tempo… Informática é isso aí… De qualquer sorte, vou fuçar e testar…
Caros Amigos,
Muito obrigado pelos POST’s. Como podemos ver a camada de apresentação em JAVA é a grande vilã quando buscamos produtividade no desenvolvimento de aplicações WEB. Costumo dizer que 30% a 40% do tempo total de desenvolvimento de um projeto é gasto com tarefas que não sejam da camada de apresentação e que os outros 60% a 70% do tempo infelizmente é utilizado para desenhar interface e integrando com a camada de negócio. Certamente vamos explorar bastante este tema em futuros POSTs e espero poder ajudar vocês.
Grande Abraço,
Igor Takenami
Já existe faz um tempo um outro projeto em que ele pega o que vc escreveu em swing e passa pra web.
http://swingweb.sourceforge.net/swingweb/
Muito legal o artigo. Só tenho uma dúvida: no segundo parágrafo onde está escrito “Apesar do foco da aplicação esta na maioria das fezes na arquitetura que…” você quis dizer “vezes” e “não fezes” certo ?
Um abraço.
Olá amigos, achei legal esse Thinwire, mas porque ninguem fala do Visual Web Pack do NetBeans?
Eu andei fuçando e achei tão bom quanto
Abraços