Você está na página 1de 12

ANLISE E COMPARAO DE FRAMEWORKS PARA DESENVOLVIMENTO WEB EM JAVA Thiago Roberto dos Santos Departamento de Informtica e Estatstica, Universidade

Federal de Santa Catarina Campus Trindade, Caixa Postal 476, CEP 88.040-900, Florianpolis-SC, BRAZIL

RESUMO
Este trabalho visa definir critrios para avaliar e comparar tecnologias para a camada de apresentao de aplicaes Web desenvolvidas em Java. O ambiente web vem sendo muito utilizado para o desenvolvimento de aplicaes. interessante analisar ferramentas que auxiliem na resoluo de problemas na camada de apresentao que, em geral, j foram resolvidos nas aplicaes convencionais. Para realizar o levantamento dos critrios e avaliar algumas solues disponveis no mercado, foram construdos prottipos com os frameworks Struts, Spring MVC e JBoss Seam. Foram definidos critrios aos quais foram submetidos os frameworks avaliados. Foi gerado um quadro comparativo para os frameworks estudados para facilitar a visualizao dos resultados. 1- INTRODUO

Tem se tornado cada vez mais comum a escolha do ambiente Web para o desenvolvimento de aplicaes corporativas. Em decorrncia disso, a complexidade das aplicaes tem crescido muito rapidamente. A mudana de ambiente trouxe de volta uma srie de problemas j resolvidos pelas aplicaes tradicionais. Vrias solues j esto disponveis para resolver tais problemas, mas, devido a grande oferta, difcil escolher uma soluo perene para a organizao. Este trabalho tem como principal objetivo definir critrios para anlise e comparao das tecnologias para camada de apresentao mais adequadas para sistemas gerenciais de pequeno e mdio porte que utilizem a tecnologia EJB para a camada de negcio e persistncia de dados.
2- CONCEITOS FUNDAMENTAIS Java Java uma linguagem de programao orientada a objeto desenvolvida na dcada de noventa por James Gosling, na SUN Microsystems. Java tem sintaxe similar s linguagens C e C++. Ela compilada em bytecodes, que podem ser executados por uma mquina virtual ou por hardware especfico (Deitel; Deitel, 2004).

Plataforma Java Plataforma Java uma plataforma para desenvolvimento e execuo de programas escritos na linguagem Java. A plataforma no especfica para um hardware ou sistema operacional. As aplicaes da plataforma rodam sobre uma mquina virtual, que possu implementaes para diversas arquiteturas. A plataforma distribuda em trs edies diferentes: Java Standart Edition (Java SE), para mquinas desktop. Java Micro Edition (Java ME), para dispositivos portteis. Java Enterprise Edition (Java EE), para aplicaes corporativas. Java EE Java EE uma edio da plataforma Java voltada para aplicaes corporativas, distribudas, multi-camadas. A plataforma Java EE definida por uma especificao, considerada informalmente um padro, pois os fornecedores de servidores de aplicao tm que cumprir certos requisitos para declarar seus produtos compatveis com Java EE. Ela inclui vrias especificaes de API como JDBC, RMI, e-mail, JMS entre outras. Servlets Um Servlet extende a funcionalidade de um servidor, como um servidor Web que serve pginas da Web para um navegador do usurio com o protocolo Http (DEITEL; DEITEL, 2004, p. 929). O servlet trabalha com o conceito de requisio e resposta, atravs do protocolo Http. Um Servlet recebe uma requisio e, baseado nela, fornece uma resposta. A resposta pode ser um documento HTML, XML, entre outros. O continer WEB responsvel pelo ciclo de vida do Servlet, pelo tratamento das mltiplas chamadas que podem ser feitas pelos clientes e tambm pela traduo de uma chamada http para uma requisio do Servlet. Java ServerPages (JSP) A tecnologia das Java ServerPages, um extenso da tecnologia dos servlets, simplifica o processo de criao de pginas separando a apresentao do contedo. Normalmente, as JSPs so utilizadas quando a maior parte do contedo enviado ao cliente texto esttico e quando uma pequena parte do contedo gerada dinamicamente com cdigo Java (DEITEL; DEITEL, 2004, p. 929). As JSP combinam o uso de HTML e linguagem Java. Em relao aos Servlets, elas facilitam a diviso de trabalho entre os designers e os programadores, pois permitem a escrita das pginas em HTML intercaladas com cdigo Java. As JSPs so compiladas para Servlets, passando a responder requisies de maneira semelhante a eles. A compilao pode ser feita no momento da instalao da aplicao no servidor ou no momento em que a JSP requisitada pela primeira vez. Bibliotecas de Tags (Tag Libs)

As bibliotecas de tags definem funcionalidades que podem ser usadas em qualquer JSP, em forma semelhante s tags HTML. As tags so processadas no servidor no momento da requisio, podendo gerar cdigo HTML. As bibliotecas mantm o cdigo mais legvel, pois evitam a mistura de cdigo Java com cdigo HTML. As tags costumam ser mais amigveis tambm para os designers, que no esto acostumados em ver trechos de cdigo no meio das pginas. Padres de projeto Os padres de projeto so solues j testadas para resolver problemas recorrentes. Os padres so documentados e, a medida que se mostrem eficientes, devem ser reutilizados. Os padres de projeto precisam ser adaptados ao contexto da aplicao. Eles no se propem a determinar a maneira como o cdigo deve ser escrito, mas como os elementos esto estruturados. Padro MVC O padro MVC teve origem no SmallTalk, onde era usado para separar a interface com o usurio dos dados. Dessa forma, mudanas as mudanas de interface causavam menos impacto na camada de dados e vice-versa. Modelo O modelo responsvel pelos dados e pelas regras de negcio da aplicao. Ele que interage com os repositrios de dados e executa as operaes da aplicao. Viso A viso responsvel por apresentar os dados para o usurio. Os mesmos dados podem ser apresentados de diversas formas diferentes, como tabelas, formulrios ou grficos, sem que seja necessrio reescrever o cdigo de acesso aos dados para cada forma de apresentao. Controlador O controlador responsvel pela comunicao entre as camadas viso e modelo. Ele trata entradas dos usurios, invoca as regras de negcio pertinentes na camada modelo e apresenta os dados atravs da camada de viso. Framework Segundo Silva (2000, p. 21) Frameworks so estruturas de classes que constituem implementaes incompletas que, estendidas, permitem produzir diferentes artefatos de software. A grande vantagem desta abordagem a produo de reuso de cdigo e projeto, que pode diminuir o tempo e o esforo exigidos na produo de software. Injeo de Dependncia Segundo Ladd(2006, p. 11) uma especializao de Inverso de Controle, Injeo de Dependncia uma tcnica usadas por frameworks para unir a aplicao. O framework faz o trabalho de conectar as dependncias da aplicao, removendo o cdigo especfico para criao de objetos da aplicao.

3- FRAMEWORKS AVALIADOS Neste trabalho foram avaliados os frameworks Struts2, Spring MVC e JBoss Seam. Struts 2 foi escolhido por sua popularidade no mercado. A verso 2 trouxe avanos sobre a anterior, especialmente na simplificao dos arquivos de configurao. Spring MVC foi selecionado pela quantidade de artigos escritos sobre o framework. JBoss Seam foi selecionado pois o conceito do framework semelhante ao do Web Beans, que um modelo de componentes que integra JSF e EJB3 e pode vir a ser incorporado especificao Java EE. Struts 2 O Struts um framework de cdigo aberto desenvolvido pela fundao apache para desenvolvimento de aplicaes Web com Java EE que encoraja a programao no modelo MVC(Model-View-Controller). Ele prov um tratador de requisies e de respostas, que auxilia o tratamento das interaes entre cliente e servidor. Tambm disponibilizado um conjunto de bibliotecas de tags para facilitar a construo de aplicaes baseadas em forms HTML. Arquitetura Bsica As requisies aos recursos so captadas pelos filtros de servlet que de acordo com a requisio determina a Ao (Action) a ser executada. Interceptores (Interceptors) aplicam funcionalidades comuns como validao, tratamento de upload, e fluxo de trabalho (workflow). Aps os tratamentos, a Ao executada e os resultados so renderizados no cliente na forma de HTML, PDF, imagens ou outra sada. A operao de negcio executada na Ao invocada pelo framework e os interceptores fazem tratamentos prvios da requisio, de acordo com as configuraes e com o contedo enviado pelo cliente. Aes O Struts um framework baseado em aes, portanto as classes de ao so parte central do framework. As aes podem ser usadas de diferentes formas. Na sua forma mais simples, temos uma classe que implementa o mtodo execute (o mtodo pode ter outro nome, desde que esteja indicado em arquivos de configurao), que retorna um String indicando o resultado da ao Alguns conjuntos de aes podem ter resultados comuns, podendo ser criados mais de um mtodo na classe de ao. Nesse caso, quando a ao for invocada dever passado como entrada o mtodo que ser executado. Caso no seja informado um mtodo o ser executado o mtodo execute. Interceptores Interceptores funcionam de maneira semelhante aos filtros dos Servlets, podendo assim ser ordenados e acessar dados da atual requisio. Para a seleo da ao a ser executada, extrao dos parmetros de entrada e tratamento de exceo, por exemplo,

so utilizados interceptores. Alguns interceptores so pr-configurados pela configurao padro do Struts. O usurio pode configurar outros interceptores se desejar ou pode criar seus prprios interceptores. Para criar seu prprio interceptor, basta implementar a interface Interceptor do framework. Existem tambm classes que provm algumas funcionalidades bsicas que podem ser estendidas. Validao H duas maneiras de prover validao em uma aplicao feita com Struts2: de maneira programtica e de maneira declarativa (ROUGHLEY, 2006, p. 66). A implementao programtica consiste em implementar nas aes interfaces especficas do framework. Na maneira declarativa, a validao feita usando anotaes ou arquivos XML associados s aes. No caso de validao declarativa em XML, deve ser seguido o modelo definido pelo DTD do framework. Todas as validaes oferecidas por padro no XML de validao possuem uma anotao correspondente, que pode ser aplicada diretamente aos atributos da ao, eliminando a necessidade de um arquivo XML adicional. Spring Web MVC O Spring Web MVC Framework um framework robusto, flexvel e bem projetado para o desenvolvimento rpido de aplicaes Web usando o padro de projeto MVC (HEMRAJANI, 2006, p.128). Ele parte do Spring Framework, que prov diversas solues para persistncia de dados, programao orientada a aspectos, entre outras. Arquitetura Bsica O Spring MVC projetado ao redor do DispatcherServlet, que um Servlet que distribui as requisies para as classes configuradas para trata-las, com viso, localizao e temas configurveis (Spring Reference). O modelo MVC do Spring muito similar ao do Struts, apesar de no ser derivado dele. Um Controller Spring semelhante a uma Action do Struts, sendo um objeto de servio multi-thread, com uma nica instancia respondendo para todos os clientes (JOHNSON, 2005). Para Ladd(2006, p. 52), Controllers so responsveis pelo processamento das requisies HTTP, pelo execuo das regras de negcio, pela composio dos objetos de resposta e por passar o controle de volta ao fluxo de tratamento principal. O Controller no trata a rederizao da viso, focando no tratamento de requisies e respostas e delegando aes camada de servio. O framework oferece vrios Controllers que podem ser estendidos de acordo com a necessidade da aplicao. So controllers para tratamentos desde funes simples de processamento e redirecionamento at classes para tratar formulrios de dados do usurio e upload de arquivos. Para construir a resposta ao usurio, o mtodo invocado no Controller pode retornar um objeto da classe ModelAndView. O objeto dessa classe mantm tanto a viso que ser apresentada ao cliente quanto o modelo usado para construir a viso (JOHNSON, 2005). Validao

O Spring traz uma interface chamada Validator, que pode ser usada para validar objetos. Ela trabalha usando a classe Errors, tambm do framework, para receber as mensagens de falhas durante o processo de validao (Spring Reference). A classe que implementa a interface Validator deve implementar os mtodos supports, que deve verifica se o objeto informado pode ser validado por essa classe, e validate, que responsvel pela validao dos campos. JBoss Seam JSF e EJB 3.0 so duas das melhores novidades do Java EE 5. EJB3 um novo modelo de componentes para lgica de negcio e persistncia de dados no lado do servidor. JSF um excelente modelo de componentes para a camada de apresentao. Infelizmente, nenhum dos modelo de componentes capaz de resolver todos os problemas da computao sozinho. Certamente, JSF e EJB3 trabalham melhor juntos. Mas a especificao Java EE 5 no traz uma maneira padro para integrar os dois modelos de componentes. Felizmente, os criadores dos dois modelos previram essa situao e proveram pontos de extenso padro para extenso e integrao de outras solues. O JBoss Seam unifica o modelo de componentes do JSF e do EJB3, eliminando o cdigo de integrao, deixando o desenvolvedor pensar na regra de negocio (Seam Reference, 2007). Segundo Yuan e Heute (2007, p. 5) o Seam foi projetado para aplicaes Web com estado (Statefull). Aplicaes Web so inerentemente multi-usurio e aplicaes de comrcio eletrnico so inerentemente com estado. Contudo, a maioria dos frameworks para aplicaes Web so direcionados para aplicaes sem estado. Voc precisa armazenar os objetos na sesso HTTP para gerenciar o estado do usurio. Isso no apenas complica sua aplicao com cdigo no relacionado ao negcio, mas tambm traz uma srie de problemas de performance. Arquitetura Bsica O Seam trabalha basicamente com contextos e componentes. Os componentes so criados e associados a um contexto. Os contextos so gerenciados pelo conteiner, de acordo com as transaes executadas pelo usurio. Contextos Os contextos do Seam so: Stateless (sem estado), Event (evento), Page (Pgina), Conversation, Session, Business Process e Application. Alguns contextos so semelhantes aos da especificao dos Servlets ou de especificaes relacionadas, mas alguns so novos no Seam, como o Conversation e o Business Process (Seam Reference, 2007, p. 52). Entre os contextos mais utilizados esto o Event e o Conversation. O ciclo de vida do contexto Event dura at o fim da requisio. No caso de uma requisio JSF, o contexto finalizado aps a renderizao da pgina. O contexto Conversation um dos mais elaborados do framework. Uma conversao uma unidade de trabalho, um processo de negcio. O estado dos componentes mantido durante as vrias requisies do processo. Vrias conversaes do mesmo cliente podem ser executadas em paralelo. Os contextos do Seam se propem a limitar o uso desnecessrio de memria, uma vez que o desenvolvedor no precisa se preocupar com a gerncia dos componentes na sesso do usurio. O framework garante, por exemplo, que os componentes de uma conversao sero excludos da sesso do usurio se ela for finalizada ou expirar.

Componentes Os componentes do Seam podem ser Beans de Sesso EJB, Beans Dirigidos por Mensagem (Message Driven Beans), Beans de Entidade ou simples JavaBeans. Cada componente armazenado em um Contexto. Todo componente do Seam tem um nome. Ele definido pela anotao @Name. Esse nome no est relacionado a nenhum outro nome presente no Java EE, ele especfico para o Seam. Nenhuma das outras anotaes do framework funcionar se o componente envolvido no tiver um nome. O contexto do componente pode ser definido pela anotao @Scope. Caso no seja definido explicitamente o contexto do componente atribudo de acordo com o tipo de componente. Os Beans de Sesso com Estado, por exemplo, por padro so associado ao contexto Conversation. Como os Beans de Sesso Sem Estado no so capazes de armazenar estado, eles so sempre armazenados no contexto Stateless. Validao Para facilitar a validao das entradas do usurio o Seam usa o hibernate validator. As entidades so anotadas com instrues de validao padro. O Seam prov tags para serem usadas com JSF que fazem com que as entradas do usurio sejam validadas e que a pgina seja recarregada em caso de erro de validao. A validao das entradas do usurio nos forms do Seam feita no lado do servidor. Voc deve sempre validar seus dados no lado do servidor porque um usurio mal intencionado pode desabilitar qualquer mecanismo de validao no cliente, como JavaScripts, por exemplo (YUAN e HEUTE, 2007, p. 139). 4- METODOLOGIA Para avaliao e levantamento de critrios de comparao entre os frameworks foi desenvolvido um prottipo com cada ferramenta estudada. A camada de negcio da aplicao foi desenvolvida anteriormente e foi usada da mesma forma para todos os frameworks. O prottipo uma simplificao de uma aplicao de clculo de contratos de emprstimo para fins de renegociao. A aplicao foi escolhida por conter alguns cadastros simples, sem regras de negcio complexas, e uma rotina de clculo, especfica da aplicao. Dessa forma foi possvel avaliar o desempenho dos frameworks tanto nas tarefas simples, de simplesmente manter uma tabela num banco de dados, quanto para tarefas mais complexas, como uma rotina de clculo. Casos de Uso

Manter Tipos de Contrato

Manuteno da tabela de tipos de contrato que sero utilizados posteriormente no cadastro de contratos. Esse caso de uso foi includo para avaliar os frameworks em operaes simples de manuteno de tabelas em banco de dados.

Cadastrar Contrato

Cadastro dos contratos e lanamentos do prottipo. Esse caso de uso foi includo por se tratar de uma incluso envolvendo vrias entidades. Existe um relacionamento muitos para um, entre Contrato e TipoContrato, e um relacionamento um para muitos, entre Contrato e LancamentoContrato.

Consultar Contrato

Consulta dos contratos cadastrados atravs de critrios simples, como nmero e nome do contratado. Esse caso de uso foi includo por ser uma funo comum em aplicaes gerenciais e por seu formulrio no conter exatamente os mesmo campos das entidades.

Calcular Contratos

Calcula um contrato e seus lanamentos, gerando um recalculo. O clculo feito em cada lanamento usando juro composto. O saldo final do recalculo a diferena entre o somatrio do saldo final dos lanamentos do tipo Crdito e o somatrio do saldo final dos lanamentos do tipo Dbito. Esse caso de uso foi includo por implementar uma regra de negcio e gerar com resultado um novo registro de outra entidade. Camada Viso e Camada Controle Foram criadas quatro pginas JSP, uma para a manuteno de tipos de contrato, uma para consulta de contrato, uma para cadastro de contratos e uma para mostrar o resultado de um clculo. Para cada prottipo foram usadas as bibliotecas de tags especficas do framework. Foram criados quatro controladores para tratar os eventos da camada viso. Os controladores e a forma como a camada viso se comunica com eles especfica de cada framework. Empacotamento e distribuio Cada prottipo foi empacotado em pacotes ear, contendo os arquivos de configurao do Java EE e os especficos do framework. Os prottipos foram testados no servidor JBoss, por ser o servidor JEE de cdigo aberto mais utilizado no mercado e por j ser de conhecimento do desenvolvedor do trabalho. 5- CRITRIOS Integrao com EJB3 Foi verificado se a soluo capaz de interagir com a camada de negcio escrita com EJB3, se so necessrias configuraes ou bibliotecas adicionais. A camada desenvolvida com o framework deve ser capaz de utilizar uma implementao prvia das regras de negcio. Com todos os frameworks estudados a utilizao das regras de negcio escritas anteriormente foi bastante simples. Contudo foi possvel perceber algumas diferenas.

Para tirar proveito do modelo de componentes do JBoss Seam, foi necessrio adicionar anotaes em algumas entidades das regras de negcio. Dessa forma, o framework facilitava as operaes de insero. No JBoss Seam, como para construo dos componentes foram utilizados Beans de Sessao com Estado, no foi necessrio acessar diretamente o JNDI para acessar os Beans de Sesso sem Estado das regras de negcio. Foi possvel usar a anotao @EJB, que faz com que o conteiner seja responsvel pela injeo do bean de sesso. Para avaliao dos frameworks, foram criadas as categorias tima, Boa e Ruim. O JBoss Seam ficou classificado na categoria tima integrao com EJB3, por oferecer facilidades alm das disponveis pelos outros frameworks. Struts e Spring MVC foram classificados na categoria Boa integrao com EJB3, por no apresentarem nenhuma dificuldade em trabalhar com a tecnologia. A categoria Ruim foi mantida para o caso de, em futuras anlises, for observado que em algum framework o uso de EJB3 acarrete dificuldades no desenvolvimento. Controle de estados O controle de estados um dos desafios da programao Web. Em algumas aplicaes necessrio que a ferramenta permita um controle da maneira adaptvel a diversos cenrios e de maneira simples, para facilitar o desenvolvimento. O Struts e o Spring MVC trabalham em geral sem estado. Para armazenar informaes do usurio entre vrias requisies necessrio que a aplicao utilize algum recurso para manter o estado, como por exemplo a sesso http. O Seam foi projetado especialmente para aplicaes complexas e com estado, por isso prov o modelo de componentes contextual, que oferece vrios nveis (contextos) de manuteno de estado. Tendo em vista os frameworks estudados, foram criadas as categorias Com controle de estado prprio e Sem controle de estado prprio. No existe hierarquia entre as categorias pois o fato de o framework possuir um controle de estados especfico pode acarretar um aumento de complexidade que, dependendo da aplicao, pode no ser desejvel. Dessa forma, o Spring MVC e o Struts foram classificados na primeira categoria e o JBoss Seam na segunda. Curva de aprendizado e Documentao O custo de difuso do conhecimento na equipe de desenvolvimento depende em parte da complexidade das novas tecnologias a serem adotadas bem como da documentao disponvel. O tempo de aprendizado em um novo framework depende muito do atual conhecimento da equipe. Para esse trabalho, foi avaliada a dificuldade para desenvolvedores que tenham conhecimento intermedirio de EJB, JSP e Servlets, bem como conhecimento bsico de http, html e java script. Como documentao foram considerados a documentao oficial, oferecida pelo desenvolvedor do framework, livros publicados na rea, exemplos e tutoriais disponveis no site do desenvolvedor e na Internet. Foram criados dois critrios separados para documentao e curva de aprendizado, pois, embora relacionados, o segundo depende muito do conhecimento da equipe que ir utilizar o framework. Tratando os itens separadamente, possvel modificar a classificao de acordo com o conhecimento de uma equipe especfica.

Foram criadas quatro categorias para classificar a documentao. Ruim, regular, boa e muito boa. Para curva de aprendizado foram criadas tambm quatro categorias: curta, mdia, longa e muito longa. O Struts, por sua maturidade e popularidade, possui vasta documentao na Internet e vrios livros publicados a respeito. Seu manual de referncia bastante completo. Por esses motivos teve sua documentao classificada como muito boa. O Spring vem adquirindo muitos adeptos e h vrios livros publicados sobre o framework, contudo, como o framework MVC apenas uma pequena parte do Spring, ele acaba tendo uma documentao menos detalhada tanto nos livros quanto na documentao oficial. Sua documentao foi classificada como boa. O JBoss Seam possui um bom manual de referncia e alguns livros publicados, porm por ser um framework relativamente novo ainda no possui muitos desenvolvedores e exemplos disponveis na Internet. Sua documentao foi classificada como boa. A curva de aprendizado dos frameworks Struts e Spring MVC para desenvolvedores Web experientes no deve ser muito longa, pois o tratamento de requisies com pouco controle de estados comum na programao com JSP e Servlets. J o JBoss Seam, por seu modelo de componentes com estado, requer mais esforo para compreenso. O Seam tambm requer conhecimentos no framework JSF. Pelos motivos acima, a curva de aprendizado dos frameworks Struts e Spring foram classificadas como mdias e o a do JBoss Seam como longa. Facilidade de Efetuar Testes Automatizados Boa parte do desenvolvimento de software nos dias de hoje necessita de testes automatizados. Os artefatos produzidos com o frameworks devem poder ser facilmente testados fora do ambiente de produo. Para avaliar a facilidade de testar automaticamente o cdigo feito para os frameworks foram criadas trs categorias, baixa, alta e muito alta. Os trs frameworks trabalham com POJOs ou beans de sesso, que podem rodar independentes do continer e portanto, podem ser facilmente testados usando JUnit ou outro framework de testes. Os frameworks Struts e Spring possuem classes para auxiliar o desenvolvimento de testes automatizados e foram classificados na categoria alta. O JBoss Seam vai alm, implementando seu prprio framework de testes, baseado no framework testNG, sendo portando enquadrado na categoria muito alta. Utilizao no mercado Em alguns casos, a utilizao no mercado muito importante para seleo de um framework. Quanto mais difundida a tecnologia, maior a possibilidade de se encontrar profissionais j experientes e maior a facilidade de encontrar exemplos e discusses na Web. Alm disso, solues bem aceitas pelo mercado costumam ser levadas em conta nas especificaes de novos padres. O Struts, na sua verso 1, tornou-se extremamente popular. Segundo muitos especialistas e segundo a prpria pgina do produto, o framework para desenvolvimento Web mais utilizado no mercado. H uma infinidade de cdigo e discusses a respeito na Web. O Spring MVC, tambm bastante popular, embora no tanto quanto o Struts. O Seam o mais recente dos trs frameworks estudados e, portanto, menos utilizado at o momento.

Foram criadas trs categorias, muito utilizado, pouco utilizado e novo. A categoria novo foi criada, pois embora com pouco uso, um framework novo pode vir a ser mais utilizado em um curto espao de tempo caso se destaque e portanto pode ser analisado de maneira diferente. Struts e Spring MVC foram classificados como muito utilizados, enquanto o JBoss Seam foi classificado como novo. Quadro comparativo dos frameworks avaliados Critrio/Frameworks Struts Spring MVC Seam Integrao com EJB3 Boa Boa tima Controle de estados Sem Sem Controle Prprio Documentao Muito Boa Boa Boa Curva de Aprendizado Mdia Mdia Longa Facilidade de efetuar testes Alta Alta Muito Alta Utilizao no Mercado Muito Utilizado Muito Utilizado Novo 6- CONCLUSO H uma grande variedade de frameworks para o desenvolvimento Web em Java, o que torna muito difcil a sua avaliao. O levantamento de critrios auxilia a escolha de um framework para uma determinada situao, pois permite a tabulao das caractersticas de cada artefato estudado, facilitando assim a anlise. O estabelecimento de critrios, embora subjetivos, deve auxiliar futuras avaliaes de frameworks, permitindo que o analista investigue diretamente a classificao do artefato nos critrios pr-estabelecidos. A elaborao de um quadro comparativo facilita as anlises por sintetizar boa parte do estudo elaborado. Ele pode ser facilmente atualizado, no caso de uma nova verso do framework, ou expandido, no caso da avaliao de um novo framework. A escolha do melhor framework deve tambm levar em considerao especificidades das aplicaes e da equipe de desenvolvedores da organizao. No entanto, o estudo feito deve auxiliar na anlise numa situao especfica, uma vez que os dados esto tabulados e seu embasamento est contido no trabalho. 7- REFERNCIAS DEITEL H. M., DEITEL P.J. Java Como Programar. Sexta Edio, Prentice Hall. 2004. FORD, N. Art of Java Web Development.Greemwich: Manning, 2003. FOWLER, M. Inversion of Control Containers and the Dependency Injection Pattern, 23 jan. 2004. Disponvel em http://martinfowler.com/articles/injection.html Acesso em: 08 out. 2007. HEMRAJANI, A. Agile Java Development With Spring, Hibernate and Eclipse, SAMS, 2006 Hunter, J. Java Servlet Programming. Primeira Edio. Sebastopol: OReilly, 1998.

HUSTED, T.; LUPPENS, P. Nutshell, Disponvel em http://struts.apache.org/2.0.9/docs/nutshell.html Acesso em: 08 out. 2007. JOHNSON, R. Introduction to Spring Framework, Disponvel em http://www.theserverside.com/tt/articles/article.tss?l=SpringFramework Acesso em 08 out. 2007. JOHNSON, R. et al. Professional Java Development with the Spring Framework, Indianpois: Wiley, 2005 LADD, S. Expert Spring MVC and Web Flows, Primeira Edio, Nova Iorque: Apress, 2006 SILVA, R. P. Suporte ao desenvolvimento e uso de frameworks e componentes, Porto Alegre, 2000, 262 p. Tese (Doutorado em Cincia da Computao) Instituto de Informtica, Universidade Federal do Rio Grande do Sul. ROUGHLEY, I. Starting Struts2, C4Media, 2006 Spring Reference Manual, Disponvel em http://static.springframework.org/spring/docs/2.1.x/spring-reference.pdf Acesso em: 22 out. 2007. SRIGANESH, P. et al. Mastering Enterprise Java Beans 3.0, Quarta Edio, Indianpolis: Wiley, 2006. YUAN, M. J.; HEUTE, T. JBoss Seam Simplicity and Power Beyond Java EE, Primeira Edio, Upper Saddle River: Prentice Hall, 2007

Você também pode gostar