Avaliação do Usuário

Estrela ativaEstrela ativaEstrela ativaEstrela ativaEstrela inativa
 


Frameworks Java

 

RESUMO

Em meados de 2005 começou-se a falar de um conceito chamado “WEB 2.0”, segundo o qual uma nova Internet estaria surgindo, o que seria um grande benefício para simples usuários da grande rede, mas um grande desafio para os desenvolvedores. Este artigo discute tal desafio com relação aos desenvolvedores da linguagem de programação Java, os quais podem lançar mão de vários Frameworks para desenvolvimento WEB 2.0 disponíveis, tentando ajudar em uma melhor escolha para projetos dentro deste novo conceito.

ABSTRACT

Since 2005 a concept called "Web 2.0" started to be discussed in the academy, where a revolutionary Internet was appearing, in which traditional users would be largely benefited by the new features of the network, although the developers will face great challenges to implement such features. This paper discusses developers challenges with respect to Java programming language, which can use several Frameworks for developing Web 2.0 applications, aiding developers to choose the appropriate Framework for projects within this new concept.

1 - INTRODUÇÃO

A Internet, que surgiu com fins militares em meados do século passado, hoje é a grande rede de informações que une o mundo. Informações fluem em volume e velocidade cada vez maiores graças às possibilidades promovidas por essa grande rede. Esta realidade foi se consolidando na medida em que os usuários foram tendo acesso aos mais variados serviços na Internet e em velocidades de acesso cada vez maiores.

A necessidade de oferecer sempre mais e melhores serviços aos usuários da Internet fez surgir uma nova geração de sistemas WEB, a qual foi denominada de WEB 2.0 [O’Reilly 2005]. Para desenvolver serviços de qualidade e com a rapidez necessária é preciso usar ferramentas à altura desta nova geração de serviços.

Este artigo apresenta uma comparação entre os principais Frameworks para desenvolvimento WEB com Java, a fim de tentar ajudar na escolha da melhor ferramenta para este fim e encontra-se estruturado da seguinte forma: a seção 2 apresenta o conceito de WEB 2.0; a seção 3 apresenta os Frameworks Java para desenvolvimento WEB; na seção 4 está a comparação para o desenvolvimento WEB 2.0 entre os Frameworks e na seção 5 estão as conclusões.


2 - A WEB 2.0

O termo WEB 2.0 é utilizado para descrever a segunda geração da World Wide WEB. É uma tendência que reforça o conceito de troca de informações e colaboração dos internautas com sites e serviços virtuais. A idéia é que o ambiente on-line se torne mais dinâmico e que os usuários colaborem para a organização de conteúdo [Carpanez 2006]. Dentro deste contexto se encaixam serviços bem populares como Wikipedia[Wikipedia 2007], Windows Live [Microsoft 2007], Meebo [Meebo 2007], Google Maps [Google 2007], Gmail [Google 2007], dentre outros.

Muitos consideram toda a divulgação em torno da WEB 2.0 um golpe de marketing. Como o universo digital sempre apresentou interatividade, o reforço desta característica seria um movimento natural e, por isso, não daria à tendência o título de "a segunda geração". Todavia, o número de sites e serviços que exploram esta tendência vem crescendo e ganhando cada vez mais adeptos. Alguns dos principais conceitos na WEB 2.0 são: Blogs, RSS, Wikis e AJAX. Dentre eles, o AJAX é o que representa o maior desafio aos desenvolvedores WEB.


2.1 - AJAX

Abreviação de “Asynchronous Javascript and XML”, ou seja, “Javascript e XML assíncrono”. É um pacote amplo de tecnologias usado a fim de criar aplicativos interativos para a WEB. A Microsoft foi uma das primeiras empresas a explorar a tecnologia, mas a adoção da técnica pelo Google, para serviços como mapas on-line, é que fez do AJAX uma das ferramentas mais estudadas entre os desenvolvedores WEB [Jacobi 2007].

Tecnicamente falando, o poder do AJAX é fazer com haja troca de informações entre o cliente e o servidor WEB de maneira assíncrona, ou seja, passa a ser possível fazer uma requisição e receber uma resposta que não obrigue o cliente esperar a renderização completa de uma nova página. Para realizar tal tarefa, uma aplicação que usa AJAX precisa lançar mão de um grupo mínimo de tecnologias, a saber:

Javascript: é o que dá maior “poder” ao navegador possibilitando a ela enviar requisições de maneira assíncrona ao servidor;

  • DOM (Document Object Model): Acesso e manipulação da estrutura do HTML da página;
  • XML (Extensible Markup Language): tipo de arquivo usado para transportar os dados entre o servidor e o cliente;
  • XMLHttpRequest: Tipo de objeto que usado para a transferência assíncrona do XML entre o servidor e o cliente.

Na Figura 1 vemos como esse grupo de tecnologias interage em uma aplicação com AJAX.

Funcionamento do AJAX

Usar AJAX de maneira “pura” (direta, ou seja, sem uso de uma IDE e/ou um Framework) é uma tarefa muito trabalhosa e complicada, por isso este artigo tem como objetivo ajudar o desenvolvedor a escolher o Framework WEB Java que mais pode ajudá-lo nessa tarefa.


3 - FRAMEWORKS JAVA PARA DESENVOLVIMENTO WEB

No desenvolvimento do software, um Framework (ou arcabouço) é uma estrutura de suporte definida em que um outro projeto de software pode ser organizado e desenvolvido. Um Framework pode incluir programas de suporte, bibliotecas de código, linguagens de script e outros softwares para ajudar a desenvolver e juntar diferentes componentes de um projeto de software [Magela 2006].

Frameworks são projetados com a intenção de facilitar o desenvolvimento de software, habilitando designers e programadores a gastarem mais tempo determinando nas exigências do software do que com detalhes tediosos de baixo nível do sistema. Especificamente em orientação a objeto (que é o paradigma da Java), Framework é um conjunto de classes com objetivo de reutilização de um design, provendo um guia para uma solução de arquitetura em um domínio específico de software.


3.1 - Framework Java para Desenvolvimento WEB

É preciso esclarecer que há certos Frameworks Java que ajudam no desenvolvimento WEB, contudo não são capazes de prover a criação completa de um projeto para este fim, como os Frameworks AJAX. Estes apenas ajudam os Frameworks Java para desenvolvimento WEB a proverem AJAX em seus projetos. A saber, alguns dos principais Frameworks Java AJAX são o GWT (Google WEB Toolkit) [Google Code 2007], o DRW (Direct Reverse WEB) [Getahead 2007], o DOJO (Dynamic Pain Javascript Objects) Toolkit [Dojo 2007] e o JSON (Javascript Object Notation) [Json 2007], os quais não são objetos de comparação neste trabalho.

 

3.2 - Principais Frameworks Java para Desenvolvimento WEB

Alguns dos principais Frameworks Java para desenvolvimento WEB são: JSF (Java Server Faces) [Jacobi 2007], Spring MVC [Walls 2006], Struts 2 [Apache 2006] e Tapestry [Sam-Bodden 2006]. Antes de partir para a comparação entre eles para o desenvolvimento WEB 2.0 segue uma breve descrição de cada:


3.2.1 - JSF (Java Server Faces)

Desenvolvido pela Sun e lançado em 2005, tem por finalidade fazer com que o desenvolvedor não crie as páginas JSP como se fossem páginas HTML e sim como se fossem “telas” de um programa. O Framework é que transforma a “tela” em uma página HTML. O grande poder deste Framework está nos aplicativos que dão suporte ao seu uso, pois tornam a criação das telas (JSPs) bem rápida e de maneira visual com o uso do “drag and drop”, ou seja, “clica e arrasta” e do WYSIWYD - “What You See is What You Do”, ou seja, “O que Você Vê é O que Você Faz” -. A Figura 2 apresenta o funcionamento de uma aplicação feita com JSF.


Ciclo “requisição x resposta” com o Framework JSF

3.2.2 - Spring MVC

Parte do projeto Spring Framework (que é muito grande, oferecendo até um Framework para persistência de dados). Tem como principais vantagens o uso do IoC (Inversão de controle) do Spring e a facilidade na renderização de diversos tipos de saídas (JSP, Tiles, Velocity, Freemaker, Excel, PDF, etc.). A Figura 3 apresenta o funcionamento de uma aplicação feita com Spring MVC.

 

Ciclo “requisição x resposta” com o Framework Spring MVC


3.2.3 - Struts 2

Nascido em meados de 2006, a partir da união dos Frameworks WEB Struts [Husted 2004] e WebWork [Lightbody 2005], é baseado em Actions e já vem com um conjunto de Taglibs (bibliotecas de tags) prontas para o desenvolvimento AJAX de maneira bem transparente. É um projeto da Apache Software Foundation [Apache 2007]. A Figura 4 apresenta o funcionamento de uma aplicação feita com Struts 2.

 

Ciclo “requisição x resposta” com o Framework Struts 2

3.2.4 - Tapestry

Projeto da Apache Software Foundation, é um Framework no qual se tem muito trabalho no inicio do desenvolvimento de um novo projeto. A partir da versão 4.1 já vem com suporte nativo a AJAX. É um projeto da Apache Software Foundation. A Figura 5 apresenta o funcionamento de uma aplicação feita com Tapestry.

 

Ciclo “requisição x resposta” com o Framework Tapestry


4 - COMPARAÇÃO PARA O DESENVOLVIMENTO WEB 2.0

Para comparar os Frameworks para o desenvolvimento WEB 2.0 este artigo vai comparar o suporte a AJAX eles oferecem. Serão feitas duas comparações: uma breve comparação conceitual e uma comparação prática.


4.1 - Breve Comparação Conceitual


A Tabela 1 apresenta um resumo das diferenças entre os Frameworks para o desenvolvimento WEB 2.0:

 

Frameworks Java para WEB no desenvolvimento WEB 2.0

 

4.2 - Comparação Prática

Para a comparação prática este artigo vai comparar as várias funcionalidades AJAX oferecidas por dois dos Frameworks citados anteriormente: O JSF e o Struts 2.

Os motivos que levaram a escolha desses Frameworks foram:

  • O JSF (Java Server Faces) foi criado pela Sun, que é a criadora da própria linguagem Java e é definido como padrão por ela e pela JCP (Java Community Process). De todos os Frameworks Java para WEB é o que possui maior número de aplicativos que oferecem RAD (Rapid Application Development - Rápido Desenvolvimento de Aplicação -) e mais programação “visual” para a criação de JSPs com o uso do “drag and drop”, ou seja, “clica e arrasta” e do WYSIWYG - “What You See is What You Get”, ou seja, “O que Você Vê é O que Você Tem”.
  • O Struts 2 nasceu da “união” de dois Frameworks: Struts e WebWork. O Struts foi, por muitos anos, sinônimo de Java na Internet, a referência em Framework Java para a WEB. Muito dificilmente um programador que desenvolve com Java para a WEB há dois anos ou mais não fez sequer um projeto com o Struts. O WebWork trouxe consigo muitas facilidades e funcionalidades significativas porém nunca conseguiu tornar-se tão popular quanto o Struts. Usar o Struts 2 na comparação prática deste artigo é como comparar dois Frameworks em um. Outra característica importante deste Framework é que de todos os citados aqui é ó único que já nasceu com funcionalidades AJAX nativas em suas Taglibs.

Não será mostrado como configurar e usar os recursos apresentados durante a comparação, pois não é a finalidade deste artigo ensinar como usar os Frameworks. A comparação proposta aqui é para que o desenvolvedor conheça a funcionalidades WEB 2.0 que os Frameworks Java para desenvolvimento WEB oferecem.

Conforme citado anteriormente, o JSF não possui suporte nativo a AJAX, sendo necessário o uso de algum componente. Neste artigo usaremos os componentes Java BluePrints AJAX Components da Sun que possuem versões para o Studio Creator e o NetBeans, que são duas das melhores IDEs para o desenvolvimento JSF. No Struts 2 existem algumas Taglibs (bibliotecas de Tags) e alguns Plugins que provem as funcionalidades AJAX às aplicações feitas com este Framework. As funcionalidades AJAX que os componentes da Java BluePrints AJAX Components e o Struts 2 oferecem são descritos nas seções seguintes.


4.2.1  Auto Completar

Gera uma lista de sugestões conforme o usuário digita na caixa de texto. No JSF é usado o componente Auto-complete e no Struts 2 a Autocompleter Tag. Em ambos os Frameworks é possível usar qualquer objeto “coleção” do Java (List, Vector, Array, etc) para gerar a lista a ser carregada para o usuário. No JSF este recurso possibilita a obtenção de um valor alfanumérico já no Struts 2 são gerados dois valores, um que representa a chave do valor selecionado na lista e outro que representa o texto do item selecionado. No JSF a lista aparece de maneira simples, sem rolagem, nem “zebraba” e sem destaque ao que é digitado, ao contrário de como aparece com o Struts 2. A Figura 6 apresenta a diferença de funcionamento deste recurso nos dois Frameworks:

 

Auto-Completar com componente AJAX


4.2.2 - Partes Dinâmicas e Assíncronas Dentro das JSPs

Com o uso da tecnologia AJAX é possível fazer com que apenas uma ou mais partes da JSP sejam recarregadas, evitando que seja feita a renderização total de uma página desnecessariamente, reduzindo assim o fluxo de dados entre o cliente e o servidor numa rede. No JSF é usado o componente Dynamic Text e no Struts 2 a Div Tag.

Na Tag do Struts 2 é possível recarregar o conteúdo de uma página dentro de outra, pois pode-se configurar uma Div Tag para receber o conteúdo de uma página JSP simples ou até mesmo uma outra Action. Com a Div Tag do Struts 2 é possível fazer com que certa área de uma página se auto-atualize num certo intervalo de tempo. Além disso, uma mesma Div Tag pode ficar sendo usada para receber diferentes conteúdos chamados por links ou formulários. A Div Tag do Struts 2 ainda lança mão de um interessante recurso, que são os targets. Com o uso deste recurso é possível fazer com que um evento como a submissão de um formulário ou o clique em um link acione várias partes diferentes de uma página JSP ao mesmo tempo ou em uma seqüência fácil de configurar.

Com o componente Dynamic Text do JSF é possível atualizar apenas um ou mais textos dentro de uma página JSP.


4.2.3 - Validação de Dados com AJAX

Dados preenchidos pelos usuários dos sistemas WEB quase sempre precisam de validação. É preciso, por exemplo, que nomes sejam preenchidos, que emails estejam em formato de emails, que datas sejam datas válidas, etc. Na validação com AJAX, os dados são validados de maneira assíncrona e, caso haja algum erro de validação, apenas o formulário recebe a resposta assíncrona informando ao usuário o(s) erro(s).

No JSF a validação via AJAX é feita com o componente AJAX Validator. Seu uso é bastante simples, pois lança mão do sistema de validação por página do JSF. Basta indicar em cada campo, que ele será validado via AJAX e configurar o evento que chamará a validação (ao digitar, ao clicar, etc.).

No Struts 2 é possível fazer vários tipos de validação, inclusive a validação puramente do lado do cliente, com o uso de um Javascript criado em tempo de execução e de maneira transparente na página JSP. Tal validação é muito rápida e eficiente, porém limitada a apenas alguns tipos de validação. Também é possível uma validação com AJAX usando o Framework AJAX DRW. Em ambos os casos é necessário que se configurem arquivos XML de validação. No Struts 2 os arquivos XML de validação são configurados por ações de submissões. Cada ação pode possuir um XML de validação associado (por exemplo, um XML para validar os dados de uma entidade no momento da inserção e outro para validar no momento da atualização).

4.2.4 - Barra de Carregamento

Barra horizontal que atualiza seu estado conforme o avanço do processamento de uma operação escolhida. No JSF é usado o componente Progress Bar e no Struts 2 o Ajax File Upload Plugin. No segundo só é possível medir o progresso de Upload de arquivos enquanto que no primeiro é possível medir o progresso de vários tipos de operações. A Figura 7 ajuda a entender melhor como este recurso funciona nos dois Frameworks:

 

Barra de carregamento JSF / Struts
4.2.5 - Editor de Rich Textarea

É uma caixa de texto que oferece a possibilidade de formatação automática ao usuário. No JSF é usado o componente RichTextarea Editor e no Struts 2 a Textarea Tag. Na Tag do Struts 2 não há nenhuma novidade significativa para uma caixa de edição de texto formatado, mas no componente do JSF é possível configurar uma ação personalizada para o botão “Save” e outra para o botão “Cancel”. A Figura 8 ajuda a entender melhor a diferença de funcionamento deste recurso nos dois Frameworks.

 

Editores de Rich Textarea JSF / Struts


4.2.6 - Visualizador de Mapa da Google

Usa a API Google Maps para renderizar um mapa na página. No mapa renderizado é possível usar recursos como o zoom e marcação. No JSF é usado o componente Google Map Viewer e no Struts 2 não há Tag ou Plugin que forneça suporte a este tipo de recurso, todavia, como o Struts 2 não é baseado em componentes, torna muito simples o uso da Taglib da própria Google para a renderização de mapas do Google Maps em páginas JSP. Em ambos os casos são passados, como parâmetros, dados espaciais.

A Figura 9 ajuda a entender melhor como este recurso funciona:

 

Mapa em página JSP (JSF)

 

4.2.7 - Botão PayPal Buy Now

Botão que inicia uma simples transação de pagamento pelo sistema internacional de pagamento PayPal [Paypal 2007] enviando as primeiras informações sobre um pagamento ao site da PayPal (código do cliente, valor do produto, etc.).

No JSF é usado o componente PayPal Buy Now e no Struts 2 não há Tag ou Plugin que forneça suporte a este tipo de recurso.

A Figura 10 ajuda a entender melhor como este recurso funciona:

 

Botão PayPal Buy Now (JSF)


4.2.8 - Classificação/Votação

Envia, um valor, via requisição AJAX, para o servidor conforme a estrela clicada e mantém esse valor na visualização do usuário. No JSF é usado o componente Rating e no Struts 2 não há Tag ou Plugin que forneça suporte a este tipo de recurso. Quando o usuário clica em uma das estrelas (ou qualquer outro ícone configurado pelo desenvolvedor) é enviada uma requisição AJAX para o servidor informando um identificador para o item e o valor de classificação clicado.

A Figura 11 ajuda a entender melhor como este recurso funciona:

 

Classificação/Votação com componente Rating para JSF

 

4.2.9 - Seleção Dupla Dinâmica

Refaz o conteúdo de uma segunda lista a partir do item selecionado em uma primeira. No Struts 2 é usada a Doubleselect Tag e no JSF não há componente que forneça suporte a este tipo de recurso.

A Figura 12 ajuda a entender melhor como este recurso funciona:

 

Seleção dupla dinâmica com Struts 2

 

4.2.10 - Árvore AJAX

É renderizada uma árvore com nós que podem ser expandidos ou recolhidos. No Struts 2 é usada a Treenode Tag e no JSF não há componente que forneça suporte a este tipo de recurso. Há um componente semelhante no JSF, porém ele carrega, de uma vez só, os conteúdos de todos os nós, não realizando qualquer operação AJAX. Para renderizar a árvore, a Tag pode usar qualquer objeto “coleção” do Java (List, Vector, Array, etc). Em cada expansão de nó da árvore pode ser enviada uma requisição AJAX para o servidor, fazendo com que o conteúdo expandido seja criado dinamicamente e assincronamente antes de ser exibido ao usuário.

A Figura 13 ajuda a entender melhor como este recurso funciona:

 

Árvore de nós com a Treenode Tag do Struts 2

 

4.2.11 - Painel de Abas AJAX

Painel com várias abas que cujos conteúdos são recarregados assincronamente sempre que são solicitados. No Struts 2 é usada a Tabbedpanel Tag e no JSF não há componente que forneça suporte a este tipo de recurso. Há um componente semelhante no JSF, porém ele carrega, de uma vez só, os conteúdos de todas as abas, não realizando qualquer operação AJAX.

A Figura 14 ajuda a entender melhor como este recurso funciona:

 

Painel de Abas AJAX com a Tabbedpanel Tag do Struts 2


5. CONCLUSÕES

Neste artigo foi mostrado como os Frameworks Java para WEB poderão ajudar a vencer o desafio de desenvolver uma aplicação que se encaixe no conceito WEB 2.0.

Pelo considerável número de funcionalidades AJAX que os Frameworks oferecem conclui-se que os fabricantes e as comunidades de desenvolvimento de Software têm a WEB 2.0 como uma realidade e um desafio. Outro fato relevante verificado foi que os Frameworks WEB lançam mão dos Frameworks AJAX para suas funcionalidades AJAX.

Pela comparação prática entre o JSF e o Struts 2 verificou-se que ambos já fornecem ao desenvolvedor ferramentas suficientes (algumas em comum e outras em particular) para encarar a WEB 2.0, embora as ofereçam com diferentes filosofias de programação dentro da mesma linguagem (Java). O JSF apresenta um modelo que agrada mais aqueles que preferem digitar o mínimo de código para tarefas mais rotineiras, depositando muita confiança nas IDEs (o que combina mais com equipes de desenvolvimento que não possuem um Web Designer onde os desenvolvedores são os próprios designers) já o Struts 2 parece ser melhor opção para aqueles desenvolvedores que preferem programar em linhas de código do que com o uso de “assistentes visuais”, pois preferem deixar para os Designers a criação das telas.


6 - REFERÊNCIAS BIBLIOGRÁFICAS

JACOBI, Onas Jacobi; FALLOWS, John R. Pro jsf e AJAX - construindo componentes ricos para a Internet. Rio de Janeiro: Ciência Moderna, 2007.

MAGELA, Rogério. Engenharia de Software Aplicada - Princípios. Rio de Janeiro: Alta Books, 2006.

SAM-BODDEN, Brian. Desenvolvendo em POJOS com Hibernate, Jboss, Spring e Tapestry. Rio de Janeiro: Alta Books, 2006.

WALLS, William; BREIDENBACH, Ryan. Spring em ação. Rio de Janeiro: Ciência Moderna, 2006.

HUSTED, Ted. Struts em ação. Rio de Janeiro: Ciência Moderna, 2004.

LIGHTBODY, Patrick; CARREIRA, Jason. WebWork in action. Greenwich (Inglaterra): Manning Publications, 2005.

CARPANEZ, Juliana. Entenda o que é a WEB 2.0. Folha de São Paulo, São Paulo, 06 jun. 2006. Informática.

O’REILLY, Tim (2005). What Is WEB 2.0 - Design Patterns and Business Models for the Next Generation of Software. Disponível: http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-WEB-20.html. Acesso: 21 abr. 2007.

MURRAY, Gregory; BALL, Jennifer (2006). Including Ajax Functionality in a Custom JavaServer Faces Component. Disponível: http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-WEB-20.html. Acesso: 21 abr. 2007.

DAN-ROGNLIE, Mikkel Byrso (2006). AJAX and JavaServer Faces. Disponível: http://www.decorus.dk/blog/2006/08/01/AJAX-and-Javaserver-faces. Acesso: 18 nov. 2007.

WIKIPEDIA (2007). Wikipédia: Sobre a Wikipedia. Disponível: http://pt.wikipedia.org/wiki/Wikipedia:Sobre. Acesso: 02 dez. 2007.

GOOGLE (2007). More Google Products. Disponível: http://www.google.com/intl/en/options. Acesso: 02 dez. 2007.

GOOGLE CODE (2007). Product Overview - Google Web Toolkit - Google Code. Disponível: http://code.google.com/webtoolkit/overview.html. Acesso: 02 dez. 2007.

MEEBO (2007). meebo - online web IM for AIM, MSN, Yahoo, Google Talk messengers. Disponível: http://www.meebo.com. Acesso: 02 dez. 2007.

GETAHEAD (2007). Overview of DWR | Getahead. Disponível: http://getahead.org/dwr/overview/dwr. Acesso: 02 dez. 2007.

DOJO (2007). About Dojo | The Dojo Toolkit. Disponível: http://dojotoolkit.org/about. Acesso: 02 dez. 2007.

JSON (2007). Introducing JSON. Disponível: http://json.org/. Acesso: 02 dez. 2007.

APACHE (2006). Struts 2 - Welcome. Disponível: http://struts.apache.org/2.x/. Acesso: 02 dez. 2007.

APACHE (2007). Welcome! - The Apache Software Foundation. Disponível: http://apache.org. Acesso: 02 dez. 2007.

PAYPAL (2007). Online Payment, Merchant Account - PayPal. Disponível: https://www.paypal.com/. Acesso: 02 dez. 2007.

RAIBLE Matt (2006). Comparing Web Frameworks. Disponível: https://equinox.dev.java.net/framework-comparison/WebFrameworks.pdf. Acesso: 02 dez. 2007.

 

SOBRE O AUTOR

José Yoshiriro Ajisaka Ramos reside em Belém - PA, Brasil. Trabalha atualmente como Analista/Desenvolvedor do TJ-Pará e como professor (Equilibrium / UAB / FAZ), além de cursar Mestrado em Ciência da Computação (UFPA).

É Sun Certified Professional (SCJP 6, SCWCD 5 e SCBCD 5), OMG Certified Professional (OCUP Fundamental), além de ser colaborador da APACHE.ORG, com 3 projetos (Full Hibernate Plugin para Struts 2 / Struts 2.0.x to 2.1.x Converter / Hibernate Session Plugin para Struts 2) e articulista da revista "MundoJ", com 7 artigos já publicados.

Seja social. Compartilhe!