muito das necessidades e recursos disponiveis para o projeto. Nao vou entrar nesta discussao, a internet ja esta cheia delas, tendo destaque as com titulos como: linguagem A vs linguagem B. Porque Struts? Nao vou dizer que adoro esta framework, pois estaria mentindo. Digamos que a escolha desta framework foi mais uma questao de necessidade (obrigacao), do contrario teria escolhido outra framework, ou outra linguagem, como Ruby (comparacao interessante entre as linguagens aqui). Bom, se eu tenho que utilizar Struts para desenvolver uma aplicacao, ao menos posso usar meus meios para reduzir o sofrimento durante a jornada. E e exatamente o que estou fazendo, construindo uma aplicacao de linha de comando inspirada em Rails para Struts 2. StrutsTool Pois bem, esta aplicacao se chama StrutsTool (nao estava muito inspirado, entao me baseei no Zend_Tool mesmo) e esta hospedada no Google Code, no seguinte endereco: http://code.google.com/p/strutstool/. A ideia de fazer tal ferramenta surgiu, obviamente, de uma necessidade, que era nao me arrebentar para programar funcionalidades simples. E por simples, me refiro ao CRUD. Alem disso, muitos arquivos precisam ser criados e modificados para se obter uma aplicacao funcional em Struts. Quer uma amostra pratica disto? Justin Gehtland reescreveu uma aplicacao Java em Ruby on Rails e obteve os seguintes resultados (fonte): Linhas de Codigo:Rails: 1164Java: 3293 Numero de Classes:Rails: 55Java: 62 Numero de Metodos:Rails: 126Java: 549 Linhas de Configuracao:Rails: 113Java: 1161 Nao e para menos. Quer outro exemplo, entao de uma olhada neste projeto que hospedei ha algum tempo no Github, e apenas um exemplo simples de CRUD utilizando Struts 2, Tiles, Hibernate e Hibernate Validator. Em poucas palavras : muito codigo para pouca funcionalidade. Para deixar claro o quanto de trabalho um CRUD pode dar, voce precisa: criar os arquivos .jsp criar um controlador mapea-lo no arquivo struts.xml indicando os arquivos .jsp que irao ser exibidos se usar tiles, definir os arquivos .jsp no tiles.xml e referencia-los no struts.xml criar a classe POJO adicionar validadores de dados ao POJO mapear a classe POJO para o Hibernate, podendo ser com anotacoes ou xml criar classe de acesso a dados criar classe de servico voce pode ainda querer criar um arquivo properties para armazenar as mensagens que serao usadas pelo controlador Foi baseado nesta aplicacao de exemplo que eu comecei a criar o que viria a ser uma aplicacao de base para o desenvolvimento de minhas aplicacoes em Struts. Se trata de um projeto com as configuracoes basicas para funcionar e em cima dele eu poderia adicionar as funcionalidades especificas de minhas aplicacoes. De forma simples, esta aplicacao (StrutsTool) cria um projeto base e conforme voce for criando novas funcionalidades (models, controladores, views, ...) a ferramenta ira adiciona-las a este projeto e executar toda a configuracao necessaria. Ou seja, e um gerador para Struts. Funcionalidades Esta ferramenta prove, por enquanto, poucas funcionalidades, porem extremamente uteis. Mas antes de falar destas funcionalidades gostaria de listar as frameworks/APIs suportadas pelos projetos criados com esta ferramenta. Sao elas: Struts 2.2.1.1 Struts2 jQuery Plugin 2.5.3 Hibernate 3.6.3 Hibernate Validator 4.1.0 Hibernate Search 3.4.0 Tiles 2.2.2 HTML Compressor 1.1